@cloudflare/vite-plugin 0.1.12 → 0.1.14

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,22 +6,26 @@ 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
+ ];
10
14
 
11
15
  // src/shared.ts
12
16
  var UNKNOWN_HOST = "http://localhost";
13
17
  var INIT_PATH = "/__vite_plugin_cloudflare_init__";
14
- var MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${MODULE_TYPES.join("|")})__(.*?)__`;
18
+ var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)__`;
19
+ var additionalModuleRE = new RegExp(ADDITIONAL_MODULE_PATTERN);
20
+ var additionalModuleGlobalRE = new RegExp(
21
+ ADDITIONAL_MODULE_PATTERN,
22
+ "g"
23
+ );
24
+ var VITE_DEV_METADATA_HEADER = "__VITE_DEV_METADATA__";
15
25
 
16
26
  // src/runner-worker/env.ts
17
27
  function stripInternalEnv(internalEnv) {
18
- const {
19
- __VITE_ROOT__,
20
- __VITE_ENTRY_PATH__,
21
- __VITE_INVOKE_MODULE__,
22
- __VITE_UNSAFE_EVAL__,
23
- ...userEnv
24
- } = internalEnv;
28
+ const { __VITE_INVOKE_MODULE__, __VITE_UNSAFE_EVAL__, ...userEnv } = internalEnv;
25
29
  return userEnv;
26
30
  }
27
31
 
