import { beforeEach, describe, expect, mock, test } from "bun:test";
import { fakeStorage } from "./do-test-storage";
const env: Record<string, unknown> = {};
mock.module("cloudflare:workers", () => ({
env,
DurableObject: class {
ctx: unknown;
env: unknown;
constructor(ctx: unknown, workerEnv: unknown) {
this.ctx = ctx;
this.env = workerEnv;
}
},
}));
mock.module("@tanstack/react-start/server", () => ({ getRequestHeader: () => null }));
mock.module("./db", () => ({ first: async () => ({ hits: 1 }), run: async () => undefined }));
const { RateLimiter } = await import("./rate-limiter-do");
const { rateLimitDigest, rateLimitShard, RATE_LIMIT_SHARDS } = await import("./rate-limit-shard");
const { enforceRateLimit, withinRateLimit, limitWrite, limitBrowse, resetRateLimitCache, RATE_LIMITS } =
await import("./limits");
type Limiter = InstanceType<typeof RateLimiter>;
let shards: Map<string, { storage: ReturnType<typeof fakeStorage>; object: Limiter }>;
let objectDown = false;
let platformSays = true;
let rpcCalls = 0;
function shard(name: string) {
let entry = shards.get(name);
if (!entry) {
const storage = fakeStorage();
entry = { storage, object: new RateLimiter({ storage } as never, {} as never) };
shards.set(name, entry);
}
return entry;
}
function installEnv(): void {