@cloudflare/vite-plugin 0.0.0-cccfe51ca → 0.0.0-cd542dfb2
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 +1629 -1739
- package/dist/asset-workers/router-worker.js +1286 -1584
- package/dist/index.d.ts +7 -2
- package/dist/index.js +13100 -620
- package/dist/runner-worker/index.js +72 -32
- package/package.json +26 -15
|
@@ -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@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:
|
|
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);
|
|
@@ -1448,6 +1451,7 @@ var DURABLE_OBJECT_KEYS = [
|
|
|
1448
1451
|
"webSocketError"
|
|
1449
1452
|
];
|
|
1450
1453
|
var WORKFLOW_ENTRYPOINT_KEYS = ["run"];
|
|
1454
|
+
var entryPath = "";
|
|
1451
1455
|
function getRpcProperty(ctor, instance, key) {
|
|
1452
1456
|
const prototypeHasKey = Reflect.has(ctor.prototype, key);
|
|
1453
1457
|
if (!prototypeHasKey) {
|
|
@@ -1480,7 +1484,6 @@ function getRpcPropertyCallableThenable(key, property) {
|
|
|
1480
1484
|
return fn;
|
|
1481
1485
|
}
|
|
1482
1486
|
async function getWorkerEntrypointRpcProperty(entrypoint, key) {
|
|
1483
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1484
1487
|
const ctor = await getWorkerEntryExport(
|
|
1485
1488
|
entryPath,
|
|
1486
1489
|
entrypoint
|
|
@@ -1525,14 +1528,27 @@ function createWorkerEntrypointWrapper(entrypoint) {
|
|
|
1525
1528
|
}
|
|
1526
1529
|
for (const key of WORKER_ENTRYPOINT_KEYS) {
|
|
1527
1530
|
Wrapper.prototype[key] = async function(arg) {
|
|
1528
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1529
1531
|
if (key === "fetch") {
|
|
1530
1532
|
const request = arg;
|
|
1531
1533
|
const url = new URL(request.url);
|
|
1534
|
+
let webSocket;
|
|
1532
1535
|
if (url.pathname === INIT_PATH) {
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
+
try {
|
|
1537
|
+
const viteDevMetadata = getViteDevMetadata(request);
|
|
1538
|
+
entryPath = viteDevMetadata.entryPath;
|
|
1539
|
+
const { 0: client, 1: server } = new WebSocketPair();
|
|
1540
|
+
webSocket = client;
|
|
1541
|
+
await createModuleRunner(this.env, server, viteDevMetadata.root);
|
|
1542
|
+
} catch (e) {
|
|
1543
|
+
return new Response(
|
|
1544
|
+
e instanceof Error ? e.message : JSON.stringify(e),
|
|
1545
|
+
{ status: 500 }
|
|
1546
|
+
);
|
|
1547
|
+
}
|
|
1548
|
+
return new Response(null, {
|
|
1549
|
+
status: 101,
|
|
1550
|
+
webSocket
|
|
1551
|
+
});
|
|
1536
1552
|
}
|
|
1537
1553
|
}
|
|
1538
1554
|
const entrypointValue = await getWorkerEntryExport(entryPath, entrypoint);
|
|
@@ -1572,7 +1588,6 @@ function createWorkerEntrypointWrapper(entrypoint) {
|
|
|
1572
1588
|
var kInstance = Symbol("kInstance");
|
|
1573
1589
|
var kEnsureInstance = Symbol("kEnsureInstance");
|
|
1574
1590
|
async function getDurableObjectRpcProperty(className, key) {
|
|
1575
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1576
1591
|
const { ctor, instance } = await this[kEnsureInstance]();
|
|
1577
1592
|
if (!(instance instanceof DurableObject)) {
|
|
1578
1593
|
throw new TypeError(
|
|
@@ -1609,7 +1624,6 @@ function createDurableObjectWrapper(className) {
|
|
|
1609
1624
|
});
|
|
1610
1625
|
}
|
|
1611
1626
|
async [kEnsureInstance]() {
|
|
1612
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1613
1627
|
const ctor = await getWorkerEntryExport(
|
|
1614
1628
|
entryPath,
|
|
1615
1629
|
className
|
|
@@ -1631,7 +1645,6 @@ function createDurableObjectWrapper(className) {
|
|
|
1631
1645
|
}
|
|
1632
1646
|
for (const key of DURABLE_OBJECT_KEYS) {
|
|
1633
1647
|
Wrapper.prototype[key] = async function(...args) {
|
|
1634
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1635
1648
|
const { instance } = await this[kEnsureInstance]();
|
|
1636
1649
|
const maybeFn = instance[key];
|
|
1637
1650
|
if (typeof maybeFn !== "function") {
|
|
@@ -1649,7 +1662,6 @@ function createWorkflowEntrypointWrapper(className) {
|
|
|
1649
1662
|
}
|
|
1650
1663
|
for (const key of WORKFLOW_ENTRYPOINT_KEYS) {
|
|
1651
1664
|
Wrapper.prototype[key] = async function(...args) {
|
|
1652
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1653
1665
|
const ctor = await getWorkerEntryExport(
|
|
1654
1666
|
entryPath,
|
|
1655
1667
|
className
|
|
@@ -1672,6 +1684,34 @@ function createWorkflowEntrypointWrapper(className) {
|
|
|
1672
1684
|
}
|
|
1673
1685
|
return Wrapper;
|
|
1674
1686
|
}
|
|
1687
|
+
function getViteDevMetadata(request) {
|
|
1688
|
+
const viteDevMetadataHeader = request.headers.get(VITE_DEV_METADATA_HEADER);
|
|
1689
|
+
if (viteDevMetadataHeader === null) {
|
|
1690
|
+
throw new Error(
|
|
1691
|
+
"Unexpected internal error, vite dev metadata header not set"
|
|
1692
|
+
);
|
|
1693
|
+
}
|
|
1694
|
+
let parsedViteDevMetadataHeader;
|
|
1695
|
+
try {
|
|
1696
|
+
parsedViteDevMetadataHeader = JSON.parse(viteDevMetadataHeader);
|
|
1697
|
+
} catch {
|
|
1698
|
+
throw new Error(
|
|
1699
|
+
`Unexpected internal error, vite dev metadata header JSON parsing failed, value = ${viteDevMetadataHeader}`
|
|
1700
|
+
);
|
|
1701
|
+
}
|
|
1702
|
+
const { root, entryPath: entryPath2 } = parsedViteDevMetadataHeader;
|
|
1703
|
+
if (root === void 0) {
|
|
1704
|
+
throw new Error(
|
|
1705
|
+
"Unexpected internal error, vite dev metadata header doesn't contain a root value"
|
|
1706
|
+
);
|
|
1707
|
+
}
|
|
1708
|
+
if (entryPath2 === void 0) {
|
|
1709
|
+
throw new Error(
|
|
1710
|
+
"Unexpected internal error, vite dev metadata header doesn't contain an entryPath value"
|
|
1711
|
+
);
|
|
1712
|
+
}
|
|
1713
|
+
return { root, entryPath: entryPath2 };
|
|
1714
|
+
}
|
|
1675
1715
|
export {
|
|
1676
1716
|
createDurableObjectWrapper,
|
|
1677
1717
|
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-cd542dfb2",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -34,25 +34,34 @@
|
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@hattip/adapter-node": "^0.0.49",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
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-cd542dfb2",
|
|
44
|
+
"miniflare": "0.0.0-cd542dfb2",
|
|
45
|
+
"wrangler": "0.0.0-cd542dfb2"
|
|
40
46
|
},
|
|
41
47
|
"devDependencies": {
|
|
42
|
-
"@cloudflare/workers-types": "^4.
|
|
48
|
+
"@cloudflare/workers-types": "^4.20250415.0",
|
|
43
49
|
"@types/node": "^22.10.1",
|
|
44
50
|
"@types/ws": "^8.5.13",
|
|
45
51
|
"magic-string": "^0.30.12",
|
|
46
|
-
"
|
|
52
|
+
"mlly": "^1.7.4",
|
|
53
|
+
"tsup": "8.3.0",
|
|
47
54
|
"typescript": "^5.7.2",
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"@cloudflare/
|
|
55
|
+
"undici": "^5.28.5",
|
|
56
|
+
"vite": "^6.1.0",
|
|
57
|
+
"vitest": "~3.1.1",
|
|
58
|
+
"@cloudflare/mock-npm-registry": "0.0.0",
|
|
59
|
+
"@cloudflare/workers-shared": "0.0.0-cd542dfb2",
|
|
60
|
+
"@cloudflare/workers-tsconfig": "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"
|
|
@@ -63,8 +72,10 @@
|
|
|
63
72
|
"scripts": {
|
|
64
73
|
"build": "tsup",
|
|
65
74
|
"check:type": "tsc --build",
|
|
66
|
-
"
|
|
67
|
-
"test
|
|
68
|
-
"
|
|
75
|
+
"dev": "tsup --watch",
|
|
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
|
}
|