@cloudflare/vite-plugin 0.0.0-542c6ead5 → 0.0.0-599def3e7
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 +664 -754
- package/dist/asset-workers/router-worker.js +644 -720
- package/dist/index.js +176 -211
- 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__";
|
|
@@ -1230,13 +1322,12 @@ function createCloudflareEnvironmentOptions(workerConfig, userConfig, environmen
|
|
|
1230
1322
|
// dev pre-bundling crawling (were we not to set this input field we'd have to appropriately set
|
|
1231
1323
|
// optimizeDeps.entries in the dev config)
|
|
1232
1324
|
input: workerConfig.main,
|
|
1233
|
-
external: [...cloudflareBuiltInModules]
|
|
1325
|
+
external: [...cloudflareBuiltInModules, ...getNodeCompatExternals()]
|
|
1234
1326
|
}
|
|
1235
1327
|
},
|
|
1236
1328
|
optimizeDeps: {
|
|
1237
1329
|
// Note: ssr pre-bundling is opt-in and we need to enable it by setting `noDiscovery` to false
|
|
1238
1330
|
noDiscovery: false,
|
|
1239
|
-
entries: workerConfig.main,
|
|
1240
1331
|
exclude: [
|
|
1241
1332
|
...cloudflareBuiltInModules,
|
|
1242
1333
|
// we have to exclude all node modules to work in dev-mode not just the unenv externals...
|
|
@@ -1322,33 +1413,33 @@ function writeDeployConfig(resolvedPluginConfig, resolvedViteConfig) {
|
|
|
1322
1413
|
};
|
|
1323
1414
|
fs.writeFileSync(deployConfigPath, JSON.stringify(deployConfig));
|
|
1324
1415
|
} else {
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
}
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1416
|
+
const workerConfigPaths = Object.fromEntries(
|
|
1417
|
+
Object.keys(resolvedPluginConfig.workers).map((environmentName) => {
|
|
1418
|
+
const outputDirectory = resolvedViteConfig.environments[environmentName]?.build.outDir;
|
|
1419
|
+
assert2(
|
|
1420
|
+
outputDirectory,
|
|
1421
|
+
`Unexpected error: ${environmentName} environment output directory is undefined`
|
|
1422
|
+
);
|
|
1423
|
+
return [
|
|
1424
|
+
environmentName,
|
|
1425
|
+
getRelativePathToWorkerConfig(
|
|
1426
|
+
deployConfigDirectory,
|
|
1427
|
+
resolvedViteConfig.root,
|
|
1428
|
+
outputDirectory
|
|
1429
|
+
)
|
|
1430
|
+
];
|
|
1431
|
+
})
|
|
1432
|
+
);
|
|
1433
|
+
const { entryWorkerEnvironmentName } = resolvedPluginConfig;
|
|
1434
|
+
const configPath = workerConfigPaths[entryWorkerEnvironmentName];
|
|
1344
1435
|
assert2(
|
|
1345
|
-
|
|
1346
|
-
`Unexpected error:
|
|
1436
|
+
configPath,
|
|
1437
|
+
`Unexpected error: ${entryWorkerEnvironmentName} environment output directory is undefined`
|
|
1347
1438
|
);
|
|
1348
|
-
const
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
};
|
|
1439
|
+
const auxiliaryWorkers = Object.entries(workerConfigPaths).filter(
|
|
1440
|
+
([environmentName]) => environmentName !== entryWorkerEnvironmentName
|
|
1441
|
+
).map(([_, configPath2]) => ({ configPath: configPath2 }));
|
|
1442
|
+
const deployConfig = { configPath, auxiliaryWorkers };
|
|
1352
1443
|
fs.writeFileSync(deployConfigPath, JSON.stringify(deployConfig));
|
|
1353
1444
|
}
|
|
1354
1445
|
}
|
|
@@ -1777,94 +1868,13 @@ function miniflareLogLevelFromViteLogLevel(level = "info") {
|
|
|
1777
1868
|
}
|
|
1778
1869
|
}
|
|
1779
1870
|
|
|
1780
|
-
// src/node-js-compat.ts
|
|
1781
|
-
import assert5 from "node:assert";
|
|
1782
|
-
import { cloudflare } from "@cloudflare/unenv-preset";
|
|
1783
|
-
import { getNodeCompat } from "miniflare";
|
|
1784
|
-
import { defineEnv } from "unenv";
|
|
1785
|
-
var { env } = defineEnv({
|
|
1786
|
-
nodeCompat: true,
|
|
1787
|
-
presets: [cloudflare]
|
|
1788
|
-
});
|
|
1789
|
-
var CLOUDFLARE_VIRTUAL_PREFIX = "\0__CLOUDFLARE_NODEJS_COMPAT__";
|
|
1790
|
-
function isNodeCompat(workerConfig) {
|
|
1791
|
-
if (workerConfig === void 0) {
|
|
1792
|
-
return false;
|
|
1793
|
-
}
|
|
1794
|
-
const nodeCompatMode = getNodeCompat(
|
|
1795
|
-
workerConfig.compatibility_date,
|
|
1796
|
-
workerConfig.compatibility_flags ?? []
|
|
1797
|
-
).mode;
|
|
1798
|
-
if (nodeCompatMode === "v2") {
|
|
1799
|
-
return true;
|
|
1800
|
-
}
|
|
1801
|
-
if (nodeCompatMode === "legacy") {
|
|
1802
|
-
throw new Error(
|
|
1803
|
-
"Unsupported Node.js compat mode (legacy). Remove the `node_compat` setting and add the `nodejs_compat` flag instead."
|
|
1804
|
-
);
|
|
1805
|
-
}
|
|
1806
|
-
if (nodeCompatMode === "v1") {
|
|
1807
|
-
throw new Error(
|
|
1808
|
-
`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`
|
|
1809
|
-
);
|
|
1810
|
-
}
|
|
1811
|
-
return false;
|
|
1812
|
-
}
|
|
1813
|
-
function injectGlobalCode(id, code) {
|
|
1814
|
-
const injectedCode = Object.entries(env.inject).map(([globalName, globalInject]) => {
|
|
1815
|
-
if (typeof globalInject === "string") {
|
|
1816
|
-
const moduleSpecifier2 = globalInject;
|
|
1817
|
-
return `import var_${globalName} from "${moduleSpecifier2}";
|
|
1818
|
-
globalThis.${globalName} = var_${globalName};
|
|
1819
|
-
`;
|
|
1820
|
-
}
|
|
1821
|
-
const [moduleSpecifier, exportName] = globalInject;
|
|
1822
|
-
return `import var_${globalName} from "${moduleSpecifier}";
|
|
1823
|
-
globalThis.${globalName} = var_${globalName}.${exportName};
|
|
1824
|
-
`;
|
|
1825
|
-
}).join("\n");
|
|
1826
|
-
const modified = new MagicString(code);
|
|
1827
|
-
modified.prepend(injectedCode);
|
|
1828
|
-
return {
|
|
1829
|
-
code: modified.toString(),
|
|
1830
|
-
map: modified.generateMap({ hires: "boundary", source: id })
|
|
1831
|
-
};
|
|
1832
|
-
}
|
|
1833
|
-
function getNodeCompatAliases() {
|
|
1834
|
-
const aliases = {};
|
|
1835
|
-
Object.keys(env.alias).forEach((key) => {
|
|
1836
|
-
if (!env.external.includes(key)) {
|
|
1837
|
-
aliases[key] = CLOUDFLARE_VIRTUAL_PREFIX + key;
|
|
1838
|
-
}
|
|
1839
|
-
});
|
|
1840
|
-
return aliases;
|
|
1841
|
-
}
|
|
1842
|
-
function getNodeCompatExternals() {
|
|
1843
|
-
return env.external;
|
|
1844
|
-
}
|
|
1845
|
-
function maybeStripNodeJsVirtualPrefix(source) {
|
|
1846
|
-
return source.startsWith(CLOUDFLARE_VIRTUAL_PREFIX) ? source.slice(CLOUDFLARE_VIRTUAL_PREFIX.length) : void 0;
|
|
1847
|
-
}
|
|
1848
|
-
function dealiasVirtualNodeJSImport(source) {
|
|
1849
|
-
const alias = env.alias[source];
|
|
1850
|
-
assert5(
|
|
1851
|
-
alias,
|
|
1852
|
-
`Expected "${source}" to have a Node.js compat alias, but none was found`
|
|
1853
|
-
);
|
|
1854
|
-
assert5(
|
|
1855
|
-
!env.external.includes(alias),
|
|
1856
|
-
`Unexpected unenv alias to external module: ${source} -> ${alias}`
|
|
1857
|
-
);
|
|
1858
|
-
return alias;
|
|
1859
|
-
}
|
|
1860
|
-
|
|
1861
1871
|
// src/plugin-config.ts
|
|
1862
|
-
import
|
|
1872
|
+
import assert6 from "node:assert";
|
|
1863
1873
|
import * as path5 from "node:path";
|
|
1864
1874
|
import * as vite5 from "vite";
|
|
1865
1875
|
|
|
1866
1876
|
// src/workers-configs.ts
|
|
1867
|
-
import
|
|
1877
|
+
import assert5 from "node:assert";
|
|
1868
1878
|
import * as fs3 from "node:fs";
|
|
1869
1879
|
import * as path4 from "node:path";
|
|
1870
1880
|
import { unstable_readConfig as unstable_readConfig2 } from "wrangler";
|
|
@@ -2040,17 +2050,17 @@ function getWorkerConfig(configPath, env2, opts) {
|
|
|
2040
2050
|
}
|
|
2041
2051
|
const { raw, config, nonApplicable } = readWorkerConfig(configPath, env2);
|
|
2042
2052
|
opts?.visitedConfigPaths?.add(configPath);
|
|
2043
|
-
|
|
2053
|
+
assert5(
|
|
2044
2054
|
config.topLevelName,
|
|
2045
2055
|
missingFieldErrorMessage(`top-level 'name'`, configPath, env2)
|
|
2046
2056
|
);
|
|
2047
|
-
|
|
2048
|
-
|
|
2057
|
+
assert5(config.name, missingFieldErrorMessage(`'name'`, configPath, env2));
|
|
2058
|
+
assert5(
|
|
2049
2059
|
config.compatibility_date,
|
|
2050
2060
|
missingFieldErrorMessage(`'compatibility_date'`, configPath, env2)
|
|
2051
2061
|
);
|
|
2052
2062
|
if (opts?.isEntryWorker && !config.main) {
|
|
2053
|
-
|
|
2063
|
+
assert5(
|
|
2054
2064
|
config.assets,
|
|
2055
2065
|
missingFieldErrorMessage(`'main' or 'assets'`, configPath, env2)
|
|
2056
2066
|
);
|
|
@@ -2067,7 +2077,7 @@ function getWorkerConfig(configPath, env2, opts) {
|
|
|
2067
2077
|
nonApplicable
|
|
2068
2078
|
};
|
|
2069
2079
|
}
|
|
2070
|
-
|
|
2080
|
+
assert5(config.main, missingFieldErrorMessage(`'main'`, configPath, env2));
|
|
2071
2081
|
return {
|
|
2072
2082
|
type: "worker",
|
|
2073
2083
|
raw,
|
|
@@ -2105,7 +2115,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
2105
2115
|
""
|
|
2106
2116
|
);
|
|
2107
2117
|
const configPath = pluginConfig.configPath ? path5.resolve(root, pluginConfig.configPath) : findWranglerConfig(root);
|
|
2108
|
-
|
|
2118
|
+
assert6(
|
|
2109
2119
|
configPath,
|
|
2110
2120
|
`Config not found. Have you created a wrangler.json(c) or wrangler.toml file?`
|
|
2111
2121
|
);
|
|
@@ -2140,7 +2150,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
2140
2150
|
}
|
|
2141
2151
|
);
|
|
2142
2152
|
auxiliaryWorkersResolvedConfigs.push(workerResolvedConfig);
|
|
2143
|
-
|
|
2153
|
+
assert6(
|
|
2144
2154
|
workerResolvedConfig.type === "worker",
|
|
2145
2155
|
"Unexpected error: received AssetsOnlyResult with auxiliary workers."
|
|
2146
2156
|
);
|
|
@@ -2257,6 +2267,9 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2257
2267
|
}
|
|
2258
2268
|
return {
|
|
2259
2269
|
appType: "custom",
|
|
2270
|
+
resolve: {
|
|
2271
|
+
alias: getNodeCompatAliases()
|
|
2272
|
+
},
|
|
2260
2273
|
environments: resolvedPluginConfig.type === "workers" ? {
|
|
2261
2274
|
...Object.fromEntries(
|
|
2262
2275
|
Object.entries(resolvedPluginConfig.workers).map(
|
|
@@ -2293,7 +2306,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2293
2306
|
resolvedPluginConfig.workers
|
|
2294
2307
|
).map((environmentName) => {
|
|
2295
2308
|
const environment = builder.environments[environmentName];
|
|
2296
|
-
|
|
2309
|
+
assert7(
|
|
2297
2310
|
environment,
|
|
2298
2311
|
`${environmentName} environment not found`
|
|
2299
2312
|
);
|
|
@@ -2305,6 +2318,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2305
2318
|
)
|
|
2306
2319
|
);
|
|
2307
2320
|
}
|
|
2321
|
+
writeDeployConfig(resolvedPluginConfig, resolvedViteConfig);
|
|
2308
2322
|
}
|
|
2309
2323
|
}
|
|
2310
2324
|
};
|
|
@@ -2312,6 +2326,29 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2312
2326
|
configResolved(config) {
|
|
2313
2327
|
resolvedViteConfig = config;
|
|
2314
2328
|
},
|
|
2329
|
+
async resolveId(source) {
|
|
2330
|
+
if (resolvedPluginConfig.type === "assets-only") {
|
|
2331
|
+
return;
|
|
2332
|
+
}
|
|
2333
|
+
const workerConfig = resolvedPluginConfig.workers[this.environment.name];
|
|
2334
|
+
if (!workerConfig) {
|
|
2335
|
+
return;
|
|
2336
|
+
}
|
|
2337
|
+
return resolveNodeCompatId(this.environment, workerConfig, source);
|
|
2338
|
+
},
|
|
2339
|
+
async transform(code, id) {
|
|
2340
|
+
if (resolvedPluginConfig.type === "assets-only") {
|
|
2341
|
+
return;
|
|
2342
|
+
}
|
|
2343
|
+
const workerConfig = resolvedPluginConfig.workers[this.environment.name];
|
|
2344
|
+
if (!workerConfig) {
|
|
2345
|
+
return;
|
|
2346
|
+
}
|
|
2347
|
+
const resolvedId = await this.resolve(workerConfig.main);
|
|
2348
|
+
if (id === resolvedId?.id) {
|
|
2349
|
+
return injectGlobalCode(id, code, workerConfig);
|
|
2350
|
+
}
|
|
2351
|
+
},
|
|
2315
2352
|
generateBundle(_, bundle) {
|
|
2316
2353
|
let config;
|
|
2317
2354
|
if (resolvedPluginConfig.type === "workers") {
|
|
@@ -2327,7 +2364,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2327
2364
|
if (isEntryWorker && workerConfig.assets) {
|
|
2328
2365
|
const workerOutputDirectory = this.environment.config.build.outDir;
|
|
2329
2366
|
const clientOutputDirectory = resolvedViteConfig.environments.client?.build.outDir;
|
|
2330
|
-
|
|
2367
|
+
assert7(
|
|
2331
2368
|
clientOutputDirectory,
|
|
2332
2369
|
"Unexpected error: client output directory is undefined"
|
|
2333
2370
|
);
|
|
@@ -2376,11 +2413,6 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2376
2413
|
source: JSON.stringify(config)
|
|
2377
2414
|
});
|
|
2378
2415
|
},
|
|
2379
|
-
writeBundle() {
|
|
2380
|
-
if (this.environment.name === (resolvedPluginConfig.type === "assets-only" ? "client" : resolvedPluginConfig.entryWorkerEnvironmentName)) {
|
|
2381
|
-
writeDeployConfig(resolvedPluginConfig, resolvedViteConfig);
|
|
2382
|
-
}
|
|
2383
|
-
},
|
|
2384
2416
|
handleHotUpdate(options) {
|
|
2385
2417
|
if (resolvedPluginConfig.configPaths.has(options.file)) {
|
|
2386
2418
|
options.server.restart();
|
|
@@ -2393,7 +2425,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2393
2425
|
}
|
|
2394
2426
|
},
|
|
2395
2427
|
async configureServer(viteDevServer) {
|
|
2396
|
-
|
|
2428
|
+
assert7(
|
|
2397
2429
|
viteDevServer.httpServer,
|
|
2398
2430
|
"Unexpected error: No Vite HTTP server"
|
|
2399
2431
|
);
|
|
@@ -2405,14 +2437,11 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2405
2437
|
resolvedPluginConfig,
|
|
2406
2438
|
miniflare
|
|
2407
2439
|
);
|
|
2408
|
-
const middleware = createMiddleware(
|
|
2409
|
-
(
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
},
|
|
2414
|
-
{ alwaysCallNext: false }
|
|
2415
|
-
);
|
|
2440
|
+
const middleware = createMiddleware(({ request }) => {
|
|
2441
|
+
return entryWorker.fetch(toMiniflareRequest(request), {
|
|
2442
|
+
redirect: "manual"
|
|
2443
|
+
});
|
|
2444
|
+
});
|
|
2416
2445
|
handleWebSocket(
|
|
2417
2446
|
viteDevServer.httpServer,
|
|
2418
2447
|
entryWorker.fetch,
|
|
@@ -2431,14 +2460,11 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2431
2460
|
pluginConfig.persistState ?? true
|
|
2432
2461
|
)
|
|
2433
2462
|
);
|
|
2434
|
-
const middleware = createMiddleware(
|
|
2435
|
-
(
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
},
|
|
2440
|
-
{ alwaysCallNext: false }
|
|
2441
|
-
);
|
|
2463
|
+
const middleware = createMiddleware(({ request }) => {
|
|
2464
|
+
return miniflare2.dispatchFetch(toMiniflareRequest(request), {
|
|
2465
|
+
redirect: "manual"
|
|
2466
|
+
});
|
|
2467
|
+
});
|
|
2442
2468
|
handleWebSocket(
|
|
2443
2469
|
vitePreviewServer.httpServer,
|
|
2444
2470
|
miniflare2.dispatchFetch,
|
|
@@ -2458,14 +2484,19 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2458
2484
|
// Otherwise the `vite:wasm-fallback` plugin prevents the `.wasm` extension being used for module imports.
|
|
2459
2485
|
enforce: "pre",
|
|
2460
2486
|
applyToEnvironment(environment) {
|
|
2461
|
-
|
|
2487
|
+
if (resolvedPluginConfig.type === "assets-only") {
|
|
2488
|
+
return false;
|
|
2489
|
+
}
|
|
2490
|
+
return Object.keys(resolvedPluginConfig.workers).includes(
|
|
2491
|
+
environment.name
|
|
2492
|
+
);
|
|
2462
2493
|
},
|
|
2463
2494
|
async resolveId(source, importer) {
|
|
2464
2495
|
if (!source.endsWith(".wasm")) {
|
|
2465
2496
|
return;
|
|
2466
2497
|
}
|
|
2467
2498
|
const resolved = await this.resolve(source, importer);
|
|
2468
|
-
|
|
2499
|
+
assert7(
|
|
2469
2500
|
resolved,
|
|
2470
2501
|
`Unexpected error: could not resolve Wasm module ${source}`
|
|
2471
2502
|
);
|
|
@@ -2481,7 +2512,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2481
2512
|
while (match = moduleRE.exec(code)) {
|
|
2482
2513
|
magicString ??= new MagicString(code);
|
|
2483
2514
|
const [full, moduleType, modulePath] = match;
|
|
2484
|
-
|
|
2515
|
+
assert7(
|
|
2485
2516
|
modulePath,
|
|
2486
2517
|
`Unexpected error: module path not found in reference ${full}.`
|
|
2487
2518
|
);
|
|
@@ -2517,74 +2548,8 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
2517
2548
|
};
|
|
2518
2549
|
}
|
|
2519
2550
|
}
|
|
2520
|
-
},
|
|
2521
|
-
// Plugin that can provide Node.js compatibility support for Vite Environments that are hosted in Cloudflare Workers.
|
|
2522
|
-
{
|
|
2523
|
-
name: "vite-plugin-cloudflare:nodejs-compat",
|
|
2524
|
-
apply(_config, env2) {
|
|
2525
|
-
return !env2.isPreview;
|
|
2526
|
-
},
|
|
2527
|
-
config() {
|
|
2528
|
-
return {
|
|
2529
|
-
resolve: {
|
|
2530
|
-
alias: getNodeCompatAliases()
|
|
2531
|
-
}
|
|
2532
|
-
};
|
|
2533
|
-
},
|
|
2534
|
-
configEnvironment(environmentName) {
|
|
2535
|
-
const workerConfig = getWorkerConfig2(environmentName);
|
|
2536
|
-
if (isNodeCompat(workerConfig)) {
|
|
2537
|
-
return {
|
|
2538
|
-
build: {
|
|
2539
|
-
rollupOptions: {
|
|
2540
|
-
external: getNodeCompatExternals()
|
|
2541
|
-
}
|
|
2542
|
-
}
|
|
2543
|
-
};
|
|
2544
|
-
}
|
|
2545
|
-
},
|
|
2546
|
-
async resolveId(source, importer, options) {
|
|
2547
|
-
const from = maybeStripNodeJsVirtualPrefix(source);
|
|
2548
|
-
if (!from) {
|
|
2549
|
-
return;
|
|
2550
|
-
}
|
|
2551
|
-
const workerConfig = getWorkerConfig2(this.environment.name);
|
|
2552
|
-
if (!isNodeCompat(workerConfig)) {
|
|
2553
|
-
return this.resolve(from, importer, options);
|
|
2554
|
-
}
|
|
2555
|
-
const unresolvedAlias = dealiasVirtualNodeJSImport(from);
|
|
2556
|
-
const resolvedAlias = await this.resolve(
|
|
2557
|
-
unresolvedAlias,
|
|
2558
|
-
import.meta.url
|
|
2559
|
-
);
|
|
2560
|
-
assert8(
|
|
2561
|
-
resolvedAlias,
|
|
2562
|
-
"Failed to resolve aliased nodejs import: " + unresolvedAlias
|
|
2563
|
-
);
|
|
2564
|
-
if (this.environment.mode === "dev" && this.environment.depsOptimizer) {
|
|
2565
|
-
this.environment.depsOptimizer.registerMissingImport(
|
|
2566
|
-
unresolvedAlias,
|
|
2567
|
-
resolvedAlias.id
|
|
2568
|
-
);
|
|
2569
|
-
}
|
|
2570
|
-
return resolvedAlias;
|
|
2571
|
-
},
|
|
2572
|
-
async transform(code, id) {
|
|
2573
|
-
const workerConfig = getWorkerConfig2(this.environment.name);
|
|
2574
|
-
if (!isNodeCompat(workerConfig)) {
|
|
2575
|
-
return;
|
|
2576
|
-
}
|
|
2577
|
-
const resolvedId = await this.resolve(workerConfig.main);
|
|
2578
|
-
if (id === resolvedId?.id) {
|
|
2579
|
-
return injectGlobalCode(id, code);
|
|
2580
|
-
}
|
|
2581
|
-
}
|
|
2582
2551
|
}
|
|
2583
2552
|
];
|
|
2584
|
-
function getWorkerConfig2(environmentName) {
|
|
2585
|
-
assert8(resolvedPluginConfig, "Expected resolvedPluginConfig to be defined");
|
|
2586
|
-
return resolvedPluginConfig.type !== "assets-only" ? resolvedPluginConfig.workers[environmentName] : void 0;
|
|
2587
|
-
}
|
|
2588
2553
|
}
|
|
2589
2554
|
function getDotDevDotVarsContent(configPath, cloudflareEnv) {
|
|
2590
2555
|
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-599def3e7",
|
|
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-599def3e7"
|
|
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.
|
|
50
|
-
"@cloudflare/workers-shared": "0.0.0-
|
|
48
|
+
"vite": "^6.0.7",
|
|
49
|
+
"@cloudflare/workers-shared": "0.0.0-599def3e7",
|
|
51
50
|
"@cloudflare/workers-tsconfig": "0.0.0",
|
|
52
|
-
"wrangler": "0.0.0-
|
|
51
|
+
"wrangler": "0.0.0-599def3e7"
|
|
53
52
|
},
|
|
54
53
|
"peerDependencies": {
|
|
55
|
-
"vite": "^6.
|
|
54
|
+
"vite": "^6.0.7",
|
|
56
55
|
"wrangler": "^3.101.0"
|
|
57
56
|
},
|
|
58
57
|
"publishConfig": {
|