@cloudflare/vite-plugin 0.0.0-e5ebdb143 → 0.0.0-e6fea1318

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.
@@ -5,23 +5,31 @@ import {
5
5
  WorkflowEntrypoint
6
6
  } from "cloudflare:workers";
7
7
 
8
+ // src/constants.ts
9
+ var ADDITIONAL_MODULE_TYPES = [
10
+ "CompiledWasm",
11
+ "Data",
12
+ "Text"
13
+ ];
14
+
8
15
  // src/shared.ts
9
16
  var UNKNOWN_HOST = "http://localhost";
10
17
  var INIT_PATH = "/__vite_plugin_cloudflare_init__";
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__";
11
25
 
12
26
  // src/runner-worker/env.ts
13
27
  function stripInternalEnv(internalEnv) {
14
- const {
15
- __VITE_ROOT__,
16
- __VITE_ENTRY_PATH__,
17
- __VITE_INVOKE_MODULE__,
18
- __VITE_UNSAFE_EVAL__,
19
- ...userEnv
20
- } = internalEnv;
28
+ const { __VITE_INVOKE_MODULE__, __VITE_UNSAFE_EVAL__, ...userEnv } = internalEnv;
21
29
  return userEnv;
22
30
  }
23
31
 
24
- // ../../node_modules/.pnpm/vite@6.0.7_@types+node@18.19.59_jiti@2.4.2/node_modules/vite/dist/node/module-runner.js
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
25
33
  var VALID_ID_PREFIX = "/@id/";
26
34
  var NULL_BYTE_PLACEHOLDER = "__x00__";
27
35
  var SOURCEMAPPING_URL = "sourceMa";
