diff --git a/Dockerfile b/Dockerfile index 56ea2c8..df6b74a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,7 @@ WORKDIR /app COPY . . RUN bun build scripts/outbox-worker.ts \ --target=bun \ + --conditions=react-server \ --minify \ --outfile=dist/outbox-worker.js && \ bun build backend/discord.ts \ diff --git a/package.json b/package.json index 8baaf34..52223b4 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "db:studio": "drizzle-kit studio", "import:guides": "bun scripts/import-google-guides.ts", "worker:discord": "bun backend/discord.ts", - "worker:outbox": "bun scripts/outbox-worker.ts", + "worker:outbox": "bun --conditions=react-server scripts/outbox-worker.ts", "security:audit": "bun scripts/security-audit.ts" }, "dependencies": { diff --git a/tests/deployment-contract.test.ts b/tests/deployment-contract.test.ts index 5325220..66175dc 100644 --- a/tests/deployment-contract.test.ts +++ b/tests/deployment-contract.test.ts @@ -102,12 +102,23 @@ describe("production deployment contract", () => { "ENV NEXT_PUBLIC_GOOGLE_ADSENSE_CLIENT_ID=${NEXT_PUBLIC_GOOGLE_ADSENSE_CLIENT_ID}", ); expect(dockerfile).toContain("backend/discord.ts"); + expect(dockerfile).toMatch( + /bun build scripts\/outbox-worker\.ts[\s\S]*?--conditions=react-server[\s\S]*?--outfile=dist\/outbox-worker\.js/u, + ); expect(dockerfile).toMatch( /bun build backend\/discord\.ts[\s\S]*?--conditions=react-server[\s\S]*?--outfile=dist\/discord\.js/u, ); expect(dockerfile).toContain("./worker/discord.js"); }); + it("runs the outbox worker with server-only module resolution locally", async () => { + const packageJson = JSON.parse(await repositoryFile("package.json")); + + expect(packageJson.scripts["worker:outbox"]).toBe( + "bun --conditions=react-server scripts/outbox-worker.ts", + ); + }); + it("verifies first, publishes immutable images, and migrates before rollout", async () => { const workflow = await repositoryFile(".gitea/workflows/ci.yml");