@cloudflare/vite-plugin 0.0.0-ea3e16a89 → 0.0.0-ea71df3d4
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/README.md +15 -471
- package/dist/asset-workers/asset-worker.js +1653 -1742
- package/dist/asset-workers/router-worker.js +1277 -1585
- package/dist/index.d.ts +7 -2
- package/dist/index.js +13138 -665
- package/dist/runner-worker/index.js +74 -40
- package/package.json +24 -13
|
@@ -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.
|
|
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
|
|
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:
|
|
1375
|
+
root: viteRoot,
|
|
1368
1376
|
sourcemapInterceptor: "prepareStackTrace",
|
|
1369
1377
|
transport: {
|
|
1370
1378
|
...transport,
|
|
@@ -1386,13 +1394,6 @@ async function createModuleRunner(env, webSocket) {
|
|
|
1386
1394
|
},
|
|
1387
1395
|
{
|
|
1388
1396
|
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
1397
|
const codeDefinition = `'use strict';async (${Object.keys(context).join(
|
|
1397
1398
|
","
|
|
1398
1399
|
)})=>{{`;
|
|
@@ -1409,12 +1410,14 @@ async function createModuleRunner(env, webSocket) {
|
|
|
1409
1410
|
}
|
|
1410
1411
|
},
|
|
1411
1412
|
async runExternalModule(filepath) {
|
|
1412
|
-
if (filepath
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
(
|
|
1417
|
-
|
|
1413
|
+
if (filepath === "cloudflare:workers") {
|
|
1414
|
+
const originalCloudflareWorkersModule = await import("cloudflare:workers");
|
|
1415
|
+
return Object.seal({
|
|
1416
|
+
...originalCloudflareWorkersModule,
|
|
1417
|
+
env: stripInternalEnv(
|
|
1418
|
+
originalCloudflareWorkersModule.env
|
|
1419
|
+
)
|
|
1420
|
+
});
|
|
1418
1421
|
}
|
|
1419
1422
|
filepath = filepath.replace(/^file:\/\//, "");
|
|
1420
1423
|
return import(filepath);
|
|
@@ -1432,22 +1435,24 @@ async function getWorkerEntryExport(path, entrypoint) {
|
|
|
1432
1435
|
}
|
|
1433
1436
|
|
|
1434
1437
|
// src/runner-worker/index.ts
|
|
1438
|
+
var IGNORED_KEYS = ["self", "tailStream"];
|
|
1435
1439
|
var WORKER_ENTRYPOINT_KEYS = [
|
|
1436
1440
|
"fetch",
|
|
1441
|
+
"queue",
|
|
1437
1442
|
"tail",
|
|
1443
|
+
"test",
|
|
1438
1444
|
"trace",
|
|
1439
|
-
"scheduled"
|
|
1440
|
-
"queue",
|
|
1441
|
-
"test"
|
|
1445
|
+
"scheduled"
|
|
1442
1446
|
];
|
|
1443
1447
|
var DURABLE_OBJECT_KEYS = [
|
|
1444
|
-
"fetch",
|
|
1445
1448
|
"alarm",
|
|
1446
|
-
"
|
|
1449
|
+
"fetch",
|
|
1447
1450
|
"webSocketClose",
|
|
1448
|
-
"webSocketError"
|
|
1451
|
+
"webSocketError",
|
|
1452
|
+
"webSocketMessage"
|
|
1449
1453
|
];
|
|
1450
1454
|
var WORKFLOW_ENTRYPOINT_KEYS = ["run"];
|
|
1455
|
+
var entryPath = "";
|
|
1451
1456
|
function getRpcProperty(ctor, instance, key) {
|
|
1452
1457
|
const prototypeHasKey = Reflect.has(ctor.prototype, key);
|
|
1453
1458
|
if (!prototypeHasKey) {
|
|
@@ -1480,7 +1485,6 @@ function getRpcPropertyCallableThenable(key, property) {
|
|
|
1480
1485
|
return fn;
|
|
1481
1486
|
}
|
|
1482
1487
|
async function getWorkerEntrypointRpcProperty(entrypoint, key) {
|
|
1483
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1484
1488
|
const ctor = await getWorkerEntryExport(
|
|
1485
1489
|
entryPath,
|
|
1486
1490
|
entrypoint
|
|
@@ -1510,7 +1514,7 @@ function createWorkerEntrypointWrapper(entrypoint) {
|
|
|
1510
1514
|
if (value !== void 0) {
|
|
1511
1515
|
return value;
|
|
1512
1516
|
}
|
|
1513
|
-
if (key === "
|
|
1517
|
+
if (typeof key === "symbol" || IGNORED_KEYS.includes(key) || DURABLE_OBJECT_KEYS.includes(key)) {
|
|
1514
1518
|
return;
|
|
1515
1519
|
}
|
|
1516
1520
|
const property = getWorkerEntrypointRpcProperty.call(
|
|
@@ -1525,21 +1529,27 @@ function createWorkerEntrypointWrapper(entrypoint) {
|
|
|
1525
1529
|
}
|
|
1526
1530
|
for (const key of WORKER_ENTRYPOINT_KEYS) {
|
|
1527
1531
|
Wrapper.prototype[key] = async function(arg) {
|
|
1528
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1529
1532
|
if (key === "fetch") {
|
|
1530
1533
|
const request = arg;
|
|
1531
1534
|
const url = new URL(request.url);
|
|
1535
|
+
let webSocket;
|
|
1532
1536
|
if (url.pathname === INIT_PATH) {
|
|
1533
|
-
const { 0: client, 1: server } = new WebSocketPair();
|
|
1534
1537
|
try {
|
|
1535
|
-
|
|
1538
|
+
const viteDevMetadata = getViteDevMetadata(request);
|
|
1539
|
+
entryPath = viteDevMetadata.entryPath;
|
|
1540
|
+
const { 0: client, 1: server } = new WebSocketPair();
|
|
1541
|
+
webSocket = client;
|
|
1542
|
+
await createModuleRunner(this.env, server, viteDevMetadata.root);
|
|
1536
1543
|
} catch (e) {
|
|
1537
1544
|
return new Response(
|
|
1538
1545
|
e instanceof Error ? e.message : JSON.stringify(e),
|
|
1539
1546
|
{ status: 500 }
|
|
1540
1547
|
);
|
|
1541
1548
|
}
|
|
1542
|
-
return new Response(null, {
|
|
1549
|
+
return new Response(null, {
|
|
1550
|
+
status: 101,
|
|
1551
|
+
webSocket
|
|
1552
|
+
});
|
|
1543
1553
|
}
|
|
1544
1554
|
}
|
|
1545
1555
|
const entrypointValue = await getWorkerEntryExport(entryPath, entrypoint);
|
|
@@ -1579,7 +1589,6 @@ function createWorkerEntrypointWrapper(entrypoint) {
|
|
|
1579
1589
|
var kInstance = Symbol("kInstance");
|
|
1580
1590
|
var kEnsureInstance = Symbol("kEnsureInstance");
|
|
1581
1591
|
async function getDurableObjectRpcProperty(className, key) {
|
|
1582
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1583
1592
|
const { ctor, instance } = await this[kEnsureInstance]();
|
|
1584
1593
|
if (!(instance instanceof DurableObject)) {
|
|
1585
1594
|
throw new TypeError(
|
|
@@ -1603,7 +1612,7 @@ function createDurableObjectWrapper(className) {
|
|
|
1603
1612
|
if (value !== void 0) {
|
|
1604
1613
|
return value;
|
|
1605
1614
|
}
|
|
1606
|
-
if (key === "
|
|
1615
|
+
if (typeof key === "symbol" || IGNORED_KEYS.includes(key) || WORKER_ENTRYPOINT_KEYS.includes(key)) {
|
|
1607
1616
|
return;
|
|
1608
1617
|
}
|
|
1609
1618
|
const property = getDurableObjectRpcProperty.call(
|
|
@@ -1616,7 +1625,6 @@ function createDurableObjectWrapper(className) {
|
|
|
1616
1625
|
});
|
|
1617
1626
|
}
|
|
1618
1627
|
async [kEnsureInstance]() {
|
|
1619
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1620
1628
|
const ctor = await getWorkerEntryExport(
|
|
1621
1629
|
entryPath,
|
|
1622
1630
|
className
|
|
@@ -1638,7 +1646,6 @@ function createDurableObjectWrapper(className) {
|
|
|
1638
1646
|
}
|
|
1639
1647
|
for (const key of DURABLE_OBJECT_KEYS) {
|
|
1640
1648
|
Wrapper.prototype[key] = async function(...args) {
|
|
1641
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1642
1649
|
const { instance } = await this[kEnsureInstance]();
|
|
1643
1650
|
const maybeFn = instance[key];
|
|
1644
1651
|
if (typeof maybeFn !== "function") {
|
|
@@ -1656,7 +1663,6 @@ function createWorkflowEntrypointWrapper(className) {
|
|
|
1656
1663
|
}
|
|
1657
1664
|
for (const key of WORKFLOW_ENTRYPOINT_KEYS) {
|
|
1658
1665
|
Wrapper.prototype[key] = async function(...args) {
|
|
1659
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1660
1666
|
const ctor = await getWorkerEntryExport(
|
|
1661
1667
|
entryPath,
|
|
1662
1668
|
className
|
|
@@ -1679,6 +1685,34 @@ function createWorkflowEntrypointWrapper(className) {
|
|
|
1679
1685
|
}
|
|
1680
1686
|
return Wrapper;
|
|
1681
1687
|
}
|
|
1688
|
+
function getViteDevMetadata(request) {
|
|
1689
|
+
const viteDevMetadataHeader = request.headers.get(VITE_DEV_METADATA_HEADER);
|
|
1690
|
+
if (viteDevMetadataHeader === null) {
|
|
1691
|
+
throw new Error(
|
|
1692
|
+
"Unexpected internal error, vite dev metadata header not set"
|
|
1693
|
+
);
|
|
1694
|
+
}
|
|
1695
|
+
let parsedViteDevMetadataHeader;
|
|
1696
|
+
try {
|
|
1697
|
+
parsedViteDevMetadataHeader = JSON.parse(viteDevMetadataHeader);
|
|
1698
|
+
} catch {
|
|
1699
|
+
throw new Error(
|
|
1700
|
+
`Unexpected internal error, vite dev metadata header JSON parsing failed, value = ${viteDevMetadataHeader}`
|
|
1701
|
+
);
|
|
1702
|
+
}
|
|
1703
|
+
const { root, entryPath: entryPath2 } = parsedViteDevMetadataHeader;
|
|
1704
|
+
if (root === void 0) {
|
|
1705
|
+
throw new Error(
|
|
1706
|
+
"Unexpected internal error, vite dev metadata header doesn't contain a root value"
|
|
1707
|
+
);
|
|
1708
|
+
}
|
|
1709
|
+
if (entryPath2 === void 0) {
|
|
1710
|
+
throw new Error(
|
|
1711
|
+
"Unexpected internal error, vite dev metadata header doesn't contain an entryPath value"
|
|
1712
|
+
);
|
|
1713
|
+
}
|
|
1714
|
+
return { root, entryPath: entryPath2 };
|
|
1715
|
+
}
|
|
1682
1716
|
export {
|
|
1683
1717
|
createDurableObjectWrapper,
|
|
1684
1718
|
createWorkerEntrypointWrapper,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudflare/vite-plugin",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-ea71df3d4",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -33,26 +33,35 @@
|
|
|
33
33
|
"dist"
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
36
|
+
"@mjackson/node-fetch-server": "^0.6.1",
|
|
37
|
+
"@rollup/plugin-replace": "^6.0.1",
|
|
38
|
+
"get-port": "^7.1.0",
|
|
39
|
+
"picocolors": "^1.1.1",
|
|
40
|
+
"tinyglobby": "^0.2.12",
|
|
41
|
+
"unenv": "2.0.0-rc.15",
|
|
42
|
+
"ws": "8.18.0",
|
|
43
|
+
"@cloudflare/unenv-preset": "0.0.0-ea71df3d4",
|
|
44
|
+
"wrangler": "0.0.0-ea71df3d4",
|
|
45
|
+
"miniflare": "0.0.0-ea71df3d4"
|
|
40
46
|
},
|
|
41
47
|
"devDependencies": {
|
|
42
|
-
"@cloudflare/workers-types": "^4.
|
|
48
|
+
"@cloudflare/workers-types": "^4.20250508.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
|
-
"
|
|
49
|
-
"
|
|
55
|
+
"undici": "^5.28.5",
|
|
56
|
+
"vite": "^6.1.0",
|
|
57
|
+
"vitest": "~3.1.1",
|
|
58
|
+
"@cloudflare/workers-shared": "0.0.0-ea71df3d4",
|
|
50
59
|
"@cloudflare/workers-tsconfig": "0.0.0",
|
|
51
|
-
"
|
|
60
|
+
"@cloudflare/mock-npm-registry": "0.0.0"
|
|
52
61
|
},
|
|
53
62
|
"peerDependencies": {
|
|
54
|
-
"vite": "^6.0
|
|
55
|
-
"wrangler": "^3.101.0"
|
|
63
|
+
"vite": "^6.1.0",
|
|
64
|
+
"wrangler": "^3.101.0 || ^4.0.0"
|
|
56
65
|
},
|
|
57
66
|
"publishConfig": {
|
|
58
67
|
"access": "public"
|
|
@@ -64,7 +73,9 @@
|
|
|
64
73
|
"build": "tsup",
|
|
65
74
|
"check:type": "tsc --build",
|
|
66
75
|
"dev": "tsup --watch",
|
|
67
|
-
"test": "vitest",
|
|
68
|
-
"test:ci": "
|
|
76
|
+
"test": "vitest run",
|
|
77
|
+
"test:ci": "pnpm test",
|
|
78
|
+
"test:e2e": "vitest run -c e2e/vitest.config.ts",
|
|
79
|
+
"test:watch": "vitest"
|
|
69
80
|
}
|
|
70
81
|
}
|