@cloudflare/vite-plugin 0.1.13 → 0.1.15
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 +61 -1
- package/dist/asset-workers/asset-worker.js +456 -420
- package/dist/index.d.ts +2 -1
- package/dist/index.js +4108 -3920
- package/dist/runner-worker/index.js +64 -22
- package/package.json +9 -8
|
@@ -6,22 +6,26 @@ 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("|")})__(.*?)__`;
|
|
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
|
|
|
@@ -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,
|
|
@@ -1413,8 +1417,16 @@ async function createModuleRunner(env, webSocket) {
|
|
|
1413
1417
|
}
|
|
1414
1418
|
},
|
|
1415
1419
|
async runExternalModule(filepath) {
|
|
1416
|
-
|
|
1417
|
-
|
|
1420
|
+
if (filepath === "cloudflare:workers") {
|
|
1421
|
+
const originalCloudflareWorkersModule = await import("cloudflare:workers");
|
|
1422
|
+
return Object.seal({
|
|
1423
|
+
...originalCloudflareWorkersModule,
|
|
1424
|
+
env: stripInternalEnv(
|
|
1425
|
+
originalCloudflareWorkersModule.env
|
|
1426
|
+
)
|
|
1427
|
+
});
|
|
1428
|
+
}
|
|
1429
|
+
if (!additionalModuleRE.test(filepath) && filepath.includes("/node_modules") && !filepath.includes("/node_modules/.vite")) {
|
|
1418
1430
|
throw new Error(
|
|
1419
1431
|
`[Error] Trying to import non-prebundled module (only prebundled modules are allowed): ${filepath}
|
|
1420
1432
|
|
|
@@ -1453,6 +1465,7 @@ var DURABLE_OBJECT_KEYS = [
|
|
|
1453
1465
|
"webSocketError"
|
|
1454
1466
|
];
|
|
1455
1467
|
var WORKFLOW_ENTRYPOINT_KEYS = ["run"];
|
|
1468
|
+
var entryPath = "";
|
|
1456
1469
|
function getRpcProperty(ctor, instance, key) {
|
|
1457
1470
|
const prototypeHasKey = Reflect.has(ctor.prototype, key);
|
|
1458
1471
|
if (!prototypeHasKey) {
|
|
@@ -1485,7 +1498,6 @@ function getRpcPropertyCallableThenable(key, property) {
|
|
|
1485
1498
|
return fn;
|
|
1486
1499
|
}
|
|
1487
1500
|
async function getWorkerEntrypointRpcProperty(entrypoint, key) {
|
|
1488
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1489
1501
|
const ctor = await getWorkerEntryExport(
|
|
1490
1502
|
entryPath,
|
|
1491
1503
|
entrypoint
|
|
@@ -1530,21 +1542,27 @@ function createWorkerEntrypointWrapper(entrypoint) {
|
|
|
1530
1542
|
}
|
|
1531
1543
|
for (const key of WORKER_ENTRYPOINT_KEYS) {
|
|
1532
1544
|
Wrapper.prototype[key] = async function(arg) {
|
|
1533
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1534
1545
|
if (key === "fetch") {
|
|
1535
1546
|
const request = arg;
|
|
1536
1547
|
const url = new URL(request.url);
|
|
1548
|
+
let webSocket;
|
|
1537
1549
|
if (url.pathname === INIT_PATH) {
|
|
1538
|
-
const { 0: client, 1: server } = new WebSocketPair();
|
|
1539
1550
|
try {
|
|
1540
|
-
|
|
1551
|
+
const viteDevMetadata = getViteDevMetadata(request);
|
|
1552
|
+
entryPath = viteDevMetadata.entryPath;
|
|
1553
|
+
const { 0: client, 1: server } = new WebSocketPair();
|
|
1554
|
+
webSocket = client;
|
|
1555
|
+
await createModuleRunner(this.env, server, viteDevMetadata.root);
|
|
1541
1556
|
} catch (e) {
|
|
1542
1557
|
return new Response(
|
|
1543
1558
|
e instanceof Error ? e.message : JSON.stringify(e),
|
|
1544
1559
|
{ status: 500 }
|
|
1545
1560
|
);
|
|
1546
1561
|
}
|
|
1547
|
-
return new Response(null, {
|
|
1562
|
+
return new Response(null, {
|
|
1563
|
+
status: 101,
|
|
1564
|
+
webSocket
|
|
1565
|
+
});
|
|
1548
1566
|
}
|
|
1549
1567
|
}
|
|
1550
1568
|
const entrypointValue = await getWorkerEntryExport(entryPath, entrypoint);
|
|
@@ -1584,7 +1602,6 @@ function createWorkerEntrypointWrapper(entrypoint) {
|
|
|
1584
1602
|
var kInstance = Symbol("kInstance");
|
|
1585
1603
|
var kEnsureInstance = Symbol("kEnsureInstance");
|
|
1586
1604
|
async function getDurableObjectRpcProperty(className, key) {
|
|
1587
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1588
1605
|
const { ctor, instance } = await this[kEnsureInstance]();
|
|
1589
1606
|
if (!(instance instanceof DurableObject)) {
|
|
1590
1607
|
throw new TypeError(
|
|
@@ -1621,7 +1638,6 @@ function createDurableObjectWrapper(className) {
|
|
|
1621
1638
|
});
|
|
1622
1639
|
}
|
|
1623
1640
|
async [kEnsureInstance]() {
|
|
1624
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1625
1641
|
const ctor = await getWorkerEntryExport(
|
|
1626
1642
|
entryPath,
|
|
1627
1643
|
className
|
|
@@ -1643,7 +1659,6 @@ function createDurableObjectWrapper(className) {
|
|
|
1643
1659
|
}
|
|
1644
1660
|
for (const key of DURABLE_OBJECT_KEYS) {
|
|
1645
1661
|
Wrapper.prototype[key] = async function(...args) {
|
|
1646
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1647
1662
|
const { instance } = await this[kEnsureInstance]();
|
|
1648
1663
|
const maybeFn = instance[key];
|
|
1649
1664
|
if (typeof maybeFn !== "function") {
|
|
@@ -1661,7 +1676,6 @@ function createWorkflowEntrypointWrapper(className) {
|
|
|
1661
1676
|
}
|
|
1662
1677
|
for (const key of WORKFLOW_ENTRYPOINT_KEYS) {
|
|
1663
1678
|
Wrapper.prototype[key] = async function(...args) {
|
|
1664
|
-
const entryPath = this.env.__VITE_ENTRY_PATH__;
|
|
1665
1679
|
const ctor = await getWorkerEntryExport(
|
|
1666
1680
|
entryPath,
|
|
1667
1681
|
className
|
|
@@ -1684,6 +1698,34 @@ function createWorkflowEntrypointWrapper(className) {
|
|
|
1684
1698
|
}
|
|
1685
1699
|
return Wrapper;
|
|
1686
1700
|
}
|
|
1701
|
+
function getViteDevMetadata(request) {
|
|
1702
|
+
const viteDevMetadataHeader = request.headers.get(VITE_DEV_METADATA_HEADER);
|
|
1703
|
+
if (viteDevMetadataHeader === null) {
|
|
1704
|
+
throw new Error(
|
|
1705
|
+
"Unexpected internal error, vite dev metadata header not set"
|
|
1706
|
+
);
|
|
1707
|
+
}
|
|
1708
|
+
let parsedViteDevMetadataHeader;
|
|
1709
|
+
try {
|
|
1710
|
+
parsedViteDevMetadataHeader = JSON.parse(viteDevMetadataHeader);
|
|
1711
|
+
} catch {
|
|
1712
|
+
throw new Error(
|
|
1713
|
+
`Unexpected internal error, vite dev metadata header JSON parsing failed, value = ${viteDevMetadataHeader}`
|
|
1714
|
+
);
|
|
1715
|
+
}
|
|
1716
|
+
const { root, entryPath: entryPath2 } = parsedViteDevMetadataHeader;
|
|
1717
|
+
if (root === void 0) {
|
|
1718
|
+
throw new Error(
|
|
1719
|
+
"Unexpected internal error, vite dev metadata header doesn't contain a root value"
|
|
1720
|
+
);
|
|
1721
|
+
}
|
|
1722
|
+
if (entryPath2 === void 0) {
|
|
1723
|
+
throw new Error(
|
|
1724
|
+
"Unexpected internal error, vite dev metadata header doesn't contain an entryPath value"
|
|
1725
|
+
);
|
|
1726
|
+
}
|
|
1727
|
+
return { root, entryPath: entryPath2 };
|
|
1728
|
+
}
|
|
1687
1729
|
export {
|
|
1688
1730
|
createDurableObjectWrapper,
|
|
1689
1731
|
createWorkerEntrypointWrapper,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudflare/vite-plugin",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.15",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -33,16 +33,17 @@
|
|
|
33
33
|
"dist"
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@cloudflare/unenv-preset": "1.1.1",
|
|
37
36
|
"@hattip/adapter-node": "^0.0.49",
|
|
37
|
+
"picocolors": "^1.1.1",
|
|
38
38
|
"tinyglobby": "^0.2.12",
|
|
39
|
-
"unenv": "2.0.0-rc.
|
|
39
|
+
"unenv": "2.0.0-rc.15",
|
|
40
40
|
"ws": "8.18.0",
|
|
41
|
-
"
|
|
42
|
-
"
|
|
41
|
+
"@cloudflare/unenv-preset": "2.3.0",
|
|
42
|
+
"miniflare": "4.20250320.0",
|
|
43
|
+
"wrangler": "4.4.0"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
|
-
"@cloudflare/workers-types": "^4.
|
|
46
|
+
"@cloudflare/workers-types": "^4.20250320.0",
|
|
46
47
|
"@types/node": "^22.10.1",
|
|
47
48
|
"@types/ws": "^8.5.13",
|
|
48
49
|
"magic-string": "^0.30.12",
|
|
@@ -51,9 +52,9 @@
|
|
|
51
52
|
"typescript": "^5.7.2",
|
|
52
53
|
"undici": "^5.28.5",
|
|
53
54
|
"vite": "^6.1.0",
|
|
54
|
-
"vitest": "~3.0.
|
|
55
|
+
"vitest": "~3.0.8",
|
|
55
56
|
"@cloudflare/mock-npm-registry": "0.0.0",
|
|
56
|
-
"@cloudflare/workers-shared": "0.
|
|
57
|
+
"@cloudflare/workers-shared": "0.17.0",
|
|
57
58
|
"@cloudflare/workers-tsconfig": "0.0.0"
|
|
58
59
|
},
|
|
59
60
|
"peerDependencies": {
|