@cloudflare/vite-plugin 1.33.2 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  //#region package.json
2
2
  var package_default = {
3
3
  name: "@cloudflare/vite-plugin",
4
- version: "1.33.2",
4
+ version: "1.35.0",
5
5
  description: "Cloudflare plugin for Vite",
6
6
  keywords: [
7
7
  "cloudflare",
@@ -79,4 +79,4 @@ var package_default = {
79
79
 
80
80
  //#endregion
81
81
  export { package_default as default };
82
- //# sourceMappingURL=package-D6vIj_YT.mjs.map
82
+ //# sourceMappingURL=package-D0px1l44.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-D6vIj_YT.mjs","names":[],"sources":["../package.json"],"sourcesContent":["{\n\t\"name\": \"@cloudflare/vite-plugin\",\n\t\"version\": \"1.33.2\",\n\t\"description\": \"Cloudflare plugin for Vite\",\n\t\"keywords\": [\n\t\t\"cloudflare\",\n\t\t\"cloudflare-workers\",\n\t\t\"vite\",\n\t\t\"vite-plugin\",\n\t\t\"workers\"\n\t],\n\t\"homepage\": \"https://github.com/cloudflare/workers-sdk/tree/main/packages/vite-plugin-cloudflare#readme\",\n\t\"bugs\": {\n\t\t\"url\": \"https://github.com/cloudflare/workers-sdk/issues\"\n\t},\n\t\"license\": \"MIT\",\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"https://github.com/cloudflare/workers-sdk.git\",\n\t\t\"directory\": \"packages/vite-plugin-cloudflare\"\n\t},\n\t\"files\": [\n\t\t\"dist\"\n\t],\n\t\"type\": \"module\",\n\t\"sideEffects\": false,\n\t\"main\": \"./dist/index.mjs\",\n\t\"types\": \"./dist/index.d.mts\",\n\t\"exports\": {\n\t\t\".\": {\n\t\t\t\"types\": \"./dist/index.d.mts\",\n\t\t\t\"import\": \"./dist/index.mjs\"\n\t\t}\n\t},\n\t\"publishConfig\": {\n\t\t\"access\": \"public\"\n\t},\n\t\"scripts\": {\n\t\t\"build\": \"tsdown\",\n\t\t\"check:type\": \"tsc --build\",\n\t\t\"dev\": \"tsdown --watch\",\n\t\t\"test\": \"vitest run\",\n\t\t\"test:ci\": \"pnpm test\",\n\t\t\"test:e2e\": \"vitest run -c e2e/vitest.config.ts\",\n\t\t\"test:watch\": \"vitest\"\n\t},\n\t\"dependencies\": {\n\t\t\"@cloudflare/unenv-preset\": \"workspace:*\",\n\t\t\"miniflare\": \"workspace:*\",\n\t\t\"unenv\": \"2.0.0-rc.24\",\n\t\t\"wrangler\": \"workspace:*\",\n\t\t\"ws\": \"catalog:default\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@cloudflare/containers-shared\": \"workspace:*\",\n\t\t\"@cloudflare/mock-npm-registry\": \"workspace:*\",\n\t\t\"@cloudflare/workers-shared\": \"workspace:*\",\n\t\t\"@cloudflare/workers-tsconfig\": \"workspace:*\",\n\t\t\"@cloudflare/workers-types\": \"catalog:default\",\n\t\t\"@cloudflare/workers-utils\": \"workspace:*\",\n\t\t\"@remix-run/node-fetch-server\": \"^0.8.0\",\n\t\t\"@types/node\": \"catalog:default\",\n\t\t\"@types/semver\": \"^7.5.1\",\n\t\t\"@types/ws\": \"^8.5.13\",\n\t\t\"defu\": \"^6.1.4\",\n\t\t\"get-port\": \"^7.1.0\",\n\t\t\"magic-string\": \"^0.30.12\",\n\t\t\"mlly\": \"^1.7.4\",\n\t\t\"open\": \"catalog:default\",\n\t\t\"picocolors\": \"^1.1.1\",\n\t\t\"semver\": \"^7.7.1\",\n\t\t\"tinyglobby\": \"catalog:default\",\n\t\t\"tree-kill\": \"catalog:default\",\n\t\t\"tsdown\": \"0.16.3\",\n\t\t\"typescript\": \"catalog:default\",\n\t\t\"vite\": \"catalog:default\",\n\t\t\"vite-legacy\": \"npm:vite@7.1.12\",\n\t\t\"vitest\": \"catalog:default\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"vite\": \"^6.1.0 || ^7.0.0 || ^8.0.0\",\n\t\t\"wrangler\": \"workspace:^\"\n\t},\n\t\"workers-sdk\": {\n\t\t\"prerelease\": true\n\t}\n}\n"],"mappings":";sBAAA;OACS;UACG;cACI;WACH;EACX;EACA;EACA;EACA;EACA;EACA;WACW;OACJ,EACP,OAAO,oDACP;UACU;aACG;EACb,QAAQ;EACR,OAAO;EACP,aAAa;EACb;QACQ,CACR,OACA;OACO;cACO;OACP;QACC;UACE,EACV,KAAK;EACJ,SAAS;EACT,UAAU;EACV,EACD;gBACgB,EAChB,UAAU,UACV;UACU;EACV,SAAS;EACT,cAAc;EACd,OAAO;EACP,QAAQ;EACR,WAAW;EACX,YAAY;EACZ,cAAc;EACd;eACe;EACf,4BAA4B;EAC5B,aAAa;EACb,SAAS;EACT,YAAY;EACZ,MAAM;EACN;kBACkB;EAClB,iCAAiC;EACjC,iCAAiC;EACjC,8BAA8B;EAC9B,gCAAgC;EAChC,6BAA6B;EAC7B,6BAA6B;EAC7B,gCAAgC;EAChC,eAAe;EACf,iBAAiB;EACjB,aAAa;EACb,QAAQ;EACR,YAAY;EACZ,gBAAgB;EAChB,QAAQ;EACR,QAAQ;EACR,cAAc;EACd,UAAU;EACV,cAAc;EACd,aAAa;EACb,UAAU;EACV,cAAc;EACd,QAAQ;EACR,eAAe;EACf,UAAU;EACV;mBACmB;EACnB,QAAQ;EACR,YAAY;EACZ;CACD,eAAe,EACd,cAAc,MACd;CACD"}
1
+ {"version":3,"file":"package-D0px1l44.mjs","names":[],"sources":["../package.json"],"sourcesContent":["{\n\t\"name\": \"@cloudflare/vite-plugin\",\n\t\"version\": \"1.35.0\",\n\t\"description\": \"Cloudflare plugin for Vite\",\n\t\"keywords\": [\n\t\t\"cloudflare\",\n\t\t\"cloudflare-workers\",\n\t\t\"vite\",\n\t\t\"vite-plugin\",\n\t\t\"workers\"\n\t],\n\t\"homepage\": \"https://github.com/cloudflare/workers-sdk/tree/main/packages/vite-plugin-cloudflare#readme\",\n\t\"bugs\": {\n\t\t\"url\": \"https://github.com/cloudflare/workers-sdk/issues\"\n\t},\n\t\"license\": \"MIT\",\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"https://github.com/cloudflare/workers-sdk.git\",\n\t\t\"directory\": \"packages/vite-plugin-cloudflare\"\n\t},\n\t\"files\": [\n\t\t\"dist\"\n\t],\n\t\"type\": \"module\",\n\t\"sideEffects\": false,\n\t\"main\": \"./dist/index.mjs\",\n\t\"types\": \"./dist/index.d.mts\",\n\t\"exports\": {\n\t\t\".\": {\n\t\t\t\"types\": \"./dist/index.d.mts\",\n\t\t\t\"import\": \"./dist/index.mjs\"\n\t\t}\n\t},\n\t\"publishConfig\": {\n\t\t\"access\": \"public\"\n\t},\n\t\"scripts\": {\n\t\t\"build\": \"tsdown\",\n\t\t\"check:type\": \"tsc --build\",\n\t\t\"dev\": \"tsdown --watch\",\n\t\t\"test\": \"vitest run\",\n\t\t\"test:ci\": \"pnpm test\",\n\t\t\"test:e2e\": \"vitest run -c e2e/vitest.config.ts\",\n\t\t\"test:watch\": \"vitest\"\n\t},\n\t\"dependencies\": {\n\t\t\"@cloudflare/unenv-preset\": \"workspace:*\",\n\t\t\"miniflare\": \"workspace:*\",\n\t\t\"unenv\": \"2.0.0-rc.24\",\n\t\t\"wrangler\": \"workspace:*\",\n\t\t\"ws\": \"catalog:default\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@cloudflare/containers-shared\": \"workspace:*\",\n\t\t\"@cloudflare/mock-npm-registry\": \"workspace:*\",\n\t\t\"@cloudflare/workers-shared\": \"workspace:*\",\n\t\t\"@cloudflare/workers-tsconfig\": \"workspace:*\",\n\t\t\"@cloudflare/workers-types\": \"catalog:default\",\n\t\t\"@cloudflare/workers-utils\": \"workspace:*\",\n\t\t\"@remix-run/node-fetch-server\": \"^0.8.0\",\n\t\t\"@types/node\": \"catalog:default\",\n\t\t\"@types/semver\": \"^7.5.1\",\n\t\t\"@types/ws\": \"^8.5.13\",\n\t\t\"defu\": \"^6.1.4\",\n\t\t\"get-port\": \"^7.1.0\",\n\t\t\"magic-string\": \"^0.30.12\",\n\t\t\"mlly\": \"^1.7.4\",\n\t\t\"open\": \"catalog:default\",\n\t\t\"picocolors\": \"^1.1.1\",\n\t\t\"semver\": \"^7.7.1\",\n\t\t\"tinyglobby\": \"catalog:default\",\n\t\t\"tree-kill\": \"catalog:default\",\n\t\t\"tsdown\": \"0.16.3\",\n\t\t\"typescript\": \"catalog:default\",\n\t\t\"vite\": \"catalog:default\",\n\t\t\"vite-legacy\": \"npm:vite@7.1.12\",\n\t\t\"vitest\": \"catalog:default\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"vite\": \"^6.1.0 || ^7.0.0 || ^8.0.0\",\n\t\t\"wrangler\": \"workspace:^\"\n\t},\n\t\"workers-sdk\": {\n\t\t\"prerelease\": true\n\t}\n}\n"],"mappings":";sBAAA;OACS;UACG;cACI;WACH;EACX;EACA;EACA;EACA;EACA;EACA;WACW;OACJ,EACP,OAAO,oDACP;UACU;aACG;EACb,QAAQ;EACR,OAAO;EACP,aAAa;EACb;QACQ,CACR,OACA;OACO;cACO;OACP;QACC;UACE,EACV,KAAK;EACJ,SAAS;EACT,UAAU;EACV,EACD;gBACgB,EAChB,UAAU,UACV;UACU;EACV,SAAS;EACT,cAAc;EACd,OAAO;EACP,QAAQ;EACR,WAAW;EACX,YAAY;EACZ,cAAc;EACd;eACe;EACf,4BAA4B;EAC5B,aAAa;EACb,SAAS;EACT,YAAY;EACZ,MAAM;EACN;kBACkB;EAClB,iCAAiC;EACjC,iCAAiC;EACjC,8BAA8B;EAC9B,gCAAgC;EAChC,6BAA6B;EAC7B,6BAA6B;EAC7B,gCAAgC;EAChC,eAAe;EACf,iBAAiB;EACjB,aAAa;EACb,QAAQ;EACR,YAAY;EACZ,gBAAgB;EAChB,QAAQ;EACR,QAAQ;EACR,cAAc;EACd,UAAU;EACV,cAAc;EACd,aAAa;EACb,UAAU;EACV,cAAc;EACd,QAAQ;EACR,eAAe;EACf,UAAU;EACV;mBACmB;EACnB,QAAQ;EACR,YAAY;EACZ;CACD,eAAe,EACd,cAAc,MACd;CACD"}
@@ -1,3 +1,5 @@
1
+ import { WorkerEntrypoint } from "cloudflare:workers";
2
+
1
3
  //#region ../workers-shared/utils/responses.ts
2
4
  var TemporaryRedirectResponse = class TemporaryRedirectResponse extends Response {
3
5
  static status = 307;
@@ -6240,126 +6242,155 @@ function renderLimitedResponse(req) {
6240
6242
  //#endregion
6241
6243
  //#region ../workers-shared/router-worker/src/worker.ts
6242
6244
  var worker_default = { async fetch(request, env, ctx) {
6243
- let sentry;
6244
- let userWorkerInvocation = false;
6245
+ const loopbackCtx = ctx;
6245
6246
  const analytics = new Analytics(env.ANALYTICS);
6246
- const performance = new PerformanceTimer(env.UNSAFE_PERFORMANCE);
6247
- const startTimeMs = performance.now();
6247
+ let inner;
6248
6248
  try {
6249
- if (!env.JAEGER) env.JAEGER = mockJaegerBinding();
6250
- sentry = setupSentry(request, ctx, env.SENTRY_DSN, env.SENTRY_ACCESS_CLIENT_ID, env.SENTRY_ACCESS_CLIENT_SECRET, env.COLO_METADATA, env.VERSION_METADATA, env.CONFIG?.account_id, env.CONFIG?.script_id);
6251
- const hasStaticRouting = env.CONFIG.static_routing !== void 0;
6252
- const config = applyRouterConfigDefaults(env.CONFIG);
6253
- const eyeballConfig = applyEyeballConfigDefaults(env.EYEBALL_CONFIG);
6254
- const url = new URL(request.url);
6255
- if (env.COLO_METADATA && env.VERSION_METADATA && env.CONFIG) analytics.setData({
6256
- accountId: env.CONFIG.account_id,
6257
- scriptId: env.CONFIG.script_id,
6258
- coloId: env.COLO_METADATA.coloId,
6259
- metalId: env.COLO_METADATA.metalId,
6260
- coloTier: env.COLO_METADATA.coloTier,
6261
- coloRegion: env.COLO_METADATA.coloRegion,
6262
- hostname: url.hostname,
6263
- version: env.VERSION_METADATA.tag,
6264
- userWorkerAhead: config.invoke_user_worker_ahead_of_assets
6265
- });
6266
- if (url.pathname.startsWith("/cdn-cgi/") && request.url.includes("/cdn-cgi\\")) {
6267
- analytics.setData({ cdnCgiBackslashBypassUrl: request.url });
6268
- return new TemporaryRedirectResponse(url.href);
6249
+ if (env.COLO_METADATA && env.VERSION_METADATA && env.CONFIG) {
6250
+ const url = new URL(request.url);
6251
+ analytics.setData({
6252
+ accountId: env.CONFIG.account_id,
6253
+ scriptId: env.CONFIG.script_id,
6254
+ coloId: env.COLO_METADATA.coloId,
6255
+ metalId: env.COLO_METADATA.metalId,
6256
+ coloTier: env.COLO_METADATA.coloTier,
6257
+ coloRegion: env.COLO_METADATA.coloRegion,
6258
+ hostname: url.hostname,
6259
+ version: env.VERSION_METADATA.tag
6260
+ });
6269
6261
  }
6270
- const routeToUserWorker = async ({ asset }) => {
6271
- if (!config.has_user_worker) throw new Error("Fetch for user worker without having a user worker binding");
6272
- if (eyeballConfig.limitedAssetsOnly) {
6273
- analytics.setData({ userWorkerFreeTierLimiting: true });
6274
- return new Response(renderLimitedResponse(request), {
6275
- status: 429,
6276
- headers: { "Content-Type": "text/html" }
6277
- });
6262
+ inner = loopbackCtx.exports.RouterInnerEntrypoint({ props: {} });
6263
+ } catch (err) {
6264
+ setupSentry(request, ctx, env.SENTRY_DSN, env.SENTRY_ACCESS_CLIENT_ID, env.SENTRY_ACCESS_CLIENT_SECRET, env.COLO_METADATA, env.VERSION_METADATA, env.CONFIG?.account_id, env.CONFIG?.script_id)?.captureException(err);
6265
+ if (err instanceof Error) analytics.setData({ error: err.message });
6266
+ analytics.write();
6267
+ throw err;
6268
+ }
6269
+ return inner.fetch(request);
6270
+ } };
6271
+ var RouterInnerEntrypoint = class extends WorkerEntrypoint {
6272
+ async fetch(request) {
6273
+ let sentry;
6274
+ let userWorkerInvocation = false;
6275
+ const analytics = new Analytics(this.env.ANALYTICS);
6276
+ const performance = new PerformanceTimer(this.env.UNSAFE_PERFORMANCE);
6277
+ const startTimeMs = performance.now();
6278
+ try {
6279
+ if (!this.env.JAEGER) this.env.JAEGER = mockJaegerBinding();
6280
+ sentry = setupSentry(request, this.ctx, this.env.SENTRY_DSN, this.env.SENTRY_ACCESS_CLIENT_ID, this.env.SENTRY_ACCESS_CLIENT_SECRET, this.env.COLO_METADATA, this.env.VERSION_METADATA, this.env.CONFIG?.account_id, this.env.CONFIG?.script_id);
6281
+ const hasStaticRouting = this.env.CONFIG.static_routing !== void 0;
6282
+ const config = applyRouterConfigDefaults(this.env.CONFIG);
6283
+ const eyeballConfig = applyEyeballConfigDefaults(this.env.EYEBALL_CONFIG);
6284
+ const url = new URL(request.url);
6285
+ if (this.env.COLO_METADATA && this.env.VERSION_METADATA && this.env.CONFIG) analytics.setData({
6286
+ accountId: this.env.CONFIG.account_id,
6287
+ scriptId: this.env.CONFIG.script_id,
6288
+ coloId: this.env.COLO_METADATA.coloId,
6289
+ metalId: this.env.COLO_METADATA.metalId,
6290
+ coloTier: this.env.COLO_METADATA.coloTier,
6291
+ coloRegion: this.env.COLO_METADATA.coloRegion,
6292
+ hostname: url.hostname,
6293
+ version: this.env.VERSION_METADATA.tag,
6294
+ userWorkerAhead: config.invoke_user_worker_ahead_of_assets
6295
+ });
6296
+ if (url.pathname.startsWith("/cdn-cgi/") && request.url.includes("/cdn-cgi\\")) {
6297
+ analytics.setData({ cdnCgiBackslashBypassUrl: request.url });
6298
+ return new TemporaryRedirectResponse(url.href);
6278
6299
  }
6279
- analytics.setData({ dispatchtype: DISPATCH_TYPE.WORKER });
6280
- userWorkerInvocation = true;
6281
- return env.JAEGER.enterSpan("dispatch_worker", async (span) => {
6282
- span.setTags({
6283
- hasUserWorker: true,
6284
- asset,
6285
- dispatchType: DISPATCH_TYPE.WORKER
6286
- });
6287
- let shouldCheckContentType = false;
6288
- if (url.pathname.endsWith("/_next/image")) {
6289
- const queryURLParam = url.searchParams.get("url");
6290
- if (queryURLParam && !queryURLParam.startsWith("/")) {
6291
- if (request.method !== "GET" || request.headers.get("sec-fetch-dest") !== "image") {
6292
- shouldCheckContentType = true;
6293
- analytics.setData({ abuseMitigationURLHost: queryURLParam });
6300
+ const routeToUserWorker = async ({ asset }) => {
6301
+ if (!config.has_user_worker) throw new Error("Fetch for user worker without having a user worker binding");
6302
+ if (eyeballConfig.limitedAssetsOnly) {
6303
+ analytics.setData({ userWorkerFreeTierLimiting: true });
6304
+ return new Response(renderLimitedResponse(request), {
6305
+ status: 429,
6306
+ headers: { "Content-Type": "text/html" }
6307
+ });
6308
+ }
6309
+ analytics.setData({ dispatchtype: DISPATCH_TYPE.WORKER });
6310
+ userWorkerInvocation = true;
6311
+ return this.env.JAEGER.enterSpan("dispatch_worker", async (span) => {
6312
+ span.setTags({
6313
+ hasUserWorker: true,
6314
+ asset,
6315
+ dispatchType: DISPATCH_TYPE.WORKER
6316
+ });
6317
+ let shouldCheckContentType = false;
6318
+ if (url.pathname.endsWith("/_next/image")) {
6319
+ const queryURLParam = url.searchParams.get("url");
6320
+ if (queryURLParam && !queryURLParam.startsWith("/")) {
6321
+ if (request.method !== "GET" || request.headers.get("sec-fetch-dest") !== "image") {
6322
+ shouldCheckContentType = true;
6323
+ analytics.setData({ abuseMitigationURLHost: queryURLParam });
6324
+ }
6294
6325
  }
6295
6326
  }
6296
- }
6297
- if (url.pathname === "/_image") {
6298
- const hrefParam = url.searchParams.get("href");
6299
- if (hrefParam && hrefParam.length > 2 && hrefParam.startsWith("//")) try {
6300
- const hrefUrl = new URL("https:" + hrefParam);
6301
- const isImageFetchDest = request.headers.get("sec-fetch-dest") == "image";
6302
- if (hrefUrl.hostname !== url.hostname && !isImageFetchDest) {
6303
- analytics.setData({ xssDetectionImageHref: hrefParam });
6327
+ if (url.pathname === "/_image") {
6328
+ const hrefParam = url.searchParams.get("href");
6329
+ if (hrefParam && hrefParam.length > 2 && hrefParam.startsWith("//")) try {
6330
+ const hrefUrl = new URL("https:" + hrefParam);
6331
+ const isImageFetchDest = request.headers.get("sec-fetch-dest") == "image";
6332
+ if (hrefUrl.hostname !== url.hostname && !isImageFetchDest) {
6333
+ analytics.setData({ xssDetectionImageHref: hrefParam });
6334
+ return new Response("Blocked", { status: 403 });
6335
+ }
6336
+ } catch {
6337
+ console.log(`Invalid href parameter in /_image: ${hrefParam}`);
6338
+ }
6339
+ }
6340
+ analytics.setData({ timeToDispatch: performance.now() - startTimeMs });
6341
+ if (shouldCheckContentType) {
6342
+ const response = await this.env.USER_WORKER.fetch(request);
6343
+ if (response.status !== 304 && shouldBlockContentType(response)) {
6344
+ analytics.setData({ abuseMitigationBlocked: true });
6304
6345
  return new Response("Blocked", { status: 403 });
6305
6346
  }
6306
- } catch {
6307
- console.log(`Invalid href parameter in /_image: ${hrefParam}`);
6347
+ return response;
6308
6348
  }
6349
+ return this.env.USER_WORKER.fetch(request);
6350
+ });
6351
+ };
6352
+ const routeToAssets = async ({ asset }) => {
6353
+ analytics.setData({ dispatchtype: DISPATCH_TYPE.ASSETS });
6354
+ return await this.env.JAEGER.enterSpan("dispatch_assets", async (span) => {
6355
+ span.setTags({
6356
+ hasUserWorker: config.has_user_worker,
6357
+ asset,
6358
+ dispatchType: DISPATCH_TYPE.ASSETS
6359
+ });
6360
+ analytics.setData({ timeToDispatch: performance.now() - startTimeMs });
6361
+ return this.env.ASSET_WORKER.fetch(request);
6362
+ });
6363
+ };
6364
+ if (config.static_routing) {
6365
+ if (generateStaticRoutingRuleMatcher(config.static_routing.asset_worker ?? [])({ request })) {
6366
+ analytics.setData({ staticRoutingDecision: STATIC_ROUTING_DECISION.ROUTED });
6367
+ return await routeToAssets({ asset: "static_routing" });
6309
6368
  }
6310
- analytics.setData({ timeToDispatch: performance.now() - startTimeMs });
6311
- if (shouldCheckContentType) {
6312
- const response = await env.USER_WORKER.fetch(request);
6313
- if (response.status !== 304 && shouldBlockContentType(response)) {
6314
- analytics.setData({ abuseMitigationBlocked: true });
6315
- return new Response("Blocked", { status: 403 });
6316
- }
6317
- return response;
6369
+ if (generateStaticRoutingRuleMatcher(config.static_routing.user_worker ?? [])({ request })) {
6370
+ if (!config.has_user_worker) throw new Error("Fetch for user worker without having a user worker binding");
6371
+ analytics.setData({ staticRoutingDecision: STATIC_ROUTING_DECISION.ROUTED });
6372
+ return await routeToUserWorker({ asset: "static_routing" });
6318
6373
  }
6319
- return env.USER_WORKER.fetch(request);
6320
- });
6321
- };
6322
- const routeToAssets = async ({ asset }) => {
6323
- analytics.setData({ dispatchtype: DISPATCH_TYPE.ASSETS });
6324
- return await env.JAEGER.enterSpan("dispatch_assets", async (span) => {
6325
- span.setTags({
6326
- hasUserWorker: config.has_user_worker,
6327
- asset,
6328
- dispatchType: DISPATCH_TYPE.ASSETS
6329
- });
6330
- analytics.setData({ timeToDispatch: performance.now() - startTimeMs });
6331
- return env.ASSET_WORKER.fetch(request);
6332
- });
6333
- };
6334
- if (config.static_routing) {
6335
- if (generateStaticRoutingRuleMatcher(config.static_routing.asset_worker ?? [])({ request })) {
6336
- analytics.setData({ staticRoutingDecision: STATIC_ROUTING_DECISION.ROUTED });
6337
- return await routeToAssets({ asset: "static_routing" });
6338
- }
6339
- if (generateStaticRoutingRuleMatcher(config.static_routing.user_worker)({ request })) {
6340
- if (!config.has_user_worker) throw new Error("Fetch for user worker without having a user worker binding");
6341
- analytics.setData({ staticRoutingDecision: STATIC_ROUTING_DECISION.ROUTED });
6342
- return await routeToUserWorker({ asset: "static_routing" });
6374
+ analytics.setData({ staticRoutingDecision: hasStaticRouting ? STATIC_ROUTING_DECISION.NOT_ROUTED : STATIC_ROUTING_DECISION.NOT_PROVIDED });
6343
6375
  }
6344
- analytics.setData({ staticRoutingDecision: hasStaticRouting ? STATIC_ROUTING_DECISION.NOT_ROUTED : STATIC_ROUTING_DECISION.NOT_PROVIDED });
6376
+ if (config.invoke_user_worker_ahead_of_assets) return await routeToUserWorker({ asset: "static_routing" });
6377
+ const assetsExist = await this.env.ASSET_WORKER.unstable_canFetch(new Request(request.url, {
6378
+ headers: request.headers,
6379
+ method: request.method
6380
+ }));
6381
+ if (config.has_user_worker && !assetsExist) return await routeToUserWorker({ asset: "none" });
6382
+ return await routeToAssets({ asset: assetsExist ? "found" : "none" });
6383
+ } catch (err) {
6384
+ if (userWorkerInvocation) throw err;
6385
+ else if (err instanceof Error) analytics.setData({ error: err.message });
6386
+ if (sentry) sentry.captureException(err);
6387
+ throw err;
6388
+ } finally {
6389
+ analytics.setData({ requestTime: performance.now() - startTimeMs });
6390
+ analytics.write();
6345
6391
  }
6346
- if (config.invoke_user_worker_ahead_of_assets) return await routeToUserWorker({ asset: "static_routing" });
6347
- const assetsExist = await env.ASSET_WORKER.unstable_canFetch(new Request(request.url, {
6348
- headers: request.headers,
6349
- method: request.method
6350
- }));
6351
- if (config.has_user_worker && !assetsExist) return await routeToUserWorker({ asset: "none" });
6352
- return await routeToAssets({ asset: assetsExist ? "found" : "none" });
6353
- } catch (err) {
6354
- if (userWorkerInvocation) throw err;
6355
- else if (err instanceof Error) analytics.setData({ error: err.message });
6356
- if (sentry) sentry.captureException(err);
6357
- throw err;
6358
- } finally {
6359
- analytics.setData({ requestTime: performance.now() - startTimeMs });
6360
- analytics.write();
6361
6392
  }
6362
- } };
6393
+ };
6363
6394
  /**
6364
6395
  * Check if the Content Type is allowed for the the `_next/image` endpoint.
6365
6396
  *
@@ -6377,4 +6408,4 @@ function shouldBlockContentType(response) {
6377
6408
  }
6378
6409
 
6379
6410
  //#endregion
6380
- export { worker_default as default };
6411
+ export { RouterInnerEntrypoint, worker_default as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/vite-plugin",
3
- "version": "1.33.2",
3
+ "version": "1.35.0",
4
4
  "description": "Cloudflare plugin for Vite",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -39,11 +39,11 @@
39
39
  "unenv": "2.0.0-rc.24",
40
40
  "ws": "8.18.0",
41
41
  "@cloudflare/unenv-preset": "2.16.1",
42
- "miniflare": "4.20260424.0",
43
- "wrangler": "4.85.0"
42
+ "miniflare": "4.20260430.0",
43
+ "wrangler": "4.87.0"
44
44
  },
45
45
  "devDependencies": {
46
- "@cloudflare/workers-types": "^4.20260424.1",
46
+ "@cloudflare/workers-types": "^4.20260430.1",
47
47
  "@remix-run/node-fetch-server": "^0.8.0",
48
48
  "@types/node": "^22.10.1",
49
49
  "@types/semver": "^7.5.1",
@@ -62,15 +62,15 @@
62
62
  "vite": "^8.0.0",
63
63
  "vite-legacy": "npm:vite@7.1.12",
64
64
  "vitest": "4.1.0",
65
+ "@cloudflare/containers-shared": "0.14.1",
65
66
  "@cloudflare/mock-npm-registry": "0.0.0",
66
- "@cloudflare/workers-shared": "0.19.2",
67
+ "@cloudflare/workers-shared": "0.19.4",
67
68
  "@cloudflare/workers-tsconfig": "0.0.0",
68
- "@cloudflare/containers-shared": "0.14.1",
69
69
  "@cloudflare/workers-utils": "0.18.0"
70
70
  },
71
71
  "peerDependencies": {
72
72
  "vite": "^6.1.0 || ^7.0.0 || ^8.0.0",
73
- "wrangler": "^4.85.0"
73
+ "wrangler": "^4.87.0"
74
74
  },
75
75
  "workers-sdk": {
76
76
  "prerelease": true