@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.
- package/README.md +15 -464
- package/dist/asset-workers/asset-worker.js +5607 -2167
- package/dist/asset-workers/router-worker.js +4268 -1910
- package/dist/index.d.ts +9 -2
- package/dist/index.js +13246 -673
- package/dist/runner-worker/index.js +75 -40
- package/package.json +24 -14
|
@@ -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.
|
|
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:
|
|
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
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
(
|
|
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
|
-
"
|
|
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 === "
|
|
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
|
-
|
|
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, {
|
|
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 === "
|
|
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-
|
|
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
|
-
"@
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
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.
|
|
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
|
|
49
|
-
"
|
|
50
|
-
"
|
|
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
|
|
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": "
|
|
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
|
}
|