diff --git a/.changeset/v1-assetsignore-runtime.md b/.changeset/v1-assetsignore-runtime.md
new file mode 100644
index 00000000000..5ff81cde91e
--- /dev/null
+++ b/.changeset/v1-assetsignore-runtime.md
@@ -0,0 +1,9 @@
+---
+"@cloudflare/vite-plugin": minor
+---
+
+Validate asset ignore files and update local Flagship support
+
+Upgrade Miniflare to 5.20261023.2-beta and Wrangler to 4.155.0. Builds and asset manifest generation now reject `.assetsignore` files with invalid UTF-8 or null characters instead of silently ignoring their patterns. The Local Explorer also supports Flagship management by app ID, and local flag evaluations retain metadata.
+
+Miniflare also waits for temporary file cleanup before disposal completes, so closing or restarting a Vite dev server finishes cleanup before returning.
diff --git a/fixtures/dev-registry/package.json b/fixtures/dev-registry/package.json
index 351dbae36c0..ba2d254fb16 100644
--- a/fixtures/dev-registry/package.json
+++ b/fixtures/dev-registry/package.json
@@ -16,6 +16,6 @@
"typescript": "catalog:default",
"vite": "catalog:default",
"vitest": "catalog:default",
- "wrangler": "4.154.0"
+ "wrangler": "4.155.0"
}
}
diff --git a/fixtures/shared/package.json b/fixtures/shared/package.json
index 6923bcf5961..09da8c39861 100644
--- a/fixtures/shared/package.json
+++ b/fixtures/shared/package.json
@@ -3,7 +3,7 @@
"private": true,
"description": "Shared fixtures for testing",
"devDependencies": {
- "@cloudflare/workers-utils": "0.49.0",
- "wrangler": "4.154.0"
+ "@cloudflare/workers-utils": "0.50.0",
+ "wrangler": "4.155.0"
}
}
diff --git a/packages/mock-npm-registry/package.json b/packages/mock-npm-registry/package.json
index 71ff683c255..cafd3c3632e 100644
--- a/packages/mock-npm-registry/package.json
+++ b/packages/mock-npm-registry/package.json
@@ -19,7 +19,7 @@
"test:ci": "vitest run"
},
"devDependencies": {
- "@cloudflare/workers-utils": "0.49.0",
+ "@cloudflare/workers-utils": "0.50.0",
"@types/node": "catalog:default",
"@verdaccio/types": "^10.8.0",
"get-port": "^7.0.0",
diff --git a/packages/remote-bindings/package.json b/packages/remote-bindings/package.json
index 61ac6e6bf01..16c05763c73 100644
--- a/packages/remote-bindings/package.json
+++ b/packages/remote-bindings/package.json
@@ -31,12 +31,12 @@
"test:watch": "vitest"
},
"dependencies": {
- "@cloudflare/cli-shared-helpers": "0.2.7",
- "@cloudflare/deploy-helpers": "0.24.1",
+ "@cloudflare/cli-shared-helpers": "0.2.10",
+ "@cloudflare/deploy-helpers": "0.24.2",
"@cloudflare/workers-auth": "0.15.1",
- "@cloudflare/workers-utils": "0.49.0",
+ "@cloudflare/workers-utils": "0.50.0",
"chalk": "catalog:default",
- "miniflare": "5.20261023.1-beta",
+ "miniflare": "5.20261023.2-beta",
"undici": "catalog:default",
"ws": "catalog:default"
},
diff --git a/packages/vite-plugin-cloudflare/e2e/fixtures/remote-bindings-config-account-id/package.json b/packages/vite-plugin-cloudflare/e2e/fixtures/remote-bindings-config-account-id/package.json
index 63d04d6227e..37a39acab47 100644
--- a/packages/vite-plugin-cloudflare/e2e/fixtures/remote-bindings-config-account-id/package.json
+++ b/packages/vite-plugin-cloudflare/e2e/fixtures/remote-bindings-config-account-id/package.json
@@ -14,7 +14,7 @@
"@cloudflare/vite-plugin": "*",
"@cloudflare/workers-types": "^5.20260706.1",
"globals": "^15.14.0",
- "miniflare": "5.20261023.1-beta",
+ "miniflare": "5.20261023.2-beta",
"typescript": "~5.7.2",
"vite": "^8.0.0",
"wrangler": "*"
diff --git a/packages/vite-plugin-cloudflare/package.json b/packages/vite-plugin-cloudflare/package.json
index 715d8f1042e..37cc9cfbd13 100644
--- a/packages/vite-plugin-cloudflare/package.json
+++ b/packages/vite-plugin-cloudflare/package.json
@@ -46,19 +46,19 @@
},
"dependencies": {
"@cloudflare/unenv-preset": "2.16.2",
- "miniflare": "5.20261023.1-beta",
+ "miniflare": "5.20261023.2-beta",
"unenv": "2.0.0-rc.24",
- "wrangler": "4.154.0",
+ "wrangler": "4.155.0",
"ws": "8.22.0"
},
"devDependencies": {
- "@cloudflare/containers-shared": "0.23.3",
+ "@cloudflare/containers-shared": "0.23.4",
"@cloudflare/mock-npm-registry": "workspace:*",
"@cloudflare/remote-bindings": "workspace:*",
"@cloudflare/workers-shared": "workspace:*",
"@cloudflare/workers-tsconfig": "workspace:*",
"@cloudflare/workers-types": "5.20261023.1",
- "@cloudflare/workers-utils": "0.49.0",
+ "@cloudflare/workers-utils": "0.50.0",
"@remix-run/node-fetch-server": "1.0.0",
"@types/node": "22.15.17",
"@types/semver": "7.8.0",
@@ -82,7 +82,7 @@
},
"peerDependencies": {
"vite": "^6.1.0 || ^7.0.0 || ^8.0.0",
- "wrangler": "^4.154.0"
+ "wrangler": "^4.155.0"
},
"workers-sdk": {
"prerelease": true
diff --git a/packages/vite-plugin-cloudflare/playground/prisma/package.json b/packages/vite-plugin-cloudflare/playground/prisma/package.json
index 9fe8acb965f..5df0498cb1d 100644
--- a/packages/vite-plugin-cloudflare/playground/prisma/package.json
+++ b/packages/vite-plugin-cloudflare/playground/prisma/package.json
@@ -16,7 +16,7 @@
"@cloudflare/vite-plugin": "workspace:*",
"@cloudflare/workers-tsconfig": "workspace:*",
"@cloudflare/workers-types": "catalog:default",
- "@cloudflare/workers-utils": "0.49.0",
+ "@cloudflare/workers-utils": "0.50.0",
"@prisma/adapter-d1": "^7.0.0",
"@prisma/client": "^7.0.0",
"prisma": "^7.0.0",
diff --git a/packages/vite-plugin-cloudflare/src/__tests__/output-config.spec.ts b/packages/vite-plugin-cloudflare/src/__tests__/output-config.spec.ts
index 89fc42ca97f..d0df89a8f30 100644
--- a/packages/vite-plugin-cloudflare/src/__tests__/output-config.spec.ts
+++ b/packages/vite-plugin-cloudflare/src/__tests__/output-config.spec.ts
@@ -2,10 +2,11 @@ import * as fs from "node:fs";
import * as os from "node:os";
import * as path from "node:path";
import { removeDirSync } from "@cloudflare/workers-utils";
+import * as vite from "vite";
import { describe, onTestFinished, test } from "vitest";
+import { cloudflare } from "../index";
import { getOutputConfig } from "../plugins/output-config";
import type { ResolvedWorkerConfig } from "../plugin-config";
-import type * as vite from "vite";
describe("getWorkerOutputConfig", () => {
function createRoot() {
@@ -16,6 +17,42 @@ describe("getWorkerOutputConfig", () => {
return tempRoot;
}
+ test.for([
+ ["invalid UTF-8", Buffer.from([0xff, 0xfe])],
+ ["null characters", Buffer.from("ignored\0.txt")],
+ ] as const)(
+ "rejects source .assetsignore with %s before emitting it",
+ async ([, contents], { expect }) => {
+ const root = createRoot();
+ fs.mkdirSync(path.join(root, "public"));
+ fs.writeFileSync(path.join(root, "public/index.html"), "
Assets
");
+ fs.writeFileSync(path.join(root, "public/.assetsignore"), contents);
+ fs.writeFileSync(
+ path.join(root, "worker.js"),
+ 'export default { fetch() { return new Response("ready"); } };'
+ );
+ fs.writeFileSync(
+ path.join(root, "wrangler.json"),
+ JSON.stringify({
+ name: "ignore-validation",
+ main: "worker.js",
+ compatibility_date: "2026-10-23",
+ assets: { binding: "ASSETS" },
+ })
+ );
+ const builder = await vite.createBuilder({
+ root,
+ configFile: false,
+ logLevel: "silent",
+ plugins: [cloudflare({ inspectorPort: false, persistState: false })],
+ });
+
+ await expect(builder.buildApp()).rejects.toThrow(
+ /must be UTF-8 encoded and must not contain null characters/
+ );
+ }
+ );
+
function resolvedViteConfig(root: string): vite.ResolvedConfig {
return {
root,
diff --git a/packages/vite-plugin-cloudflare/src/plugins/output-config.ts b/packages/vite-plugin-cloudflare/src/plugins/output-config.ts
index 672c1a230f1..a9132cedde5 100644
--- a/packages/vite-plugin-cloudflare/src/plugins/output-config.ts
+++ b/packages/vite-plugin-cloudflare/src/plugins/output-config.ts
@@ -1,6 +1,6 @@
import assert from "node:assert";
-import * as fs from "node:fs";
import * as path from "node:path";
+import { readAssetsIgnoreFile as readAssetsIgnorePatterns } from "@cloudflare/workers-shared/utils/helpers";
import * as vite from "vite";
import { MAIN_ENTRY_NAME } from "../cloudflare-environment";
import { assertIsNotPreview } from "../context";
@@ -263,9 +263,7 @@ function rewriteMigrationsPattern(
}
function readAssetsIgnoreFile(assetsIgnorePath: string): string {
- const content = fs.existsSync(assetsIgnorePath)
- ? fs.readFileSync(assetsIgnorePath, "utf-8")
- : "";
+ const content = readAssetsIgnorePatterns(assetsIgnorePath) ?? "";
if (content.length === 0) {
return "";
}
diff --git a/packages/workers-shared/utils/helpers.ts b/packages/workers-shared/utils/helpers.ts
index 648c5d96e45..a23dce345be 100644
--- a/packages/workers-shared/utils/helpers.ts
+++ b/packages/workers-shared/utils/helpers.ts
@@ -1,5 +1,6 @@
import { readFileSync } from "node:fs";
import { isAbsolute, resolve, sep } from "node:path";
+import { TextDecoder } from "node:util";
import ignore from "ignore";
import mime from "mime";
import {
@@ -62,6 +63,44 @@ export function maybeGetFile(filePath: PathOrFileDescriptor) {
}
}
+/** An ignore file whose encoding cannot be used to match asset paths. */
+export class InvalidAssetsIgnoreError extends Error {
+ constructor(filePath: string) {
+ super(
+ `The .assetsignore file at "${filePath}" must be UTF-8 encoded and must not contain null characters. Save the file as UTF-8 and try again.`
+ );
+ this.name = "InvalidAssetsIgnoreError";
+ }
+}
+
+/**
+ * Read ignore patterns without silently replacing undecodable characters.
+ * @param filePath Path to the asset ignore file.
+ * @returns Valid UTF-8 patterns, or undefined when the file does not exist.
+ */
+export function readAssetsIgnoreFile(filePath: string): string | undefined {
+ let contents: Buffer;
+ try {
+ contents = readFileSync(filePath);
+ } catch (error) {
+ if (thrownIsDoesNotExistError(error)) {
+ return;
+ }
+ throw error;
+ }
+
+ try {
+ const text = new TextDecoder("utf-8", { fatal: true }).decode(contents);
+ // BOM-less UTF-16 can be valid UTF-8 bytes but cannot form usable patterns.
+ if (text.includes("\0")) {
+ throw new Error("Ignore patterns contain a null character.");
+ }
+ return text;
+ } catch {
+ throw new InvalidAssetsIgnoreError(filePath);
+ }
+}
+
/**
* Create a function for filtering out ignored assets.
*
@@ -80,7 +119,7 @@ export async function createAssetsIgnoreFunction(dir: string) {
];
let assetsIgnoreFilePresent = false;
- const assetsIgnore = maybeGetFile(cfAssetIgnorePath);
+ const assetsIgnore = readAssetsIgnoreFile(cfAssetIgnorePath);
if (assetsIgnore !== undefined) {
assetsIgnoreFilePresent = true;
ignorePatterns.push(...assetsIgnore.split("\n"));
diff --git a/packages/workers-shared/utils/tests/helpers.test.ts b/packages/workers-shared/utils/tests/helpers.test.ts
index 827f1e83031..3407ddacecb 100644
--- a/packages/workers-shared/utils/tests/helpers.test.ts
+++ b/packages/workers-shared/utils/tests/helpers.test.ts
@@ -3,14 +3,21 @@ import { writeFile } from "node:fs/promises";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { describe, it } from "vitest";
-import { createAssetsIgnoreFunction, getContentType } from "../helpers";
+import {
+ createAssetsIgnoreFunction,
+ getContentType,
+ InvalidAssetsIgnoreError,
+} from "../helpers";
describe("assets", () => {
const tmpDir = mkdtempSync(join(tmpdir(), "wrangler-tests"));
describe(".assetsignore", () => {
it("should ignore metafiles by default", async ({ expect }) => {
- const { assetsIgnoreFunction } = await createAssetsIgnoreFunction(tmpDir);
+ const { assetsIgnoreFunction, assetsIgnoreFilePresent } =
+ await createAssetsIgnoreFunction(tmpDir);
+
+ expect(assetsIgnoreFilePresent).toBe(false);
expect(assetsIgnoreFunction(".assetsignore")).toBeTruthy();
expect(assetsIgnoreFunction("_redirects")).toBeTruthy();
@@ -52,6 +59,53 @@ describe("assets", () => {
).toBeTruthy();
expect(assetsIgnoreFunction(join("child", "nope.svg"))).toBeFalsy();
});
+
+ it.for(["", "\ufeff"])(
+ "reads UTF-8 patterns with an optional BOM (%j)",
+ async (bom, { expect }) => {
+ await writeFile(
+ join(tmpDir, ".assetsignore"),
+ `${bom}café.txt\r\nchild/*.txt\r\n!child/keep.txt\r\n`
+ );
+ const { assetsIgnoreFunction, assetsIgnoreFilePresent } =
+ await createAssetsIgnoreFunction(tmpDir);
+
+ expect(assetsIgnoreFilePresent).toBe(true);
+ expect(assetsIgnoreFunction("café.txt")).toBe(true);
+ expect(assetsIgnoreFunction("child/ignore.txt")).toBe(true);
+ expect(assetsIgnoreFunction("child/keep.txt")).toBe(false);
+ }
+ );
+
+ it.for([
+ ["UTF-16 LE", Buffer.from("\ufeffignored.txt", "utf16le")],
+ ["UTF-16 BE", Buffer.from("\ufeffignored.txt", "utf16le").swap16()],
+ ["UTF-16 without a BOM", Buffer.from("ignored.txt", "utf16le")],
+ ["invalid UTF-8", Buffer.from([0xff])],
+ ["null characters", Buffer.from("ignored\0.txt")],
+ ] as const)(
+ "rejects %s instead of ignoring its patterns",
+ async ([, contents], { expect }) => {
+ await writeFile(join(tmpDir, ".assetsignore"), contents);
+
+ await expect(createAssetsIgnoreFunction(tmpDir)).rejects.toBeInstanceOf(
+ InvalidAssetsIgnoreError
+ );
+ await expect(createAssetsIgnoreFunction(tmpDir)).rejects.toThrow(
+ "Save the file as UTF-8 and try again."
+ );
+ }
+ );
+
+ it("preserves an intentionally empty ignore file", async ({ expect }) => {
+ await writeFile(join(tmpDir, ".assetsignore"), "");
+ const { assetsIgnoreFunction, assetsIgnoreFilePresent } =
+ await createAssetsIgnoreFunction(tmpDir);
+
+ expect(assetsIgnoreFilePresent).toBe(true);
+ expect(assetsIgnoreFunction("keep.txt")).toBe(false);
+ expect(assetsIgnoreFunction(".assetsignore")).toBe(true);
+ });
});
});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ea4a0e6d3db..f68cb0e7c1a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -195,17 +195,17 @@ importers:
specifier: catalog:default
version: 5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))
wrangler:
- specifier: 4.154.0
- version: 4.154.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17)
+ specifier: 4.155.0
+ version: 4.155.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17)
fixtures/shared:
devDependencies:
'@cloudflare/workers-utils':
- specifier: 0.49.0
- version: 0.49.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ specifier: 0.50.0
+ version: 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
wrangler:
- specifier: 4.154.0
- version: 4.154.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17)
+ specifier: 4.155.0
+ version: 4.155.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17)
packages/lint-config-shared:
devDependencies:
@@ -219,8 +219,8 @@ importers:
packages/mock-npm-registry:
devDependencies:
'@cloudflare/workers-utils':
- specifier: 0.49.0
- version: 0.49.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ specifier: 0.50.0
+ version: 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
'@types/node':
specifier: 22.15.17
version: 22.15.17
@@ -249,23 +249,23 @@ importers:
packages/remote-bindings:
dependencies:
'@cloudflare/cli-shared-helpers':
- specifier: 0.2.7
- version: 0.2.7(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ specifier: 0.2.10
+ version: 0.2.10(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
'@cloudflare/deploy-helpers':
- specifier: 0.24.1
- version: 0.24.1(@types/node@22.15.17)(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ specifier: 0.24.2
+ version: 0.24.2(@types/node@22.15.17)(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
'@cloudflare/workers-auth':
specifier: 0.15.1
version: 0.15.1(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
'@cloudflare/workers-utils':
- specifier: 0.49.0
- version: 0.49.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ specifier: 0.50.0
+ version: 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
chalk:
specifier: catalog:default
version: 5.3.0
miniflare:
- specifier: 5.20261023.1-beta
- version: 5.20261023.1-beta(@types/node@22.15.17)
+ specifier: 5.20261023.2-beta
+ version: 5.20261023.2-beta(@types/node@22.15.17)
undici:
specifier: catalog:default
version: 7.30.1
@@ -304,21 +304,21 @@ importers:
specifier: 2.16.2
version: 2.16.2(unenv@2.0.0-rc.24)(workerd@1.20261023.1)
miniflare:
- specifier: 5.20261023.1-beta
- version: 5.20261023.1-beta(@types/node@22.15.17)
+ specifier: 5.20261023.2-beta
+ version: 5.20261023.2-beta(@types/node@22.15.17)
unenv:
specifier: 2.0.0-rc.24
version: 2.0.0-rc.24
wrangler:
- specifier: 4.154.0
- version: 4.154.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17)
+ specifier: 4.155.0
+ version: 4.155.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17)
ws:
specifier: 8.22.0
version: 8.22.0
devDependencies:
'@cloudflare/containers-shared':
- specifier: 0.23.3
- version: 0.23.3(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ specifier: 0.23.4
+ version: 0.23.4(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
'@cloudflare/mock-npm-registry':
specifier: workspace:*
version: link:../mock-npm-registry
@@ -335,8 +335,8 @@ importers:
specifier: 5.20261023.1
version: 5.20261023.1
'@cloudflare/workers-utils':
- specifier: 0.49.0
- version: 0.49.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ specifier: 0.50.0
+ version: 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
'@remix-run/node-fetch-server':
specifier: 1.0.0
version: 1.0.0
@@ -1225,8 +1225,8 @@ importers:
specifier: catalog:default
version: 5.20261023.1
'@cloudflare/workers-utils':
- specifier: 0.49.0
- version: 0.49.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ specifier: 0.50.0
+ version: 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
'@prisma/adapter-d1':
specifier: ^7.0.0
version: 7.0.1
@@ -1924,24 +1924,21 @@ packages:
'@clack/core@1.2.0':
resolution: {integrity: sha512-qfxof/3T3t9DPU/Rj3OmcFyZInceqj/NVtO9rwIuJqCUgh32gwPjpFQQp/ben07qKlhpwq7GzfWpST4qdJ5Drg==}
- '@cloudflare/build-output-utils@0.9.5':
- resolution: {integrity: sha512-/OYHkTHFTqvImsY68psI+mhjNRE4Xcsm/oUqZzFY81KufBVfeYWZGYrhsDnwarKw7cEJO/htFF/dOZtoMgWajg==}
+ '@cloudflare/build-output-utils@0.9.6':
+ resolution: {integrity: sha512-JjNSJPctyGbQn4XDXzsqy1/M/xdNAh3XRPj0c/4KY1BYCUWA/ejcrnj3nuTHyoN8Zl+RmVIThIj+am29jTV+kQ==}
- '@cloudflare/cli-shared-helpers@0.2.7':
- resolution: {integrity: sha512-8wq3gzObQJfhUSJBIyi9FwFVoWg01FUbHTteuy8Ehm6b1+EQ2N/16SZCjJOBA7RcwVlzJNPwCSnUtCaFkq8fMw==}
+ '@cloudflare/cli-shared-helpers@0.2.10':
+ resolution: {integrity: sha512-glYLuQlNaXcu440+mSWofXBKKtvFwqNbUIrQqRfERDrCqlLA9Om3vRe+AAgdtGgLVbhbJTB6sIH5mjwceufAuA==}
- '@cloudflare/cli-shared-helpers@0.2.9':
- resolution: {integrity: sha512-I1Cidx1IlJqXUCvcF8naAy+F4Z81IvsPgr9nBZTremRXeroIuq+U9SkNWZdmasT4uI2lfwL74pIkp2B358Sm1A==}
+ '@cloudflare/config@0.29.0':
+ resolution: {integrity: sha512-0sD73G6xRdz6/9DXNcAuLv6VbnNiWA09zo7VwhPyaa3ysIGvLMXJR5G19r3+iG5ZIB9ErGMwqgprVOVaYKsIpw==}
- '@cloudflare/config@0.28.1':
- resolution: {integrity: sha512-pQS0jJmk2grEK2XdkvJxyk8y8W607D4daOrEdv+iyqSslSLTvH7lChF/3fpCQIy//3rBLUnzanZ8rgyekbh0/g==}
-
- '@cloudflare/containers-shared@0.23.3':
- resolution: {integrity: sha512-dT5RpbmMjh3OOgoGKVWQxsOKJ9RDYVvae9Ut5ln5mvfUfRlzqw5e7WQSF4HtVFqna975LpFyWTzpid4lUQ+rWQ==}
+ '@cloudflare/containers-shared@0.23.4':
+ resolution: {integrity: sha512-/9WBTGwl7SbW5MVv3jcYVdV5wzudsh3qLxO/pSE9Y9ZkscJ69eR0l997ZjkgefecopfO/DeonXiuWz2UD5VvGg==}
engines: {node: '>=22.0.0'}
- '@cloudflare/deploy-helpers@0.24.1':
- resolution: {integrity: sha512-6sUukvTnkxFZ6c47E3ofBNNWZbmuMM51dGwKERvhoZfexFd7O7pgVciDczl5mPz+zSModNVAp+atWK35ov3y0g==}
+ '@cloudflare/deploy-helpers@0.24.2':
+ resolution: {integrity: sha512-7B2Na/BA9ImJ7F2sFlZaf10QgJ0e53PJoHb0iyysIoy8MUlvIYrgSUc3t9rcQsyVVnQ/N3TrXVTCOUe/L5wFHA==}
'@cloudflare/kv-asset-handler@0.1.3':
resolution: {integrity: sha512-FNcunDuTmEfQTLRLtA6zz+buIXUHj1soPvSWzzQFBC+n2lsy+CGf/NIrR3SEPCmsVNQj70/Jx2lViCpq+09YpQ==}
@@ -2041,16 +2038,16 @@ packages:
'@cloudflare/workers-types@5.20261023.1':
resolution: {integrity: sha512-jRaMsWUF/08dd0dWnX3zPGPOjakkkA2JPnK5vLsCQFmYC40kbMPZ02fvOPO8kqjqgljoMZrKsRiXpR1u1Lp0Qg==}
- '@cloudflare/workers-utils@0.47.3':
- resolution: {integrity: sha512-Eez8j60Iglt7Yyca+vsGy5HEX0+DynkW4mNG7YjLePezh+J9OOG18XZFeQsZh6R9R27/fL6jcNEzW5SZGEiHCQ==}
+ '@cloudflare/workers-utils@0.49.0':
+ resolution: {integrity: sha512-HLeFcpoph6oyioClJPxJ0qu+9FnjQ1cJG9HBRqijwAi1lrfFCGmYBR2CdMSiMv4/x9/6KSlFYXjhkonKDSWO1A==}
peerDependencies:
vitest: ^4.1.0 || ^5.0.0
peerDependenciesMeta:
vitest:
optional: true
- '@cloudflare/workers-utils@0.49.0':
- resolution: {integrity: sha512-HLeFcpoph6oyioClJPxJ0qu+9FnjQ1cJG9HBRqijwAi1lrfFCGmYBR2CdMSiMv4/x9/6KSlFYXjhkonKDSWO1A==}
+ '@cloudflare/workers-utils@0.50.0':
+ resolution: {integrity: sha512-XKTOcx61TjWFy/FOqywP18eLW+eN/ZyDZ73ETL1p1MSVBvBnwHpij9wP11ImeXYn4UBExydOaUnN7T6Tg6leLQ==}
peerDependencies:
vitest: ^4.1.0 || ^5.0.0
peerDependenciesMeta:
@@ -5831,8 +5828,8 @@ packages:
resolution: {integrity: sha512-Cjrs+vHHQ7krLO4HYELYpYBJBuMhcnNZD/Z5z/UcQSnFqWSQY3DhtTCFalXgI1/yO1iK+YrRKK8EYkumrEopxg==}
engines: {node: '>=22.0.0'}
- miniflare@5.20261023.1-beta:
- resolution: {integrity: sha512-hgm1AJhwC6W+iaRhvMnfs7bPOsxjKa8LXTFR2WVPA5qA9KhpyBd2LddmT+9M9tm65VZ8YWkwQGvB+cKbqJoKeA==}
+ miniflare@5.20261023.2-beta:
+ resolution: {integrity: sha512-sXpZloQnIUe4raXXdwwqd2ioRHox9a/1B4nB2/p4JWKDwGuVgEK4DugCNgIeQf0iVuSgBItdYpodJe4iwY6SrQ==}
engines: {node: '>=22.0.0'}
minimatch@10.2.6:
@@ -7271,8 +7268,8 @@ packages:
'@cloudflare/workers-types':
optional: true
- wrangler@4.154.0:
- resolution: {integrity: sha512-duA4dckBE/51ibAlGh2mUYcvGiu7sZFcn61I+KfNEeK5KQzKKEth9Xf5ROatoPBOebYPz0gfknXOCjBhwLOo8Q==}
+ wrangler@4.155.0:
+ resolution: {integrity: sha512-gBKtAg2e0abQDvXPRQu611YMTd/cfAaJTOLAs/89tTxFxEeUyC260MRJRK+m3gLmQjDYWFwJv+ErwuJ/GuALpA==}
engines: {node: '>=22.0.0'}
hasBin: true
peerDependencies:
@@ -8196,14 +8193,14 @@ snapshots:
fast-wrap-ansi: 0.1.6
sisteransi: 1.0.5
- '@cloudflare/build-output-utils@0.9.5':
+ '@cloudflare/build-output-utils@0.9.6':
dependencies:
- '@cloudflare/config': 0.28.1
+ '@cloudflare/config': 0.29.0
- '@cloudflare/cli-shared-helpers@0.2.7(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))':
+ '@cloudflare/cli-shared-helpers@0.2.10(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))':
dependencies:
'@clack/core': 1.2.0
- '@cloudflare/workers-utils': 0.47.3(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ '@cloudflare/workers-utils': 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
chalk: 5.3.0
ci-info: 4.4.0
cross-spawn: 7.0.6
@@ -8211,42 +8208,31 @@ snapshots:
transitivePeerDependencies:
- vitest
- '@cloudflare/cli-shared-helpers@0.2.9(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))':
- dependencies:
- '@clack/core': 1.2.0
- '@cloudflare/workers-utils': 0.49.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
- chalk: 5.3.0
- ci-info: 4.4.0
- cross-spawn: 7.0.6
- log-update: 5.0.1
- transitivePeerDependencies:
- - vitest
-
- '@cloudflare/config@0.28.1':
+ '@cloudflare/config@0.29.0':
dependencies:
zod: 4.6.6
- '@cloudflare/containers-shared@0.23.3(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))':
+ '@cloudflare/containers-shared@0.23.4(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))':
dependencies:
- '@cloudflare/build-output-utils': 0.9.5
- '@cloudflare/cli-shared-helpers': 0.2.9(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
- '@cloudflare/config': 0.28.1
- '@cloudflare/workers-utils': 0.49.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ '@cloudflare/build-output-utils': 0.9.6
+ '@cloudflare/cli-shared-helpers': 0.2.10(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ '@cloudflare/config': 0.29.0
+ '@cloudflare/workers-utils': 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
transitivePeerDependencies:
- vitest
- '@cloudflare/deploy-helpers@0.24.1(@types/node@22.15.17)(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))':
+ '@cloudflare/deploy-helpers@0.24.2(@types/node@22.15.17)(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))':
dependencies:
- '@cloudflare/cli-shared-helpers': 0.2.9(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
- '@cloudflare/config': 0.28.1
- '@cloudflare/containers-shared': 0.23.3(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
- '@cloudflare/workers-utils': 0.49.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ '@cloudflare/cli-shared-helpers': 0.2.10(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ '@cloudflare/config': 0.29.0
+ '@cloudflare/containers-shared': 0.23.4(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
+ '@cloudflare/workers-utils': 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))
blake3-wasm: 2.1.5
chalk: 5.3.0
command-exists: 1.2.9
devtools-protocol: 0.0.1182435
dotenv: 16.3.1
- miniflare: 5.20261023.1-beta(@types/node@22.15.17)
+ miniflare: 5.20261023.2-beta(@types/node@22.15.17)
p-queue: 9.0.0
pretty-bytes: 6.1.1
undici: 7.30.1
@@ -8331,15 +8317,15 @@ snapshots:
'@cloudflare/workers-types@5.20261023.1': {}
- '@cloudflare/workers-utils@0.47.3(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))':
+ '@cloudflare/workers-utils@0.49.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))':
dependencies:
chalk: 5.3.0
dotenv: 16.3.1
- undici: 7.29.1
+ undici: 7.30.1
optionalDependencies:
vitest: 5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))
- '@cloudflare/workers-utils@0.49.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))':
+ '@cloudflare/workers-utils@0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))':
dependencies:
chalk: 5.3.0
dotenv: 16.3.1
@@ -11768,7 +11754,7 @@ snapshots:
- bufferutil
- utf-8-validate
- miniflare@5.20261023.1-beta(@types/node@22.15.17):
+ miniflare@5.20261023.2-beta(@types/node@22.15.17):
dependencies:
'@cspotcode/source-map-support': 0.8.1
sharp: 0.35.5(@types/node@22.15.17)
@@ -13233,13 +13219,13 @@ snapshots:
- bufferutil
- utf-8-validate
- wrangler@4.154.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17):
+ wrangler@4.155.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
'@cloudflare/unenv-preset': 2.16.2(unenv@2.0.0-rc.24)(workerd@1.20261023.1)
blake3-wasm: 2.1.5
esbuild: 0.28.2
- miniflare: 5.20261023.1-beta(@types/node@22.15.17)
+ miniflare: 5.20261023.2-beta(@types/node@22.15.17)
path-to-regexp: 6.3.0
unenv: 2.0.0-rc.24
workerd: 1.20261023.1