@cloudflare/vite-plugin 0.0.0-b391e0013 → 0.0.0-b69fd186b
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 +9 -0
- package/dist/asset-workers/asset-worker.js +1151 -1021
- package/dist/asset-workers/router-worker.js +682 -682
- package/dist/index.js +86 -60
- package/package.json +8 -7
package/dist/index.js
CHANGED
|
@@ -1370,6 +1370,7 @@ import {
|
|
|
1370
1370
|
LogLevel,
|
|
1371
1371
|
Response as MiniflareResponse
|
|
1372
1372
|
} from "miniflare";
|
|
1373
|
+
import { globSync } from "tinyglobby";
|
|
1373
1374
|
import "vite";
|
|
1374
1375
|
import {
|
|
1375
1376
|
unstable_getMiniflareWorkerOptions,
|
|
@@ -1551,7 +1552,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer) {
|
|
|
1551
1552
|
}
|
|
1552
1553
|
}
|
|
1553
1554
|
];
|
|
1554
|
-
const
|
|
1555
|
+
const workersFromConfig = resolvedPluginConfig.type === "workers" ? Object.entries(resolvedPluginConfig.workers).map(
|
|
1555
1556
|
([environmentName, workerConfig]) => {
|
|
1556
1557
|
const miniflareWorkerOptions = unstable_getMiniflareWorkerOptions(
|
|
1557
1558
|
{
|
|
@@ -1560,51 +1561,58 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer) {
|
|
|
1560
1561
|
},
|
|
1561
1562
|
resolvedPluginConfig.cloudflareEnv
|
|
1562
1563
|
);
|
|
1564
|
+
const { externalWorkers: externalWorkers2 } = miniflareWorkerOptions;
|
|
1563
1565
|
const { ratelimits, ...workerOptions } = miniflareWorkerOptions.workerOptions;
|
|
1564
1566
|
return {
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1567
|
+
externalWorkers: externalWorkers2,
|
|
1568
|
+
worker: {
|
|
1569
|
+
...workerOptions,
|
|
1570
|
+
name: workerOptions.name ?? workerConfig.name,
|
|
1571
|
+
modulesRoot: miniflareModulesRoot,
|
|
1572
|
+
unsafeEvalBinding: "__VITE_UNSAFE_EVAL__",
|
|
1573
|
+
bindings: {
|
|
1574
|
+
...workerOptions.bindings,
|
|
1575
|
+
__VITE_ROOT__: resolvedViteConfig.root,
|
|
1576
|
+
__VITE_ENTRY_PATH__: workerConfig.main
|
|
1577
|
+
},
|
|
1578
|
+
serviceBindings: {
|
|
1579
|
+
...workerOptions.serviceBindings,
|
|
1580
|
+
...environmentName === resolvedPluginConfig.entryWorkerEnvironmentName && workerConfig.assets?.binding ? {
|
|
1581
|
+
[workerConfig.assets.binding]: ASSET_WORKER_NAME
|
|
1582
|
+
} : {},
|
|
1583
|
+
__VITE_INVOKE_MODULE__: async (request) => {
|
|
1584
|
+
const payload = await request.json();
|
|
1585
|
+
const invokePayloadData = payload.data;
|
|
1586
|
+
assert4(
|
|
1587
|
+
invokePayloadData.name === "fetchModule",
|
|
1588
|
+
`Invalid invoke event: ${invokePayloadData.name}`
|
|
1589
|
+
);
|
|
1590
|
+
const [moduleId] = invokePayloadData.data;
|
|
1591
|
+
const moduleRE = new RegExp(MODULE_PATTERN);
|
|
1592
|
+
const shouldExternalize = (
|
|
1593
|
+
// Worker modules (CompiledWasm, Text, Data)
|
|
1594
|
+
moduleRE.test(moduleId)
|
|
1595
|
+
);
|
|
1596
|
+
if (shouldExternalize) {
|
|
1597
|
+
const result2 = {
|
|
1598
|
+
externalize: moduleId,
|
|
1599
|
+
type: "module"
|
|
1600
|
+
};
|
|
1601
|
+
return MiniflareResponse.json({ result: result2 });
|
|
1602
|
+
}
|
|
1603
|
+
const devEnvironment = viteDevServer.environments[environmentName];
|
|
1604
|
+
const result = await devEnvironment.hot.handleInvoke(payload);
|
|
1605
|
+
return MiniflareResponse.json(result);
|
|
1599
1606
|
}
|
|
1600
|
-
const devEnvironment = viteDevServer.environments[environmentName];
|
|
1601
|
-
const result = await devEnvironment.hot.handleInvoke(payload);
|
|
1602
|
-
return MiniflareResponse.json(result);
|
|
1603
1607
|
}
|
|
1604
1608
|
}
|
|
1605
1609
|
};
|
|
1606
1610
|
}
|
|
1607
1611
|
) : [];
|
|
1612
|
+
const userWorkers = workersFromConfig.map((options) => options.worker);
|
|
1613
|
+
const externalWorkers = workersFromConfig.flatMap(
|
|
1614
|
+
(options) => options.externalWorkers
|
|
1615
|
+
);
|
|
1608
1616
|
const workerToWorkerEntrypointNamesMap = getWorkerToWorkerEntrypointNamesMap(userWorkers);
|
|
1609
1617
|
const workerToDurableObjectClassNamesMap = getWorkerToDurableObjectClassNamesMap(userWorkers);
|
|
1610
1618
|
const workerToWorkflowEntrypointClassNamesMap = getWorkerToWorkflowEntrypointClassNamesMap(userWorkers);
|
|
@@ -1624,6 +1632,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer) {
|
|
|
1624
1632
|
),
|
|
1625
1633
|
workers: [
|
|
1626
1634
|
...assetWorkers,
|
|
1635
|
+
...externalWorkers,
|
|
1627
1636
|
...userWorkers.map((workerOptions) => {
|
|
1628
1637
|
const wrappers = [
|
|
1629
1638
|
`import { createWorkerEntrypointWrapper, createDurableObjectWrapper, createWorkflowEntrypointWrapper } from '${RUNNER_PATH}';`,
|
|
@@ -1656,7 +1665,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer) {
|
|
|
1656
1665
|
const workflowEntrypointClassNames = workerToWorkflowEntrypointClassNamesMap.get(workerOptions.name);
|
|
1657
1666
|
assert4(
|
|
1658
1667
|
workflowEntrypointClassNames,
|
|
1659
|
-
`WorkflowEntrypoint class names not found for worker ${workerOptions.name}`
|
|
1668
|
+
`WorkflowEntrypoint class names not found for worker: ${workerOptions.name}`
|
|
1660
1669
|
);
|
|
1661
1670
|
for (const className of [...workflowEntrypointClassNames].sort()) {
|
|
1662
1671
|
wrappers.push(
|
|
@@ -1692,17 +1701,19 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer) {
|
|
|
1692
1701
|
);
|
|
1693
1702
|
const moduleRE = new RegExp(MODULE_PATTERN);
|
|
1694
1703
|
const match = moduleRE.exec(rawSpecifier);
|
|
1695
|
-
assert4(match, `Unexpected error: no match for module ${rawSpecifier}.`);
|
|
1704
|
+
assert4(match, `Unexpected error: no match for module: ${rawSpecifier}.`);
|
|
1696
1705
|
const [full, moduleType, modulePath] = match;
|
|
1697
1706
|
assert4(
|
|
1698
1707
|
modulePath,
|
|
1699
|
-
`Unexpected error: module path not found in reference ${full}.`
|
|
1708
|
+
`Unexpected error: module path not found in reference: ${full}.`
|
|
1700
1709
|
);
|
|
1701
1710
|
let source;
|
|
1702
1711
|
try {
|
|
1703
1712
|
source = fs2.readFileSync(modulePath);
|
|
1704
1713
|
} catch (error) {
|
|
1705
|
-
throw new Error(
|
|
1714
|
+
throw new Error(
|
|
1715
|
+
`Import "${modulePath}" not found. Does the file exist?`
|
|
1716
|
+
);
|
|
1706
1717
|
}
|
|
1707
1718
|
return MiniflareResponse.json({
|
|
1708
1719
|
// Cap'n Proto expects byte arrays for `:Data` typed fields from JSON
|
|
@@ -1711,22 +1722,44 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer) {
|
|
|
1711
1722
|
}
|
|
1712
1723
|
};
|
|
1713
1724
|
}
|
|
1725
|
+
function getPreviewModules(main, modulesRules) {
|
|
1726
|
+
assert4(modulesRules, `Unexpected error: 'modulesRules' is undefined`);
|
|
1727
|
+
const rootPath = path3.dirname(main);
|
|
1728
|
+
const entryPath = path3.basename(main);
|
|
1729
|
+
return {
|
|
1730
|
+
rootPath,
|
|
1731
|
+
modules: [
|
|
1732
|
+
{
|
|
1733
|
+
type: "ESModule",
|
|
1734
|
+
path: entryPath
|
|
1735
|
+
},
|
|
1736
|
+
...modulesRules.flatMap(
|
|
1737
|
+
({ type, include }) => globSync(include, { cwd: rootPath, ignore: entryPath }).map((path8) => ({
|
|
1738
|
+
type,
|
|
1739
|
+
path: path8
|
|
1740
|
+
}))
|
|
1741
|
+
)
|
|
1742
|
+
]
|
|
1743
|
+
};
|
|
1744
|
+
}
|
|
1714
1745
|
function getPreviewMiniflareOptions(vitePreviewServer, persistState) {
|
|
1715
1746
|
const resolvedViteConfig = vitePreviewServer.config;
|
|
1716
1747
|
const configPaths = getWorkerConfigPaths(resolvedViteConfig.root);
|
|
1717
1748
|
const workerConfigs = configPaths.map(
|
|
1718
1749
|
(configPath) => unstable_readConfig({ config: configPath })
|
|
1719
1750
|
);
|
|
1720
|
-
const workers = workerConfigs.
|
|
1751
|
+
const workers = workerConfigs.flatMap((config) => {
|
|
1721
1752
|
const miniflareWorkerOptions = unstable_getMiniflareWorkerOptions(config);
|
|
1722
|
-
const {
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1753
|
+
const { externalWorkers } = miniflareWorkerOptions;
|
|
1754
|
+
const { ratelimits, modulesRules, ...workerOptions } = miniflareWorkerOptions.workerOptions;
|
|
1755
|
+
return [
|
|
1756
|
+
{
|
|
1757
|
+
...workerOptions,
|
|
1758
|
+
name: workerOptions.name ?? config.name,
|
|
1759
|
+
...miniflareWorkerOptions.main ? getPreviewModules(miniflareWorkerOptions.main, modulesRules) : { modules: true, script: "" }
|
|
1760
|
+
},
|
|
1761
|
+
...externalWorkers
|
|
1762
|
+
];
|
|
1730
1763
|
});
|
|
1731
1764
|
const logger = new ViteMiniflareLogger(resolvedViteConfig);
|
|
1732
1765
|
return {
|
|
@@ -7368,7 +7401,7 @@ var isAbsolute = function(p) {
|
|
|
7368
7401
|
import { fileURLToPath as fileURLToPath$1, URL as URL$1, pathToFileURL as pathToFileURL$1 } from "node:url";
|
|
7369
7402
|
import assert5 from "node:assert";
|
|
7370
7403
|
import process$1 from "node:process";
|
|
7371
|
-
import path4, { dirname as
|
|
7404
|
+
import path4, { dirname as dirname4 } from "node:path";
|
|
7372
7405
|
import v8 from "node:v8";
|
|
7373
7406
|
import { format as format2, inspect } from "node:util";
|
|
7374
7407
|
var BUILTIN_MODULES = new Set(builtinModules);
|
|
@@ -8730,11 +8763,6 @@ function isNodeCompat(workerConfig) {
|
|
|
8730
8763
|
if (nodeCompatMode === "v2") {
|
|
8731
8764
|
return true;
|
|
8732
8765
|
}
|
|
8733
|
-
if (nodeCompatMode === "legacy") {
|
|
8734
|
-
throw new Error(
|
|
8735
|
-
"Unsupported Node.js compat mode (legacy). Remove the `node_compat` setting and add the `nodejs_compat` flag instead."
|
|
8736
|
-
);
|
|
8737
|
-
}
|
|
8738
8766
|
if (nodeCompatMode === "v1") {
|
|
8739
8767
|
throw new Error(
|
|
8740
8768
|
`Unsupported Node.js compat mode (v1). Only the v2 mode is supported, either change your compat date to "2024-09-23" or later, or set the "nodejs_compat_v2" compatibility flag`
|
|
@@ -8841,7 +8869,6 @@ var nonApplicableWorkerConfigs = {
|
|
|
8841
8869
|
"build",
|
|
8842
8870
|
"find_additional_modules",
|
|
8843
8871
|
"no_bundle",
|
|
8844
|
-
"node_compat",
|
|
8845
8872
|
"preserve_file_names",
|
|
8846
8873
|
"site",
|
|
8847
8874
|
"tsconfig",
|
|
@@ -8858,7 +8885,6 @@ var nullableNonApplicable = [
|
|
|
8858
8885
|
"find_additional_modules",
|
|
8859
8886
|
"minify",
|
|
8860
8887
|
"no_bundle",
|
|
8861
|
-
"node_compat",
|
|
8862
8888
|
"preserve_file_names",
|
|
8863
8889
|
"site",
|
|
8864
8890
|
"tsconfig",
|
|
@@ -9307,7 +9333,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
9307
9333
|
return;
|
|
9308
9334
|
}
|
|
9309
9335
|
config.no_bundle = true;
|
|
9310
|
-
config.rules = [{ type: "ESModule", globs: ["**/*.js"] }];
|
|
9336
|
+
config.rules = [{ type: "ESModule", globs: ["**/*.js", "**/*.mjs"] }];
|
|
9311
9337
|
if (config.unsafe && Object.keys(config.unsafe).length === 0) {
|
|
9312
9338
|
config.unsafe = void 0;
|
|
9313
9339
|
}
|
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-b69fd186b",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -35,12 +35,14 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@cloudflare/unenv-preset": "1.1.1",
|
|
37
37
|
"@hattip/adapter-node": "^0.0.49",
|
|
38
|
+
"tinyglobby": "^0.2.12",
|
|
38
39
|
"unenv": "2.0.0-rc.1",
|
|
39
40
|
"ws": "8.18.0",
|
|
40
|
-
"
|
|
41
|
+
"wrangler": "0.0.0-b69fd186b",
|
|
42
|
+
"miniflare": "0.0.0-b69fd186b"
|
|
41
43
|
},
|
|
42
44
|
"devDependencies": {
|
|
43
|
-
"@cloudflare/workers-types": "^4.
|
|
45
|
+
"@cloudflare/workers-types": "^4.20250310.0",
|
|
44
46
|
"@types/node": "^22.10.1",
|
|
45
47
|
"@types/ws": "^8.5.13",
|
|
46
48
|
"magic-string": "^0.30.12",
|
|
@@ -50,10 +52,9 @@
|
|
|
50
52
|
"undici": "^5.28.5",
|
|
51
53
|
"vite": "^6.1.0",
|
|
52
54
|
"vitest": "~3.0.5",
|
|
55
|
+
"@cloudflare/workers-shared": "0.0.0-b69fd186b",
|
|
53
56
|
"@cloudflare/mock-npm-registry": "0.0.0",
|
|
54
|
-
"
|
|
55
|
-
"@cloudflare/workers-tsconfig": "0.0.0",
|
|
56
|
-
"@cloudflare/workers-shared": "0.0.0-b391e0013"
|
|
57
|
+
"@cloudflare/workers-tsconfig": "0.0.0"
|
|
57
58
|
},
|
|
58
59
|
"peerDependencies": {
|
|
59
60
|
"vite": "^6.1.0",
|
|
@@ -70,7 +71,7 @@
|
|
|
70
71
|
"check:type": "tsc --build",
|
|
71
72
|
"dev": "tsup --watch",
|
|
72
73
|
"test": "vitest run",
|
|
73
|
-
"test:ci": "pnpm test
|
|
74
|
+
"test:ci": "pnpm test",
|
|
74
75
|
"test:e2e": "vitest run -c e2e/vitest.config.ts",
|
|
75
76
|
"test:watch": "vitest"
|
|
76
77
|
}
|