@cloudflare/vite-plugin 0.0.0-47f56a2a4 → 0.0.0-485cd0867

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.
@@ -6,26 +6,31 @@ import {
6
6
  } from "cloudflare:workers";
7
7
 
8
8
  // src/constants.ts
9
- var MODULE_TYPES = ["CompiledWasm"];
9
+ var ADDITIONAL_MODULE_TYPES = [
10
+ "CompiledWasm",
11
+ "Data",
12
+ "Text"
13
+ ];
14
+ var kRequestType = Symbol("kRequestType");
10
15
 
11
16
  // src/shared.ts
12
17
  var UNKNOWN_HOST = "http://localhost";
13
18
  var INIT_PATH = "/__vite_plugin_cloudflare_init__";
14
- var MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${MODULE_TYPES.join("|")})__(.*?)__`;
19
+ var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)__CLOUDFLARE_MODULE__`;
20
+ var additionalModuleRE = new RegExp(ADDITIONAL_MODULE_PATTERN);
21
+ var additionalModuleGlobalRE = new RegExp(
22
+ ADDITIONAL_MODULE_PATTERN,
23
+ "g"
24
+ );
25
+ var VITE_DEV_METADATA_HEADER = "__VITE_DEV_METADATA__";
15
26
 
16
27
  // src/runner-worker/env.ts
17
28
  function stripInternalEnv(internalEnv) {
18
- const {
19
- __VITE_ROOT__,
20
- __VITE_ENTRY_PATH__,
21
- __VITE_INVOKE_MODULE__,
22
- __VITE_UNSAFE_EVAL__,
23
- ...userEnv
24
- } = internalEnv;
29
+ const { __VITE_INVOKE_MODULE__, __VITE_UNSAFE_EVAL__, ...userEnv } = internalEnv;
25
30
  return userEnv;
26
31
  }
27
32
 
28
- // ../../node_modules/.pnpm/vite@6.1.0_@types+node@18.19.76_jiti@2.4.2/node_modules/vite/dist/node/module-runner.js
33
+ // ../../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
29
34
  var VALID_ID_PREFIX = "/@id/";
30
35
  var NULL_BYTE_PLACEHOLDER = "__x00__";
31
36
  var SOURCEMAPPING_URL = "sourceMa";