@@ -1356,7 +1360,7 @@ function exportAll(exports, sourceModule) {
1356
1360
 
1357
1361
  // src/runner-worker/module-runner.ts
1358
1362
  var moduleRunner;
1359
- async function createModuleRunner(env, webSocket) {
1363
+ async function createModuleRunner(env, webSocket, viteRoot) {
1360
1364
  if (moduleRunner) {
1361
1365
  throw new Error("Runner already initialized");
1362
1366
  }
@@ -1368,7 +1372,7 @@ async function createModuleRunner(env, webSocket) {
1368
1372
  });
1369
1373
  moduleRunner = new ModuleRunner(
1370
1374
  {
1371
- root: env.__VITE_ROOT__,
1375
+ root: viteRoot,
1372
1376
  sourcemapInterceptor: "prepareStackTrace",
1373
1377
  transport: {
1374
1378
  ...transport,
@@ -1413,8 +1417,7 @@ async function createModuleRunner(env, webSocket) {
1413
1417
  }
1414
1418
  },
1415
1419
  async runExternalModule(filepath) {
1416
- const moduleRE = new RegExp(MODULE_PATTERN);
1417
- if (!moduleRE.test(filepath) && filepath.includes("/node_modules") && !filepath.includes("/node_modules/.vite")) {
1420
+ if (!additionalModuleRE.test(filepath) && filepath.includes("/node_modules") && !filepath.includes("/node_modules/.vite")) {
1418
1421
  throw new Error(
1419
1422
  `[Error] Trying to import non-prebundled module (only prebundled modules are allowed): ${filepath}
1420
1423
 
@@ -1453,6 +1456,7 @@ var DURABLE_OBJECT_KEYS = [
1453
1456
  "webSocketError"
1454
1457
  ];
1455
1458
  var WORKFLOW_ENTRYPOINT_KEYS = ["run"];
1459
+ var entryPath = "";
1456
1460
  function getRpcProperty(ctor, instance, key) {
1457
1461
  const prototypeHasKey = Reflect.has(ctor.prototype, key);
1458
1462
  if (!prototypeHasKey) {
@@ -1485,7 +1489,6 @@ function getRpcPropertyCallableThenable(key, property) {
1485
1489
  return fn;
1486
1490
  }
1487
1491
  async function getWorkerEntrypointRpcProperty(entrypoint, key) {
1488
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1489
1492
  const ctor = await getWorkerEntryExport(
1490
1493
  entryPath,
1491
1494
  entrypoint
@@ -1530,21 +1533,27 @@ function createWorkerEntrypointWrapper(entrypoint) {
1530
1533
  }
1531
1534
  for (const key of WORKER_ENTRYPOINT_KEYS) {
1532
1535
  Wrapper.prototype[key] = async function(arg) {
1533
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1534
1536
  if (key === "fetch") {
1535
1537
  const request = arg;
1536
1538
  const url = new URL(request.url);
1539
+ let webSocket;
1537
1540
  if (url.pathname === INIT_PATH) {
1538
- const { 0: client, 1: server } = new WebSocketPair();
1539
1541
  try {
1540
- await createModuleRunner(this.env, server);
1542
+ const viteDevMetadata = getViteDevMetadata(request);
1543
+ entryPath = viteDevMetadata.entryPath;
1544
+ const { 0: client, 1: server } = new WebSocketPair();
1545
+ webSocket = client;
1546
+ await createModuleRunner(this.env, server, viteDevMetadata.root);
1541
1547
  } catch (e) {
1542
1548
  return new Response(
1543
1549
  e instanceof Error ? e.message : JSON.stringify(e),
1544
1550
  { status: 500 }
1545
1551
  );
1546
1552
  }
1547
- return new Response(null, { status: 101, webSocket: client });
1553
+ return new Response(null, {
1554
+ status: 101,
1555
+ webSocket
1556
+ });
1548
1557
  }
1549
1558
  }
1550
1559
  const entrypointValue = await getWorkerEntryExport(entryPath, entrypoint);
@@ -1584,7 +1593,6 @@ function createWorkerEntrypointWrapper(entrypoint) {
1584
1593
  var kInstance = Symbol("kInstance");
1585
1594
  var kEnsureInstance = Symbol("kEnsureInstance");
1586
1595
  async function getDurableObjectRpcProperty(className, key) {
1587
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1588
1596
  const { ctor, instance } = await this[kEnsureInstance]();
1589
1597
  if (!(instance instanceof DurableObject)) {
1590
1598
  throw new TypeError(
@@ -1621,7 +1629,6 @@ function createDurableObjectWrapper(className) {
1621
1629
  });
1622
1630
  }
1623
1631
  async [kEnsureInstance]() {
1624
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1625
1632
  const ctor = await getWorkerEntryExport(
1626
1633
  entryPath,
1627
1634
  className
@@ -1643,7 +1650,6 @@ function createDurableObjectWrapper(className) {
1643
1650
  }
1644
1651
  for (const key of DURABLE_OBJECT_KEYS) {
1645
1652
  Wrapper.prototype[key] = async function(...args) {
1646
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1647
1653
  const { instance } = await this[kEnsureInstance]();
1648
1654
  const maybeFn = instance[key];
1649
1655
  if (typeof maybeFn !== "function") {
@@ -1661,7 +1667,6 @@ function createWorkflowEntrypointWrapper(className) {
1661
1667
  }
1662
1668
  for (const key of WORKFLOW_ENTRYPOINT_KEYS) {
1663
1669
  Wrapper.prototype[key] = async function(...args) {
1664
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1665
1670
  const ctor = await getWorkerEntryExport(
1666
1671
  entryPath,
1667
1672
  className
@@ -1684,6 +1689,34 @@ function createWorkflowEntrypointWrapper(className) {
1684
1689
  }
1685
1690
  return Wrapper;
1686
1691
  }
1692
+ function getViteDevMetadata(request) {
1693
+ const viteDevMetadataHeader = request.headers.get(VITE_DEV_METADATA_HEADER);
1694
+ if (viteDevMetadataHeader === null) {
1695
+ throw new Error(
1696
+ "Unexpected internal error, vite dev metadata header not set"
1697
+ );
1698
+ }
1699
+ let parsedViteDevMetadataHeader;
1700
+ try {
1701
+ parsedViteDevMetadataHeader = JSON.parse(viteDevMetadataHeader);
1702
+ } catch {
1703
+ throw new Error(
1704
+ `Unexpected internal error, vite dev metadata header JSON parsing failed, value = ${viteDevMetadataHeader}`
1705
+ );
1706
+ }
1707
+ const { root, entryPath: entryPath2 } = parsedViteDevMetadataHeader;
1708
+ if (root === void 0) {
1709
+ throw new Error(
1710
+ "Unexpected internal error, vite dev metadata header doesn't contain a root value"
1711
+ );
1712
+ }
1713
+ if (entryPath2 === void 0) {
1714
+ throw new Error(
1715
+ "Unexpected internal error, vite dev metadata header doesn't contain an entryPath value"
1716
+ );
1717
+ }
1718
+ return { root, entryPath: entryPath2 };
1719
+ }
1687
1720
  export {
1688
1721
  createDurableObjectWrapper,
1689
1722
  createWorkerEntrypointWrapper,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/vite-plugin",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "description": "Cloudflare plugin for Vite",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -33,16 +33,17 @@
33
33
  "dist"
34
34
  ],
35
35
  "dependencies": {
36
- "@cloudflare/unenv-preset": "1.1.1",
37
36
  "@hattip/adapter-node": "^0.0.49",
37
+ "picocolors": "^1.1.1",
38
38
  "tinyglobby": "^0.2.12",
39
- "unenv": "2.0.0-rc.1",
39
+ "unenv": "2.0.0-rc.15",
40
40
  "ws": "8.18.0",
41
- "miniflare": "4.20250317.0",
42
- "wrangler": "4.1.0"
41
+ "@cloudflare/unenv-preset": "2.3.0",
42
+ "miniflare": "4.20250319.0",
43
+ "wrangler": "4.3.0"
43
44
  },
44
45
  "devDependencies": {
45
- "@cloudflare/workers-types": "^4.20250317.0",
46
+ "@cloudflare/workers-types": "^4.20250319.0",
46
47
  "@types/node": "^22.10.1",
47
48
  "@types/ws": "^8.5.13",
48
49
  "magic-string": "^0.30.12",
@@ -51,14 +52,14 @@
51
52
  "typescript": "^5.7.2",
52
53
  "undici": "^5.28.5",
53
54
  "vite": "^6.1.0",
54
- "vitest": "~3.0.5",
55
+ "vitest": "~3.0.8",
55
56
  "@cloudflare/mock-npm-registry": "0.0.0",
56
- "@cloudflare/workers-shared": "0.16.0",
57
+ "@cloudflare/workers-shared": "0.17.0",
57
58
  "@cloudflare/workers-tsconfig": "0.0.0"
58
59
  },
59
60
  "peerDependencies": {
60
61
  "vite": "^6.1.0",
61
- "wrangler": "^3.101.0"
62
+ "wrangler": "^3.101.0 || ^4.0.0"
62
63
  },
63
64
  "publishConfig": {
64
65
  "access": "public"