@cloudflare/vite-plugin 0.0.0-7749f42c3 → 0.0.0-781924bb9

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.
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
@@ -12993,7 +12993,7 @@ var NodeJsCompatWarnings = class {
12993
12993
  // src/shared.ts
12994
12994
  var UNKNOWN_HOST = "http://localhost";
12995
12995
  var INIT_PATH = "/__vite_plugin_cloudflare_init__";
12996
- var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)__`;
12996
+ var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)__CLOUDFLARE_MODULE__`;
12997
12997
  var additionalModuleRE = new RegExp(ADDITIONAL_MODULE_PATTERN);
12998
12998
  var additionalModuleGlobalRE = new RegExp(
12999
12999
  ADDITIONAL_MODULE_PATTERN,
@@ -13029,19 +13029,6 @@ function toMiniflareRequest(request) {
13029
13029
  duplex: "half"
13030
13030
  });
13031
13031
  }
13032
- function nodeHeadersToWebHeaders(nodeHeaders) {
13033
- const headers = new Headers();
13034
- for (const [key, value] of Object.entries(nodeHeaders)) {
13035
- if (typeof value === "string") {
13036
- headers.append(key, value);
13037
- } else if (Array.isArray(value)) {
13038
- for (const item of value) {
13039
- headers.append(key, item);
13040
- }
13041
- }
13042
- }
13043
- return headers;
13044
- }
13045
13032
  var postfixRE = /[?#].*$/;
13046
13033
  function cleanUrl(url) {
13047
13034
  return url.replace(postfixRE, "");
@@ -13355,12 +13342,13 @@ import {
13355
13342
  LogLevel,
13356
13343
  Response as MiniflareResponse
13357
13344
  } from "miniflare";
13345
+ import colors2 from "picocolors";
13358
13346
  import { globSync } from "tinyglobby";
13359
13347
  import "vite";
13360
13348
  import { unstable_getMiniflareWorkerOptions } from "wrangler";
13361
- function getPersistence(root, persistState) {
13349
+ function getPersistenceRoot(root, persistState) {
13362
13350
  if (persistState === false) {
13363
- return {};
13351
+ return;
13364
13352
  }
13365
13353
  const defaultPersistPath = ".wrangler/state";
13366
13354
  const persistPath = path6.resolve(
@@ -13368,14 +13356,7 @@ function getPersistence(root, persistState) {
13368
13356
  typeof persistState === "object" ? persistState.path : defaultPersistPath,
13369
13357
  "v3"
13370
13358
  );
13371
- return {
13372
- cachePersist: path6.join(persistPath, "cache"),
13373
- d1Persist: path6.join(persistPath, "d1"),
13374
- durableObjectsPersist: path6.join(persistPath, "do"),
13375
- kvPersist: path6.join(persistPath, "kv"),
13376
- r2Persist: path6.join(persistPath, "r2"),
13377
- workflowsPersist: path6.join(persistPath, "workflows")
13378
- };
13359
+ return persistPath;
13379
13360
  }
13380
13361
  function missingWorkerErrorMessage(workerName) {
13381
13362
  return `${workerName} does not match a worker name.`;
@@ -13459,6 +13440,29 @@ function getEntryWorkerConfig(resolvedPluginConfig) {
13459
13440
  }
13460
13441
  return resolvedPluginConfig.workers[resolvedPluginConfig.entryWorkerEnvironmentName];
13461
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
+ }
13462
13466
  function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPort) {
13463
13467
  const resolvedViteConfig = viteDevServer.config;
13464
13468
  const entryWorkerConfig = getEntryWorkerConfig(resolvedPluginConfig);
@@ -13593,6 +13597,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
13593
13597
  const logger = new ViteMiniflareLogger(resolvedViteConfig);
13594
13598
  return {
13595
13599
  log: logger,
13600
+ logRequests: false,
13596
13601
  inspectorPort: inspectorPort === false ? void 0 : inspectorPort,
13597
13602
  unsafeInspectorProxy: inspectorPort !== false,
13598
13603
  handleRuntimeStdio(stdout, stderr) {
@@ -13602,7 +13607,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
13602
13607
  (error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
13603
13608
  );
13604
13609
  },
13605
- ...getPersistence(
13610
+ defaultPersistRoot: getPersistenceRoot(
13606
13611
  resolvedViteConfig.root,
13607
13612
  resolvedPluginConfig.persistState
13608
13613
  ),
@@ -13650,6 +13655,11 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
13650
13655
  }
13651
13656
  return {
13652
13657
  ...workerOptions,
13658
+ tails: filterTails(
13659
+ workerOptions.tails,
13660
+ userWorkers,
13661
+ viteDevServer.config.logger.warn
13662
+ ),
13653
13663
  modules: [
13654
13664
  {
13655
13665
  type: "ESModule",
@@ -13740,6 +13750,11 @@ function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistSta
13740
13750
  return [
13741
13751
  {
13742
13752
  ...workerOptions,
13753
+ tails: filterTails(
13754
+ workerOptions.tails,
13755
+ workerConfigs,
13756
+ vitePreviewServer.config.logger.warn
13757
+ ),
13743
13758
  name: workerOptions.name ?? config.name,
13744
13759
  unsafeInspectorProxy: inspectorPort !== false,
13745
13760
  ...miniflareWorkerOptions.main ? getPreviewModules(miniflareWorkerOptions.main, modulesRules) : { modules: true, script: "" }
@@ -13759,11 +13774,13 @@ function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistSta
13759
13774
  (error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
13760
13775
  );
13761
13776
  },
13762
- ...getPersistence(resolvedViteConfig.root, persistState),
13777
+ defaultPersistRoot: getPersistenceRoot(
13778
+ resolvedViteConfig.root,
13779
+ persistState
13780
+ ),
13763
13781
  workers
13764
13782
  };
13765
13783
  }
13766
- var removedMessages = [/^Ready on http/, /^Updated and ready on http/];
13767
13784
  var ViteMiniflareLogger = class extends Log {
13768
13785
  logger;
13769
13786
  constructor(config) {
@@ -13771,11 +13788,6 @@ var ViteMiniflareLogger = class extends Log {
13771
13788
  this.logger = config.logger;
13772
13789
  }
13773
13790
  logWithLevel(level, message) {
13774
- for (const removedMessage of removedMessages) {
13775
- if (removedMessage.test(message)) {
13776
- return;
13777
- }
13778
- }
13779
13791
  switch (level) {
13780
13792
  case LogLevel.ERROR:
13781
13793
  return this.logger.error(message);
@@ -13785,6 +13797,8 @@ var ViteMiniflareLogger = class extends Log {
13785
13797
  return this.logger.info(message);
13786
13798
  }
13787
13799
  }
13800
+ logReady() {
13801
+ }
13788
13802
  };
13789
13803
  function miniflareLogLevelFromViteLogLevel(level = "info") {
13790
13804
  switch (level) {
@@ -14148,6 +14162,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
14148
14162
  }
14149
14163
 
14150
14164
  // src/websockets.ts
14165
+ import { createHeaders } from "@mjackson/node-fetch-server";
14151
14166
  import { coupleWebSocket } from "miniflare";
14152
14167
  import { WebSocketServer } from "ws";
14153
14168
  function handleWebSocket(httpServer, getFetcher) {
@@ -14159,7 +14174,7 @@ function handleWebSocket(httpServer, getFetcher) {
14159
14174
  if (request.headers["sec-websocket-protocol"]?.startsWith("vite")) {
14160
14175
  return;
14161
14176
  }
14162
- const headers = nodeHeadersToWebHeaders(request.headers);
14177
+ const headers = createHeaders(request);
14163
14178
  const fetcher = await getFetcher();
14164
14179
  const response = await fetcher(url, {
14165
14180
  headers,
@@ -14426,10 +14441,6 @@ function cloudflare2(pluginConfig = {}) {
14426
14441
  }
14427
14442
  },
14428
14443
  async configureServer(viteDevServer) {
14429
- assert10(
14430
- viteDevServer.httpServer,
14431
- "Unexpected error: No Vite HTTP server"
14432
- );
14433
14444
  const inputInspectorPort = await getInputInspectorPortOption(
14434
14445
  pluginConfig,
14435
14446
  viteDevServer
@@ -14452,24 +14463,32 @@ function cloudflare2(pluginConfig = {}) {
14452
14463
  );
14453
14464
  }
14454
14465
  await initRunners(resolvedPluginConfig, viteDevServer, miniflare);
14455
- const middleware = createMiddleware(
14456
- async ({ request }) => {
14466
+ if (viteDevServer.httpServer) {
14467
+ handleWebSocket(viteDevServer.httpServer, async () => {
14457
14468
  assert10(miniflare, `Miniflare not defined`);
14458
14469
  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
- });
14470
+ return routerWorker.fetch;
14471
+ });
14472
+ }
14470
14473
  return () => {
14471
- viteDevServer.middlewares.use((req, res, next) => {
14472
- middleware(req, res, next);
14474
+ viteDevServer.middlewares.use(async (req, res, next) => {
14475
+ try {
14476
+ assert10(miniflare, `Miniflare not defined`);
14477
+ const routerWorker = await getRouterWorker(miniflare);
14478
+ const request = createRequest(req, res);
14479
+ const response = await routerWorker.fetch(
14480
+ toMiniflareRequest(request),
14481
+ {
14482
+ redirect: "manual"
14483
+ }
14484
+ );
14485
+ if (req.httpVersionMajor === 2) {
14486
+ response.headers.delete("transfer-encoding");
14487
+ }
14488
+ await sendResponse(res, response);
14489
+ } catch (error) {
14490
+ next(error);
14491
+ }
14473
14492
  });
14474
14493
  };
14475
14494
  },
@@ -14487,20 +14506,24 @@ function cloudflare2(pluginConfig = {}) {
14487
14506
  inputInspectorPort
14488
14507
  )
14489
14508
  );
14490
- const middleware = createMiddleware(
14491
- ({ request }) => {
14492
- return miniflare2.dispatchFetch(toMiniflareRequest(request), {
14493
- redirect: "manual"
14494
- });
14495
- },
14496
- { alwaysCallNext: false }
14497
- );
14498
14509
  handleWebSocket(
14499
14510
  vitePreviewServer.httpServer,
14500
14511
  () => miniflare2.dispatchFetch
14501
14512
  );
14502
- vitePreviewServer.middlewares.use((req, res, next) => {
14503
- middleware(req, res, next);
14513
+ vitePreviewServer.middlewares.use(async (req, res, next) => {
14514
+ try {
14515
+ const request = createRequest(req, res);
14516
+ const response = await miniflare2.dispatchFetch(
14517
+ toMiniflareRequest(request),
14518
+ { redirect: "manual" }
14519
+ );
14520
+ if (req.httpVersionMajor === 2) {
14521
+ response.headers.delete("transfer-encoding");
14522
+ }
14523
+ await sendResponse(res, response);
14524
+ } catch (error) {
14525
+ next(error);
14526
+ }
14504
14527
  });
14505
14528
  }
14506
14529
  },
@@ -14839,7 +14862,7 @@ async function getInputInspectorPortOption(pluginConfig, viteServer) {
14839
14862
  const inputInspectorPort = pluginConfig.inspectorPort ?? await getFirstAvailablePort(DEFAULT_INSPECTOR_PORT);
14840
14863
  if (pluginConfig.inspectorPort === void 0 && inputInspectorPort !== DEFAULT_INSPECTOR_PORT) {
14841
14864
  viteServer.config.logger.warn(
14842
- colors2.dim(
14865
+ colors3.dim(
14843
14866
  `Default inspector port ${DEFAULT_INSPECTOR_PORT} not available, using ${inputInspectorPort} instead
14844
14867
  `
14845
14868
  )
@@ -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-7749f42c3",
3
+ "version": "0.0.0-781924bb9",
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-7749f42c3",
44
- "miniflare": "0.0.0-7749f42c3",
45
- "wrangler": "0.0.0-7749f42c3"
44
+ "miniflare": "0.0.0-781924bb9",
45
+ "wrangler": "0.0.0-781924bb9"
46
46
  },
47
47
  "devDependencies": {
48
- "@cloudflare/workers-types": "^4.20250422.0",
48
+ "@cloudflare/workers-types": "^4.20250525.0",
49
49
  "@types/node": "^22.10.1",
50
50
  "@types/ws": "^8.5.13",
51
51
  "magic-string": "^0.30.12",
@@ -56,7 +56,7 @@
56
56
  "vite": "^6.1.0",
57
57
  "vitest": "~3.1.1",
58
58
  "@cloudflare/mock-npm-registry": "0.0.0",
59
- "@cloudflare/workers-shared": "0.0.0-7749f42c3",
59
+ "@cloudflare/workers-shared": "0.0.0-781924bb9",
60
60
  "@cloudflare/workers-tsconfig": "0.0.0"
61
61
  },
62
62
  "peerDependencies": {