@@ -1352,7 +1360,7 @@ function exportAll(exports, sourceModule) {
1352
1360
 
1353
1361
  // src/runner-worker/module-runner.ts
1354
1362
  var moduleRunner;
1355
- async function createModuleRunner(env, webSocket) {
1363
+ async function createModuleRunner(env, webSocket, viteRoot) {
1356
1364
  if (moduleRunner) {
1357
1365
  throw new Error("Runner already initialized");
1358
1366
  }
@@ -1364,7 +1372,7 @@ async function createModuleRunner(env, webSocket) {
1364
1372
  });
1365
1373
  moduleRunner = new ModuleRunner(
1366
1374
  {
1367
- root: env.__VITE_ROOT__,
1375
+ root: viteRoot,
1368
1376
  sourcemapInterceptor: "prepareStackTrace",
1369
1377
  transport: {
1370
1378
  ...transport,
@@ -1409,7 +1417,16 @@ async function createModuleRunner(env, webSocket) {
1409
1417
  }
1410
1418
  },
1411
1419
  async runExternalModule(filepath) {
1412
- if (filepath.includes("/node_modules") && !filepath.includes("/node_modules/.vite")) {
1420
+ if (filepath === "cloudflare:workers") {
1421
+ const originalCloudflareWorkersModule = await import("cloudflare:workers");
1422
+ return Object.seal({
1423
+ ...originalCloudflareWorkersModule,
1424
+ env: stripInternalEnv(
1425
+ originalCloudflareWorkersModule.env
1426
+ )
1427
+ });
1428
+ }
1429
+ if (!additionalModuleRE.test(filepath) && filepath.includes("/node_modules") && !filepath.includes("/node_modules/.vite")) {
1413
1430
  throw new Error(
1414
1431
  `[Error] Trying to import non-prebundled module (only prebundled modules are allowed): ${filepath}
1415
1432
 
@@ -1448,6 +1465,7 @@ var DURABLE_OBJECT_KEYS = [
1448
1465
  "webSocketError"
1449
1466
  ];
1450
1467
  var WORKFLOW_ENTRYPOINT_KEYS = ["run"];
1468
+ var entryPath = "";
1451
1469
  function getRpcProperty(ctor, instance, key) {
1452
1470
  const prototypeHasKey = Reflect.has(ctor.prototype, key);
1453
1471
  if (!prototypeHasKey) {
@@ -1480,7 +1498,6 @@ function getRpcPropertyCallableThenable(key, property) {
1480
1498
  return fn;
1481
1499
  }
1482
1500
  async function getWorkerEntrypointRpcProperty(entrypoint, key) {
1483
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1484
1501
  const ctor = await getWorkerEntryExport(
1485
1502
  entryPath,
1486
1503
  entrypoint
@@ -1525,14 +1542,27 @@ function createWorkerEntrypointWrapper(entrypoint) {
1525
1542
  }
1526
1543
  for (const key of WORKER_ENTRYPOINT_KEYS) {
1527
1544
  Wrapper.prototype[key] = async function(arg) {
1528
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1529
1545
  if (key === "fetch") {
1530
1546
  const request = arg;
1531
1547
  const url = new URL(request.url);
1548
+ let webSocket;
1532
1549
  if (url.pathname === INIT_PATH) {
1533
- const { 0: client, 1: server } = new WebSocketPair();
1534
- createModuleRunner(this.env, server);
1535
- return new Response(null, { status: 101, webSocket: client });
1550
+ try {
1551
+ const viteDevMetadata = getViteDevMetadata(request);
1552
+ entryPath = viteDevMetadata.entryPath;
1553
+ const { 0: client, 1: server } = new WebSocketPair();
1554
+ webSocket = client;
1555
+ await createModuleRunner(this.env, server, viteDevMetadata.root);
1556
+ } catch (e) {
1557
+ return new Response(
1558
+ e instanceof Error ? e.message : JSON.stringify(e),
1559
+ { status: 500 }
1560
+ );
1561
+ }
1562
+ return new Response(null, {
1563
+ status: 101,
1564
+ webSocket
1565
+ });
1536
1566
  }
1537
1567
  }
1538
1568
  const entrypointValue = await getWorkerEntryExport(entryPath, entrypoint);
@@ -1572,7 +1602,6 @@ function createWorkerEntrypointWrapper(entrypoint) {
1572
1602
  var kInstance = Symbol("kInstance");
1573
1603
  var kEnsureInstance = Symbol("kEnsureInstance");
1574
1604
  async function getDurableObjectRpcProperty(className, key) {
1575
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1576
1605
  const { ctor, instance } = await this[kEnsureInstance]();
1577
1606
  if (!(instance instanceof DurableObject)) {
1578
1607
  throw new TypeError(
@@ -1609,7 +1638,6 @@ function createDurableObjectWrapper(className) {
1609
1638
  });
1610
1639
  }
1611
1640
  async [kEnsureInstance]() {
1612
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1613
1641
  const ctor = await getWorkerEntryExport(
1614
1642
  entryPath,
1615
1643
  className
@@ -1631,7 +1659,6 @@ function createDurableObjectWrapper(className) {
1631
1659
  }
1632
1660
  for (const key of DURABLE_OBJECT_KEYS) {
1633
1661
  Wrapper.prototype[key] = async function(...args) {
1634
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1635
1662
  const { instance } = await this[kEnsureInstance]();
1636
1663
  const maybeFn = instance[key];
1637
1664
  if (typeof maybeFn !== "function") {
@@ -1649,7 +1676,6 @@ function createWorkflowEntrypointWrapper(className) {
1649
1676
  }
1650
1677
  for (const key of WORKFLOW_ENTRYPOINT_KEYS) {
1651
1678
  Wrapper.prototype[key] = async function(...args) {
1652
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1653
1679
  const ctor = await getWorkerEntryExport(
1654
1680
  entryPath,
1655
1681
  className
@@ -1672,6 +1698,34 @@ function createWorkflowEntrypointWrapper(className) {
1672
1698
  }
1673
1699
  return Wrapper;
1674
1700
  }
1701
+ function getViteDevMetadata(request) {
1702
+ const viteDevMetadataHeader = request.headers.get(VITE_DEV_METADATA_HEADER);
1703
+ if (viteDevMetadataHeader === null) {
1704
+ throw new Error(
1705
+ "Unexpected internal error, vite dev metadata header not set"
1706
+ );
1707
+ }
1708
+ let parsedViteDevMetadataHeader;
1709
+ try {
1710
+ parsedViteDevMetadataHeader = JSON.parse(viteDevMetadataHeader);
1711
+ } catch {
1712
+ throw new Error(
1713
+ `Unexpected internal error, vite dev metadata header JSON parsing failed, value = ${viteDevMetadataHeader}`
1714
+ );
1715
+ }
1716
+ const { root, entryPath: entryPath2 } = parsedViteDevMetadataHeader;
1717
+ if (root === void 0) {
1718
+ throw new Error(
1719
+ "Unexpected internal error, vite dev metadata header doesn't contain a root value"
1720
+ );
1721
+ }
1722
+ if (entryPath2 === void 0) {
1723
+ throw new Error(
1724
+ "Unexpected internal error, vite dev metadata header doesn't contain an entryPath value"
1725
+ );
1726
+ }
1727
+ return { root, entryPath: entryPath2 };
1728
+ }
1675
1729
  export {
1676
1730
  createDurableObjectWrapper,
1677
1731
  createWorkerEntrypointWrapper,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/vite-plugin",
3
- "version": "0.0.0-e5ebdb143",
3
+ "version": "0.0.0-e6fea1318",
4
4
  "description": "Cloudflare plugin for Vite",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -34,25 +34,32 @@
34
34
  ],
35
35
  "dependencies": {
36
36
  "@hattip/adapter-node": "^0.0.49",
37
- "unenv": "npm:unenv-nightly@2.0.0-20241218-183400-5d6aec3",
38
- "ws": "^8.18.0",
39
- "miniflare": "0.0.0-e5ebdb143"
37
+ "picocolors": "^1.1.1",
38
+ "tinyglobby": "^0.2.12",
39
+ "unenv": "2.0.0-rc.15",
40
+ "ws": "8.18.0",
41
+ "@cloudflare/unenv-preset": "0.0.0-e6fea1318",
42
+ "miniflare": "0.0.0-e6fea1318",
43
+ "wrangler": "0.0.0-e6fea1318"
40
44
  },
41
45
  "devDependencies": {
42
- "@cloudflare/workers-types": "^4.20241230.0",
46
+ "@cloudflare/workers-types": "^4.20250321.0",
43
47
  "@types/node": "^22.10.1",
44
48
  "@types/ws": "^8.5.13",
45
49
  "magic-string": "^0.30.12",
46
- "tsup": "^8.3.0",
50
+ "mlly": "^1.7.4",
51
+ "tsup": "8.3.0",
47
52
  "typescript": "^5.7.2",
48
- "vite": "^6.0.7",
53
+ "undici": "^5.28.5",
54
+ "vite": "^6.1.0",
55
+ "vitest": "~3.0.8",
56
+ "@cloudflare/mock-npm-registry": "0.0.0",
49
57
  "@cloudflare/workers-tsconfig": "0.0.0",
50
- "@cloudflare/workers-shared": "0.0.0-e5ebdb143",
51
- "wrangler": "0.0.0-e5ebdb143"
58
+ "@cloudflare/workers-shared": "0.0.0-e6fea1318"
52
59
  },
53
60
  "peerDependencies": {
54
- "vite": "^6.0.7",
55
- "wrangler": "^3.101.0"
61
+ "vite": "^6.1.0",
62
+ "wrangler": "^3.101.0 || ^4.0.0"
56
63
  },
57
64
  "publishConfig": {
58
65
  "access": "public"
@@ -63,8 +70,10 @@
63
70
  "scripts": {
64
71
  "build": "tsup",
65
72
  "check:type": "tsc --build",
66
- "test": "vitest",
67
- "test:ci": "vitest run",
68
- "watch": "tsup --watch"
73
+ "dev": "tsup --watch",
74
+ "test": "vitest run",
75
+ "test:ci": "pnpm test",
76
+ "test:e2e": "vitest run -c e2e/vitest.config.ts",
77
+ "test:watch": "vitest"
69
78
  }
70
79
  }