@cloudflare/vite-plugin 0.0.0-35710e590 → 0.0.0-35c1dc321
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/dist/asset-workers/asset-worker.js +103 -109
- package/dist/asset-workers/router-worker.js +134 -134
- package/dist/index.js +168 -199
- package/dist/runner-worker/index.js +1 -1
- package/package.json +7 -8
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import
|
|
2
|
+
import assert7 from "node:assert";
|
|
3
3
|
import * as fs4 from "node:fs";
|
|
4
4
|
import * as path6 from "node:path";
|
|
5
5
|
import { createMiddleware } from "@hattip/adapter-node";
|
|
@@ -1077,6 +1077,98 @@ import assert from "node:assert";
|
|
|
1077
1077
|
import { builtinModules } from "node:module";
|
|
1078
1078
|
import * as vite2 from "vite";
|
|
1079
1079
|
|
|
1080
|
+
// src/node-js-compat.ts
|
|
1081
|
+
import { createRequire } from "node:module";
|
|
1082
|
+
import { getNodeCompat } from "miniflare";
|
|
1083
|
+
import * as unenv from "unenv";
|
|
1084
|
+
var require2 = createRequire(import.meta.url);
|
|
1085
|
+
var preset = unenv.env(unenv.nodeless, unenv.cloudflare);
|
|
1086
|
+
var CLOUDFLARE_VIRTUAL_PREFIX = "\0cloudflare-";
|
|
1087
|
+
function isNodeCompat({
|
|
1088
|
+
compatibility_date,
|
|
1089
|
+
compatibility_flags
|
|
1090
|
+
}) {
|
|
1091
|
+
const nodeCompatMode = getNodeCompat(
|
|
1092
|
+
compatibility_date,
|
|
1093
|
+
compatibility_flags ?? []
|
|
1094
|
+
).mode;
|
|
1095
|
+
if (nodeCompatMode === "v2") {
|
|
1096
|
+
return true;
|
|
1097
|
+
}
|
|
1098
|
+
if (nodeCompatMode === "legacy") {
|
|
1099
|
+
throw new Error(
|
|
1100
|
+
"Unsupported Node.js compat mode (legacy). Remove the `node_compat` setting and add the `nodejs_compat` flag instead."
|
|
1101
|
+
);
|
|
1102
|
+
}
|
|
1103
|
+
if (nodeCompatMode === "v1") {
|
|
1104
|
+
throw new Error(
|
|
1105
|
+
`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`
|
|
1106
|
+
);
|
|
1107
|
+
}
|
|
1108
|
+
return false;
|
|
1109
|
+
}
|
|
1110
|
+
function injectGlobalCode(id, code, workerConfig) {
|
|
1111
|
+
if (!isNodeCompat(workerConfig)) {
|
|
1112
|
+
return;
|
|
1113
|
+
}
|
|
1114
|
+
const injectedCode = Object.entries(preset.inject).map(([globalName, globalInject]) => {
|
|
1115
|
+
if (typeof globalInject === "string") {
|
|
1116
|
+
const moduleSpecifier2 = globalInject;
|
|
1117
|
+
return `import var_${globalName} from "${moduleSpecifier2}";
|
|
1118
|
+
globalThis.${globalName} = var_${globalName};
|
|
1119
|
+
`;
|
|
1120
|
+
}
|
|
1121
|
+
const [moduleSpecifier, exportName] = globalInject;
|
|
1122
|
+
return `import var_${globalName} from "${moduleSpecifier}";
|
|
1123
|
+
globalThis.${globalName} = var_${globalName}.${exportName};
|
|
1124
|
+
`;
|
|
1125
|
+
}).join("\n");
|
|
1126
|
+
const modified = new MagicString(code);
|
|
1127
|
+
modified.prepend(injectedCode);
|
|
1128
|
+
return {
|
|
1129
|
+
code: modified.toString(),
|
|
1130
|
+
map: modified.generateMap({ hires: "boundary", source: id })
|
|
1131
|
+
};
|
|
1132
|
+
}
|
|
1133
|
+
function getNodeCompatAliases() {
|
|
1134
|
+
const aliases = {};
|
|
1135
|
+
Object.keys(preset.alias).forEach((key) => {
|
|
1136
|
+
if (!preset.external.includes(key)) {
|
|
1137
|
+
aliases[key] = CLOUDFLARE_VIRTUAL_PREFIX + key;
|
|
1138
|
+
}
|
|
1139
|
+
});
|
|
1140
|
+
return aliases;
|
|
1141
|
+
}
|
|
1142
|
+
function resolveNodeCompatId(environment, workerConfig, id) {
|
|
1143
|
+
const aliased = resolveNodeAliases(id, workerConfig) ?? id;
|
|
1144
|
+
if (aliased.startsWith("unenv/")) {
|
|
1145
|
+
const resolvedDep = require2.resolve(aliased).replace(/\.cjs$/, ".mjs");
|
|
1146
|
+
if (environment.mode === "dev" && environment.depsOptimizer) {
|
|
1147
|
+
const dep = environment.depsOptimizer.registerMissingImport(
|
|
1148
|
+
aliased,
|
|
1149
|
+
resolvedDep
|
|
1150
|
+
);
|
|
1151
|
+
return dep.id;
|
|
1152
|
+
} else {
|
|
1153
|
+
return resolvedDep;
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
function getNodeCompatExternals() {
|
|
1158
|
+
return preset.external;
|
|
1159
|
+
}
|
|
1160
|
+
function resolveNodeAliases(source, workerConfig) {
|
|
1161
|
+
if (!source.startsWith(CLOUDFLARE_VIRTUAL_PREFIX) || !isNodeCompat(workerConfig)) {
|
|
1162
|
+
return;
|
|
1163
|
+
}
|
|
1164
|
+
const from = source.slice(CLOUDFLARE_VIRTUAL_PREFIX.length);
|
|
1165
|
+
const alias = preset.alias[from];
|
|
1166
|
+
if (alias && preset.external.includes(alias)) {
|
|
1167
|
+
throw new Error(`Alias to external: ${source} -> ${alias}`);
|
|
1168
|
+
}
|
|
1169
|
+
return alias;
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1080
1172
|
// src/constants.ts
|
|
1081
1173
|
var ROUTER_WORKER_NAME = "__router-worker__";
|
|
1082
1174
|
var ASSET_WORKER_NAME = "__asset-worker__";
|
|
@@ -1222,7 +1314,6 @@ function createCloudflareEnvironmentOptions(workerConfig, userConfig, environmen
|
|
|
1222
1314
|
// We need to enable `emitAssets` in order to support additional modules defined by `rules`
|
|
1223
1315
|
emitAssets: true,
|
|
1224
1316
|
outDir: getOutputDirectory(userConfig, environmentName),
|
|
1225
|
-
copyPublicDir: false,
|
|
1226
1317
|
ssr: true,
|
|
1227
1318
|
rollupOptions: {
|
|
1228
1319
|
// Note: vite starts dev pre-bundling crawling from either optimizeDeps.entries or rollupOptions.input
|
|
@@ -1230,7 +1321,7 @@ function createCloudflareEnvironmentOptions(workerConfig, userConfig, environmen
|
|
|
1230
1321
|
// dev pre-bundling crawling (were we not to set this input field we'd have to appropriately set
|
|
1231
1322
|
// optimizeDeps.entries in the dev config)
|
|
1232
1323
|
input: workerConfig.main,
|
|
1233
|
-
external: [...cloudflareBuiltInModules]
|
|
1324
|
+
external: [...cloudflareBuiltInModules, ...getNodeCompatExternals()]
|
|
1234
1325
|
}
|
|
1235
1326
|
},
|
|
1236
1327
|
optimizeDeps: {
|
|
@@ -1321,33 +1412,33 @@ function writeDeployConfig(resolvedPluginConfig, resolvedViteConfig) {
|
|
|
1321
1412
|
};
|
|
1322
1413
|
fs.writeFileSync(deployConfigPath, JSON.stringify(deployConfig));
|
|
1323
1414
|
} else {
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
}
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1415
|
+
const workerConfigPaths = Object.fromEntries(
|
|
1416
|
+
Object.keys(resolvedPluginConfig.workers).map((environmentName) => {
|
|
1417
|
+
const outputDirectory = resolvedViteConfig.environments[environmentName]?.build.outDir;
|
|
1418
|
+
assert2(
|
|
1419
|
+
outputDirectory,
|
|
1420
|
+
`Unexpected error: ${environmentName} environment output directory is undefined`
|
|
1421
|
+
);
|
|
1422
|
+
return [
|
|
1423
|
+
environmentName,
|
|
1424
|
+
getRelativePathToWorkerConfig(
|
|
1425
|
+
deployConfigDirectory,
|
|
1426
|
+
resolvedViteConfig.root,
|
|
1427
|
+
outputDirectory
|
|
1428
|
+
)
|
|
1429
|
+
];
|
|
1430
|
+
})
|
|
1431
|
+
);
|
|
1432
|
+
const { entryWorkerEnvironmentName } = resolvedPluginConfig;
|
|
1433
|
+
const configPath = workerConfigPaths[entryWorkerEnvironmentName];
|
|
1343
1434
|
assert2(
|
|
1344
|
-
|
|
1345
|
-
`Unexpected error:
|
|
1435
|
+
configPath,
|
|
1436
|
+
`Unexpected error: ${entryWorkerEnvironmentName} environment output directory is undefined`
|
|
1346
1437
|
);
|
|
1347
|
-
const
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
};
|
|
1438
|
+
const auxiliaryWorkers = Object.entries(workerConfigPaths).filter(
|
|
1439
|
+
([environmentName]) => environmentName !== entryWorkerEnvironmentName
|
|
1440
|
+
).map(([_, configPath2]) => ({ configPath: configPath2 }));
|
|
1441
|
+
const deployConfig = { configPath, auxiliaryWorkers };
|
|
1351
1442
|
fs.writeFileSync(deployConfigPath, JSON.stringify(deployConfig));
|
|
1352
1443
|
}
|
|
1353
1444
|
}
|
|
@@ -1776,94 +1867,13 @@ function miniflareLogLevelFromViteLogLevel(level = "info") {
|
|
|
1776
1867
|
}
|
|
1777
1868
|
}
|
|
1778
1869
|
|
|
1779
|
-
// src/node-js-compat.ts
|
|
1780
|
-
import assert5 from "node:assert";
|
|
1781
|
-
import { cloudflare } from "@cloudflare/unenv-preset";
|
|
1782
|
-
import { getNodeCompat } from "miniflare";
|
|
1783
|
-
import { defineEnv } from "unenv";
|
|
1784
|
-
var { env } = defineEnv({
|
|
1785
|
-
nodeCompat: true,
|
|
1786
|
-
presets: [cloudflare]
|
|
1787
|
-
});
|
|
1788
|
-
var CLOUDFLARE_VIRTUAL_PREFIX = "\0__CLOUDFLARE_NODEJS_COMPAT__";
|
|
1789
|
-
function isNodeCompat(workerConfig) {
|
|
1790
|
-
if (workerConfig === void 0) {
|
|
1791
|
-
return false;
|
|
1792
|
-
}
|
|
1793
|
-
const nodeCompatMode = getNodeCompat(
|
|
1794
|
-
workerConfig.compatibility_date,
|
|
1795
|
-
workerConfig.compatibility_flags ?? []
|
|
1796
|
-
).mode;
|
|
1797
|
-
if (nodeCompatMode === "v2") {
|
|
1798
|
-
return true;
|
|
1799
|
-
}
|
|
1800
|
-
if (nodeCompatMode === "legacy") {
|
|
1801
|
-
throw new Error(
|
|
1802
|
-
"Unsupported Node.js compat mode (legacy). Remove the `node_compat` setting and add the `nodejs_compat` flag instead."
|
|
1803
|
-
);
|
|
1804
|
-
}
|
|
1805
|
-
if (nodeCompatMode === "v1") {
|
|
1806
|
-
throw new Error(
|
|
1807
|
-
`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`
|
|
1808
|
-
);
|
|
1809
|
-
}
|
|
1810
|
-
return false;
|
|
1811
|
-
}
|
|
1812
|
-
function injectGlobalCode(id, code) {
|
|
1813
|
-
const injectedCode = Object.entries(env.inject).map(([globalName, globalInject]) => {
|
|
1814
|
-
if (typeof globalInject === "string") {
|
|
1815
|
-
const moduleSpecifier2 = globalInject;
|
|
1816
|
-
return `import var_${globalName} from "${moduleSpecifier2}";
|
|
1817
|
-
globalThis.${globalName} = var_${globalName};
|
|
1818
|
-
`;
|
|
1819
|
-
}
|
|
1820
|
-
const [moduleSpecifier, exportName] = globalInject;
|
|
1821
|
-
return `import var_${globalName} from "${moduleSpecifier}";
|
|
1822
|
-
globalThis.${globalName} = var_${globalName}.${exportName};
|
|
1823
|
-
`;
|
|
1824
|
-
}).join("\n");
|
|
1825
|
-
const modified = new MagicString(code);
|
|
1826
|
-
modified.prepend(injectedCode);
|
|
1827
|
-
return {
|
|
1828
|
-
code: modified.toString(),
|
|
1829
|
-
map: modified.generateMap({ hires: "boundary", source: id })
|
|
1830
|
-
};
|
|
1831
|
-
}
|
|
1832
|
-
function getNodeCompatAliases() {
|
|
1833
|
-
const aliases = {};
|
|
1834
|
-
Object.keys(env.alias).forEach((key) => {
|
|
1835
|
-
if (!env.external.includes(key)) {
|
|
1836
|
-
aliases[key] = CLOUDFLARE_VIRTUAL_PREFIX + key;
|
|
1837
|
-
}
|
|
1838
|
-
});
|
|
1839
|
-
return aliases;
|
|
1840
|
-
}
|
|
1841
|
-
function getNodeCompatExternals() {
|
|
1842
|
-
return env.external;
|
|
1843
|
-
}
|
|
1844
|
-
function maybeStripNodeJsVirtualPrefix(source) {
|
|
1845
|
-
return source.startsWith(CLOUDFLARE_VIRTUAL_PREFIX) ? source.slice(CLOUDFLARE_VIRTUAL_PREFIX.length) : void 0;
|
|
1846
|
-
}
|
|
1847
|
-
function dealiasVirtualNodeJSImport(source) {
|
|
1848
|
-
const alias = env.alias[source];
|
|
1849
|
-
assert5(
|
|
1850
|
-
alias,
|
|
1851
|
-
`Expected "${source}" to have a Node.js compat alias, but none was found`
|
|
1852
|
-
);
|
|
1853
|
-
assert5(
|
|
1854
|
-
!env.external.includes(alias),
|
|
1855
|
-
`Unexpected unenv alias to external module: ${source} -> ${alias}`
|
|
1856
|
-
);
|
|
1857
|
-
return alias;
|
|
1858
|
-
}
|
|
1859
|
-
|
|
1860
1870
|
// src/plugin-config.ts
|
|
1861
|
-
import
|
|
1871
|
+
import assert6 from "node:assert";
|
|
1862
1872
|
import * as path5 from "node:path";
|
|
1863
1873
|
import * as vite5 from "vite";
|
|
1864
1874
|
|
|
1865
1875
|
// src/workers-configs.ts
|
|
1866
|
-
import
|
|
1876
|
+
import assert5 from "node:assert";
|
|
1867
1877
|
import * as fs3 from "node:fs";
|
|
1868
1878
|
import * as path4 from "node:path";
|
|
1869
1879
|
import { unstable_readConfig as unstable_readConfig2 } from "wrangler";
|
|
@@ -2039,17 +2049,17 @@ function getWorkerConfig(configPath, env2, opts) {
|
|
|
2039
2049
|
}
|
|
2040
2050
|
const { raw, config, nonApplicable } = readWorkerConfig(configPath, env2);
|
|
2041
2051
|
opts?.visitedConfigPaths?.add(configPath);
|
|
2042
|
-
|
|
2052
|
+
assert5(
|
|
2043
2053
|
config.topLevelName,
|
|
2044
2054
|
missingFieldErrorMessage(`top-level 'name'`, configPath, env2)
|
|
2045
2055
|
);
|
|
2046
|
-
|
|
2047
|
-
|
|
2056
|
+
assert5(config.name, missingFieldErrorMessage(`'name'`, configPath, env2));
|
|
2057
|
+
assert5(
|
|
2048
2058
|
config.compatibility_date,
|
|
2049
2059
|
missingFieldErrorMessage(`'compatibility_date'`, configPath, env2)
|
|
2050
2060
|
);
|
|
2051
2061
|
if (opts?.isEntryWorker && !config.main) {
|
|
2052
|
-
|
|
2062
|
+
assert5(
|
|
2053
2063
|
config.assets,
|
|
2054
2064
|
missingFieldErrorMessage(`'main' or 'assets'`, configPath, env2)
|
|
2055
2065
|
);
|
|
@@ -2066,7 +2076,7 @@ function getWorkerConfig(configPath, env2, opts) {
|
|
|
2066
2076
|
nonApplicable
|
|
2067
2077
|
};
|
|
2068
2078
|
}
|
|
2069
|
-
|
|
2079
|
+
assert5(config.main, missingFieldErrorMessage(`'main'`, configPath, env2));
|
|
2070
2080
|
return {
|
|
2071
2081
|
type: "worker",
|
|
2072
2082
|
raw,
|
|
@@ -2104,7 +2114,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
2104
2114
|
""
|
|
2105
2115
|
);
|
|
2106
2116
|
const configPath = pluginConfig.configPath ? path5.resolve(root, pluginConfig.configPath) : findWranglerConfig(root);
|
|
2107
|
-
|
|
2117
|
+
assert6(
|
|
2108
2118
|
configPath,
|
|
2109
2119
|
`Config not found. Have you created a wrangler.json(c) or wrangler.toml file?`
|
|
2110
2120
|
);
|
|
@@ -2139,7 +2149,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
2139
2149
|
}
|
|
2140
2150
|
);
|
|
2141
2151
|
auxiliaryWorkersResolvedConfigs.push(workerResolvedConfig);
|
|
2142
|
-
|
|
2152
|
+
assert6(
|
|
2143
2153
|
workerResolvedConfig.type === "worker",
|
|
2144
2154
|
"Unexpected error: received AssetsOnlyResult with auxiliary workers."
|
|
2145
2155
|
);
|
|
@@ -2206,10 +2216,8 @@ ${event.error?.stack || event.error?.message}`,
|
|
|
2206
2216
|
workerWebSocket.addEventListener("close", () => {
|
|
2207
2217
|
clientWebSocket.close();
|
|
2208
2218
|
});
|
|
2209
|
-
clientWebSocket.on("message", (
|
|
2210
|
-
workerWebSocket.send(
|
|
2211
|
-
isBinary ? Array.isArray(data) ? Buffer.concat(data) : data : data.toString()
|
|
2212
|
-
);
|
|
2219
|
+
clientWebSocket.on("message", (event) => {
|
|
2220
|
+
workerWebSocket.send(event);
|
|
2213
2221
|
});
|
|
2214
2222
|
clientWebSocket.on("error", (error) => {
|
|
2215
2223
|
logger.error(`WebSocket error:
|
|
@@ -2256,6 +2264,9 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2256
2264
|
}
|
|
2257
2265
|
return {
|
|
2258
2266
|
appType: "custom",
|
|
2267
|
+
resolve: {
|
|
2268
|
+
alias: getNodeCompatAliases()
|
|
2269
|
+
},
|
|
2259
2270
|
environments: resolvedPluginConfig.type === "workers" ? {
|
|
2260
2271
|
...Object.fromEntries(
|
|
2261
2272
|
Object.entries(resolvedPluginConfig.workers).map(
|
|
@@ -2292,7 +2303,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2292
2303
|
resolvedPluginConfig.workers
|
|
2293
2304
|
).map((environmentName) => {
|
|
2294
2305
|
const environment = builder.environments[environmentName];
|
|
2295
|
-
|
|
2306
|
+
assert7(
|
|
2296
2307
|
environment,
|
|
2297
2308
|
`${environmentName} environment not found`
|
|
2298
2309
|
);
|
|
@@ -2304,6 +2315,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2304
2315
|
)
|
|
2305
2316
|
);
|
|
2306
2317
|
}
|
|
2318
|
+
writeDeployConfig(resolvedPluginConfig, resolvedViteConfig);
|
|
2307
2319
|
}
|
|
2308
2320
|
}
|
|
2309
2321
|
};
|
|
@@ -2311,6 +2323,29 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2311
2323
|
configResolved(config) {
|
|
2312
2324
|
resolvedViteConfig = config;
|
|
2313
2325
|
},
|
|
2326
|
+
async resolveId(source) {
|
|
2327
|
+
if (resolvedPluginConfig.type === "assets-only") {
|
|
2328
|
+
return;
|
|
2329
|
+
}
|
|
2330
|
+
const workerConfig = resolvedPluginConfig.workers[this.environment.name];
|
|
2331
|
+
if (!workerConfig) {
|
|
2332
|
+
return;
|
|
2333
|
+
}
|
|
2334
|
+
return resolveNodeCompatId(this.environment, workerConfig, source);
|
|
2335
|
+
},
|
|
2336
|
+
async transform(code, id) {
|
|
2337
|
+
if (resolvedPluginConfig.type === "assets-only") {
|
|
2338
|
+
return;
|
|
2339
|
+
}
|
|
2340
|
+
const workerConfig = resolvedPluginConfig.workers[this.environment.name];
|
|
2341
|
+
if (!workerConfig) {
|
|
2342
|
+
return;
|
|
2343
|
+
}
|
|
2344
|
+
const resolvedId = await this.resolve(workerConfig.main);
|
|
2345
|
+
if (id === resolvedId?.id) {
|
|
2346
|
+
return injectGlobalCode(id, code, workerConfig);
|
|
2347
|
+
}
|
|
2348
|
+
},
|
|
2314
2349
|
generateBundle(_, bundle) {
|
|
2315
2350
|
let config;
|
|
2316
2351
|
if (resolvedPluginConfig.type === "workers") {
|
|
@@ -2326,7 +2361,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2326
2361
|
if (isEntryWorker && workerConfig.assets) {
|
|
2327
2362
|
const workerOutputDirectory = this.environment.config.build.outDir;
|
|
2328
2363
|
const clientOutputDirectory = resolvedViteConfig.environments.client?.build.outDir;
|
|
2329
|
-
|
|
2364
|
+
assert7(
|
|
2330
2365
|
clientOutputDirectory,
|
|
2331
2366
|
"Unexpected error: client output directory is undefined"
|
|
2332
2367
|
);
|
|
@@ -2375,11 +2410,6 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2375
2410
|
source: JSON.stringify(config)
|
|
2376
2411
|
});
|
|
2377
2412
|
},
|
|
2378
|
-
writeBundle() {
|
|
2379
|
-
if (this.environment.name === (resolvedPluginConfig.type === "assets-only" ? "client" : resolvedPluginConfig.entryWorkerEnvironmentName)) {
|
|
2380
|
-
writeDeployConfig(resolvedPluginConfig, resolvedViteConfig);
|
|
2381
|
-
}
|
|
2382
|
-
},
|
|
2383
2413
|
handleHotUpdate(options) {
|
|
2384
2414
|
if (resolvedPluginConfig.configPaths.has(options.file)) {
|
|
2385
2415
|
options.server.restart();
|
|
@@ -2392,7 +2422,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2392
2422
|
}
|
|
2393
2423
|
},
|
|
2394
2424
|
async configureServer(viteDevServer) {
|
|
2395
|
-
|
|
2425
|
+
assert7(
|
|
2396
2426
|
viteDevServer.httpServer,
|
|
2397
2427
|
"Unexpected error: No Vite HTTP server"
|
|
2398
2428
|
);
|
|
@@ -2451,14 +2481,19 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2451
2481
|
// Otherwise the `vite:wasm-fallback` plugin prevents the `.wasm` extension being used for module imports.
|
|
2452
2482
|
enforce: "pre",
|
|
2453
2483
|
applyToEnvironment(environment) {
|
|
2454
|
-
|
|
2484
|
+
if (resolvedPluginConfig.type === "assets-only") {
|
|
2485
|
+
return false;
|
|
2486
|
+
}
|
|
2487
|
+
return Object.keys(resolvedPluginConfig.workers).includes(
|
|
2488
|
+
environment.name
|
|
2489
|
+
);
|
|
2455
2490
|
},
|
|
2456
2491
|
async resolveId(source, importer) {
|
|
2457
2492
|
if (!source.endsWith(".wasm")) {
|
|
2458
2493
|
return;
|
|
2459
2494
|
}
|
|
2460
2495
|
const resolved = await this.resolve(source, importer);
|
|
2461
|
-
|
|
2496
|
+
assert7(
|
|
2462
2497
|
resolved,
|
|
2463
2498
|
`Unexpected error: could not resolve Wasm module ${source}`
|
|
2464
2499
|
);
|
|
@@ -2474,7 +2509,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2474
2509
|
while (match = moduleRE.exec(code)) {
|
|
2475
2510
|
magicString ??= new MagicString(code);
|
|
2476
2511
|
const [full, moduleType, modulePath] = match;
|
|
2477
|
-
|
|
2512
|
+
assert7(
|
|
2478
2513
|
modulePath,
|
|
2479
2514
|
`Unexpected error: module path not found in reference ${full}.`
|
|
2480
2515
|
);
|
|
@@ -2510,74 +2545,8 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2510
2545
|
};
|
|
2511
2546
|
}
|
|
2512
2547
|
}
|
|
2513
|
-
},
|
|
2514
|
-
// Plugin that can provide Node.js compatibility support for Vite Environments that are hosted in Cloudflare Workers.
|
|
2515
|
-
{
|
|
2516
|
-
name: "vite-plugin-cloudflare:nodejs-compat",
|
|
2517
|
-
apply(_config, env2) {
|
|
2518
|
-
return !env2.isPreview;
|
|
2519
|
-
},
|
|
2520
|
-
config() {
|
|
2521
|
-
return {
|
|
2522
|
-
resolve: {
|
|
2523
|
-
alias: getNodeCompatAliases()
|
|
2524
|
-
}
|
|
2525
|
-
};
|
|
2526
|
-
},
|
|
2527
|
-
configEnvironment(environmentName) {
|
|
2528
|
-
const workerConfig = getWorkerConfig2(environmentName);
|
|
2529
|
-
if (isNodeCompat(workerConfig)) {
|
|
2530
|
-
return {
|
|
2531
|
-
build: {
|
|
2532
|
-
rollupOptions: {
|
|
2533
|
-
external: getNodeCompatExternals()
|
|
2534
|
-
}
|
|
2535
|
-
}
|
|
2536
|
-
};
|
|
2537
|
-
}
|
|
2538
|
-
},
|
|
2539
|
-
async resolveId(source, importer, options) {
|
|
2540
|
-
const from = maybeStripNodeJsVirtualPrefix(source);
|
|
2541
|
-
if (!from) {
|
|
2542
|
-
return;
|
|
2543
|
-
}
|
|
2544
|
-
const workerConfig = getWorkerConfig2(this.environment.name);
|
|
2545
|
-
if (!isNodeCompat(workerConfig)) {
|
|
2546
|
-
return this.resolve(from, importer, options);
|
|
2547
|
-
}
|
|
2548
|
-
const unresolvedAlias = dealiasVirtualNodeJSImport(from);
|
|
2549
|
-
const resolvedAlias = await this.resolve(
|
|
2550
|
-
unresolvedAlias,
|
|
2551
|
-
import.meta.url
|
|
2552
|
-
);
|
|
2553
|
-
assert8(
|
|
2554
|
-
resolvedAlias,
|
|
2555
|
-
"Failed to resolve aliased nodejs import: " + unresolvedAlias
|
|
2556
|
-
);
|
|
2557
|
-
if (this.environment.mode === "dev" && this.environment.depsOptimizer) {
|
|
2558
|
-
this.environment.depsOptimizer.registerMissingImport(
|
|
2559
|
-
unresolvedAlias,
|
|
2560
|
-
resolvedAlias.id
|
|
2561
|
-
);
|
|
2562
|
-
}
|
|
2563
|
-
return resolvedAlias;
|
|
2564
|
-
},
|
|
2565
|
-
async transform(code, id) {
|
|
2566
|
-
const workerConfig = getWorkerConfig2(this.environment.name);
|
|
2567
|
-
if (!isNodeCompat(workerConfig)) {
|
|
2568
|
-
return;
|
|
2569
|
-
}
|
|
2570
|
-
const resolvedId = await this.resolve(workerConfig.main);
|
|
2571
|
-
if (id === resolvedId?.id) {
|
|
2572
|
-
return injectGlobalCode(id, code);
|
|
2573
|
-
}
|
|
2574
|
-
}
|
|
2575
2548
|
}
|
|
2576
2549
|
];
|
|
2577
|
-
function getWorkerConfig2(environmentName) {
|
|
2578
|
-
assert8(resolvedPluginConfig, "Expected resolvedPluginConfig to be defined");
|
|
2579
|
-
return resolvedPluginConfig.type !== "assets-only" ? resolvedPluginConfig.workers[environmentName] : void 0;
|
|
2580
|
-
}
|
|
2581
2550
|
}
|
|
2582
2551
|
function getDotDevDotVarsContent(configPath, cloudflareEnv) {
|
|
2583
2552
|
const configDir = path6.dirname(configPath);
|
|
@@ -25,7 +25,7 @@ function stripInternalEnv(internalEnv) {
|
|
|
25
25
|
return userEnv;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
// ../../node_modules/.pnpm/vite@6.
|
|
28
|
+
// ../../node_modules/.pnpm/vite@6.0.7_@types+node@18.19.74_jiti@2.4.2/node_modules/vite/dist/node/module-runner.js
|
|
29
29
|
var VALID_ID_PREFIX = "/@id/";
|
|
30
30
|
var NULL_BYTE_PLACEHOLDER = "__x00__";
|
|
31
31
|
var SOURCEMAPPING_URL = "sourceMa";
|
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-35c1dc321",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -33,11 +33,10 @@
|
|
|
33
33
|
"dist"
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@cloudflare/unenv-preset": "1.1.1",
|
|
37
36
|
"@hattip/adapter-node": "^0.0.49",
|
|
38
|
-
"unenv": "2.0.0-
|
|
37
|
+
"unenv": "npm:unenv-nightly@2.0.0-20241218-183400-5d6aec3",
|
|
39
38
|
"ws": "^8.18.0",
|
|
40
|
-
"miniflare": "0.0.0-
|
|
39
|
+
"miniflare": "0.0.0-35c1dc321"
|
|
41
40
|
},
|
|
42
41
|
"devDependencies": {
|
|
43
42
|
"@cloudflare/workers-types": "^4.20250204.0",
|
|
@@ -46,13 +45,13 @@
|
|
|
46
45
|
"magic-string": "^0.30.12",
|
|
47
46
|
"tsup": "8.3.0",
|
|
48
47
|
"typescript": "^5.7.2",
|
|
49
|
-
"vite": "^6.
|
|
48
|
+
"vite": "^6.0.7",
|
|
49
|
+
"@cloudflare/workers-shared": "0.0.0-35c1dc321",
|
|
50
50
|
"@cloudflare/workers-tsconfig": "0.0.0",
|
|
51
|
-
"
|
|
52
|
-
"wrangler": "0.0.0-35710e590"
|
|
51
|
+
"wrangler": "0.0.0-35c1dc321"
|
|
53
52
|
},
|
|
54
53
|
"peerDependencies": {
|
|
55
|
-
"vite": "^6.
|
|
54
|
+
"vite": "^6.0.7",
|
|
56
55
|
"wrangler": "^3.101.0"
|
|
57
56
|
},
|
|
58
57
|
"publishConfig": {
|