@@ -1356,7 +1361,7 @@ function exportAll(exports, sourceModule) {
1356
1361
 
1357
1362
  // src/runner-worker/module-runner.ts
1358
1363
  var moduleRunner;
1359
- async function createModuleRunner(env, webSocket) {
1364
+ async function createModuleRunner(env, webSocket, viteRoot) {
1360
1365
  if (moduleRunner) {
1361
1366
  throw new Error("Runner already initialized");
1362
1367
  }
@@ -1368,7 +1373,7 @@ async function createModuleRunner(env, webSocket) {
1368
1373
  });
1369
1374
  moduleRunner = new ModuleRunner(
1370
1375
  {
1371
- root: env.__VITE_ROOT__,
1376
+ root: viteRoot,
1372
1377
  sourcemapInterceptor: "prepareStackTrace",
1373
1378
  transport: {
1374
1379
  ...transport,
@@ -1390,13 +1395,6 @@ async function createModuleRunner(env, webSocket) {
1390
1395
  },
1391
1396
  {
1392
1397
  async runInlinedModule(context, transformed, module) {
1393
- if (module.file.includes("/node_modules") && !module.file.includes("/node_modules/.vite")) {
1394
- throw new Error(
1395
- `[Error] Trying to import non-prebundled module (only prebundled modules are allowed): ${module.id}
1396
-
1397
- (have you excluded the module via \`optimizeDeps.exclude\`?)`
1398
- );
1399
- }
1400
1398
  const codeDefinition = `'use strict';async (${Object.keys(context).join(
1401
1399
  ","
1402
1400
  )})=>{{`;
@@ -1413,13 +1411,14 @@ async function createModuleRunner(env, webSocket) {
1413
1411
  }
1414
1412
  },
1415
1413
  async runExternalModule(filepath) {
1416
- const moduleRE = new RegExp(MODULE_PATTERN);
1417
- if (!moduleRE.test(filepath) && filepath.includes("/node_modules") && !filepath.includes("/node_modules/.vite")) {
1418
- throw new Error(
1419
- `[Error] Trying to import non-prebundled module (only prebundled modules are allowed): ${filepath}
1420
-
1421
- (have you externalized the module via \`resolve.external\`?)`
1422
- );
1414
+ if (filepath === "cloudflare:workers") {
1415
+ const originalCloudflareWorkersModule = await import("cloudflare:workers");
1416
+ return Object.seal({
1417
+ ...originalCloudflareWorkersModule,
1418
+ env: stripInternalEnv(
1419
+ originalCloudflareWorkersModule.env
1420
+ )
1421
+ });
1423
1422
  }
1424
1423
  filepath = filepath.replace(/^file:\/\//, "");
1425
1424
  return import(filepath);
@@ -1437,22 +1436,24 @@ async function getWorkerEntryExport(path, entrypoint) {
1437
1436
  }
1438
1437
 
1439
1438
  // src/runner-worker/index.ts
1439
+ var IGNORED_KEYS = ["self", "tailStream"];
1440
1440
  var WORKER_ENTRYPOINT_KEYS = [
1441
1441
  "fetch",
1442
+ "queue",
1442
1443
  "tail",
1444
+ "test",
1443
1445
  "trace",
1444
- "scheduled",
1445
- "queue",
1446
- "test"
1446
+ "scheduled"
1447
1447
  ];
1448
1448
  var DURABLE_OBJECT_KEYS = [
1449
- "fetch",
1450
1449
  "alarm",
1451
- "webSocketMessage",
1450
+ "fetch",
1452
1451
  "webSocketClose",
1453
- "webSocketError"
1452
+ "webSocketError",
1453
+ "webSocketMessage"
1454
1454
  ];
1455
1455
  var WORKFLOW_ENTRYPOINT_KEYS = ["run"];
1456
+ var entryPath = "";
1456
1457
  function getRpcProperty(ctor, instance, key) {
1457
1458
  const prototypeHasKey = Reflect.has(ctor.prototype, key);
1458
1459
  if (!prototypeHasKey) {
@@ -1485,7 +1486,6 @@ function getRpcPropertyCallableThenable(key, property) {
1485
1486
  return fn;
1486
1487
  }
1487
1488
  async function getWorkerEntrypointRpcProperty(entrypoint, key) {
1488
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1489
1489
  const ctor = await getWorkerEntryExport(
1490
1490
  entryPath,
1491
1491
  entrypoint
@@ -1515,7 +1515,7 @@ function createWorkerEntrypointWrapper(entrypoint) {
1515
1515
  if (value !== void 0) {
1516
1516
  return value;
1517
1517
  }
1518
- if (key === "self" || typeof key === "symbol" || DURABLE_OBJECT_KEYS.includes(key)) {
1518
+ if (typeof key === "symbol" || IGNORED_KEYS.includes(key) || DURABLE_OBJECT_KEYS.includes(key)) {
1519
1519
  return;
1520
1520
  }
1521
1521
  const property = getWorkerEntrypointRpcProperty.call(
@@ -1530,21 +1530,27 @@ function createWorkerEntrypointWrapper(entrypoint) {
1530
1530
  }
1531
1531
  for (const key of WORKER_ENTRYPOINT_KEYS) {
1532
1532
  Wrapper.prototype[key] = async function(arg) {
1533
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1534
1533
  if (key === "fetch") {
1535
1534
  const request = arg;
1536
1535
  const url = new URL(request.url);
1536
+ let webSocket;
1537
1537
  if (url.pathname === INIT_PATH) {
1538
- const { 0: client, 1: server } = new WebSocketPair();
1539
1538
  try {
1540
- await createModuleRunner(this.env, server);
1539
+ const viteDevMetadata = getViteDevMetadata(request);
1540
+ entryPath = viteDevMetadata.entryPath;
1541
+ const { 0: client, 1: server } = new WebSocketPair();
1542
+ webSocket = client;
1543
+ await createModuleRunner(this.env, server, viteDevMetadata.root);
1541
1544
  } catch (e) {
1542
1545
  return new Response(
1543
1546
  e instanceof Error ? e.message : JSON.stringify(e),
1544
1547
  { status: 500 }
1545
1548
  );
1546
1549
  }
1547
- return new Response(null, { status: 101, webSocket: client });
1550
+ return new Response(null, {
1551
+ status: 101,
1552
+ webSocket
1553
+ });
1548
1554
  }
1549
1555
  }
1550
1556
  const entrypointValue = await getWorkerEntryExport(entryPath, entrypoint);
@@ -1584,7 +1590,6 @@ function createWorkerEntrypointWrapper(entrypoint) {
1584
1590
  var kInstance = Symbol("kInstance");
1585
1591
  var kEnsureInstance = Symbol("kEnsureInstance");
1586
1592
  async function getDurableObjectRpcProperty(className, key) {
1587
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1588
1593
  const { ctor, instance } = await this[kEnsureInstance]();
1589
1594
  if (!(instance instanceof DurableObject)) {
1590
1595
  throw new TypeError(
@@ -1608,7 +1613,7 @@ function createDurableObjectWrapper(className) {
1608
1613
  if (value !== void 0) {
1609
1614
  return value;
1610
1615
  }
1611
- if (key === "self" || typeof key === "symbol" || WORKER_ENTRYPOINT_KEYS.includes(key)) {
1616
+ if (typeof key === "symbol" || IGNORED_KEYS.includes(key) || WORKER_ENTRYPOINT_KEYS.includes(key)) {
1612
1617
  return;
1613
1618
  }
1614
1619
  const property = getDurableObjectRpcProperty.call(
@@ -1621,7 +1626,6 @@ function createDurableObjectWrapper(className) {
1621
1626
  });
1622
1627
  }
1623
1628
  async [kEnsureInstance]() {
1624
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1625
1629
  const ctor = await getWorkerEntryExport(
1626
1630
  entryPath,
1627
1631
  className
@@ -1643,7 +1647,6 @@ function createDurableObjectWrapper(className) {
1643
1647
  }
1644
1648
  for (const key of DURABLE_OBJECT_KEYS) {
1645
1649
  Wrapper.prototype[key] = async function(...args) {
1646
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1647
1650
  const { instance } = await this[kEnsureInstance]();
1648
1651
  const maybeFn = instance[key];
1649
1652
  if (typeof maybeFn !== "function") {
@@ -1661,7 +1664,6 @@ function createWorkflowEntrypointWrapper(className) {
1661
1664
  }
1662
1665
  for (const key of WORKFLOW_ENTRYPOINT_KEYS) {
1663
1666
  Wrapper.prototype[key] = async function(...args) {
1664
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1665
1667
  const ctor = await getWorkerEntryExport(
1666
1668
  entryPath,
1667
1669
  className
@@ -1684,6 +1686,34 @@ function createWorkflowEntrypointWrapper(className) {
1684
1686
  }
1685
1687
  return Wrapper;
1686
1688
  }
1689
+ function getViteDevMetadata(request) {
1690
+ const viteDevMetadataHeader = request.headers.get(VITE_DEV_METADATA_HEADER);
1691
+ if (viteDevMetadataHeader === null) {
1692
+ throw new Error(
1693
+ "Unexpected internal error, vite dev metadata header not set"
1694
+ );
1695
+ }
1696
+ let parsedViteDevMetadataHeader;
1697
+ try {
1698
+ parsedViteDevMetadataHeader = JSON.parse(viteDevMetadataHeader);
1699
+ } catch {
1700
+ throw new Error(
1701
+ `Unexpected internal error, vite dev metadata header JSON parsing failed, value = ${viteDevMetadataHeader}`
1702
+ );
1703
+ }
1704
+ const { root, entryPath: entryPath2 } = parsedViteDevMetadataHeader;
1705
+ if (root === void 0) {
1706
+ throw new Error(
1707
+ "Unexpected internal error, vite dev metadata header doesn't contain a root value"
1708
+ );
1709
+ }
1710
+ if (entryPath2 === void 0) {
1711
+ throw new Error(
1712
+ "Unexpected internal error, vite dev metadata header doesn't contain an entryPath value"
1713
+ );
1714
+ }
1715
+ return { root, entryPath: entryPath2 };
1716
+ }
1687
1717
  export {
1688
1718
  createDurableObjectWrapper,
1689
1719
  createWorkerEntrypointWrapper,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/vite-plugin",
3
- "version": "0.0.0-47f56a2a4",
3
+ "version": "0.0.0-485cd0867",
4
4
  "description": "Cloudflare plugin for Vite",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -33,31 +33,34 @@
33
33
  "dist"
34
34
  ],
35
35
  "dependencies": {
36
- "@cloudflare/unenv-preset": "1.1.1",
37
- "@hattip/adapter-node": "^0.0.49",
38
- "unenv": "2.0.0-rc.1",
36
+ "@cloudflare/unenv-preset": "2.3.2",
37
+ "@mjackson/node-fetch-server": "^0.6.1",
38
+ "@rollup/plugin-replace": "^6.0.1",
39
+ "get-port": "^7.1.0",
40
+ "picocolors": "^1.1.1",
41
+ "tinyglobby": "^0.2.12",
42
+ "unenv": "2.0.0-rc.17",
39
43
  "ws": "8.18.0",
40
- "miniflare": "0.0.0-47f56a2a4"
44
+ "miniflare": "0.0.0-485cd0867",
45
+ "wrangler": "0.0.0-485cd0867"
41
46
  },
42
47
  "devDependencies": {
43
- "@cloudflare/workers-types": "^4.20250214.0",
48
+ "@cloudflare/workers-types": "^4.20250604.0",
44
49
  "@types/node": "^22.10.1",
45
50
  "@types/ws": "^8.5.13",
46
51
  "magic-string": "^0.30.12",
47
52
  "mlly": "^1.7.4",
48
53
  "tsup": "8.3.0",
49
54
  "typescript": "^5.7.2",
50
- "undici": "^5.28.5",
51
55
  "vite": "^6.1.0",
52
- "vitest": "~3.0.5",
53
- "@cloudflare/mock-npm-registry": "0.0.0",
56
+ "vitest": "~3.1.1",
54
57
  "@cloudflare/workers-tsconfig": "0.0.0",
55
- "@cloudflare/workers-shared": "0.0.0-47f56a2a4",
56
- "wrangler": "0.0.0-47f56a2a4"
58
+ "@cloudflare/mock-npm-registry": "0.0.0",
59
+ "@cloudflare/workers-shared": "0.0.0-485cd0867"
57
60
  },
58
61
  "peerDependencies": {
59
62
  "vite": "^6.1.0",
60
- "wrangler": "^3.101.0"
63
+ "wrangler": "^3.101.0 || ^4.0.0"
61
64
  },
62
65
  "publishConfig": {
63
66
  "access": "public"
@@ -70,7 +73,7 @@
70
73
  "check:type": "tsc --build",
71
74
  "dev": "tsup --watch",
72
75
  "test": "vitest run",
73
- "test:ci": "pnpm test && pnpm test:e2e",
76
+ "test:ci": "pnpm test",
74
77
  "test:e2e": "vitest run -c e2e/vitest.config.ts",
75
78
  "test:watch": "vitest"
76
79
  }