@cloudflare/vite-plugin 0.0.0-fd8c0c44c → 0.0.0-fdae3f766

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.
@@ -1985,7 +1985,7 @@ var we = class {
1985
1985
  this.hasWritten || this.readyAnalytics && (this.hasWritten = true, this.readyAnalytics.logEvent({ version: 1, accountId: this.data.accountId, indexId: this.data.scriptId?.toString(), doubles: [this.data.requestTime ?? -1, this.data.coloId ?? -1, this.data.metalId ?? -1, this.data.coloTier ?? -1, this.data.userWorkerAhead === void 0 ? -1 : Number(this.data.userWorkerAhead)], blobs: [this.data.hostname?.substring(0, 256), this.data.dispatchtype, this.data.error?.substring(0, 256), this.data.version, this.data.coloRegion] }));
1986
1986
  }
1987
1987
  };
1988
- var On = (t4) => ({ invoke_user_worker_ahead_of_assets: t4?.invoke_user_worker_ahead_of_assets ?? false, has_user_worker: t4?.has_user_worker ?? false, account_id: t4?.account_id ?? -1, script_id: t4?.script_id ?? -1 });
1988
+ var On = (t4) => ({ invoke_user_worker_ahead_of_assets: t4?.invoke_user_worker_ahead_of_assets ?? false, has_user_worker: t4?.has_user_worker ?? false, account_id: t4?.account_id ?? -1, script_id: t4?.script_id ?? -1, debug: t4?.debug ?? false });
1989
1989
  var Bc = { async fetch(t4, e, n) {
1990
1990
  let r, o = false, s = new we(e.ANALYTICS), i = new ue(e.UNSAFE_PERFORMANCE), a = i.now();
1991
1991
  try {
package/dist/index.js CHANGED
@@ -489,7 +489,7 @@ import assert10 from "node:assert";
489
489
  import * as fs5 from "node:fs";
490
490
  import * as fsp2 from "node:fs/promises";
491
491
  import * as path9 from "node:path";
492
- import { createMiddleware } from "@hattip/adapter-node";
492
+ import { createRequest, sendResponse } from "@mjackson/node-fetch-server";
493
493
  import replace from "@rollup/plugin-replace";
494
494
 
495
495
  // ../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.0/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
@@ -1558,7 +1558,7 @@ var MagicString = class _MagicString {
1558
1558
 
1559
1559
  // src/index.ts
1560
1560
  import { Miniflare } from "miniflare";
1561
- import colors2 from "picocolors";
1561
+ import colors3 from "picocolors";
1562
1562
  import * as vite7 from "vite";
1563
1563
 
1564
1564
  // src/constants.ts
@@ -1589,7 +1589,7 @@ function matchAdditionalModule(source) {
1589
1589
  return null;
1590
1590
  }
1591
1591
  function createModuleReference(type, id) {
1592
- return `__CLOUDFLARE_MODULE__${type}__${id}__`;
1592
+ return `__CLOUDFLARE_MODULE__${type}__${id}__CLOUDFLARE_MODULE__`;
1593
1593
  }
1594
1594
 
1595
1595
  // src/asset-config.ts
@@ -5784,7 +5784,8 @@ var z = /* @__PURE__ */ Object.freeze({
5784
5784
  // ../workers-shared/utils/types.ts
5785
5785
  var InternalConfigSchema = z.object({
5786
5786
  account_id: z.number().optional(),
5787
- script_id: z.number().optional()
5787
+ script_id: z.number().optional(),
5788
+ debug: z.boolean().optional()
5788
5789
  });
5789
5790
  var RouterConfigSchema = z.object({
5790
5791
  invoke_user_worker_ahead_of_assets: z.boolean().optional(),
@@ -12992,7 +12993,7 @@ var NodeJsCompatWarnings = class {
12992
12993
  // src/shared.ts
12993
12994
  var UNKNOWN_HOST = "http://localhost";
12994
12995
  var INIT_PATH = "/__vite_plugin_cloudflare_init__";
12995
- var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)__`;
12996
+ var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)__CLOUDFLARE_MODULE__`;
12996
12997
  var additionalModuleRE = new RegExp(ADDITIONAL_MODULE_PATTERN);
12997
12998
  var additionalModuleGlobalRE = new RegExp(
12998
12999
  ADDITIONAL_MODULE_PATTERN,
@@ -13028,19 +13029,6 @@ function toMiniflareRequest(request) {
13028
13029
  duplex: "half"
13029
13030
  });
13030
13031
  }
13031
- function nodeHeadersToWebHeaders(nodeHeaders) {
13032
- const headers = new Headers();
13033
- for (const [key, value] of Object.entries(nodeHeaders)) {
13034
- if (typeof value === "string") {
13035
- headers.append(key, value);
13036
- } else if (Array.isArray(value)) {
13037
- for (const item of value) {
13038
- headers.append(key, item);
13039
- }
13040
- }
13041
- }
13042
- return headers;
13043
- }
13044
13032
  var postfixRE = /[?#].*$/;
13045
13033
  function cleanUrl(url) {
13046
13034
  return url.replace(postfixRE, "");
@@ -13354,12 +13342,13 @@ import {
13354
13342
  LogLevel,
13355
13343
  Response as MiniflareResponse
13356
13344
  } from "miniflare";
13345
+ import colors2 from "picocolors";
13357
13346
  import { globSync } from "tinyglobby";
13358
13347
  import "vite";
13359
13348
  import { unstable_getMiniflareWorkerOptions } from "wrangler";
13360
- function getPersistence(root, persistState) {
13349
+ function getPersistenceRoot(root, persistState) {
13361
13350
  if (persistState === false) {
13362
- return {};
13351
+ return;
13363
13352
  }
13364
13353
  const defaultPersistPath = ".wrangler/state";
13365
13354
  const persistPath = path6.resolve(
@@ -13367,14 +13356,7 @@ function getPersistence(root, persistState) {
13367
13356
  typeof persistState === "object" ? persistState.path : defaultPersistPath,
13368
13357
  "v3"
13369
13358
  );
13370
- return {
13371
- cachePersist: path6.join(persistPath, "cache"),
13372
- d1Persist: path6.join(persistPath, "d1"),
13373
- durableObjectsPersist: path6.join(persistPath, "do"),
13374
- kvPersist: path6.join(persistPath, "kv"),
13375
- r2Persist: path6.join(persistPath, "r2"),
13376
- workflowsPersist: path6.join(persistPath, "workflows")
13377
- };
13359
+ return persistPath;
13378
13360
  }
13379
13361
  function missingWorkerErrorMessage(workerName) {
13380
13362
  return `${workerName} does not match a worker name.`;
@@ -13458,6 +13440,29 @@ function getEntryWorkerConfig(resolvedPluginConfig) {
13458
13440
  }
13459
13441
  return resolvedPluginConfig.workers[resolvedPluginConfig.entryWorkerEnvironmentName];
13460
13442
  }
13443
+ function filterTails(tails, userWorkers, log) {
13444
+ return tails?.filter((tailService) => {
13445
+ let name;
13446
+ if (typeof tailService === "string") {
13447
+ name = tailService;
13448
+ } else if (typeof tailService === "object" && "name" in tailService && typeof tailService.name === "string") {
13449
+ name = tailService.name;
13450
+ } else {
13451
+ return true;
13452
+ }
13453
+ const found = userWorkers.some((w) => w.name === name);
13454
+ if (!found) {
13455
+ log(
13456
+ colors2.dim(
13457
+ colors2.yellow(
13458
+ `Tail consumer "${name}" was not found in your config. Make sure you add it if you'd like to simulate receiving tail events locally.`
13459
+ )
13460
+ )
13461
+ );
13462
+ }
13463
+ return found;
13464
+ });
13465
+ }
13461
13466
  function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPort) {
13462
13467
  const resolvedViteConfig = viteDevServer.config;
13463
13468
  const entryWorkerConfig = getEntryWorkerConfig(resolvedPluginConfig);
@@ -13601,7 +13606,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
13601
13606
  (error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
13602
13607
  );
13603
13608
  },
13604
- ...getPersistence(
13609
+ defaultPersistRoot: getPersistenceRoot(
13605
13610
  resolvedViteConfig.root,
13606
13611
  resolvedPluginConfig.persistState
13607
13612
  ),
@@ -13649,6 +13654,11 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
13649
13654
  }
13650
13655
  return {
13651
13656
  ...workerOptions,
13657
+ tails: filterTails(
13658
+ workerOptions.tails,
13659
+ userWorkers,
13660
+ viteDevServer.config.logger.warn
13661
+ ),
13652
13662
  modules: [
13653
13663
  {
13654
13664
  type: "ESModule",
@@ -13739,6 +13749,11 @@ function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistSta
13739
13749
  return [
13740
13750
  {
13741
13751
  ...workerOptions,
13752
+ tails: filterTails(
13753
+ workerOptions.tails,
13754
+ workerConfigs,
13755
+ vitePreviewServer.config.logger.warn
13756
+ ),
13742
13757
  name: workerOptions.name ?? config.name,
13743
13758
  unsafeInspectorProxy: inspectorPort !== false,
13744
13759
  ...miniflareWorkerOptions.main ? getPreviewModules(miniflareWorkerOptions.main, modulesRules) : { modules: true, script: "" }
@@ -13758,7 +13773,10 @@ function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistSta
13758
13773
  (error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
13759
13774
  );
13760
13775
  },
13761
- ...getPersistence(resolvedViteConfig.root, persistState),
13776
+ defaultPersistRoot: getPersistenceRoot(
13777
+ resolvedViteConfig.root,
13778
+ persistState
13779
+ ),
13762
13780
  workers
13763
13781
  };
13764
13782
  }
@@ -14147,6 +14165,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
14147
14165
  }
14148
14166
 
14149
14167
  // src/websockets.ts
14168
+ import { createHeaders } from "@mjackson/node-fetch-server";
14150
14169
  import { coupleWebSocket } from "miniflare";
14151
14170
  import { WebSocketServer } from "ws";
14152
14171
  function handleWebSocket(httpServer, getFetcher) {
@@ -14158,7 +14177,7 @@ function handleWebSocket(httpServer, getFetcher) {
14158
14177
  if (request.headers["sec-websocket-protocol"]?.startsWith("vite")) {
14159
14178
  return;
14160
14179
  }
14161
- const headers = nodeHeadersToWebHeaders(request.headers);
14180
+ const headers = createHeaders(request);
14162
14181
  const fetcher = await getFetcher();
14163
14182
  const response = await fetcher(url, {
14164
14183
  headers,
@@ -14425,15 +14444,11 @@ function cloudflare2(pluginConfig = {}) {
14425
14444
  }
14426
14445
  },
14427
14446
  async configureServer(viteDevServer) {
14428
- assert10(
14429
- viteDevServer.httpServer,
14430
- "Unexpected error: No Vite HTTP server"
14447
+ const inputInspectorPort = await getInputInspectorPortOption(
14448
+ pluginConfig,
14449
+ viteDevServer
14431
14450
  );
14432
14451
  if (!miniflare) {
14433
- const inputInspectorPort = await getInputInspectorPortOption(
14434
- pluginConfig,
14435
- viteDevServer
14436
- );
14437
14452
  miniflare = new Miniflare(
14438
14453
  getDevMiniflareOptions(
14439
14454
  resolvedPluginConfig,
@@ -14442,34 +14457,41 @@ function cloudflare2(pluginConfig = {}) {
14442
14457
  )
14443
14458
  );
14444
14459
  } else {
14445
- const resolvedInspectorPort = await getResolvedInspectorPort(pluginConfig);
14446
14460
  await miniflare.setOptions(
14447
14461
  getDevMiniflareOptions(
14448
14462
  resolvedPluginConfig,
14449
14463
  viteDevServer,
14450
- resolvedInspectorPort ?? false
14464
+ inputInspectorPort
14451
14465
  )
14452
14466
  );
14453
14467
  }
14454
14468
  await initRunners(resolvedPluginConfig, viteDevServer, miniflare);
14455
- const middleware = createMiddleware(
14456
- async ({ request }) => {
14469
+ if (viteDevServer.httpServer) {
14470
+ handleWebSocket(viteDevServer.httpServer, async () => {
14457
14471
  assert10(miniflare, `Miniflare not defined`);
14458
14472
  const routerWorker = await getRouterWorker(miniflare);
14459
- return routerWorker.fetch(toMiniflareRequest(request), {
14460
- redirect: "manual"
14461
- });
14462
- },
14463
- { alwaysCallNext: false }
14464
- );
14465
- handleWebSocket(viteDevServer.httpServer, async () => {
14466
- assert10(miniflare, `Miniflare not defined`);
14467
- const routerWorker = await getRouterWorker(miniflare);
14468
- return routerWorker.fetch;
14469
- });
14473
+ return routerWorker.fetch;
14474
+ });
14475
+ }
14470
14476
  return () => {
14471
- viteDevServer.middlewares.use((req, res, next) => {
14472
- middleware(req, res, next);
14477
+ viteDevServer.middlewares.use(async (req, res, next) => {
14478
+ try {
14479
+ assert10(miniflare, `Miniflare not defined`);
14480
+ const routerWorker = await getRouterWorker(miniflare);
14481
+ const request = createRequest(req, res);
14482
+ const response = await routerWorker.fetch(
14483
+ toMiniflareRequest(request),
14484
+ {
14485
+ redirect: "manual"
14486
+ }
14487
+ );
14488
+ if (req.httpVersionMajor === 2) {
14489
+ response.headers.delete("transfer-encoding");
14490
+ }
14491
+ await sendResponse(res, response);
14492
+ } catch (error) {
14493
+ next(error);
14494
+ }
14473
14495
  });
14474
14496
  };
14475
14497
  },
@@ -14487,20 +14509,24 @@ function cloudflare2(pluginConfig = {}) {
14487
14509
  inputInspectorPort
14488
14510
  )
14489
14511
  );
14490
- const middleware = createMiddleware(
14491
- ({ request }) => {
14492
- return miniflare2.dispatchFetch(toMiniflareRequest(request), {
14493
- redirect: "manual"
14494
- });
14495
- },
14496
- { alwaysCallNext: false }
14497
- );
14498
14512
  handleWebSocket(
14499
14513
  vitePreviewServer.httpServer,
14500
14514
  () => miniflare2.dispatchFetch
14501
14515
  );
14502
- vitePreviewServer.middlewares.use((req, res, next) => {
14503
- middleware(req, res, next);
14516
+ vitePreviewServer.middlewares.use(async (req, res, next) => {
14517
+ try {
14518
+ const request = createRequest(req, res);
14519
+ const response = await miniflare2.dispatchFetch(
14520
+ toMiniflareRequest(request),
14521
+ { redirect: "manual" }
14522
+ );
14523
+ if (req.httpVersionMajor === 2) {
14524
+ response.headers.delete("transfer-encoding");
14525
+ }
14526
+ await sendResponse(res, response);
14527
+ } catch (error) {
14528
+ next(error);
14529
+ }
14504
14530
  });
14505
14531
  }
14506
14532
  },
@@ -14830,10 +14856,16 @@ function cloudflare2(pluginConfig = {}) {
14830
14856
  }
14831
14857
  }
14832
14858
  async function getInputInspectorPortOption(pluginConfig, viteServer) {
14859
+ if (pluginConfig.inspectorPort === void 0 || pluginConfig.inspectorPort === 0) {
14860
+ const resolvedInspectorPort = await getResolvedInspectorPort(pluginConfig);
14861
+ if (resolvedInspectorPort !== null) {
14862
+ return resolvedInspectorPort;
14863
+ }
14864
+ }
14833
14865
  const inputInspectorPort = pluginConfig.inspectorPort ?? await getFirstAvailablePort(DEFAULT_INSPECTOR_PORT);
14834
14866
  if (pluginConfig.inspectorPort === void 0 && inputInspectorPort !== DEFAULT_INSPECTOR_PORT) {
14835
14867
  viteServer.config.logger.warn(
14836
- colors2.dim(
14868
+ colors3.dim(
14837
14869
  `Default inspector port ${DEFAULT_INSPECTOR_PORT} not available, using ${inputInspectorPort} instead
14838
14870
  `
14839
14871
  )
@@ -15,7 +15,7 @@ var ADDITIONAL_MODULE_TYPES = [
15
15
  // src/shared.ts
16
16
  var UNKNOWN_HOST = "http://localhost";
17
17
  var INIT_PATH = "/__vite_plugin_cloudflare_init__";
18
- var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)__`;
18
+ var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)__CLOUDFLARE_MODULE__`;
19
19
  var additionalModuleRE = new RegExp(ADDITIONAL_MODULE_PATTERN);
20
20
  var additionalModuleGlobalRE = new RegExp(
21
21
  ADDITIONAL_MODULE_PATTERN,
@@ -29,7 +29,7 @@ function stripInternalEnv(internalEnv) {
29
29
  return userEnv;
30
30
  }
31
31
 
32
- // ../../node_modules/.pnpm/vite@6.1.0_@types+node@18.19.76_jiti@2.4.2_lightningcss@1.29.2/node_modules/vite/dist/node/module-runner.js
32
+ // ../../node_modules/.pnpm/vite@6.1.0_@types+node@20.17.32_jiti@2.4.2_lightningcss@1.29.2/node_modules/vite/dist/node/module-runner.js
33
33
  var VALID_ID_PREFIX = "/@id/";
34
34
  var NULL_BYTE_PLACEHOLDER = "__x00__";
35
35
  var SOURCEMAPPING_URL = "sourceMa";
@@ -1435,20 +1435,21 @@ async function getWorkerEntryExport(path, entrypoint) {
1435
1435
  }
1436
1436
 
1437
1437
  // src/runner-worker/index.ts
1438
+ var IGNORED_KEYS = ["self", "tailStream"];
1438
1439
  var WORKER_ENTRYPOINT_KEYS = [
1439
1440
  "fetch",
1441
+ "queue",
1440
1442
  "tail",
1443
+ "test",
1441
1444
  "trace",
1442
- "scheduled",
1443
- "queue",
1444
- "test"
1445
+ "scheduled"
1445
1446
  ];
1446
1447
  var DURABLE_OBJECT_KEYS = [
1447
- "fetch",
1448
1448
  "alarm",
1449
- "webSocketMessage",
1449
+ "fetch",
1450
1450
  "webSocketClose",
1451
- "webSocketError"
1451
+ "webSocketError",
1452
+ "webSocketMessage"
1452
1453
  ];
1453
1454
  var WORKFLOW_ENTRYPOINT_KEYS = ["run"];
1454
1455
  var entryPath = "";
@@ -1513,7 +1514,7 @@ function createWorkerEntrypointWrapper(entrypoint) {
1513
1514
  if (value !== void 0) {
1514
1515
  return value;
1515
1516
  }
1516
- if (key === "self" || typeof key === "symbol" || DURABLE_OBJECT_KEYS.includes(key)) {
1517
+ if (typeof key === "symbol" || IGNORED_KEYS.includes(key) || DURABLE_OBJECT_KEYS.includes(key)) {
1517
1518
  return;
1518
1519
  }
1519
1520
  const property = getWorkerEntrypointRpcProperty.call(
@@ -1611,7 +1612,7 @@ function createDurableObjectWrapper(className) {
1611
1612
  if (value !== void 0) {
1612
1613
  return value;
1613
1614
  }
1614
- if (key === "self" || typeof key === "symbol" || WORKER_ENTRYPOINT_KEYS.includes(key)) {
1615
+ if (typeof key === "symbol" || IGNORED_KEYS.includes(key) || WORKER_ENTRYPOINT_KEYS.includes(key)) {
1615
1616
  return;
1616
1617
  }
1617
1618
  const property = getDurableObjectRpcProperty.call(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/vite-plugin",
3
- "version": "0.0.0-fd8c0c44c",
3
+ "version": "0.0.0-fdae3f766",
4
4
  "description": "Cloudflare plugin for Vite",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -33,19 +33,19 @@
33
33
  "dist"
34
34
  ],
35
35
  "dependencies": {
36
- "@hattip/adapter-node": "^0.0.49",
36
+ "@cloudflare/unenv-preset": "2.3.2",
37
+ "@mjackson/node-fetch-server": "^0.6.1",
37
38
  "@rollup/plugin-replace": "^6.0.1",
38
39
  "get-port": "^7.1.0",
39
40
  "picocolors": "^1.1.1",
40
41
  "tinyglobby": "^0.2.12",
41
- "unenv": "2.0.0-rc.15",
42
+ "unenv": "2.0.0-rc.17",
42
43
  "ws": "8.18.0",
43
- "@cloudflare/unenv-preset": "0.0.0-fd8c0c44c",
44
- "miniflare": "0.0.0-fd8c0c44c",
45
- "wrangler": "0.0.0-fd8c0c44c"
44
+ "miniflare": "0.0.0-fdae3f766",
45
+ "wrangler": "0.0.0-fdae3f766"
46
46
  },
47
47
  "devDependencies": {
48
- "@cloudflare/workers-types": "^4.20250410.0",
48
+ "@cloudflare/workers-types": "^4.20250523.0",
49
49
  "@types/node": "^22.10.1",
50
50
  "@types/ws": "^8.5.13",
51
51
  "magic-string": "^0.30.12",
@@ -54,10 +54,10 @@
54
54
  "typescript": "^5.7.2",
55
55
  "undici": "^5.28.5",
56
56
  "vite": "^6.1.0",
57
- "vitest": "~3.0.8",
58
- "@cloudflare/workers-shared": "0.0.0-fd8c0c44c",
59
- "@cloudflare/mock-npm-registry": "0.0.0",
60
- "@cloudflare/workers-tsconfig": "0.0.0"
57
+ "vitest": "~3.1.1",
58
+ "@cloudflare/workers-shared": "0.0.0-fdae3f766",
59
+ "@cloudflare/workers-tsconfig": "0.0.0",
60
+ "@cloudflare/mock-npm-registry": "0.0.0"
61
61
  },
62
62
  "peerDependencies": {
63
63
  "vite": "^6.1.0",