diff --git a/.changeset/dependabot-update-8797.md b/.changeset/dependabot-update-8797.md new file mode 100644 index 000000000000..983d06773a00 --- /dev/null +++ b/.changeset/dependabot-update-8797.md @@ -0,0 +1,12 @@ +--- +"miniflare": patch +--- + +chore: update dependencies of "miniflare" package + +The following dependency versions have been updated: + +| Dependency | From | To | +| ------------------------- | ------------- | ------------- | +| workerd | 1.20250404.0 | 1.20250405.0 | +| @cloudflare/workers-types | ^4.20250404.0 | ^4.20250405.0 | diff --git a/.changeset/sweet-clocks-take.md b/.changeset/sweet-clocks-take.md new file mode 100644 index 000000000000..70e291743d56 --- /dev/null +++ b/.changeset/sweet-clocks-take.md @@ -0,0 +1,5 @@ +--- +"@cloudflare/workflows-shared": patch +--- + +Add `waitForEvent` and `sendEvent` support for local dev diff --git a/fixtures/additional-modules/package.json b/fixtures/additional-modules/package.json index b7d2f923149d..e82d1d46a6d6 100644 --- a/fixtures/additional-modules/package.json +++ b/fixtures/additional-modules/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/asset-config/package.json b/fixtures/asset-config/package.json index 7983b18ab291..9b3171fe8e7e 100644 --- a/fixtures/asset-config/package.json +++ b/fixtures/asset-config/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@cloudflare/vitest-pool-workers": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "run-script-os": "^1.1.6", "typescript": "catalog:default", "undici": "catalog:default", diff --git a/fixtures/d1-read-replication-app/package.json b/fixtures/d1-read-replication-app/package.json index c7d45d08aac6..91950263c103 100644 --- a/fixtures/d1-read-replication-app/package.json +++ b/fixtures/d1-read-replication-app/package.json @@ -10,7 +10,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/d1-worker-app/package.json b/fixtures/d1-worker-app/package.json index 619dfa37794e..483c990ac995 100644 --- a/fixtures/d1-worker-app/package.json +++ b/fixtures/d1-worker-app/package.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/get-platform-proxy/package.json b/fixtures/get-platform-proxy/package.json index 36047b05b8da..4692aae4392d 100644 --- a/fixtures/get-platform-proxy/package.json +++ b/fixtures/get-platform-proxy/package.json @@ -9,7 +9,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/local-mode-tests/package.json b/fixtures/local-mode-tests/package.json index cf1f801e5c71..2830c01d478d 100644 --- a/fixtures/local-mode-tests/package.json +++ b/fixtures/local-mode-tests/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/node": "catalog:default", "buffer": "^6.0.3", "typescript": "catalog:default", diff --git a/fixtures/node-app-pages/package.json b/fixtures/node-app-pages/package.json index 111be6f59584..0fcdeae6927d 100644 --- a/fixtures/node-app-pages/package.json +++ b/fixtures/node-app-pages/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/nodejs-als-app/package.json b/fixtures/nodejs-als-app/package.json index af675a06ff75..d09de932ac5a 100644 --- a/fixtures/nodejs-als-app/package.json +++ b/fixtures/nodejs-als-app/package.json @@ -9,7 +9,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "undici": "catalog:default", "vitest": "catalog:default", "wrangler": "workspace:*" diff --git a/fixtures/nodejs-hybrid-app/package.json b/fixtures/nodejs-hybrid-app/package.json index f404ed90675a..e06431fd6483 100644 --- a/fixtures/nodejs-hybrid-app/package.json +++ b/fixtures/nodejs-hybrid-app/package.json @@ -9,7 +9,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/pg": "^8.11.2", "pg": "8.11.3", "pg-cloudflare": "^1.1.1", diff --git a/fixtures/pages-dev-proxy-with-script/package.json b/fixtures/pages-dev-proxy-with-script/package.json index bc56f575dae0..4e3afb50260e 100644 --- a/fixtures/pages-dev-proxy-with-script/package.json +++ b/fixtures/pages-dev-proxy-with-script/package.json @@ -10,7 +10,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/pages-functions-app/package.json b/fixtures/pages-functions-app/package.json index 94e25577450b..5d1111cf42c0 100644 --- a/fixtures/pages-functions-app/package.json +++ b/fixtures/pages-functions-app/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "pages-plugin-example": "workspace:*", "typescript": "catalog:default", "undici": "catalog:default", diff --git a/fixtures/pages-functions-with-routes-app/package.json b/fixtures/pages-functions-with-routes-app/package.json index b3e552dd195c..9f471a601763 100644 --- a/fixtures/pages-functions-with-routes-app/package.json +++ b/fixtures/pages-functions-with-routes-app/package.json @@ -11,7 +11,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/pages-plugin-mounted-on-root-app/package.json b/fixtures/pages-plugin-mounted-on-root-app/package.json index 90a10406f72b..8004897780eb 100644 --- a/fixtures/pages-plugin-mounted-on-root-app/package.json +++ b/fixtures/pages-plugin-mounted-on-root-app/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "pages-plugin-example": "workspace:*", "typescript": "catalog:default", "undici": "catalog:default", diff --git a/fixtures/pages-simple-assets/package.json b/fixtures/pages-simple-assets/package.json index 3b6e3846716e..6fbd33d93283 100644 --- a/fixtures/pages-simple-assets/package.json +++ b/fixtures/pages-simple-assets/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/vitest-pool-workers-examples/package.json b/fixtures/vitest-pool-workers-examples/package.json index 74e72c7c7927..7e54be816bb0 100644 --- a/fixtures/vitest-pool-workers-examples/package.json +++ b/fixtures/vitest-pool-workers-examples/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@cloudflare/vitest-pool-workers": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@microlabs/otel-cf-workers": "1.0.0-rc.45", "@types/node": "catalog:default", "discord-api-types": "0.37.98", diff --git a/fixtures/wildcard-modules/package.json b/fixtures/wildcard-modules/package.json index 0f79ba9644f0..10fbe58e9020 100644 --- a/fixtures/wildcard-modules/package.json +++ b/fixtures/wildcard-modules/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "undici": "^5.28.4", "wrangler": "workspace:*" }, diff --git a/fixtures/worker-ts/package.json b/fixtures/worker-ts/package.json index e72dd97cf74c..ab7dffa0fff5 100644 --- a/fixtures/worker-ts/package.json +++ b/fixtures/worker-ts/package.json @@ -6,7 +6,7 @@ "start": "wrangler dev" }, "devDependencies": { - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "wrangler": "workspace:*" }, "volta": { diff --git a/fixtures/workers-with-assets-and-service-bindings/package.json b/fixtures/workers-with-assets-and-service-bindings/package.json index c1e19b2e1149..ec155eea19aa 100644 --- a/fixtures/workers-with-assets-and-service-bindings/package.json +++ b/fixtures/workers-with-assets-and-service-bindings/package.json @@ -9,7 +9,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/workers-with-assets-only/package.json b/fixtures/workers-with-assets-only/package.json index b1dd613ba41d..8b275e288c32 100644 --- a/fixtures/workers-with-assets-only/package.json +++ b/fixtures/workers-with-assets-only/package.json @@ -9,7 +9,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/workers-with-assets-run-worker-first/package.json b/fixtures/workers-with-assets-run-worker-first/package.json index 66726c443b93..b43da32f12ac 100644 --- a/fixtures/workers-with-assets-run-worker-first/package.json +++ b/fixtures/workers-with-assets-run-worker-first/package.json @@ -10,7 +10,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/workers-with-assets-spa/package.json b/fixtures/workers-with-assets-spa/package.json index fe239d9313d8..ae375025f399 100644 --- a/fixtures/workers-with-assets-spa/package.json +++ b/fixtures/workers-with-assets-spa/package.json @@ -11,7 +11,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/jest-image-snapshot": "^6.4.0", "@types/node": "catalog:default", "jest-image-snapshot": "^6.4.0", diff --git a/fixtures/workers-with-assets/package.json b/fixtures/workers-with-assets/package.json index a15f2c5299ee..5757a580ac8b 100644 --- a/fixtures/workers-with-assets/package.json +++ b/fixtures/workers-with-assets/package.json @@ -10,7 +10,7 @@ }, "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/workflow-multiple/package.json b/fixtures/workflow-multiple/package.json index 39d0f1af09e0..2687d02bf106 100644 --- a/fixtures/workflow-multiple/package.json +++ b/fixtures/workflow-multiple/package.json @@ -7,7 +7,7 @@ "test:ci": "vitest run" }, "devDependencies": { - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/workflow/package.json b/fixtures/workflow/package.json index 229d449b7c44..1d1839de5fc1 100644 --- a/fixtures/workflow/package.json +++ b/fixtures/workflow/package.json @@ -7,7 +7,8 @@ "test:ci": "vitest run" }, "devDependencies": { - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-tsconfig": "workspace:*", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "undici": "catalog:default", "vitest": "catalog:default", diff --git a/fixtures/workflow/src/index.ts b/fixtures/workflow/src/index.ts index e8ac34f2adc2..58ef0c97a11b 100644 --- a/fixtures/workflow/src/index.ts +++ b/fixtures/workflow/src/index.ts @@ -1,5 +1,6 @@ import { WorkerEntrypoint, + WorkflowBackoff, WorkflowEntrypoint, WorkflowEvent, WorkflowStep, @@ -31,8 +32,33 @@ export class Demo extends WorkflowEntrypoint<{}, Params> { } } +export class Demo2 extends WorkflowEntrypoint<{}, Params> { + async run(event: WorkflowEvent, step: WorkflowStep) { + const { timestamp, payload } = event; + + const result = await step.do("First step", async function () { + return { + output: "First step result", + }; + }); + + await step.waitForEvent("event-1 provider", { + type: "event-1", + }); + + const result2 = await step.do("Second step", async function () { + return { + output: "Second step result", + }; + }); + + return payload ?? "no-payload"; + } +} + type Env = { WORKFLOW: Workflow; + WORKFLOW2: Workflow; }; export default class extends WorkerEntrypoint { async fetch(req: Request) { @@ -43,6 +69,7 @@ export default class extends WorkerEntrypoint { return new Response(null, { status: 404 }); } + console.log(url.pathname); let handle: WorkflowInstance; if (url.pathname === "/createBatch") { // creates two instances @@ -57,6 +84,22 @@ export default class extends WorkerEntrypoint { } else { handle = await this.env.WORKFLOW.create({ id }); } + } else if (url.pathname === "/createDemo2") { + console.log("I'm here", id); + if (id === null) { + handle = await this.env.WORKFLOW2.create(); + } else { + handle = await this.env.WORKFLOW2.create({ id }); + } + } else if (url.pathname === "/sendEvent") { + handle = await this.env.WORKFLOW2.get(id); + + await handle.sendEvent({ + type: "event-1", + payload: await req.json(), + }); + } else if (url.pathname === "/get2") { + handle = await this.env.WORKFLOW2.get(id); } else { handle = await this.env.WORKFLOW.get(id); } diff --git a/fixtures/workflow/tests/index.test.ts b/fixtures/workflow/tests/index.test.ts index 62ab1adf359e..fc8b6b7f28ed 100644 --- a/fixtures/workflow/tests/index.test.ts +++ b/fixtures/workflow/tests/index.test.ts @@ -26,11 +26,13 @@ describe("Workflows", () => { await stop?.(); }); - async function fetchJson(url: string) { + async function fetchJson(url: string, body?: unknown, method?: string) { const response = await fetch(url, { headers: { "MF-Disable-Pretty-Error": "1", }, + method: method ?? "GET", + body: body !== undefined ? JSON.stringify(body) : undefined, }); const text = await response.text(); @@ -136,4 +138,39 @@ describe("Workflows", () => { ), ]); }); + + test("waitForEvent should work", async ({ expect }) => { + await fetchJson(`http://${ip}:${port}/createDemo2?workflowName=something`); + + await fetchJson( + `http://${ip}:${port}/sendEvent?workflowName=something`, + { event: true }, + "POST" + ); + + await vi.waitFor( + async () => { + await expect( + fetchJson(`http://${ip}:${port}/get2?workflowName=something`) + ).resolves.toMatchInlineSnapshot(` + { + "__LOCAL_DEV_STEP_OUTPUTS": [ + { + "output": "First step result", + }, + { + "event": true, + }, + { + "output": "Second step result", + }, + ], + "output": {}, + "status": "complete", + } + `); + }, + { timeout: 5000 } + ); + }); }); diff --git a/fixtures/workflow/wrangler.toml b/fixtures/workflow/wrangler.toml index 592fc9805420..6845521f5611 100644 --- a/fixtures/workflow/wrangler.toml +++ b/fixtures/workflow/wrangler.toml @@ -7,3 +7,9 @@ compatibility_date = "2024-10-22" binding = "WORKFLOW" name = "my-workflow" class_name = "Demo" + + +[[workflows]] +binding = "WORKFLOW2" +name = "my-workflow2" +class_name = "Demo2" diff --git a/package.json b/package.json index 76a9469c8169..8b1c5bd28762 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.28.0", "@changesets/parse": "^0.4.0", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@ianvs/prettier-plugin-sort-imports": "4.2.1", "@manypkg/cli": "^0.23.0", "@types/node": "catalog:default", diff --git a/packages/create-cloudflare/package.json b/packages/create-cloudflare/package.json index 9246abf43a26..8c0f9f4417a5 100644 --- a/packages/create-cloudflare/package.json +++ b/packages/create-cloudflare/package.json @@ -50,7 +50,7 @@ "@cloudflare/mock-npm-registry": "workspace:*", "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@iarna/toml": "^3.0.0", "@types/command-exists": "^1.2.0", "@types/cross-spawn": "^6.0.2", diff --git a/packages/edge-preview-authenticated-proxy/package.json b/packages/edge-preview-authenticated-proxy/package.json index 7bacb852662f..1b2c00b0933f 100644 --- a/packages/edge-preview-authenticated-proxy/package.json +++ b/packages/edge-preview-authenticated-proxy/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@cloudflare/eslint-config-worker": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/cookie": "^0.6.0", "cookie": "^0.7.2", "promjs": "^0.4.2", diff --git a/packages/format-errors/package.json b/packages/format-errors/package.json index f6c94ac97b0b..b482ef200c97 100644 --- a/packages/format-errors/package.json +++ b/packages/format-errors/package.json @@ -11,7 +11,7 @@ }, "devDependencies": { "@cloudflare/eslint-config-worker": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "mustache": "^4.2.0", "promjs": "^0.4.2", "toucan-js": "^3.3.1", diff --git a/packages/kv-asset-handler/package.json b/packages/kv-asset-handler/package.json index 5a7725ca40d9..064e2ba0d39d 100644 --- a/packages/kv-asset-handler/package.json +++ b/packages/kv-asset-handler/package.json @@ -42,7 +42,7 @@ }, "devDependencies": { "@ava/typescript": "^4.1.0", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/mime": "^3.0.4", "@types/node": "catalog:default", "@types/service-worker-mock": "^2.0.1", diff --git a/packages/miniflare/package.json b/packages/miniflare/package.json index 9ed669d243ed..6ac7f3f2305d 100644 --- a/packages/miniflare/package.json +++ b/packages/miniflare/package.json @@ -49,7 +49,7 @@ "glob-to-regexp": "0.4.1", "stoppable": "1.1.0", "undici": "catalog:default", - "workerd": "1.20250404.0", + "workerd": "1.20250405.0", "ws": "catalog:default", "youch": "3.3.4", "zod": "3.22.3" @@ -58,7 +58,7 @@ "@ava/typescript": "^4.1.0", "@cloudflare/kv-asset-handler": "workspace:*", "@cloudflare/workers-shared": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@cloudflare/workflows-shared": "workspace:*", "@microsoft/api-extractor": "7.49.1", "@types/debug": "^4.1.7", diff --git a/packages/pages-shared/package.json b/packages/pages-shared/package.json index 7af731480e08..751602812ca6 100644 --- a/packages/pages-shared/package.json +++ b/packages/pages-shared/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@cloudflare/vitest-pool-workers": "0.7.0", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "concurrently": "^8.2.2", "glob": "^10.4.5", "html-rewriter-wasm": "^0.4.1", diff --git a/packages/playground-preview-worker/package.json b/packages/playground-preview-worker/package.json index e080f46edb12..5d2eb1d4fcc3 100644 --- a/packages/playground-preview-worker/package.json +++ b/packages/playground-preview-worker/package.json @@ -19,7 +19,7 @@ }, "devDependencies": { "@cloudflare/eslint-config-worker": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/cookie": "^0.6.0", "cookie": "^0.7.2", "itty-router": "^4.0.13", diff --git a/packages/prerelease-registry/package.json b/packages/prerelease-registry/package.json index 339a879c114a..825c8c05b93c 100644 --- a/packages/prerelease-registry/package.json +++ b/packages/prerelease-registry/package.json @@ -18,7 +18,7 @@ "devDependencies": { "@cloudflare/eslint-config-worker": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "wrangler": "workspace:*" }, "volta": { diff --git a/packages/quick-edit-extension/package.json b/packages/quick-edit-extension/package.json index 71ad66afca93..f5e2d94e6db9 100644 --- a/packages/quick-edit-extension/package.json +++ b/packages/quick-edit-extension/package.json @@ -43,7 +43,7 @@ ], "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:^", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "esbuild": "catalog:default", "esbuild-register": "^3.5.0" }, diff --git a/packages/vite-plugin-cloudflare/package.json b/packages/vite-plugin-cloudflare/package.json index 583353eedf03..1ad1d7ccbfbc 100644 --- a/packages/vite-plugin-cloudflare/package.json +++ b/packages/vite-plugin-cloudflare/package.json @@ -56,7 +56,7 @@ "@cloudflare/mock-npm-registry": "workspace:*", "@cloudflare/workers-shared": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/node": "catalog:vite-plugin", "@types/ws": "^8.5.13", "magic-string": "^0.30.12", diff --git a/packages/vite-plugin-cloudflare/playground/additional-modules/package.json b/packages/vite-plugin-cloudflare/playground/additional-modules/package.json index 7170a4192de5..afb63324141c 100644 --- a/packages/vite-plugin-cloudflare/playground/additional-modules/package.json +++ b/packages/vite-plugin-cloudflare/playground/additional-modules/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/cloudflare-env/package.json b/packages/vite-plugin-cloudflare/playground/cloudflare-env/package.json index 4169c0f76f31..bfed4ab16517 100644 --- a/packages/vite-plugin-cloudflare/playground/cloudflare-env/package.json +++ b/packages/vite-plugin-cloudflare/playground/cloudflare-env/package.json @@ -14,7 +14,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/config-changes/package.json b/packages/vite-plugin-cloudflare/playground/config-changes/package.json index 32206b589cf9..099800e47e87 100644 --- a/packages/vite-plugin-cloudflare/playground/config-changes/package.json +++ b/packages/vite-plugin-cloudflare/playground/config-changes/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/custom-build-app/package.json b/packages/vite-plugin-cloudflare/playground/custom-build-app/package.json index 0dceb0b3eab4..e1933dce09bd 100644 --- a/packages/vite-plugin-cloudflare/playground/custom-build-app/package.json +++ b/packages/vite-plugin-cloudflare/playground/custom-build-app/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/deps-assets-importing/package.json b/packages/vite-plugin-cloudflare/playground/deps-assets-importing/package.json index 33c1518eb5a7..b8981024c01f 100644 --- a/packages/vite-plugin-cloudflare/playground/deps-assets-importing/package.json +++ b/packages/vite-plugin-cloudflare/playground/deps-assets-importing/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/dev-vars/package.json b/packages/vite-plugin-cloudflare/playground/dev-vars/package.json index 1df4e288ecef..1653ea401eac 100644 --- a/packages/vite-plugin-cloudflare/playground/dev-vars/package.json +++ b/packages/vite-plugin-cloudflare/playground/dev-vars/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/durable-objects/package.json b/packages/vite-plugin-cloudflare/playground/durable-objects/package.json index 0a3e070fabda..5cfb4fd8f184 100644 --- a/packages/vite-plugin-cloudflare/playground/durable-objects/package.json +++ b/packages/vite-plugin-cloudflare/playground/durable-objects/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/dynamic-import-paths/package.json b/packages/vite-plugin-cloudflare/playground/dynamic-import-paths/package.json index 9d9d5f0f47ab..6ee9c7d0f3ab 100644 --- a/packages/vite-plugin-cloudflare/playground/dynamic-import-paths/package.json +++ b/packages/vite-plugin-cloudflare/playground/dynamic-import-paths/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/external-durable-objects/package.json b/packages/vite-plugin-cloudflare/playground/external-durable-objects/package.json index 0a6d96e30204..f96266154448 100644 --- a/packages/vite-plugin-cloudflare/playground/external-durable-objects/package.json +++ b/packages/vite-plugin-cloudflare/playground/external-durable-objects/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/external-workers/package.json b/packages/vite-plugin-cloudflare/playground/external-workers/package.json index 960639f6287b..cb8ab8ff1fb8 100644 --- a/packages/vite-plugin-cloudflare/playground/external-workers/package.json +++ b/packages/vite-plugin-cloudflare/playground/external-workers/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/external-workflows/package.json b/packages/vite-plugin-cloudflare/playground/external-workflows/package.json index 3885a14299a1..868684873989 100644 --- a/packages/vite-plugin-cloudflare/playground/external-workflows/package.json +++ b/packages/vite-plugin-cloudflare/playground/external-workflows/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/hot-channel/package.json b/packages/vite-plugin-cloudflare/playground/hot-channel/package.json index dc20d21b05c4..f155e9db10ef 100644 --- a/packages/vite-plugin-cloudflare/playground/hot-channel/package.json +++ b/packages/vite-plugin-cloudflare/playground/hot-channel/package.json @@ -10,7 +10,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/importable-env/package.json b/packages/vite-plugin-cloudflare/playground/importable-env/package.json index 57942eaaec06..8c1cf3041a8d 100644 --- a/packages/vite-plugin-cloudflare/playground/importable-env/package.json +++ b/packages/vite-plugin-cloudflare/playground/importable-env/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/module-resolution/package.json b/packages/vite-plugin-cloudflare/playground/module-resolution/package.json index 6a9abe23b7b5..e4db8e9a9bf9 100644 --- a/packages/vite-plugin-cloudflare/playground/module-resolution/package.json +++ b/packages/vite-plugin-cloudflare/playground/module-resolution/package.json @@ -16,7 +16,7 @@ "@cloudflare-dev-module-resolution/requires": "file:./packages/requires", "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@remix-run/cloudflare": "2.12.0", "@types/react": "^18.3.11", "discord-api-types": "0.37.98", diff --git a/packages/vite-plugin-cloudflare/playground/multi-worker/package.json b/packages/vite-plugin-cloudflare/playground/multi-worker/package.json index ebe1c5eb6bd6..d2cc9cb144d1 100644 --- a/packages/vite-plugin-cloudflare/playground/multi-worker/package.json +++ b/packages/vite-plugin-cloudflare/playground/multi-worker/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/node-compat/package.json b/packages/vite-plugin-cloudflare/playground/node-compat/package.json index 6a90801c1bb7..32c570ca33bb 100644 --- a/packages/vite-plugin-cloudflare/playground/node-compat/package.json +++ b/packages/vite-plugin-cloudflare/playground/node-compat/package.json @@ -42,7 +42,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/node": "catalog:vite-plugin", "@types/pg": "^8.11.2", "cross-fetch": "^4.0.0", diff --git a/packages/vite-plugin-cloudflare/playground/partyserver/package.json b/packages/vite-plugin-cloudflare/playground/partyserver/package.json index a4fa411ad969..4d18c0b8e969 100644 --- a/packages/vite-plugin-cloudflare/playground/partyserver/package.json +++ b/packages/vite-plugin-cloudflare/playground/partyserver/package.json @@ -17,7 +17,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@tailwindcss/vite": "^4.0.15", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", diff --git a/packages/vite-plugin-cloudflare/playground/prisma/package.json b/packages/vite-plugin-cloudflare/playground/prisma/package.json index 2250204b5870..11e497eb6128 100644 --- a/packages/vite-plugin-cloudflare/playground/prisma/package.json +++ b/packages/vite-plugin-cloudflare/playground/prisma/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@prisma/adapter-d1": "^6.3.0", "@prisma/client": "^6.3.0", "prisma": "^6.3.0", diff --git a/packages/vite-plugin-cloudflare/playground/react-spa/package.json b/packages/vite-plugin-cloudflare/playground/react-spa/package.json index 676d585d76b8..4f5f0def2fcf 100644 --- a/packages/vite-plugin-cloudflare/playground/react-spa/package.json +++ b/packages/vite-plugin-cloudflare/playground/react-spa/package.json @@ -15,7 +15,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "@vitejs/plugin-react": "^4.3.4", diff --git a/packages/vite-plugin-cloudflare/playground/same-worker-service-bindings/package.json b/packages/vite-plugin-cloudflare/playground/same-worker-service-bindings/package.json index af756e2a2f68..10dc33076fa7 100644 --- a/packages/vite-plugin-cloudflare/playground/same-worker-service-bindings/package.json +++ b/packages/vite-plugin-cloudflare/playground/same-worker-service-bindings/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/spa-with-api/package.json b/packages/vite-plugin-cloudflare/playground/spa-with-api/package.json index 6f313c920a1d..6847c94b557b 100644 --- a/packages/vite-plugin-cloudflare/playground/spa-with-api/package.json +++ b/packages/vite-plugin-cloudflare/playground/spa-with-api/package.json @@ -17,7 +17,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "@vitejs/plugin-react": "^4.3.4", diff --git a/packages/vite-plugin-cloudflare/playground/static-mpa/package.json b/packages/vite-plugin-cloudflare/playground/static-mpa/package.json index e6e2a4e35318..2ed3dc5fad12 100644 --- a/packages/vite-plugin-cloudflare/playground/static-mpa/package.json +++ b/packages/vite-plugin-cloudflare/playground/static-mpa/package.json @@ -14,7 +14,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/static/package.json b/packages/vite-plugin-cloudflare/playground/static/package.json index 187875d94c52..2cfb224d64cf 100644 --- a/packages/vite-plugin-cloudflare/playground/static/package.json +++ b/packages/vite-plugin-cloudflare/playground/static/package.json @@ -14,7 +14,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/virtual-modules/package.json b/packages/vite-plugin-cloudflare/playground/virtual-modules/package.json index bb209ec23093..a242254aefec 100644 --- a/packages/vite-plugin-cloudflare/playground/virtual-modules/package.json +++ b/packages/vite-plugin-cloudflare/playground/virtual-modules/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/websockets/package.json b/packages/vite-plugin-cloudflare/playground/websockets/package.json index e9a33f07a8bc..aaf4db6b0844 100644 --- a/packages/vite-plugin-cloudflare/playground/websockets/package.json +++ b/packages/vite-plugin-cloudflare/playground/websockets/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/worker/package.json b/packages/vite-plugin-cloudflare/playground/worker/package.json index 39ba5edf278d..f20ba29267b8 100644 --- a/packages/vite-plugin-cloudflare/playground/worker/package.json +++ b/packages/vite-plugin-cloudflare/playground/worker/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vite-plugin-cloudflare/playground/workflows/package.json b/packages/vite-plugin-cloudflare/playground/workflows/package.json index ffa7fb1e8639..fc7607e69a4c 100644 --- a/packages/vite-plugin-cloudflare/playground/workflows/package.json +++ b/packages/vite-plugin-cloudflare/playground/workflows/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@cloudflare/vite-plugin": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "typescript": "catalog:default", "vite": "catalog:vite-plugin", "wrangler": "workspace:*" diff --git a/packages/vitest-pool-workers/package.json b/packages/vitest-pool-workers/package.json index 2b3aa34be38e..8d094015b903 100644 --- a/packages/vitest-pool-workers/package.json +++ b/packages/vitest-pool-workers/package.json @@ -65,7 +65,7 @@ "@cloudflare/eslint-config-worker": "workspace:*", "@cloudflare/mock-npm-registry": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/node": "catalog:default", "@types/semver": "^7.5.1", "@vitest/runner": "catalog:default", diff --git a/packages/workers-shared/package.json b/packages/workers-shared/package.json index c527d2ee11a9..95cd72eb6b14 100644 --- a/packages/workers-shared/package.json +++ b/packages/workers-shared/package.json @@ -60,7 +60,7 @@ "@cloudflare/eslint-config-worker": "workspace:*", "@cloudflare/vitest-pool-workers": "^0.5.41", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@sentry/cli": "^2.37.0", "@types/mime": "^3.0.4", "concurrently": "^8.2.2", diff --git a/packages/workers.new/package.json b/packages/workers.new/package.json index 959173531e4a..53ef81bd68f3 100644 --- a/packages/workers.new/package.json +++ b/packages/workers.new/package.json @@ -11,7 +11,7 @@ }, "devDependencies": { "@cloudflare/vitest-pool-workers": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/node": "catalog:default", "miniflare": "workspace:*", "typescript": "catalog:default", diff --git a/packages/workflows-shared/package.json b/packages/workflows-shared/package.json index b3a423c1e18f..efe74ebf52e7 100644 --- a/packages/workflows-shared/package.json +++ b/packages/workflows-shared/package.json @@ -43,7 +43,7 @@ "@cloudflare/eslint-config-worker": "workspace:*", "@cloudflare/vitest-pool-workers": "^0.7.0", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@types/mime": "^3.0.4", "esbuild": "catalog:default", "rimraf": "catalog:default", diff --git a/packages/workflows-shared/src/binding.ts b/packages/workflows-shared/src/binding.ts index 9ecefc209439..2b8eae1fd722 100644 --- a/packages/workflows-shared/src/binding.ts +++ b/packages/workflows-shared/src/binding.ts @@ -41,6 +41,7 @@ export class WorkflowBinding extends WorkerEntrypoint implements Workflow { terminate: handle.terminate.bind(handle), restart: handle.restart.bind(handle), status: handle.status.bind(handle), + sendEvent: handle.sendEvent.bind(handle), }; } @@ -63,6 +64,7 @@ export class WorkflowBinding extends WorkerEntrypoint implements Workflow { terminate: handle.terminate.bind(handle), restart: handle.restart.bind(handle), status: handle.status.bind(handle), + sendEvent: handle.sendEvent.bind(handle), }; } public async createBatch( @@ -119,9 +121,16 @@ export class WorkflowHandle extends RpcTarget implements WorkflowInstance { .at(0); const filteredLogs = logs.filter( - (log) => log.event === InstanceEvent.STEP_SUCCESS + (log) => + log.event === InstanceEvent.STEP_SUCCESS || + log.event === InstanceEvent.WAIT_COMPLETE + ); + + const stepOutputs = filteredLogs.map((log) => + log.event === InstanceEvent.STEP_SUCCESS + ? log.metadata.result + : log.metadata.payload ); - const stepOutputs = filteredLogs.map((log) => log.metadata.result); const workflowOutput = workflowSuccessEvent !== undefined @@ -135,4 +144,15 @@ export class WorkflowHandle extends RpcTarget implements WorkflowInstance { output: workflowOutput, }; // output, error } + + public async sendEvent(args: { + payload: unknown; + type: string; + }): Promise { + await this.stub.receiveEvent({ + payload: args.payload, + type: args.type, + timestamp: new Date(), + }); + } } diff --git a/packages/workflows-shared/src/context.ts b/packages/workflows-shared/src/context.ts index 177507af156b..f95803eba036 100644 --- a/packages/workflows-shared/src/context.ts +++ b/packages/workflows-shared/src/context.ts @@ -14,8 +14,15 @@ import type { InstanceMetadata } from "./instance"; import type { WorkflowSleepDuration, WorkflowStepConfig, + WorkflowStepEvent, } from "cloudflare:workers"; +export type Event = { + timestamp: Date; + payload: unknown; + type: string; +}; + export type ResolvedStepConfig = Required; const defaultConfig: Required = { @@ -528,4 +535,172 @@ export class Context extends RpcTarget { return this.sleep(name, timestamp - now); } + + async waitForEvent( + name: string, + options: { + type: string; + timeout?: string | number; + } + ): Promise> { + if (!options.timeout) { + options.timeout = "24 hours"; + } + + const count = this.#getCount("waitForEvent-" + name); + const waitForEventNameWithCounter = `${name}-${count}`; + const hash = await computeHash(waitForEventNameWithCounter); + const cacheKey = `${hash}-${count}`; + const waitForEventKey = `${cacheKey}-value`; + const errorKey = `${cacheKey}-error`; + + const pendingWaiterRegistered = `${cacheKey}-pending`; + + const timeoutError = new WorkflowTimeoutError( + `Execution timed out after ${ms(options.timeout)}ms` + ) as Error & UserErrorField; + + const maybeResult = await this.#state.storage.get(waitForEventKey); + + if (maybeResult) { + const shouldWriteLog = + (await this.#state.storage.get(waitForEventKey)) == undefined; + if (shouldWriteLog) { + this.#engine.writeLog( + InstanceEvent.WAIT_COMPLETE, + cacheKey, + waitForEventNameWithCounter, + maybeResult + ); + } + return maybeResult as WorkflowStepEvent; + } + const maybeError: (Error & UserErrorField) | undefined = + (await this.#state.storage.get(errorKey)) as Error | undefined; + + if (maybeError) { + maybeError.isUserError = true; + throw maybeError; + } + + const maybeRegistered = await this.#state.storage.get( + pendingWaiterRegistered + ); + + if (!maybeRegistered) { + this.#engine.writeLog( + InstanceEvent.WAIT_START, + cacheKey, + waitForEventNameWithCounter, + { + event: options.type, + } + ); + + await this.#state.storage.put(pendingWaiterRegistered, true); + } + + // if there's a timeout on the PQ we pop it, because we wont need it + // @ts-expect-error priorityQueue is initiated in init + const timeoutEntryPQ = this.#engine.priorityQueue.getFirst( + (a) => a.hash === cacheKey && a.type === "timeout" + ); + if ( + (timeoutEntryPQ === undefined && + this.#engine.priorityQueue !== undefined && + this.#engine.priorityQueue.checkIfExistedInPast({ + hash: cacheKey, + type: "timeout", + })) || + (timeoutEntryPQ !== undefined && + timeoutEntryPQ.targetTimestamp < Date.now()) + ) { + this.#engine.writeLog( + InstanceEvent.WAIT_TIMED_OUT, + cacheKey, + waitForEventNameWithCounter, + { + name: timeoutError.name, + message: timeoutError.message, + } + ); + await this.#state.storage.put(errorKey, timeoutError); + throw timeoutError; + } + + const timeoutPromise = async (timeoutToWait: number, addToPQ: boolean) => { + const priorityQueueHash = cacheKey; + if (addToPQ) { + // @ts-expect-error priorityQueue is initiated in init + await this.#engine.priorityQueue.add({ + hash: priorityQueueHash, + targetTimestamp: Date.now() + timeoutToWait, + type: "timeout", + }); + } + await scheduler.wait(timeoutToWait); + // if we reach here, means that we can try to delete the timeout from the PQ + // because we managed to wait in the same lifetime + + // @ts-expect-error priorityQueue is initiated in init + this.#engine.priorityQueue.remove({ + hash: priorityQueueHash, + type: "timeout", + }); + // NOTE(lduarte): marking errors as user error allows the observability layer to avoid leaking + // user errors to sentry while making everything more observable. `isUserError` is not serialized + // into userland code due to how workerd serialzises errors over RPC - we also set it as undefined + // in the obs layer in case changes to workerd happen + const error = timeoutError; + error.isUserError = true; + throw error; + }; + + const eventPromise = new Promise((resolve) => { + // TODO: This might need to be the name, not the event type + + const eventTypeQueue = this.#engine.eventMap.get(options.type); + if (eventTypeQueue) { + const event = eventTypeQueue.shift(); + if (event) { + this.#engine.eventMap.set(options.type, eventTypeQueue); + return resolve(event); + } + } + const callbacks = this.#engine.waiters.get(options.type) ?? []; + callbacks.push(resolve); + + this.#engine.waiters.set(options.type, callbacks); + }); + + const result = await Promise.race([ + eventPromise, + timeoutEntryPQ !== undefined + ? timeoutPromise(timeoutEntryPQ.targetTimestamp - Date.now(), false) + : timeoutPromise(ms(options.timeout), true), + ]) + .then(async (event) => { + console.log(event); + this.#engine.writeLog( + InstanceEvent.WAIT_COMPLETE, + cacheKey, + waitForEventNameWithCounter, + event as Event + ); + await this.#state.storage.put(waitForEventKey, event); + return event; + }) + .catch(async (error) => { + this.#engine.writeLog( + InstanceEvent.WAIT_TIMED_OUT, + cacheKey, + waitForEventNameWithCounter, + error + ); + await this.#state.storage.put(errorKey, error); + throw error; + }); + + return result as WorkflowStepEvent; + } } diff --git a/packages/workflows-shared/src/engine.ts b/packages/workflows-shared/src/engine.ts index 0d0e21e9936a..eddc18dcd414 100644 --- a/packages/workflows-shared/src/engine.ts +++ b/packages/workflows-shared/src/engine.ts @@ -13,6 +13,7 @@ import { startGracePeriod, } from "./lib/gracePeriodSemaphore"; import { TimePriorityQueue } from "./lib/timePriorityQueue"; +import type { Event } from "./context"; import type { InstanceMetadata, RawInstanceLog } from "./instance"; import type { WorkflowEntrypoint, WorkflowEvent } from "cloudflare:workers"; @@ -56,6 +57,7 @@ export type Log = { target: string | null; metadata: { result: unknown; + payload: unknown; }; }; @@ -65,6 +67,8 @@ export type EngineLogs = { const ENGINE_STATUS_KEY = "ENGINE_STATUS"; +const EVENT_MAP_PREFIX = "EVENT_MAP"; + export class Engine extends DurableObject { logs: Array = []; @@ -75,6 +79,10 @@ export class Engine extends DurableObject { timeoutHandler: GracePeriodSemaphore; priorityQueue: TimePriorityQueue | undefined; + waiters: Map) => void>> = + new Map(); + eventMap: Map> = new Map(); + constructor(state: DurableObjectState, env: Env) { super(state, env); void this.ctx.blockConcurrencyWhile(async () => { @@ -179,6 +187,92 @@ export class Engine extends DurableObject { // TODO: Maybe don't actually kill but instead check a flag and return early if true } + async storeEventMap() { + // TODO: this can be more efficient, but oh well + await this.ctx.blockConcurrencyWhile(async () => { + for (const [key, value] of this.eventMap.entries()) { + for (const eventIdx in value) { + await this.ctx.storage.put( + `${EVENT_MAP_PREFIX}\n${key}\n${eventIdx}`, + value[eventIdx] + ); + } + } + }); + } + + async restoreEventMap() { + await this.ctx.blockConcurrencyWhile(async () => { + // FIXME(lduarte): can this OoM the DO in the production? + const entries = await this.ctx.storage.list({ + prefix: EVENT_MAP_PREFIX, + }); + for (const [key, value] of entries) { + const [_, eventType, _idx] = key.split("\n"); + // NOTE(lduarte): safe to do because list returns keys in ascending order, so + // indexes will be correctly ordered + const eventList = this.eventMap.get(eventType) ?? []; + eventList.push(value); + this.eventMap.set(eventType, eventList); + } + }); + } + + async receiveEvent(event: { + timestamp: Date; + payload: unknown; + type: string; + }) { + // Always queue the event first + // TODO: Persist it across lifetimes + // There are four possible cases here: + // - There is a callback waiting, send it + // - There is no callback waiting but engine is alive, store it + // - Engine is not awake and is in Waiting status, store it and start it up + // - Engine is not awake and is in Paused (or another terminal) status, store it + // - Engine is not awake and is Errored or Terminated, this should not get called + let eventTypeQueue = this.eventMap.get(event.type) ?? []; + eventTypeQueue.push(event as Event); + await this.storeEventMap(); + // TODO: persist eventMap - it can be over 2MiB + this.eventMap.set(event.type, eventTypeQueue); + + // if the engine is running + if (this.isRunning) { + // Attempt to get the callback and run it + const callbacks = this.waiters.get(event.type); + if (callbacks) { + const callback = callbacks[0]; + if (callback) { + callback(event); + // Remove it from the list of callbacks + callbacks.shift(); + this.waiters.set(event.type, callbacks); + + eventTypeQueue = this.eventMap.get(event.type) ?? []; + eventTypeQueue.shift(); + this.eventMap.set(event.type, eventTypeQueue); + + return; + } + } + } else { + const metadata = + await this.ctx.storage.get(INSTANCE_METADATA); + if (metadata === undefined) { + throw new Error("Engine was never started"); + } + + void this.init( + metadata.accountId, + metadata.workflow, + metadata.version, + metadata.instance, + metadata.event + ); + } + } + async userTriggeredTerminate() {} async init( @@ -246,6 +340,9 @@ export class Engine extends DurableObject { this.writeLog(InstanceEvent.WORKFLOW_START, null, null, {}); } + // restore eventMap so that waitForEvent across lifetimes works correctly + await this.restoreEventMap(); + const stubStep = new Context(this, this.ctx); const workflowRunningHandler = async () => { diff --git a/packages/workflows-shared/src/instance.ts b/packages/workflows-shared/src/instance.ts index 2f6a37bcfdd6..99e622290596 100644 --- a/packages/workflows-shared/src/instance.ts +++ b/packages/workflows-shared/src/instance.ts @@ -4,6 +4,7 @@ import type { DatabaseVersion, DatabaseWorkflow, } from "./engine"; +import type { WorkflowEvent } from "cloudflare:workers"; export type Instance = { id: string; @@ -23,10 +24,7 @@ export type InstanceMetadata = { workflow: DatabaseWorkflow; version: DatabaseVersion; instance: DatabaseInstance; - event: { - payload: Record; - timestamp: Date; - }; + event: WorkflowEvent; }; export enum InstanceStatus { @@ -106,6 +104,13 @@ export const enum InstanceEvent { ATTEMPT_START = 10, ATTEMPT_SUCCESS = 11, ATTEMPT_FAILURE = 12, + + // It's here just to make it sequential and to not have gaps in the event types. + __INTERNAL_PROD = 13, + + WAIT_START = 14, + WAIT_COMPLETE = 15, + WAIT_TIMED_OUT = 16, } export const enum InstanceTrigger { diff --git a/packages/workflows-shared/src/lib/timePriorityQueue.ts b/packages/workflows-shared/src/lib/timePriorityQueue.ts index b14cdc737ad8..c03dfd63a359 100644 --- a/packages/workflows-shared/src/lib/timePriorityQueue.ts +++ b/packages/workflows-shared/src/lib/timePriorityQueue.ts @@ -228,6 +228,19 @@ export class TimePriorityQueue { ); } + checkIfExistedInPast(entry: Omit) { + return ( + this.#ctx.storage.sql + .exec( + "SELECT * FROM priority_queue WHERE entryType = ? AND hash = ? AND action = ?", + fromWakerPriorityType(entry.type), + entry.hash, + 0 + ) + .toArray().length >= 1 + ); + } + private addEntryDB(entry: WakerPriorityEntry) { this.#ctx.storage.sql.exec( ` diff --git a/packages/workflows-shared/tests/engine.test.ts b/packages/workflows-shared/tests/engine.test.ts index c99561120d0e..b0fe0eb4a953 100644 --- a/packages/workflows-shared/tests/engine.test.ts +++ b/packages/workflows-shared/tests/engine.test.ts @@ -4,7 +4,7 @@ import { runInDurableObject, } from "cloudflare:test"; import { NonRetryableError } from "cloudflare:workflows"; -import { describe, expect, it } from "vitest"; +import { describe, expect, it, vi } from "vitest"; import { InstanceEvent } from "../src"; import type { DatabaseInstance, @@ -60,6 +60,26 @@ async function runWorkflow( return engineStub; } +async function runWorkflowDefer( + instanceId: string, + callback: (event: unknown, step: WorkflowStep) => Promise +): Promise> { + const engineId = env.ENGINE.idFromName(instanceId); + const engineStub = env.ENGINE.get(engineId); + + await setWorkflowEntrypoint(engineStub, callback); + + void engineStub.init( + 12346, + {} as DatabaseWorkflow, + {} as DatabaseVersion, + {} as DatabaseInstance, + { payload: {}, timestamp: new Date(), instanceId: "some-instance-id" } + ); + + return engineStub; +} + describe("Engine", () => { it("should not retry after NonRetryableError is thrown", async () => { const engineStub = await runWorkflow( @@ -113,4 +133,74 @@ describe("Engine", () => { logs.logs.filter((val) => val.event == InstanceEvent.ATTEMPT_FAILURE) ).toHaveLength(1); }); + + it("waitForEvent should receive events while active", async () => { + const engineStub = await runWorkflowDefer( + "MOCK-INSTANCE-ID", + async (_, step) => { + // @ts-expect-error not in worker types, yet + return await step.waitForEvent("i'm a event!", { + type: "event-type-1", + timeout: "10 seconds", + }); + } + ); + + await vi.waitUntil(async () => { + const logs = (await engineStub.readLogs()) as EngineLogs; + return logs.logs.filter((val) => val.event == InstanceEvent.WAIT_START); + }, 500); + + await engineStub.receiveEvent({ + type: "event-type-1", + timestamp: new Date(), + payload: {}, + }); + + await vi.waitUntil(async () => { + const logs = (await engineStub.readLogs()) as EngineLogs; + return logs.logs.filter( + (val) => val.event == InstanceEvent.WORKFLOW_SUCCESS + ); + }, 500); + }); + + it("waitForEvent should receive events even if not active", async () => { + const engineStub = await runWorkflowDefer( + "MOCK-INSTANCE-ID", + async (_, step) => { + // @ts-expect-error not in worker types, yet + return await step.waitForEvent("i'm a event!", { + type: "event-type-1", + timeout: "10 seconds", + }); + } + ); + + await vi.waitUntil(async () => { + const logs = (await engineStub.readLogs()) as EngineLogs; + return logs.logs.filter((val) => val.event == InstanceEvent.WAIT_START); + }, 500); + + try { + await runInDurableObject(engineStub, async (_, state) => { + state.abort("kabooom"); + }); + } catch (e) { + // supposed to error out + } + + await engineStub.receiveEvent({ + type: "event-type-1", + timestamp: new Date(), + payload: {}, + }); + + await vi.waitUntil(async () => { + const logs = (await engineStub.readLogs()) as EngineLogs; + return logs.logs.filter( + (val) => val.event == InstanceEvent.WORKFLOW_SUCCESS + ); + }, 500); + }); }); diff --git a/packages/wrangler/package.json b/packages/wrangler/package.json index 86c241581640..4e91888663f8 100644 --- a/packages/wrangler/package.json +++ b/packages/wrangler/package.json @@ -75,7 +75,7 @@ "miniflare": "workspace:*", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.15", - "workerd": "1.20250404.0" + "workerd": "1.20250405.0" }, "devDependencies": { "@aws-sdk/client-s3": "^3.721.0", @@ -85,7 +85,7 @@ "@cloudflare/types": "6.18.4", "@cloudflare/workers-shared": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20250404.0", + "@cloudflare/workers-types": "^4.20250405.0", "@cspotcode/source-map-support": "0.8.1", "@iarna/toml": "^3.0.0", "@microsoft/api-extractor": "^7.47.0", @@ -160,7 +160,7 @@ "yargs": "^17.7.2" }, "peerDependencies": { - "@cloudflare/workers-types": "^4.20250404.0" + "@cloudflare/workers-types": "^4.20250405.0" }, "peerDependenciesMeta": { "@cloudflare/workers-types": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3db795bc3588..8cf3facde578 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,8 +84,8 @@ importers: specifier: ^0.4.0 version: 0.4.0 '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@ianvs/prettier-plugin-sort-imports': specifier: 4.2.1 version: 4.2.1(@vue/compiler-sfc@3.3.4)(prettier@3.2.5) @@ -141,8 +141,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -183,8 +183,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 run-script-os: specifier: ^1.1.6 version: 1.1.6 @@ -207,8 +207,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -228,8 +228,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -282,8 +282,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -352,8 +352,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/node': specifier: ^18.19.75 version: 18.19.76 @@ -392,8 +392,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -413,8 +413,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 undici: specifier: catalog:default version: 5.28.5 @@ -431,8 +431,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/pg': specifier: ^8.11.2 version: 8.11.6 @@ -476,8 +476,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -501,8 +501,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 pages-plugin-example: specifier: workspace:* version: link:../pages-plugin-example @@ -579,8 +579,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -631,8 +631,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 pages-plugin-example: specifier: workspace:* version: link:../pages-plugin-example @@ -691,8 +691,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -896,8 +896,8 @@ importers: specifier: workspace:* version: link:../../packages/vitest-pool-workers '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@microlabs/otel-cf-workers': specifier: 1.0.0-rc.45 version: 1.0.0-rc.45(@opentelemetry/api@1.7.0) @@ -943,8 +943,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 undici: specifier: ^5.28.4 version: 5.28.5 @@ -980,8 +980,8 @@ importers: fixtures/worker-ts: devDependencies: '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 wrangler: specifier: workspace:* version: link:../../packages/wrangler @@ -992,8 +992,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -1013,8 +1013,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -1034,8 +1034,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -1055,8 +1055,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -1076,8 +1076,8 @@ importers: specifier: workspace:* version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/jest-image-snapshot': specifier: ^6.4.0 version: 6.4.0 @@ -1105,9 +1105,12 @@ importers: fixtures/workflow: devDependencies: + '@cloudflare/workers-tsconfig': + specifier: workspace:* + version: link:../../packages/workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -1124,8 +1127,8 @@ importers: fixtures/workflow-multiple: devDependencies: '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -1253,8 +1256,8 @@ importers: specifier: workspace:* version: link:../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@iarna/toml': specifier: ^3.0.0 version: 3.0.0 @@ -1394,8 +1397,8 @@ importers: specifier: workspace:* version: link:../eslint-config-worker '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/cookie': specifier: ^0.6.0 version: 0.6.0 @@ -1449,8 +1452,8 @@ importers: specifier: workspace:* version: link:../eslint-config-worker '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 mustache: specifier: ^4.2.0 version: 4.2.0 @@ -1480,8 +1483,8 @@ importers: specifier: ^4.1.0 version: 4.1.0 '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/mime': specifier: ^3.0.4 version: 3.0.4 @@ -1522,8 +1525,8 @@ importers: specifier: catalog:default version: 5.28.5 workerd: - specifier: 1.20250404.0 - version: 1.20250404.0 + specifier: 1.20250405.0 + version: 1.20250405.0 ws: specifier: catalog:default version: 8.18.0 @@ -1544,8 +1547,8 @@ importers: specifier: workspace:* version: link:../workers-shared '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@cloudflare/workflows-shared': specifier: workspace:* version: link:../workflows-shared @@ -1681,13 +1684,13 @@ importers: devDependencies: '@cloudflare/vitest-pool-workers': specifier: 0.7.0 - version: 0.7.0(@cloudflare/workers-types@4.20250404.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@3.0.8) + version: 0.7.0(@cloudflare/workers-types@4.20250405.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@3.0.8) '@cloudflare/workers-tsconfig': specifier: workspace:* version: link:../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -1714,8 +1717,8 @@ importers: specifier: workspace:* version: link:../eslint-config-worker '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/cookie': specifier: ^0.6.0 version: 0.6.0 @@ -1751,8 +1754,8 @@ importers: specifier: workspace:* version: link:../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 wrangler: specifier: workspace:* version: link:../wrangler @@ -1782,8 +1785,8 @@ importers: specifier: workspace:^ version: link:../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 esbuild: specifier: catalog:default version: 0.24.2 @@ -1880,8 +1883,8 @@ importers: specifier: workspace:* version: link:../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/node': specifier: ^18.19.75 version: 18.19.76 @@ -1937,8 +1940,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -1958,8 +1961,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -1979,8 +1982,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2000,8 +2003,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2021,8 +2024,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2042,8 +2045,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2063,8 +2066,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2084,8 +2087,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2105,8 +2108,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2126,8 +2129,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2147,8 +2150,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2168,8 +2171,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2189,8 +2192,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2216,11 +2219,11 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@remix-run/cloudflare': specifier: 2.12.0 - version: 2.12.0(@cloudflare/workers-types@4.20250404.0)(typescript@5.7.3) + version: 2.12.0(@cloudflare/workers-types@4.20250405.0)(typescript@5.7.3) '@types/react': specifier: ^18.3.11 version: 18.3.18 @@ -2252,8 +2255,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2273,8 +2276,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/node': specifier: ^18.19.75 version: 18.19.76 @@ -2304,7 +2307,7 @@ importers: dependencies: partyserver: specifier: ^0.0.64 - version: 0.0.64(@cloudflare/workers-types@4.20250404.0) + version: 0.0.64(@cloudflare/workers-types@4.20250405.0) partysocket: specifier: ^1.0.3 version: 1.0.3 @@ -2322,8 +2325,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@tailwindcss/vite': specifier: ^4.0.15 version: 4.0.15(vite@6.1.0(@types/node@18.19.76)(jiti@2.4.2)(lightningcss@1.29.2)) @@ -2358,8 +2361,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@prisma/adapter-d1': specifier: ^6.3.0 version: 6.3.1 @@ -2395,8 +2398,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/react': specifier: ^19.0.0 version: 19.0.7 @@ -2425,8 +2428,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2453,8 +2456,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/react': specifier: ^19.0.0 version: 19.0.7 @@ -2483,8 +2486,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2504,8 +2507,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2525,8 +2528,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2546,8 +2549,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2567,8 +2570,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2588,8 +2591,8 @@ importers: specifier: workspace:* version: link:../../../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 typescript: specifier: catalog:default version: 5.7.3 @@ -2637,8 +2640,8 @@ importers: specifier: workspace:* version: link:../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/node': specifier: ^18.19.75 version: 18.19.76 @@ -2848,13 +2851,13 @@ importers: version: link:../eslint-config-worker '@cloudflare/vitest-pool-workers': specifier: ^0.5.41 - version: 0.5.41(@cloudflare/workers-types@4.20250404.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@2.1.9) + version: 0.5.41(@cloudflare/workers-types@4.20250405.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@2.1.9) '@cloudflare/workers-tsconfig': specifier: workspace:* version: link:../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@sentry/cli': specifier: ^2.37.0 version: 2.41.1(encoding@0.1.13) @@ -2891,8 +2894,8 @@ importers: specifier: workspace:* version: link:../vitest-pool-workers '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/node': specifier: ^18.19.75 version: 18.19.76 @@ -2929,13 +2932,13 @@ importers: version: link:../eslint-config-worker '@cloudflare/vitest-pool-workers': specifier: ^0.7.0 - version: 0.7.1(@cloudflare/workers-types@4.20250404.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@3.0.8) + version: 0.7.1(@cloudflare/workers-types@4.20250405.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@3.0.8) '@cloudflare/workers-tsconfig': specifier: workspace:* version: link:../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@types/mime': specifier: ^3.0.4 version: 3.0.4 @@ -2959,7 +2962,7 @@ importers: version: link:../kv-asset-handler '@cloudflare/unenv-preset': specifier: 2.3.1 - version: 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250404.0) + version: 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250405.0) blake3-wasm: specifier: 2.1.5 version: 2.1.5 @@ -2976,8 +2979,8 @@ importers: specifier: 2.0.0-rc.15 version: 2.0.0-rc.15 workerd: - specifier: 1.20250404.0 - version: 1.20250404.0 + specifier: 1.20250405.0 + version: 1.20250405.0 optionalDependencies: fsevents: specifier: ~2.3.2 @@ -3008,8 +3011,8 @@ importers: specifier: workspace:* version: link:../workers-tsconfig '@cloudflare/workers-types': - specifier: ^4.20250404.0 - version: 4.20250404.0 + specifier: ^4.20250405.0 + version: 4.20250405.0 '@cspotcode/source-map-support': specifier: 0.8.1 version: 0.8.1 @@ -3861,8 +3864,8 @@ packages: cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-64@1.20250404.0': - resolution: {integrity: sha512-+z67wjimn7pZDJI5Ibt2TtNxreFJdFPd5dBMmQqtIfkwrlIsL4PkjHYdiffO7guFP9UygomThuKUaBOU4JA15Q==} + '@cloudflare/workerd-darwin-64@1.20250405.0': + resolution: {integrity: sha512-K3izJ+H6S+U/fIaYwArz5J3t55D//YTWV2XBz55j67tK0CkBQwnCR6vVVM4kA39GhtknrhXrYq45g0uP0rnE+A==} engines: {node: '>=16'} cpu: [x64] os: [darwin] @@ -3885,8 +3888,8 @@ packages: cpu: [arm64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20250404.0': - resolution: {integrity: sha512-MxFuWqR5bMcc92khreSlYOJxr0OIlJxABdrWQsaogWsxI6p7Df9gV1T36pqg+ERa9fVhkkGERkalt9DJYyYicA==} + '@cloudflare/workerd-darwin-arm64@1.20250405.0': + resolution: {integrity: sha512-iSYQRBGnWMamCTMqlb0Oho0T8S/y85FsggcI1S9bbHaGqkVdFA1LxLo6WOjtiDT+EYoFcAKCz13OXoFZzIufkQ==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] @@ -3909,8 +3912,8 @@ packages: cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-64@1.20250404.0': - resolution: {integrity: sha512-f4rNJ45376vGB6WHmxxiZ50nmxMws337EvWthhNAZTyeoTYmJUbZjjWCaHR8clWXN8LLK1Tu1bkjsih730X41g==} + '@cloudflare/workerd-linux-64@1.20250405.0': + resolution: {integrity: sha512-JxU5RFe9daw1eWDAah1g/sAbOHBFx5zrmx4Rxgkji6slYO4/ZpIspd+Qm+H6PQidtaFewjA6t+VqL9qurhXfSg==} engines: {node: '>=16'} cpu: [x64] os: [linux] @@ -3933,8 +3936,8 @@ packages: cpu: [arm64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20250404.0': - resolution: {integrity: sha512-UW54a/vZG6W1oiA9PUSatQ0LLWrxnwAX7rN/bCFLiT6n51PP8KgpM1LzrIvQM80WjH/ufqopZJe/TSgrrSss6Q==} + '@cloudflare/workerd-linux-arm64@1.20250405.0': + resolution: {integrity: sha512-bgZMhX+tZVYS4Ck2lgJhywWeP4NG29uMyccj+FulVYdEY+p+F3wi/q47ZjVq+U90CjhcfcAuoER4i6zrsUxXmQ==} engines: {node: '>=16'} cpu: [arm64] os: [linux] @@ -3957,8 +3960,8 @@ packages: cpu: [x64] os: [win32] - '@cloudflare/workerd-windows-64@1.20250404.0': - resolution: {integrity: sha512-AJJP8vjJ6ioBzqUxVyByv5tE74z5LZ7G5To7w7dtYjWvKZzFo39bZZwGCGryHmH4yaOylXubFv72YVH8+Y4GSQ==} + '@cloudflare/workerd-windows-64@1.20250405.0': + resolution: {integrity: sha512-UmXGt1p+3O84E40tSPeC9l6o03gcf1n2BKFg18R+cNlpw1mbPD0iROLMMgPXCP53EJqtQGjbXuoM5ndrkCL2ww==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -3966,8 +3969,8 @@ packages: '@cloudflare/workers-types@4.20240614.0': resolution: {integrity: sha512-fnV3uXD1Hpq5EWnY7XYb+smPcjzIoUFiZpTSV/Tk8qKL3H+w6IqcngZwXQBZ/2U/DwYkDilXHW3FfPhnyD7FZA==} - '@cloudflare/workers-types@4.20250404.0': - resolution: {integrity: sha512-XB8LNS9spWcxU56Tt/RPl0S06oyXfZCSDVKBbzjHYZtgN5kZP4UtTR01t16HUfo330EtJOo8cdo/PbiBAwRNIg==} + '@cloudflare/workers-types@4.20250405.0': + resolution: {integrity: sha512-rE7LQirsEorBir5hymXpi0D+G01lZ65GZTKBjmkbWLNHRQyyG964wqlMzxFuFTndKttLTlJjZyZHHg5scBi4Kg==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -11996,8 +11999,8 @@ packages: engines: {node: '>=16'} hasBin: true - workerd@1.20250404.0: - resolution: {integrity: sha512-dvXsRdy49/vd4nPENpTDFjbPvR3XdPa8lJrxcnDKL1XtoioYXflq3ys8ljuu+X71ojqAAjnQj62AzrmmKM095g==} + workerd@1.20250405.0: + resolution: {integrity: sha512-6+bOTz5ErQ8Ry91cAaRdipr/2o/EhNnRJAP69OKLii4nyU1A/EWsNhaZHGjBIPGKhla6qXS1BN41WEhFXUjI2w==} engines: {node: '>=16'} hasBin: true @@ -13328,11 +13331,11 @@ snapshots: '@cloudflare/util-en-garde': 8.0.10 react: 18.3.1 - '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250404.0)': + '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250405.0)': dependencies: unenv: 2.0.0-rc.15 optionalDependencies: - workerd: 1.20250404.0 + workerd: 1.20250405.0 '@cloudflare/util-en-garde@8.0.10': dependencies: @@ -13349,7 +13352,7 @@ snapshots: lodash.memoize: 4.1.2 marked: 0.3.19 - '@cloudflare/vitest-pool-workers@0.5.41(@cloudflare/workers-types@4.20250404.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@2.1.9)': + '@cloudflare/vitest-pool-workers@0.5.41(@cloudflare/workers-types@4.20250405.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@2.1.9)': dependencies: '@vitest/runner': 3.0.8 '@vitest/snapshot': 3.0.8 @@ -13360,7 +13363,7 @@ snapshots: miniflare: 3.20241230.0 semver: 7.7.1 vitest: 2.1.9(@types/node@18.19.76)(@vitest/ui@2.1.9)(lightningcss@1.29.2) - wrangler: 3.100.0(@cloudflare/workers-types@4.20250404.0) + wrangler: 3.100.0(@cloudflare/workers-types@4.20250405.0) zod: 3.22.3 transitivePeerDependencies: - '@cloudflare/workers-types' @@ -13368,7 +13371,7 @@ snapshots: - supports-color - utf-8-validate - '@cloudflare/vitest-pool-workers@0.7.0(@cloudflare/workers-types@4.20250404.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@3.0.8)': + '@cloudflare/vitest-pool-workers@0.7.0(@cloudflare/workers-types@4.20250405.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@3.0.8)': dependencies: '@vitest/runner': 3.0.8 '@vitest/snapshot': 3.0.8 @@ -13379,14 +13382,14 @@ snapshots: miniflare: 3.20250214.0 semver: 7.7.1 vitest: 3.0.8(@types/node@18.19.76)(@vitest/ui@3.0.8)(jiti@2.4.2)(lightningcss@1.29.2)(msw@2.4.3(typescript@5.7.3))(supports-color@9.2.2) - wrangler: 3.109.2(@cloudflare/workers-types@4.20250404.0) + wrangler: 3.109.2(@cloudflare/workers-types@4.20250405.0) zod: 3.22.3 transitivePeerDependencies: - '@cloudflare/workers-types' - bufferutil - utf-8-validate - '@cloudflare/vitest-pool-workers@0.7.1(@cloudflare/workers-types@4.20250404.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@3.0.8)': + '@cloudflare/vitest-pool-workers@0.7.1(@cloudflare/workers-types@4.20250405.0)(@vitest/runner@3.0.8)(@vitest/snapshot@3.0.8)(vitest@3.0.8)': dependencies: '@vitest/runner': 3.0.8 '@vitest/snapshot': 3.0.8 @@ -13397,7 +13400,7 @@ snapshots: miniflare: 3.20250214.0 semver: 7.7.1 vitest: 3.0.8(@types/node@18.19.76)(@vitest/ui@3.0.8)(jiti@2.4.2)(lightningcss@1.29.2)(msw@2.4.3(typescript@5.7.3))(supports-color@9.2.2) - wrangler: 3.109.2(@cloudflare/workers-types@4.20250404.0) + wrangler: 3.109.2(@cloudflare/workers-types@4.20250405.0) zod: 3.22.3 transitivePeerDependencies: - '@cloudflare/workers-types' @@ -13413,7 +13416,7 @@ snapshots: '@cloudflare/workerd-darwin-64@1.20250320.0': optional: true - '@cloudflare/workerd-darwin-64@1.20250404.0': + '@cloudflare/workerd-darwin-64@1.20250405.0': optional: true '@cloudflare/workerd-darwin-arm64@1.20241230.0': @@ -13425,7 +13428,7 @@ snapshots: '@cloudflare/workerd-darwin-arm64@1.20250320.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20250404.0': + '@cloudflare/workerd-darwin-arm64@1.20250405.0': optional: true '@cloudflare/workerd-linux-64@1.20241230.0': @@ -13437,7 +13440,7 @@ snapshots: '@cloudflare/workerd-linux-64@1.20250320.0': optional: true - '@cloudflare/workerd-linux-64@1.20250404.0': + '@cloudflare/workerd-linux-64@1.20250405.0': optional: true '@cloudflare/workerd-linux-arm64@1.20241230.0': @@ -13449,7 +13452,7 @@ snapshots: '@cloudflare/workerd-linux-arm64@1.20250320.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20250404.0': + '@cloudflare/workerd-linux-arm64@1.20250405.0': optional: true '@cloudflare/workerd-windows-64@1.20241230.0': @@ -13461,12 +13464,12 @@ snapshots: '@cloudflare/workerd-windows-64@1.20250320.0': optional: true - '@cloudflare/workerd-windows-64@1.20250404.0': + '@cloudflare/workerd-windows-64@1.20250405.0': optional: true '@cloudflare/workers-types@4.20240614.0': {} - '@cloudflare/workers-types@4.20250404.0': {} + '@cloudflare/workers-types@4.20250405.0': {} '@colors/colors@1.5.0': optional: true @@ -14668,10 +14671,10 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@remix-run/cloudflare@2.12.0(@cloudflare/workers-types@4.20250404.0)(typescript@5.7.3)': + '@remix-run/cloudflare@2.12.0(@cloudflare/workers-types@4.20250405.0)(typescript@5.7.3)': dependencies: '@cloudflare/kv-asset-handler': 0.1.3 - '@cloudflare/workers-types': 4.20250404.0 + '@cloudflare/workers-types': 4.20250405.0 '@remix-run/server-runtime': 2.12.0(typescript@5.7.3) optionalDependencies: typescript: 5.7.3 @@ -19795,9 +19798,9 @@ snapshots: parseurl@1.3.3: {} - partyserver@0.0.64(@cloudflare/workers-types@4.20250404.0): + partyserver@0.0.64(@cloudflare/workers-types@4.20250405.0): dependencies: - '@cloudflare/workers-types': 4.20250404.0 + '@cloudflare/workers-types': 4.20250405.0 nanoid: 5.1.0 partysocket@1.0.3: @@ -22116,17 +22119,17 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20250320.0 '@cloudflare/workerd-windows-64': 1.20250320.0 - workerd@1.20250404.0: + workerd@1.20250405.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20250404.0 - '@cloudflare/workerd-darwin-arm64': 1.20250404.0 - '@cloudflare/workerd-linux-64': 1.20250404.0 - '@cloudflare/workerd-linux-arm64': 1.20250404.0 - '@cloudflare/workerd-windows-64': 1.20250404.0 + '@cloudflare/workerd-darwin-64': 1.20250405.0 + '@cloudflare/workerd-darwin-arm64': 1.20250405.0 + '@cloudflare/workerd-linux-64': 1.20250405.0 + '@cloudflare/workerd-linux-arm64': 1.20250405.0 + '@cloudflare/workerd-windows-64': 1.20250405.0 workerpool@6.5.1: {} - wrangler@3.100.0(@cloudflare/workers-types@4.20250404.0): + wrangler@3.100.0(@cloudflare/workers-types@4.20250405.0): dependencies: '@cloudflare/kv-asset-handler': 0.3.4 '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) @@ -22146,14 +22149,14 @@ snapshots: workerd: 1.20241230.0 xxhash-wasm: 1.1.0 optionalDependencies: - '@cloudflare/workers-types': 4.20250404.0 + '@cloudflare/workers-types': 4.20250405.0 fsevents: 2.3.3 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - wrangler@3.109.2(@cloudflare/workers-types@4.20250404.0): + wrangler@3.109.2(@cloudflare/workers-types@4.20250405.0): dependencies: '@cloudflare/kv-asset-handler': 0.3.4 '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) @@ -22165,7 +22168,7 @@ snapshots: unenv: 2.0.0-rc.1 workerd: 1.20250214.0 optionalDependencies: - '@cloudflare/workers-types': 4.20250404.0 + '@cloudflare/workers-types': 4.20250405.0 fsevents: 2.3.3 sharp: 0.33.5 transitivePeerDependencies: