@cloudflare/vite-plugin 0.0.0-e3efd68e3 → 0.0.0-e44afaf79
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 +5615 -1902
- package/dist/asset-workers/router-worker.js +4277 -1612
- package/dist/index.d.ts +8 -1
- package/dist/index.js +7409 -2024
- package/dist/runner-worker/index.js +72 -43
- package/package.json +13 -10
|
@@ -6,26 +6,30 @@ import {
|
|
|
6
6
|
} from "cloudflare:workers";
|
|
7
7
|
|
|
8
8
|
// src/constants.ts
|
|
9
|
-
var
|
|
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
|
|
18
|
+
var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)__CLOUDFLARE_MODULE__`;
|
|
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
|
|
|
28
|
-
// ../../node_modules/.pnpm/vite@6.1.0_@types+node@
|
|
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
|
|
29
33
|
var VALID_ID_PREFIX = "/@id/";
|
|
30
34
|
var NULL_BYTE_PLACEHOLDER = "__x00__";
|
|
31
35
|
var SOURCEMAPPING_URL = "sourceMa";
|
|
@@ -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:
|
|
1375
|
+
root: viteRoot,
|
|
1372
1376
|
sourcemapInterceptor: "prepareStackTrace",
|
|
1373
1377
|
transport: {
|
|
1374
1378
|
...transport,
|
|
@@ -1390,13 +1394,6 @@ async function createModuleRunner(env, webSocket) {
|
|
|
1390
1394
|
},
|
|
1391
1395
|
{
|
|
1392
1396
|
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
1397
|
const codeDefinition = `'use strict';async (${Object.keys(context).join(
|
|
1401
1398
|
","
|
|
1402
1399
|
)})=>{{`;
|
|
@@ -1413,13 +1410,14 @@ async function createModuleRunner(env, webSocket) {
|
|
|
1413
1410
|
}
|
|
1414
1411
|
},
|
|
1415
1412
|
async runExternalModule(filepath) {
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
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
|
+
});
|
|
1423
1421
|
}
|
|
1424
1422
|
filepath = filepath.replace(/^file:\/\//, "");
|
|
1425
1423
|
return import(filepath);
|
|
@@ -1437,22 +1435,24 @@ async function getWorkerEntryExport(path, entrypoint) {
|
|
|
1437
1435
|
}
|
|
1438
1436
|
|
|
1439
1437
|
// src/runner-worker/index.ts
|
|
1438
|
+
var IGNORED_KEYS = ["self", "tailStream"];
|
|
1440
1439
|
var WORKER_ENTRYPOINT_KEYS = [
|
|
1441
1440
|
"fetch",
|
|
1441
|
+
"queue",
|
|
1442
1442
|
"tail",
|
|
1443
|
+
"test",
|
|
1443
1444
|
"trace",
|
|
1444
|
-
"scheduled"
|
|
1445
|
-
"queue",
|
|
1446
|
-
"test"
|
|
1445
|
+
"scheduled"
|
|
1447
1446
|
];
|
|
1448
1447
|
var DURABLE_OBJECT_KEYS = [
|
|
1449
|
-
"fetch",
|
|
1450
1448
|
"alarm",
|
|
1451
|
-
"
|
|
1449
|
+
"fetch",
|
|
1452
1450
|
"webSocketClose",
|
|
1453
|
-
"webSocketError"
|
|
1451
|
+
"webSocketError",
|
|
1452
|
+
"webSocketMessage"
|
|
1454
1453
|
];
|
|
1455
1454
|
var WORKFLOW_ENTRYPOINT_KEYS = ["run"];
|
|
1455
|
+
var entryPath = "";
|
|
1456
1456
|
function getRpcProperty(ctor, instance, key) {
|
|
1457
1457
|
const prototypeHasKey = Reflect.has(ctor.prototype, key);
|
|
1458
1458
|
if (!prototypeHasKey) {
|
|
@@ -1485,7 +1485,6 @@ function getRpcPropertyCallableThenable(key, property) {
|
|
|
1485
1485
|
return fn;
|
|
1486
1486
|
}
|
|
1487
1487
|
async function getWorkerEntrypointRpcProperty(entrypoint, key) {
|
|
1488
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1489
1488
|
const ctor = await getWorkerEntryExport(
|
|
1490
1489
|
entryPath,
|
|
1491
1490
|
entrypoint
|
|
@@ -1515,7 +1514,7 @@ function createWorkerEntrypointWrapper(entrypoint) {
|
|
|
1515
1514
|
if (value !== void 0) {
|
|
1516
1515
|
return value;
|
|
1517
1516
|
}
|
|
1518
|
-
if (key === "
|
|
1517
|
+
if (typeof key === "symbol" || IGNORED_KEYS.includes(key) || DURABLE_OBJECT_KEYS.includes(key)) {
|
|
1519
1518
|
return;
|
|
1520
1519
|
}
|
|
1521
1520
|
const property = getWorkerEntrypointRpcProperty.call(
|
|
@@ -1530,21 +1529,27 @@ function createWorkerEntrypointWrapper(entrypoint) {
|
|
|
1530
1529
|
}
|
|
1531
1530
|
for (const key of WORKER_ENTRYPOINT_KEYS) {
|
|
1532
1531
|
Wrapper.prototype[key] = async function(arg) {
|
|
1533
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1534
1532
|
if (key === "fetch") {
|
|
1535
1533
|
const request = arg;
|
|
1536
1534
|
const url = new URL(request.url);
|
|
1535
|
+
let webSocket;
|
|
1537
1536
|
if (url.pathname === INIT_PATH) {
|
|
1538
|
-
const { 0: client, 1: server } = new WebSocketPair();
|
|
1539
1537
|
try {
|
|
1540
|
-
|
|
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);
|
|
1541
1543
|
} catch (e) {
|
|
1542
1544
|
return new Response(
|
|
1543
1545
|
e instanceof Error ? e.message : JSON.stringify(e),
|
|
1544
1546
|
{ status: 500 }
|
|
1545
1547
|
);
|
|
1546
1548
|
}
|
|
1547
|
-
return new Response(null, {
|
|
1549
|
+
return new Response(null, {
|
|
1550
|
+
status: 101,
|
|
1551
|
+
webSocket
|
|
1552
|
+
});
|
|
1548
1553
|
}
|
|
1549
1554
|
}
|
|
1550
1555
|
const entrypointValue = await getWorkerEntryExport(entryPath, entrypoint);
|
|
@@ -1584,7 +1589,6 @@ function createWorkerEntrypointWrapper(entrypoint) {
|
|
|
1584
1589
|
var kInstance = Symbol("kInstance");
|
|
1585
1590
|
var kEnsureInstance = Symbol("kEnsureInstance");
|
|
1586
1591
|
async function getDurableObjectRpcProperty(className, key) {
|
|
1587
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1588
1592
|
const { ctor, instance } = await this[kEnsureInstance]();
|
|
1589
1593
|
if (!(instance instanceof DurableObject)) {
|
|
1590
1594
|
throw new TypeError(
|
|
@@ -1608,7 +1612,7 @@ function createDurableObjectWrapper(className) {
|
|
|
1608
1612
|
if (value !== void 0) {
|
|
1609
1613
|
return value;
|
|
1610
1614
|
}
|
|
1611
|
-
if (key === "
|
|
1615
|
+
if (typeof key === "symbol" || IGNORED_KEYS.includes(key) || WORKER_ENTRYPOINT_KEYS.includes(key)) {
|
|
1612
1616
|
return;
|
|
1613
1617
|
}
|
|
1614
1618
|
const property = getDurableObjectRpcProperty.call(
|
|
@@ -1621,7 +1625,6 @@ function createDurableObjectWrapper(className) {
|
|
|
1621
1625
|
});
|
|
1622
1626
|
}
|
|
1623
1627
|
async [kEnsureInstance]() {
|
|
1624
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1625
1628
|
const ctor = await getWorkerEntryExport(
|
|
1626
1629
|
entryPath,
|
|
1627
1630
|
className
|
|
@@ -1643,7 +1646,6 @@ function createDurableObjectWrapper(className) {
|
|
|
1643
1646
|
}
|
|
1644
1647
|
for (const key of DURABLE_OBJECT_KEYS) {
|
|
1645
1648
|
Wrapper.prototype[key] = async function(...args) {
|
|
1646
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1647
1649
|
const { instance } = await this[kEnsureInstance]();
|
|
1648
1650
|
const maybeFn = instance[key];
|
|
1649
1651
|
if (typeof maybeFn !== "function") {
|
|
@@ -1661,7 +1663,6 @@ function createWorkflowEntrypointWrapper(className) {
|
|
|
1661
1663
|
}
|
|
1662
1664
|
for (const key of WORKFLOW_ENTRYPOINT_KEYS) {
|
|
1663
1665
|
Wrapper.prototype[key] = async function(...args) {
|
|
1664
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1665
1666
|
const ctor = await getWorkerEntryExport(
|
|
1666
1667
|
entryPath,
|
|
1667
1668
|
className
|
|
@@ -1684,6 +1685,34 @@ function createWorkflowEntrypointWrapper(className) {
|
|
|
1684
1685
|
}
|
|
1685
1686
|
return Wrapper;
|
|
1686
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
|
+
}
|
|
1687
1716
|
export {
|
|
1688
1717
|
createDurableObjectWrapper,
|
|
1689
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-e44afaf79",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -33,16 +33,19 @@
|
|
|
33
33
|
"dist"
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@cloudflare/unenv-preset": "
|
|
37
|
-
"@
|
|
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",
|
|
38
41
|
"tinyglobby": "^0.2.12",
|
|
39
|
-
"unenv": "2.0.0-rc.
|
|
42
|
+
"unenv": "2.0.0-rc.17",
|
|
40
43
|
"ws": "8.18.0",
|
|
41
|
-
"miniflare": "0.0.0-
|
|
42
|
-
"wrangler": "0.0.0-
|
|
44
|
+
"miniflare": "0.0.0-e44afaf79",
|
|
45
|
+
"wrangler": "0.0.0-e44afaf79"
|
|
43
46
|
},
|
|
44
47
|
"devDependencies": {
|
|
45
|
-
"@cloudflare/workers-types": "^4.
|
|
48
|
+
"@cloudflare/workers-types": "^4.20250525.0",
|
|
46
49
|
"@types/node": "^22.10.1",
|
|
47
50
|
"@types/ws": "^8.5.13",
|
|
48
51
|
"magic-string": "^0.30.12",
|
|
@@ -51,14 +54,14 @@
|
|
|
51
54
|
"typescript": "^5.7.2",
|
|
52
55
|
"undici": "^5.28.5",
|
|
53
56
|
"vite": "^6.1.0",
|
|
54
|
-
"vitest": "~3.
|
|
57
|
+
"vitest": "~3.1.1",
|
|
58
|
+
"@cloudflare/workers-shared": "0.0.0-e44afaf79",
|
|
55
59
|
"@cloudflare/mock-npm-registry": "0.0.0",
|
|
56
|
-
"@cloudflare/workers-shared": "0.0.0-e3efd68e3",
|
|
57
60
|
"@cloudflare/workers-tsconfig": "0.0.0"
|
|
58
61
|
},
|
|
59
62
|
"peerDependencies": {
|
|
60
63
|
"vite": "^6.1.0",
|
|
61
|
-
"wrangler": "0.0.0
|
|
64
|
+
"wrangler": "^3.101.0 || ^4.0.0"
|
|
62
65
|
},
|
|
63
66
|
"publishConfig": {
|
|
64
67
|
"access": "public"
|