@cloudflare/vite-plugin 0.0.0-07613d3b2 → 0.0.0-085a37abe
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/index.js +96 -85
- package/dist/runner-worker/index.js +1 -1
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
import assert9 from "node:assert";
|
|
3
3
|
import * as fs5 from "node:fs";
|
|
4
|
+
import { builtinModules as builtinModules2 } from "node:module";
|
|
4
5
|
import * as path7 from "node:path";
|
|
5
6
|
import { createMiddleware } from "@hattip/adapter-node";
|
|
6
7
|
|
|
@@ -1074,7 +1075,6 @@ import * as vite6 from "vite";
|
|
|
1074
1075
|
|
|
1075
1076
|
// src/cloudflare-environment.ts
|
|
1076
1077
|
import assert from "node:assert";
|
|
1077
|
-
import { builtinModules } from "node:module";
|
|
1078
1078
|
import * as vite2 from "vite";
|
|
1079
1079
|
|
|
1080
1080
|
// src/constants.ts
|
|
@@ -1207,7 +1207,9 @@ function createCloudflareEnvironmentOptions(workerConfig, userConfig, environmen
|
|
|
1207
1207
|
// dependencies as not external
|
|
1208
1208
|
noExternal: true,
|
|
1209
1209
|
// We want to use `workerd` package exports if available (e.g. for postgres).
|
|
1210
|
-
conditions: [...defaultConditions, "development|production"]
|
|
1210
|
+
conditions: [...defaultConditions, "development|production"],
|
|
1211
|
+
// The Cloudflare ones are proper builtins in the environment
|
|
1212
|
+
builtins: [...cloudflareBuiltInModules]
|
|
1211
1213
|
},
|
|
1212
1214
|
dev: {
|
|
1213
1215
|
createEnvironment(name2, config) {
|
|
@@ -1229,19 +1231,14 @@ function createCloudflareEnvironmentOptions(workerConfig, userConfig, environmen
|
|
|
1229
1231
|
// so the input value here serves both as the build input as well as the starting point for
|
|
1230
1232
|
// dev pre-bundling crawling (were we not to set this input field we'd have to appropriately set
|
|
1231
1233
|
// optimizeDeps.entries in the dev config)
|
|
1232
|
-
input: workerConfig.main
|
|
1233
|
-
external: [...cloudflareBuiltInModules]
|
|
1234
|
+
input: workerConfig.main
|
|
1234
1235
|
}
|
|
1235
1236
|
},
|
|
1236
1237
|
optimizeDeps: {
|
|
1237
1238
|
// Note: ssr pre-bundling is opt-in and we need to enable it by setting `noDiscovery` to false
|
|
1238
1239
|
noDiscovery: false,
|
|
1239
1240
|
entries: workerConfig.main,
|
|
1240
|
-
exclude: [
|
|
1241
|
-
...cloudflareBuiltInModules,
|
|
1242
|
-
// we have to exclude all node modules to work in dev-mode not just the unenv externals...
|
|
1243
|
-
...builtinModules.concat(builtinModules.map((m) => `node:${m}`))
|
|
1244
|
-
],
|
|
1241
|
+
exclude: [...cloudflareBuiltInModules],
|
|
1245
1242
|
esbuildOptions: {
|
|
1246
1243
|
platform: "neutral",
|
|
1247
1244
|
conditions: [...defaultConditions, "development"],
|
|
@@ -1585,20 +1582,17 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer) {
|
|
|
1585
1582
|
);
|
|
1586
1583
|
const [moduleId] = invokePayloadData.data;
|
|
1587
1584
|
const moduleRE = new RegExp(MODULE_PATTERN);
|
|
1588
|
-
|
|
1585
|
+
const shouldExternalize = (
|
|
1586
|
+
// Worker modules (CompiledWasm, Text, Data)
|
|
1587
|
+
moduleRE.test(moduleId)
|
|
1588
|
+
);
|
|
1589
|
+
if (shouldExternalize) {
|
|
1589
1590
|
const result2 = {
|
|
1590
1591
|
externalize: moduleId,
|
|
1591
1592
|
type: "module"
|
|
1592
1593
|
};
|
|
1593
1594
|
return MiniflareResponse.json({ result: result2 });
|
|
1594
1595
|
}
|
|
1595
|
-
if (moduleId.startsWith("cloudflare:")) {
|
|
1596
|
-
const result2 = {
|
|
1597
|
-
externalize: moduleId,
|
|
1598
|
-
type: "builtin"
|
|
1599
|
-
};
|
|
1600
|
-
return MiniflareResponse.json({ result: result2 });
|
|
1601
|
-
}
|
|
1602
1596
|
const devEnvironment = viteDevServer.environments[environmentName];
|
|
1603
1597
|
const result = await devEnvironment.hot.handleInvoke(payload);
|
|
1604
1598
|
return MiniflareResponse.json(result);
|
|
@@ -7310,7 +7304,7 @@ Parser.acorn = {
|
|
|
7310
7304
|
};
|
|
7311
7305
|
|
|
7312
7306
|
// ../../node_modules/.pnpm/mlly@1.7.4/node_modules/mlly/dist/index.mjs
|
|
7313
|
-
import { builtinModules
|
|
7307
|
+
import { builtinModules, createRequire } from "node:module";
|
|
7314
7308
|
import fs3, { realpathSync, statSync as statSync2, promises } from "node:fs";
|
|
7315
7309
|
|
|
7316
7310
|
// ../../node_modules/.pnpm/ufo@1.5.4/node_modules/ufo/dist/index.mjs
|
|
@@ -7373,7 +7367,7 @@ import process$1 from "node:process";
|
|
|
7373
7367
|
import path4, { dirname as dirname3 } from "node:path";
|
|
7374
7368
|
import v8 from "node:v8";
|
|
7375
7369
|
import { format as format2, inspect } from "node:util";
|
|
7376
|
-
var BUILTIN_MODULES = new Set(
|
|
7370
|
+
var BUILTIN_MODULES = new Set(builtinModules);
|
|
7377
7371
|
function normalizeSlash(path8) {
|
|
7378
7372
|
return path8.replace(/\\/g, "/");
|
|
7379
7373
|
}
|
|
@@ -8487,7 +8481,7 @@ function parsePackageName(specifier, base) {
|
|
|
8487
8481
|
return { packageName, packageSubpath, isScoped };
|
|
8488
8482
|
}
|
|
8489
8483
|
function packageResolve(specifier, base, conditions) {
|
|
8490
|
-
if (
|
|
8484
|
+
if (builtinModules.includes(specifier)) {
|
|
8491
8485
|
return new URL$1("node:" + specifier);
|
|
8492
8486
|
}
|
|
8493
8487
|
const { packageName, packageSubpath, isScoped } = parsePackageName(
|
|
@@ -8574,7 +8568,7 @@ function moduleResolve(specifier, base, conditions, preserveSymlinks) {
|
|
|
8574
8568
|
try {
|
|
8575
8569
|
resolved = new URL$1(specifier);
|
|
8576
8570
|
} catch (error_) {
|
|
8577
|
-
if (isRemote && !
|
|
8571
|
+
if (isRemote && !builtinModules.includes(specifier)) {
|
|
8578
8572
|
const error = new ERR_UNSUPPORTED_RESOLVE_REQUEST(specifier, base);
|
|
8579
8573
|
error.cause = error_;
|
|
8580
8574
|
throw error;
|
|
@@ -8719,7 +8713,8 @@ var { env } = defineEnv({
|
|
|
8719
8713
|
nodeCompat: true,
|
|
8720
8714
|
presets: [cloudflare]
|
|
8721
8715
|
});
|
|
8722
|
-
var
|
|
8716
|
+
var nodeCompatExternals = new Set(env.external);
|
|
8717
|
+
var nodeCompatEntries = getNodeCompatEntries();
|
|
8723
8718
|
function isNodeCompat(workerConfig) {
|
|
8724
8719
|
if (workerConfig === void 0) {
|
|
8725
8720
|
return false;
|
|
@@ -8747,12 +8742,17 @@ function injectGlobalCode(id, code) {
|
|
|
8747
8742
|
const injectedCode = Object.entries(env.inject).map(([globalName, globalInject]) => {
|
|
8748
8743
|
if (typeof globalInject === "string") {
|
|
8749
8744
|
const moduleSpecifier2 = globalInject;
|
|
8750
|
-
return `import var_${globalName} from "${
|
|
8745
|
+
return `import var_${globalName} from "${moduleSpecifier2}";
|
|
8751
8746
|
globalThis.${globalName} = var_${globalName};
|
|
8752
8747
|
`;
|
|
8753
8748
|
}
|
|
8754
8749
|
const [moduleSpecifier, exportName] = globalInject;
|
|
8755
|
-
|
|
8750
|
+
assert6(
|
|
8751
|
+
moduleSpecifier !== void 0,
|
|
8752
|
+
"Expected moduleSpecifier to be defined"
|
|
8753
|
+
);
|
|
8754
|
+
assert6(exportName !== void 0, "Expected exportName to be defined");
|
|
8755
|
+
return `import var_${globalName} from "${moduleSpecifier}";
|
|
8756
8756
|
globalThis.${globalName} = var_${globalName}.${exportName};
|
|
8757
8757
|
`;
|
|
8758
8758
|
}).join("\n");
|
|
@@ -8763,37 +8763,36 @@ globalThis.${globalName} = var_${globalName}.${exportName};
|
|
|
8763
8763
|
map: modified.generateMap({ hires: "boundary", source: id })
|
|
8764
8764
|
};
|
|
8765
8765
|
}
|
|
8766
|
-
function getNodeCompatAliases() {
|
|
8767
|
-
const aliases = {};
|
|
8768
|
-
Object.keys(env.alias).forEach((key) => {
|
|
8769
|
-
if (!env.external.includes(key)) {
|
|
8770
|
-
aliases[key] = CLOUDFLARE_VIRTUAL_PREFIX + key;
|
|
8771
|
-
}
|
|
8772
|
-
});
|
|
8773
|
-
return aliases;
|
|
8774
|
-
}
|
|
8775
|
-
function getNodeCompatExternals() {
|
|
8776
|
-
return env.external;
|
|
8777
|
-
}
|
|
8778
|
-
function maybeStripNodeJsVirtualPrefix(source) {
|
|
8779
|
-
return source.startsWith(CLOUDFLARE_VIRTUAL_PREFIX) ? source.slice(CLOUDFLARE_VIRTUAL_PREFIX.length) : void 0;
|
|
8780
|
-
}
|
|
8781
8766
|
function resolveNodeJSImport(source) {
|
|
8782
8767
|
const alias = env.alias[source];
|
|
8783
8768
|
if (alias) {
|
|
8784
|
-
|
|
8785
|
-
|
|
8786
|
-
|
|
8787
|
-
|
|
8788
|
-
|
|
8769
|
+
return {
|
|
8770
|
+
unresolved: alias,
|
|
8771
|
+
resolved: resolvePathSync(alias, { url: import.meta.url })
|
|
8772
|
+
};
|
|
8773
|
+
}
|
|
8774
|
+
if (nodeCompatEntries.has(source)) {
|
|
8775
|
+
return {
|
|
8776
|
+
unresolved: source,
|
|
8777
|
+
resolved: resolvePathSync(source, { url: import.meta.url })
|
|
8778
|
+
};
|
|
8789
8779
|
}
|
|
8790
|
-
|
|
8791
|
-
|
|
8792
|
-
|
|
8793
|
-
|
|
8794
|
-
|
|
8795
|
-
|
|
8796
|
-
|
|
8780
|
+
}
|
|
8781
|
+
function getNodeCompatEntries() {
|
|
8782
|
+
const entries = new Set(Object.values(env.alias));
|
|
8783
|
+
for (const globalInject of Object.values(env.inject)) {
|
|
8784
|
+
if (typeof globalInject === "string") {
|
|
8785
|
+
entries.add(globalInject);
|
|
8786
|
+
} else {
|
|
8787
|
+
assert6(
|
|
8788
|
+
globalInject[0] !== void 0,
|
|
8789
|
+
"Expected first element of globalInject to be defined"
|
|
8790
|
+
);
|
|
8791
|
+
entries.add(globalInject[0]);
|
|
8792
|
+
}
|
|
8793
|
+
}
|
|
8794
|
+
nodeCompatExternals.forEach((external) => entries.delete(external));
|
|
8795
|
+
return entries;
|
|
8797
8796
|
}
|
|
8798
8797
|
|
|
8799
8798
|
// src/plugin-config.ts
|
|
@@ -9106,9 +9105,9 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
9106
9105
|
}
|
|
9107
9106
|
|
|
9108
9107
|
// src/websockets.ts
|
|
9109
|
-
import
|
|
9108
|
+
import { WebSocketServer } from "ws";
|
|
9110
9109
|
function handleWebSocket(httpServer, fetcher, logger) {
|
|
9111
|
-
const nodeWebSocket = new
|
|
9110
|
+
const nodeWebSocket = new WebSocketServer({ noServer: true });
|
|
9112
9111
|
httpServer.on(
|
|
9113
9112
|
"upgrade",
|
|
9114
9113
|
async (request, socket, head) => {
|
|
@@ -9462,49 +9461,61 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
9462
9461
|
apply(_config, env2) {
|
|
9463
9462
|
return !env2.isPreview;
|
|
9464
9463
|
},
|
|
9465
|
-
|
|
9466
|
-
|
|
9467
|
-
resolve: {
|
|
9468
|
-
alias: getNodeCompatAliases()
|
|
9469
|
-
}
|
|
9470
|
-
};
|
|
9471
|
-
},
|
|
9472
|
-
configEnvironment(environmentName) {
|
|
9473
|
-
const workerConfig = getWorkerConfig2(environmentName);
|
|
9474
|
-
if (isNodeCompat(workerConfig)) {
|
|
9464
|
+
configEnvironment(name2) {
|
|
9465
|
+
if (isNodeCompat(getWorkerConfig2(name2))) {
|
|
9475
9466
|
return {
|
|
9476
|
-
|
|
9477
|
-
|
|
9478
|
-
|
|
9479
|
-
|
|
9467
|
+
resolve: {
|
|
9468
|
+
builtins: [...nodeCompatExternals]
|
|
9469
|
+
},
|
|
9470
|
+
optimizeDeps: {
|
|
9471
|
+
// This is a list of dependency entry-points that should be pre-bundled.
|
|
9472
|
+
// In this case we provide a list of all the possible polyfills so that they are pre-bundled,
|
|
9473
|
+
// ready ahead the first request to the dev server.
|
|
9474
|
+
// Without this the dependency optimizer will try to bundle them on-the-fly in the middle of the first request,
|
|
9475
|
+
// which can potentially cause problems if it leads to previous pre-bundling to become stale and needing to be reloaded.
|
|
9476
|
+
// TODO: work out how to re-enable pre-bundling of these
|
|
9477
|
+
// include: [...getNodeCompatEntries()],
|
|
9478
|
+
// This is a list of module specifiers that the dependency optimizer should not follow when doing import analysis.
|
|
9479
|
+
// In this case we provide a list of all the Node.js modules, both those built-in to workerd and those that will be polyfilled.
|
|
9480
|
+
// Obviously we don't want/need the optimizer to try to process modules that are built-in;
|
|
9481
|
+
// But also we want to avoid following the ones that are polyfilled since the dependency-optimizer import analyzer does not
|
|
9482
|
+
// resolve these imports using our `resolveId()` hook causing the optimization step to fail.
|
|
9483
|
+
exclude: [
|
|
9484
|
+
...builtinModules2,
|
|
9485
|
+
...builtinModules2.map((m) => `node:${m}`)
|
|
9486
|
+
]
|
|
9480
9487
|
}
|
|
9481
9488
|
};
|
|
9482
9489
|
}
|
|
9483
9490
|
},
|
|
9491
|
+
applyToEnvironment(environment) {
|
|
9492
|
+
return isNodeCompat(getWorkerConfig2(environment.name));
|
|
9493
|
+
},
|
|
9494
|
+
// We need the resolver from this plugin to run before built-in ones, otherwise Vite's built-in
|
|
9495
|
+
// resolver will try to externalize the Node.js module imports (e.g. `perf_hooks` and `node:tty`)
|
|
9496
|
+
// rather than allowing the resolve hook here to alias then to polyfills.
|
|
9497
|
+
enforce: "pre",
|
|
9484
9498
|
async resolveId(source, importer, options) {
|
|
9485
|
-
const
|
|
9486
|
-
if (!
|
|
9487
|
-
return;
|
|
9488
|
-
}
|
|
9489
|
-
const workerConfig = getWorkerConfig2(this.environment.name);
|
|
9490
|
-
if (!isNodeCompat(workerConfig)) {
|
|
9491
|
-
return this.resolve(strippedSource, importer, options);
|
|
9499
|
+
const result = resolveNodeJSImport(source);
|
|
9500
|
+
if (!result) {
|
|
9501
|
+
return this.resolve(source, importer, options);
|
|
9492
9502
|
}
|
|
9493
|
-
|
|
9494
|
-
|
|
9495
|
-
|
|
9496
|
-
|
|
9497
|
-
|
|
9498
|
-
|
|
9499
|
-
|
|
9503
|
+
if (this.environment.mode === "dev") {
|
|
9504
|
+
assert9(
|
|
9505
|
+
this.environment.depsOptimizer,
|
|
9506
|
+
"depsOptimizer is required in dev mode"
|
|
9507
|
+
);
|
|
9508
|
+
const { id } = this.environment.depsOptimizer.registerMissingImport(
|
|
9509
|
+
result.unresolved,
|
|
9510
|
+
result.resolved
|
|
9511
|
+
);
|
|
9512
|
+
return this.resolve(id, importer, options);
|
|
9500
9513
|
}
|
|
9501
|
-
return this.resolve(resolved, importer, options);
|
|
9514
|
+
return this.resolve(result.resolved, importer, options);
|
|
9502
9515
|
},
|
|
9503
9516
|
async transform(code, id) {
|
|
9504
9517
|
const workerConfig = getWorkerConfig2(this.environment.name);
|
|
9505
|
-
|
|
9506
|
-
return;
|
|
9507
|
-
}
|
|
9518
|
+
assert9(workerConfig, "Expected a worker config");
|
|
9508
9519
|
const resolvedId = await this.resolve(workerConfig.main);
|
|
9509
9520
|
if (id === resolvedId?.id) {
|
|
9510
9521
|
return injectGlobalCode(id, code);
|
|
@@ -25,7 +25,7 @@ function stripInternalEnv(internalEnv) {
|
|
|
25
25
|
return userEnv;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
// ../../node_modules/.pnpm/vite@6.1.0_@types+node@18.19.
|
|
28
|
+
// ../../node_modules/.pnpm/vite@6.1.0_@types+node@18.19.76_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-085a37abe",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -36,24 +36,24 @@
|
|
|
36
36
|
"@cloudflare/unenv-preset": "1.1.1",
|
|
37
37
|
"@hattip/adapter-node": "^0.0.49",
|
|
38
38
|
"unenv": "2.0.0-rc.1",
|
|
39
|
-
"ws": "
|
|
40
|
-
"miniflare": "0.0.0-
|
|
39
|
+
"ws": "8.18.0",
|
|
40
|
+
"miniflare": "0.0.0-085a37abe"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@cloudflare/workers-types": "^4.
|
|
43
|
+
"@cloudflare/workers-types": "^4.20250214.0",
|
|
44
44
|
"@types/node": "^22.10.1",
|
|
45
45
|
"@types/ws": "^8.5.13",
|
|
46
46
|
"magic-string": "^0.30.12",
|
|
47
47
|
"mlly": "^1.7.4",
|
|
48
48
|
"tsup": "8.3.0",
|
|
49
49
|
"typescript": "^5.7.2",
|
|
50
|
-
"undici": "^5.28.
|
|
50
|
+
"undici": "^5.28.5",
|
|
51
51
|
"vite": "^6.1.0",
|
|
52
|
-
"vitest": "~
|
|
52
|
+
"vitest": "~3.0.5",
|
|
53
|
+
"@cloudflare/workers-shared": "0.0.0-085a37abe",
|
|
53
54
|
"@cloudflare/mock-npm-registry": "0.0.0",
|
|
54
55
|
"@cloudflare/workers-tsconfig": "0.0.0",
|
|
55
|
-
"wrangler": "0.0.0-
|
|
56
|
-
"@cloudflare/workers-shared": "0.0.0-07613d3b2"
|
|
56
|
+
"wrangler": "0.0.0-085a37abe"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"vite": "^6.1.0",
|