@cloudflare/vite-plugin 0.0.0-bd9228e85 → 0.0.0-be766d267

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,32 @@ 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
+ var kRequestType = Symbol("kRequestType");
15
+
8
16
  // src/shared.ts
9
17
  var UNKNOWN_HOST = "http://localhost";
10
18
  var INIT_PATH = "/__vite_plugin_cloudflare_init__";
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__";
11
26
 
12
27
  // src/runner-worker/env.ts
13
28
  function stripInternalEnv(internalEnv) {
14
- const {
15
- __VITE_ROOT__,
16
- __VITE_ENTRY_PATH__,
17
- __VITE_INVOKE_MODULE__,
18
- __VITE_UNSAFE_EVAL__,
19
- ...userEnv
20
- } = internalEnv;
29
+ const { __VITE_INVOKE_MODULE__, __VITE_UNSAFE_EVAL__, ...userEnv } = internalEnv;
21
30
  return userEnv;
22
31
  }
23
32
 
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
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
25
34
  var VALID_ID_PREFIX = "/@id/";
26
35
  var NULL_BYTE_PLACEHOLDER = "__x00__";
27
36
  var SOURCEMAPPING_URL = "sourceMa";
@@ -1352,7 +1361,7 @@ function exportAll(exports, sourceModule) {
1352
1361
 
1353
1362
  // src/runner-worker/module-runner.ts
1354
1363
  var moduleRunner;
1355
- async function createModuleRunner(env, webSocket) {
1364
+ async function createModuleRunner(env, webSocket, viteRoot) {
1356
1365
  if (moduleRunner) {
1357
1366
  throw new Error("Runner already initialized");
1358
1367
  }
@@ -1364,7 +1373,7 @@ async function createModuleRunner(env, webSocket) {
1364
1373
  });
1365
1374
  moduleRunner = new ModuleRunner(
1366
1375
  {
1367
- root: env.__VITE_ROOT__,
1376
+ root: viteRoot,
1368
1377
  sourcemapInterceptor: "prepareStackTrace",
1369
1378
  transport: {
1370
1379
  ...transport,
@@ -1386,13 +1395,6 @@ async function createModuleRunner(env, webSocket) {
1386
1395
  },
1387
1396
  {
1388
1397
  async runInlinedModule(context, transformed, module) {
1389
- if (module.file.includes("/node_modules") && !module.file.includes("/node_modules/.vite")) {
1390
- throw new Error(
1391
- `[Error] Trying to import non-prebundled module (only prebundled modules are allowed): ${module.id}
1392
-
1393
- (have you excluded the module via \`optimizeDeps.exclude\`?)`
1394
- );
1395
- }
1396
1398
  const codeDefinition = `'use strict';async (${Object.keys(context).join(
1397
1399
  ","
1398
1400
  )})=>{{`;
@@ -1409,12 +1411,14 @@ async function createModuleRunner(env, webSocket) {
1409
1411
  }
1410
1412
  },
1411
1413
  async runExternalModule(filepath) {
1412
- if (filepath.includes("/node_modules") && !filepath.includes("/node_modules/.vite")) {
1413
- throw new Error(
1414
- `[Error] Trying to import non-prebundled module (only prebundled modules are allowed): ${filepath}
1415
-
1416
- (have you externalized the module via \`resolve.external\`?)`
1417
- );
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
+ });
1418
1422
  }
1419
1423
  filepath = filepath.replace(/^file:\/\//, "");
1420
1424
  return import(filepath);
@@ -1432,22 +1436,24 @@ async function getWorkerEntryExport(path, entrypoint) {
1432
1436
  }
1433
1437
 
1434
1438
  // src/runner-worker/index.ts
1439
+ var IGNORED_KEYS = ["self", "tailStream"];
1435
1440
  var WORKER_ENTRYPOINT_KEYS = [
1436
1441
  "fetch",
1442
+ "queue",
1437
1443
  "tail",
1444
+ "test",
1438
1445
  "trace",
1439
- "scheduled",
1440
- "queue",
1441
- "test"
1446
+ "scheduled"
1442
1447
  ];
1443
1448
  var DURABLE_OBJECT_KEYS = [
1444
- "fetch",
1445
1449
  "alarm",
1446
- "webSocketMessage",
1450
+ "fetch",
1447
1451
  "webSocketClose",
1448
- "webSocketError"
1452
+ "webSocketError",
1453
+ "webSocketMessage"
1449
1454
  ];
1450
1455
  var WORKFLOW_ENTRYPOINT_KEYS = ["run"];
1456
+ var entryPath = "";
1451
1457
  function getRpcProperty(ctor, instance, key) {
1452
1458
  const prototypeHasKey = Reflect.has(ctor.prototype, key);
1453
1459
  if (!prototypeHasKey) {
@@ -1480,7 +1486,6 @@ function getRpcPropertyCallableThenable(key, property) {
1480
1486
  return fn;
1481
1487
  }
1482
1488
  async function getWorkerEntrypointRpcProperty(entrypoint, key) {
1483
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1484
1489
  const ctor = await getWorkerEntryExport(
1485
1490
  entryPath,
1486
1491
  entrypoint
@@ -1510,7 +1515,7 @@ function createWorkerEntrypointWrapper(entrypoint) {
1510
1515
  if (value !== void 0) {
1511
1516
  return value;
1512
1517
  }
1513
- 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)) {
1514
1519
  return;
1515
1520
  }
1516
1521
  const property = getWorkerEntrypointRpcProperty.call(
@@ -1525,21 +1530,27 @@ function createWorkerEntrypointWrapper(entrypoint) {
1525
1530
  }
1526
1531
  for (const key of WORKER_ENTRYPOINT_KEYS) {
1527
1532
  Wrapper.prototype[key] = async function(arg) {
1528
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1529
1533
  if (key === "fetch") {
1530
1534
  const request = arg;
1531
1535
  const url = new URL(request.url);
1536
+ let webSocket;
1532
1537
  if (url.pathname === INIT_PATH) {
1533
- const { 0: client, 1: server } = new WebSocketPair();
1534
1538
  try {
1535
- 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);
1536
1544
  } catch (e) {
1537
1545
  return new Response(
1538
1546
  e instanceof Error ? e.message : JSON.stringify(e),
1539
1547
  { status: 500 }
1540
1548
  );
1541
1549
  }
1542
- return new Response(null, { status: 101, webSocket: client });
1550
+ return new Response(null, {
1551
+ status: 101,
1552
+ webSocket
1553
+ });
1543
1554
  }
1544
1555
  }
1545
1556
  const entrypointValue = await getWorkerEntryExport(entryPath, entrypoint);
@@ -1579,7 +1590,6 @@ function createWorkerEntrypointWrapper(entrypoint) {
1579
1590
  var kInstance = Symbol("kInstance");
1580
1591
  var kEnsureInstance = Symbol("kEnsureInstance");
1581
1592
  async function getDurableObjectRpcProperty(className, key) {
1582
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1583
1593
  const { ctor, instance } = await this[kEnsureInstance]();
1584
1594
  if (!(instance instanceof DurableObject)) {
1585
1595
  throw new TypeError(
@@ -1603,7 +1613,7 @@ function createDurableObjectWrapper(className) {
1603
1613
  if (value !== void 0) {
1604
1614
  return value;
1605
1615
  }
1606
- 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)) {
1607
1617
  return;
1608
1618
  }
1609
1619
  const property = getDurableObjectRpcProperty.call(
@@ -1616,7 +1626,6 @@ function createDurableObjectWrapper(className) {
1616
1626
  });
1617
1627
  }
1618
1628
  async [kEnsureInstance]() {
1619
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1620
1629
  const ctor = await getWorkerEntryExport(
1621
1630
  entryPath,
1622
1631
  className
@@ -1638,7 +1647,6 @@ function createDurableObjectWrapper(className) {
1638
1647
  }
1639
1648
  for (const key of DURABLE_OBJECT_KEYS) {
1640
1649
  Wrapper.prototype[key] = async function(...args) {
1641
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1642
1650
  const { instance } = await this[kEnsureInstance]();
1643
1651
  const maybeFn = instance[key];
1644
1652
  if (typeof maybeFn !== "function") {
@@ -1656,7 +1664,6 @@ function createWorkflowEntrypointWrapper(className) {
1656
1664
  }
1657
1665
  for (const key of WORKFLOW_ENTRYPOINT_KEYS) {
1658
1666
  Wrapper.prototype[key] = async function(...args) {
1659
- const entryPath = this.env.__VITE_ENTRY_PATH__;
1660
1667
  const ctor = await getWorkerEntryExport(
1661
1668
  entryPath,
1662
1669
  className
@@ -1679,6 +1686,34 @@ function createWorkflowEntrypointWrapper(className) {
1679
1686
  }
1680
1687
  return Wrapper;
1681
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
+ }
1682
1717
  export {
1683
1718
  createDurableObjectWrapper,
1684
1719
  createWorkerEntrypointWrapper,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/vite-plugin",
3
- "version": "0.0.0-bd9228e85",
3
+ "version": "0.0.0-be766d267",
4
4
  "description": "Cloudflare plugin for Vite",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -33,26 +33,34 @@
33
33
  "dist"
34
34
  ],
35
35
  "dependencies": {
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-bd9228e85"
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",
43
+ "ws": "8.18.0",
44
+ "miniflare": "0.0.0-be766d267",
45
+ "wrangler": "0.0.0-be766d267"
40
46
  },
41
47
  "devDependencies": {
42
- "@cloudflare/workers-types": "^4.20250121.0",
48
+ "@cloudflare/workers-types": "^4.20250525.0",
43
49
  "@types/node": "^22.10.1",
44
50
  "@types/ws": "^8.5.13",
45
51
  "magic-string": "^0.30.12",
52
+ "mlly": "^1.7.4",
46
53
  "tsup": "8.3.0",
47
54
  "typescript": "^5.7.2",
48
- "vite": "^6.0.7",
49
- "@cloudflare/workers-shared": "0.0.0-bd9228e85",
50
- "wrangler": "0.0.0-bd9228e85",
51
- "@cloudflare/workers-tsconfig": "0.0.0"
55
+ "vite": "^6.1.0",
56
+ "vitest": "~3.1.1",
57
+ "@cloudflare/mock-npm-registry": "0.0.0",
58
+ "@cloudflare/workers-tsconfig": "0.0.0",
59
+ "@cloudflare/workers-shared": "0.0.0-be766d267"
52
60
  },
53
61
  "peerDependencies": {
54
- "vite": "^6.0.7",
55
- "wrangler": "^3.101.0"
62
+ "vite": "^6.1.0",
63
+ "wrangler": "^3.101.0 || ^4.0.0"
56
64
  },
57
65
  "publishConfig": {
58
66
  "access": "public"
@@ -64,7 +72,9 @@
64
72
  "build": "tsup",
65
73
  "check:type": "tsc --build",
66
74
  "dev": "tsup --watch",
67
- "test": "vitest",
68
- "test:ci": "vitest run"
75
+ "test": "vitest run",
76
+ "test:ci": "pnpm test",
77
+ "test:e2e": "vitest run -c e2e/vitest.config.ts",
78
+ "test:watch": "vitest"
69
79
  }
70
80
  }