@cloudflare/vite-plugin 0.0.0-8835c9f8f → 0.0.0-8ae084f9e
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 +3 -3
- package/dist/index.js +101 -89
- package/package.json +5 -5
|
@@ -2072,8 +2072,8 @@ var Ve = class {
|
|
|
2072
2072
|
};
|
|
2073
2073
|
var Yn = "public, max-age=0, must-revalidate";
|
|
2074
2074
|
function Jn(t, e, n) {
|
|
2075
|
-
let r = new Headers({
|
|
2076
|
-
return Ds(n) && r.append("Cache-Control", Yn), r;
|
|
2075
|
+
let r = new Headers({ ETag: `"${t}"` });
|
|
2076
|
+
return e !== void 0 && r.append("Content-Type", e), Ds(n) && r.append("Cache-Control", Yn), r;
|
|
2077
2077
|
}
|
|
2078
2078
|
function Ds(t) {
|
|
2079
2079
|
return !t.headers.has("Authorization") && !t.headers.has("Range");
|
|
@@ -2280,7 +2280,7 @@ var Kn = class extends Us {
|
|
|
2280
2280
|
async unstable_getByETag(t) {
|
|
2281
2281
|
let e = await Wn(this.env.ASSETS_KV_NAMESPACE, t);
|
|
2282
2282
|
if (!e || !e.value) throw new Error(`Requested asset ${t} exists in the asset manifest but not in the KV namespace.`);
|
|
2283
|
-
return { readableStream: e.value, contentType: e.metadata?.contentType
|
|
2283
|
+
return { readableStream: e.value, contentType: e.metadata?.contentType };
|
|
2284
2284
|
}
|
|
2285
2285
|
async unstable_getByPathname(t) {
|
|
2286
2286
|
let e = await this.unstable_exists(t);
|
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
|
|
|
@@ -1088,13 +1089,9 @@ var INIT_PATH = "/__vite_plugin_cloudflare_init__";
|
|
|
1088
1089
|
var MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${MODULE_TYPES.join("|")})__(.*?)__`;
|
|
1089
1090
|
|
|
1090
1091
|
// src/utils.ts
|
|
1091
|
-
import { builtinModules } from "node:module";
|
|
1092
1092
|
import * as path from "node:path";
|
|
1093
1093
|
import { Request as MiniflareRequest } from "miniflare";
|
|
1094
1094
|
import "vite";
|
|
1095
|
-
var nodeBuiltInModules = new Set(
|
|
1096
|
-
builtinModules.concat(builtinModules.map((m) => `node:${m}`))
|
|
1097
|
-
);
|
|
1098
1095
|
function getOutputDirectory(userConfig, environmentName) {
|
|
1099
1096
|
const rootOutputDirectory = userConfig.build?.outDir ?? "dist";
|
|
1100
1097
|
return userConfig.environments?.[environmentName]?.build?.outDir ?? path.join(rootOutputDirectory, environmentName);
|
|
@@ -1212,9 +1209,7 @@ function createCloudflareEnvironmentOptions(workerConfig, userConfig, environmen
|
|
|
1212
1209
|
// We want to use `workerd` package exports if available (e.g. for postgres).
|
|
1213
1210
|
conditions: [...defaultConditions, "development|production"],
|
|
1214
1211
|
// The Cloudflare ones are proper builtins in the environment
|
|
1215
|
-
builtins: [...cloudflareBuiltInModules]
|
|
1216
|
-
// The Node.js ones are no proper builtins in the environment since we also polyfill them using unenv
|
|
1217
|
-
external: [...nodeBuiltInModules]
|
|
1212
|
+
builtins: [...cloudflareBuiltInModules]
|
|
1218
1213
|
},
|
|
1219
1214
|
dev: {
|
|
1220
1215
|
createEnvironment(name2, config) {
|
|
@@ -1243,10 +1238,7 @@ function createCloudflareEnvironmentOptions(workerConfig, userConfig, environmen
|
|
|
1243
1238
|
// Note: ssr pre-bundling is opt-in and we need to enable it by setting `noDiscovery` to false
|
|
1244
1239
|
noDiscovery: false,
|
|
1245
1240
|
entries: workerConfig.main,
|
|
1246
|
-
exclude: [
|
|
1247
|
-
// we have to exclude all node modules to work in dev-mode not just the unenv externals...
|
|
1248
|
-
...nodeBuiltInModules
|
|
1249
|
-
],
|
|
1241
|
+
exclude: [...cloudflareBuiltInModules],
|
|
1250
1242
|
esbuildOptions: {
|
|
1251
1243
|
platform: "neutral",
|
|
1252
1244
|
conditions: [...defaultConditions, "development"],
|
|
@@ -1372,7 +1364,12 @@ import * as fs2 from "node:fs";
|
|
|
1372
1364
|
import * as fsp from "node:fs/promises";
|
|
1373
1365
|
import * as path3 from "node:path";
|
|
1374
1366
|
import { fileURLToPath } from "node:url";
|
|
1375
|
-
import {
|
|
1367
|
+
import {
|
|
1368
|
+
kCurrentWorker,
|
|
1369
|
+
Log,
|
|
1370
|
+
LogLevel,
|
|
1371
|
+
Response as MiniflareResponse
|
|
1372
|
+
} from "miniflare";
|
|
1376
1373
|
import "vite";
|
|
1377
1374
|
import {
|
|
1378
1375
|
unstable_getMiniflareWorkerOptions,
|
|
@@ -1406,11 +1403,10 @@ function getWorkerToWorkerEntrypointNamesMap(workers) {
|
|
|
1406
1403
|
);
|
|
1407
1404
|
for (const worker of workers) {
|
|
1408
1405
|
for (const value of Object.values(worker.serviceBindings ?? {})) {
|
|
1409
|
-
if (typeof value === "object" && "name" in value &&
|
|
1410
|
-
const
|
|
1411
|
-
|
|
1412
|
-
);
|
|
1413
|
-
assert4(entrypointNames, missingWorkerErrorMessage(value.name));
|
|
1406
|
+
if (typeof value === "object" && "name" in value && value.entrypoint !== void 0 && value.entrypoint !== "default") {
|
|
1407
|
+
const targetWorkerName = value.name === kCurrentWorker ? worker.name : value.name;
|
|
1408
|
+
const entrypointNames = workerToWorkerEntrypointNamesMap.get(targetWorkerName);
|
|
1409
|
+
assert4(entrypointNames, missingWorkerErrorMessage(targetWorkerName));
|
|
1414
1410
|
entrypointNames.add(value.entrypoint);
|
|
1415
1411
|
}
|
|
1416
1412
|
}
|
|
@@ -1592,8 +1588,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer) {
|
|
|
1592
1588
|
const moduleRE = new RegExp(MODULE_PATTERN);
|
|
1593
1589
|
const shouldExternalize = (
|
|
1594
1590
|
// Worker modules (CompiledWasm, Text, Data)
|
|
1595
|
-
moduleRE.test(moduleId)
|
|
1596
|
-
nodeBuiltInModules.has(moduleId)
|
|
1591
|
+
moduleRE.test(moduleId)
|
|
1597
1592
|
);
|
|
1598
1593
|
if (shouldExternalize) {
|
|
1599
1594
|
const result2 = {
|
|
@@ -7313,7 +7308,7 @@ Parser.acorn = {
|
|
|
7313
7308
|
};
|
|
7314
7309
|
|
|
7315
7310
|
// ../../node_modules/.pnpm/mlly@1.7.4/node_modules/mlly/dist/index.mjs
|
|
7316
|
-
import { builtinModules
|
|
7311
|
+
import { builtinModules, createRequire } from "node:module";
|
|
7317
7312
|
import fs3, { realpathSync, statSync as statSync2, promises } from "node:fs";
|
|
7318
7313
|
|
|
7319
7314
|
// ../../node_modules/.pnpm/ufo@1.5.4/node_modules/ufo/dist/index.mjs
|
|
@@ -7376,7 +7371,7 @@ import process$1 from "node:process";
|
|
|
7376
7371
|
import path4, { dirname as dirname3 } from "node:path";
|
|
7377
7372
|
import v8 from "node:v8";
|
|
7378
7373
|
import { format as format2, inspect } from "node:util";
|
|
7379
|
-
var BUILTIN_MODULES = new Set(
|
|
7374
|
+
var BUILTIN_MODULES = new Set(builtinModules);
|
|
7380
7375
|
function normalizeSlash(path8) {
|
|
7381
7376
|
return path8.replace(/\\/g, "/");
|
|
7382
7377
|
}
|
|
@@ -8490,7 +8485,7 @@ function parsePackageName(specifier, base) {
|
|
|
8490
8485
|
return { packageName, packageSubpath, isScoped };
|
|
8491
8486
|
}
|
|
8492
8487
|
function packageResolve(specifier, base, conditions) {
|
|
8493
|
-
if (
|
|
8488
|
+
if (builtinModules.includes(specifier)) {
|
|
8494
8489
|
return new URL$1("node:" + specifier);
|
|
8495
8490
|
}
|
|
8496
8491
|
const { packageName, packageSubpath, isScoped } = parsePackageName(
|
|
@@ -8577,7 +8572,7 @@ function moduleResolve(specifier, base, conditions, preserveSymlinks) {
|
|
|
8577
8572
|
try {
|
|
8578
8573
|
resolved = new URL$1(specifier);
|
|
8579
8574
|
} catch (error_) {
|
|
8580
|
-
if (isRemote && !
|
|
8575
|
+
if (isRemote && !builtinModules.includes(specifier)) {
|
|
8581
8576
|
const error = new ERR_UNSUPPORTED_RESOLVE_REQUEST(specifier, base);
|
|
8582
8577
|
error.cause = error_;
|
|
8583
8578
|
throw error;
|
|
@@ -8722,7 +8717,8 @@ var { env } = defineEnv({
|
|
|
8722
8717
|
nodeCompat: true,
|
|
8723
8718
|
presets: [cloudflare]
|
|
8724
8719
|
});
|
|
8725
|
-
var
|
|
8720
|
+
var nodeCompatExternals = new Set(env.external);
|
|
8721
|
+
var nodeCompatEntries = getNodeCompatEntries();
|
|
8726
8722
|
function isNodeCompat(workerConfig) {
|
|
8727
8723
|
if (workerConfig === void 0) {
|
|
8728
8724
|
return false;
|
|
@@ -8750,12 +8746,17 @@ function injectGlobalCode(id, code) {
|
|
|
8750
8746
|
const injectedCode = Object.entries(env.inject).map(([globalName, globalInject]) => {
|
|
8751
8747
|
if (typeof globalInject === "string") {
|
|
8752
8748
|
const moduleSpecifier2 = globalInject;
|
|
8753
|
-
return `import var_${globalName} from "${
|
|
8749
|
+
return `import var_${globalName} from "${moduleSpecifier2}";
|
|
8754
8750
|
globalThis.${globalName} = var_${globalName};
|
|
8755
8751
|
`;
|
|
8756
8752
|
}
|
|
8757
8753
|
const [moduleSpecifier, exportName] = globalInject;
|
|
8758
|
-
|
|
8754
|
+
assert6(
|
|
8755
|
+
moduleSpecifier !== void 0,
|
|
8756
|
+
"Expected moduleSpecifier to be defined"
|
|
8757
|
+
);
|
|
8758
|
+
assert6(exportName !== void 0, "Expected exportName to be defined");
|
|
8759
|
+
return `import var_${globalName} from "${moduleSpecifier}";
|
|
8759
8760
|
globalThis.${globalName} = var_${globalName}.${exportName};
|
|
8760
8761
|
`;
|
|
8761
8762
|
}).join("\n");
|
|
@@ -8766,37 +8767,36 @@ globalThis.${globalName} = var_${globalName}.${exportName};
|
|
|
8766
8767
|
map: modified.generateMap({ hires: "boundary", source: id })
|
|
8767
8768
|
};
|
|
8768
8769
|
}
|
|
8769
|
-
function getNodeCompatAliases() {
|
|
8770
|
-
const aliases = {};
|
|
8771
|
-
Object.keys(env.alias).forEach((key) => {
|
|
8772
|
-
if (!env.external.includes(key)) {
|
|
8773
|
-
aliases[key] = CLOUDFLARE_VIRTUAL_PREFIX + key;
|
|
8774
|
-
}
|
|
8775
|
-
});
|
|
8776
|
-
return aliases;
|
|
8777
|
-
}
|
|
8778
|
-
function getNodeCompatExternals() {
|
|
8779
|
-
return env.external;
|
|
8780
|
-
}
|
|
8781
|
-
function maybeStripNodeJsVirtualPrefix(source) {
|
|
8782
|
-
return source.startsWith(CLOUDFLARE_VIRTUAL_PREFIX) ? source.slice(CLOUDFLARE_VIRTUAL_PREFIX.length) : void 0;
|
|
8783
|
-
}
|
|
8784
8770
|
function resolveNodeJSImport(source) {
|
|
8785
8771
|
const alias = env.alias[source];
|
|
8786
8772
|
if (alias) {
|
|
8787
|
-
|
|
8788
|
-
|
|
8789
|
-
|
|
8790
|
-
|
|
8791
|
-
|
|
8773
|
+
return {
|
|
8774
|
+
unresolved: alias,
|
|
8775
|
+
resolved: resolvePathSync(alias, { url: import.meta.url })
|
|
8776
|
+
};
|
|
8777
|
+
}
|
|
8778
|
+
if (nodeCompatEntries.has(source)) {
|
|
8779
|
+
return {
|
|
8780
|
+
unresolved: source,
|
|
8781
|
+
resolved: resolvePathSync(source, { url: import.meta.url })
|
|
8782
|
+
};
|
|
8792
8783
|
}
|
|
8793
|
-
|
|
8794
|
-
|
|
8795
|
-
|
|
8796
|
-
|
|
8797
|
-
|
|
8798
|
-
|
|
8799
|
-
|
|
8784
|
+
}
|
|
8785
|
+
function getNodeCompatEntries() {
|
|
8786
|
+
const entries = new Set(Object.values(env.alias));
|
|
8787
|
+
for (const globalInject of Object.values(env.inject)) {
|
|
8788
|
+
if (typeof globalInject === "string") {
|
|
8789
|
+
entries.add(globalInject);
|
|
8790
|
+
} else {
|
|
8791
|
+
assert6(
|
|
8792
|
+
globalInject[0] !== void 0,
|
|
8793
|
+
"Expected first element of globalInject to be defined"
|
|
8794
|
+
);
|
|
8795
|
+
entries.add(globalInject[0]);
|
|
8796
|
+
}
|
|
8797
|
+
}
|
|
8798
|
+
nodeCompatExternals.forEach((external) => entries.delete(external));
|
|
8799
|
+
return entries;
|
|
8800
8800
|
}
|
|
8801
8801
|
|
|
8802
8802
|
// src/plugin-config.ts
|
|
@@ -9109,9 +9109,9 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
9109
9109
|
}
|
|
9110
9110
|
|
|
9111
9111
|
// src/websockets.ts
|
|
9112
|
-
import
|
|
9112
|
+
import { WebSocketServer } from "ws";
|
|
9113
9113
|
function handleWebSocket(httpServer, fetcher, logger) {
|
|
9114
|
-
const nodeWebSocket = new
|
|
9114
|
+
const nodeWebSocket = new WebSocketServer({ noServer: true });
|
|
9115
9115
|
httpServer.on(
|
|
9116
9116
|
"upgrade",
|
|
9117
9117
|
async (request, socket, head) => {
|
|
@@ -9220,7 +9220,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
9220
9220
|
}
|
|
9221
9221
|
} : void 0,
|
|
9222
9222
|
builder: {
|
|
9223
|
-
|
|
9223
|
+
buildApp: userConfig.builder?.buildApp ?? (async (builder) => {
|
|
9224
9224
|
const clientEnvironment = builder.environments.client;
|
|
9225
9225
|
const defaultHtmlPath = path7.resolve(
|
|
9226
9226
|
builder.config.root,
|
|
@@ -9246,7 +9246,7 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
9246
9246
|
)
|
|
9247
9247
|
);
|
|
9248
9248
|
}
|
|
9249
|
-
}
|
|
9249
|
+
})
|
|
9250
9250
|
}
|
|
9251
9251
|
};
|
|
9252
9252
|
},
|
|
@@ -9465,49 +9465,61 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
9465
9465
|
apply(_config, env2) {
|
|
9466
9466
|
return !env2.isPreview;
|
|
9467
9467
|
},
|
|
9468
|
-
|
|
9469
|
-
|
|
9470
|
-
resolve: {
|
|
9471
|
-
alias: getNodeCompatAliases()
|
|
9472
|
-
}
|
|
9473
|
-
};
|
|
9474
|
-
},
|
|
9475
|
-
configEnvironment(environmentName) {
|
|
9476
|
-
const workerConfig = getWorkerConfig2(environmentName);
|
|
9477
|
-
if (isNodeCompat(workerConfig)) {
|
|
9468
|
+
configEnvironment(name2) {
|
|
9469
|
+
if (isNodeCompat(getWorkerConfig2(name2))) {
|
|
9478
9470
|
return {
|
|
9479
|
-
|
|
9480
|
-
|
|
9481
|
-
|
|
9482
|
-
|
|
9471
|
+
resolve: {
|
|
9472
|
+
builtins: [...nodeCompatExternals]
|
|
9473
|
+
},
|
|
9474
|
+
optimizeDeps: {
|
|
9475
|
+
// This is a list of dependency entry-points that should be pre-bundled.
|
|
9476
|
+
// In this case we provide a list of all the possible polyfills so that they are pre-bundled,
|
|
9477
|
+
// ready ahead the first request to the dev server.
|
|
9478
|
+
// Without this the dependency optimizer will try to bundle them on-the-fly in the middle of the first request,
|
|
9479
|
+
// which can potentially cause problems if it leads to previous pre-bundling to become stale and needing to be reloaded.
|
|
9480
|
+
// TODO: work out how to re-enable pre-bundling of these
|
|
9481
|
+
// include: [...getNodeCompatEntries()],
|
|
9482
|
+
// This is a list of module specifiers that the dependency optimizer should not follow when doing import analysis.
|
|
9483
|
+
// 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.
|
|
9484
|
+
// Obviously we don't want/need the optimizer to try to process modules that are built-in;
|
|
9485
|
+
// But also we want to avoid following the ones that are polyfilled since the dependency-optimizer import analyzer does not
|
|
9486
|
+
// resolve these imports using our `resolveId()` hook causing the optimization step to fail.
|
|
9487
|
+
exclude: [
|
|
9488
|
+
...builtinModules2,
|
|
9489
|
+
...builtinModules2.map((m) => `node:${m}`)
|
|
9490
|
+
]
|
|
9483
9491
|
}
|
|
9484
9492
|
};
|
|
9485
9493
|
}
|
|
9486
9494
|
},
|
|
9495
|
+
applyToEnvironment(environment) {
|
|
9496
|
+
return isNodeCompat(getWorkerConfig2(environment.name));
|
|
9497
|
+
},
|
|
9498
|
+
// We need the resolver from this plugin to run before built-in ones, otherwise Vite's built-in
|
|
9499
|
+
// resolver will try to externalize the Node.js module imports (e.g. `perf_hooks` and `node:tty`)
|
|
9500
|
+
// rather than allowing the resolve hook here to alias then to polyfills.
|
|
9501
|
+
enforce: "pre",
|
|
9487
9502
|
async resolveId(source, importer, options) {
|
|
9488
|
-
const
|
|
9489
|
-
if (!
|
|
9490
|
-
return;
|
|
9491
|
-
}
|
|
9492
|
-
const workerConfig = getWorkerConfig2(this.environment.name);
|
|
9493
|
-
if (!isNodeCompat(workerConfig)) {
|
|
9494
|
-
return this.resolve(strippedSource, importer, options);
|
|
9503
|
+
const result = resolveNodeJSImport(source);
|
|
9504
|
+
if (!result) {
|
|
9505
|
+
return this.resolve(source, importer, options);
|
|
9495
9506
|
}
|
|
9496
|
-
|
|
9497
|
-
|
|
9498
|
-
|
|
9499
|
-
|
|
9500
|
-
|
|
9501
|
-
|
|
9502
|
-
|
|
9507
|
+
if (this.environment.mode === "dev") {
|
|
9508
|
+
assert9(
|
|
9509
|
+
this.environment.depsOptimizer,
|
|
9510
|
+
"depsOptimizer is required in dev mode"
|
|
9511
|
+
);
|
|
9512
|
+
const { id } = this.environment.depsOptimizer.registerMissingImport(
|
|
9513
|
+
result.unresolved,
|
|
9514
|
+
result.resolved
|
|
9515
|
+
);
|
|
9516
|
+
return this.resolve(id, importer, options);
|
|
9503
9517
|
}
|
|
9504
|
-
return this.resolve(resolved, importer, options);
|
|
9518
|
+
return this.resolve(result.resolved, importer, options);
|
|
9505
9519
|
},
|
|
9506
9520
|
async transform(code, id) {
|
|
9507
9521
|
const workerConfig = getWorkerConfig2(this.environment.name);
|
|
9508
|
-
|
|
9509
|
-
return;
|
|
9510
|
-
}
|
|
9522
|
+
assert9(workerConfig, "Expected a worker config");
|
|
9511
9523
|
const resolvedId = await this.resolve(workerConfig.main);
|
|
9512
9524
|
if (id === resolvedId?.id) {
|
|
9513
9525
|
return injectGlobalCode(id, code);
|
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-8ae084f9e",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -36,8 +36,8 @@
|
|
|
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-8ae084f9e"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@cloudflare/workers-types": "^4.20250214.0",
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
"vite": "^6.1.0",
|
|
52
52
|
"vitest": "~3.0.5",
|
|
53
53
|
"@cloudflare/mock-npm-registry": "0.0.0",
|
|
54
|
-
"@cloudflare/workers-shared": "0.0.0-8835c9f8f",
|
|
55
54
|
"@cloudflare/workers-tsconfig": "0.0.0",
|
|
56
|
-
"
|
|
55
|
+
"@cloudflare/workers-shared": "0.0.0-8ae084f9e",
|
|
56
|
+
"wrangler": "0.0.0-8ae084f9e"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"vite": "^6.1.0",
|