@cloudflare/vite-plugin 0.0.0-e39a45ffa → 0.0.0-e3b3ef51c
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 +5504 -1978
- package/dist/asset-workers/router-worker.js +4277 -1611
- package/dist/index.d.ts +2 -0
- package/dist/index.js +197 -122
- package/dist/runner-worker/index.js +1 -0
- package/package.json +6 -7
package/dist/index.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ interface PluginConfig extends EntryWorkerConfig {
|
|
|
21
21
|
experimental?: {
|
|
22
22
|
/** Experimental support for handling the _headers and _redirects files during Vite dev mode. */
|
|
23
23
|
headersAndRedirectsDevModeSupport?: boolean;
|
|
24
|
+
/** Experimental support for mixed mode (where bindings configured with `remote: true` access remote resources). */
|
|
25
|
+
mixedMode?: boolean;
|
|
24
26
|
};
|
|
25
27
|
}
|
|
26
28
|
|
package/dist/index.js
CHANGED
|
@@ -1571,6 +1571,7 @@ var ADDITIONAL_MODULE_TYPES = [
|
|
|
1571
1571
|
"Text"
|
|
1572
1572
|
];
|
|
1573
1573
|
var DEFAULT_INSPECTOR_PORT = 9229;
|
|
1574
|
+
var kRequestType = Symbol("kRequestType");
|
|
1574
1575
|
|
|
1575
1576
|
// src/additional-modules.ts
|
|
1576
1577
|
var moduleRules = [
|
|
@@ -12648,8 +12649,8 @@ function packageResolve(specifier, base, conditions) {
|
|
|
12648
12649
|
let packageJsonPath = fileURLToPath$1(packageJsonUrl);
|
|
12649
12650
|
let lastPath;
|
|
12650
12651
|
do {
|
|
12651
|
-
const
|
|
12652
|
-
if (!
|
|
12652
|
+
const stat2 = tryStatSync(packageJsonPath.slice(0, -13));
|
|
12653
|
+
if (!stat2 || !stat2.isDirectory()) {
|
|
12653
12654
|
lastPath = packageJsonPath;
|
|
12654
12655
|
packageJsonUrl = new URL$1(
|
|
12655
12656
|
(isScoped ? "../../../../node_modules/" : "../../../node_modules/") + packageName + "/package.json",
|
|
@@ -12779,8 +12780,8 @@ function _resolve(id, options = {}) {
|
|
|
12779
12780
|
}
|
|
12780
12781
|
if (isAbsolute(id)) {
|
|
12781
12782
|
try {
|
|
12782
|
-
const
|
|
12783
|
-
if (
|
|
12783
|
+
const stat2 = statSync(id);
|
|
12784
|
+
if (stat2.isFile()) {
|
|
12784
12785
|
return pathToFileURL(id);
|
|
12785
12786
|
}
|
|
12786
12787
|
} catch (error) {
|
|
@@ -13010,9 +13011,6 @@ function getOutputDirectory(userConfig, environmentName) {
|
|
|
13010
13011
|
const rootOutputDirectory = userConfig.build?.outDir ?? "dist";
|
|
13011
13012
|
return userConfig.environments?.[environmentName]?.build?.outDir ?? path4.join(rootOutputDirectory, environmentName);
|
|
13012
13013
|
}
|
|
13013
|
-
function getRouterWorker(miniflare2) {
|
|
13014
|
-
return miniflare2.getWorker(ROUTER_WORKER_NAME);
|
|
13015
|
-
}
|
|
13016
13014
|
function toMiniflareRequest(request) {
|
|
13017
13015
|
const host = request.headers.get("Host");
|
|
13018
13016
|
if (host) {
|
|
@@ -13257,7 +13255,7 @@ import { unstable_readConfig } from "wrangler";
|
|
|
13257
13255
|
function getDeployConfigPath(root) {
|
|
13258
13256
|
return path5.resolve(root, ".wrangler", "deploy", "config.json");
|
|
13259
13257
|
}
|
|
13260
|
-
function getWorkerConfigs(root) {
|
|
13258
|
+
function getWorkerConfigs(root, mixedModeEnabled) {
|
|
13261
13259
|
const deployConfigPath = getDeployConfigPath(root);
|
|
13262
13260
|
const deployConfig = JSON.parse(
|
|
13263
13261
|
fs2.readFileSync(deployConfigPath, "utf-8")
|
|
@@ -13270,7 +13268,10 @@ function getWorkerConfigs(root) {
|
|
|
13270
13268
|
path5.dirname(deployConfigPath),
|
|
13271
13269
|
configPath
|
|
13272
13270
|
);
|
|
13273
|
-
return unstable_readConfig(
|
|
13271
|
+
return unstable_readConfig(
|
|
13272
|
+
{ config: resolvedConfigPath },
|
|
13273
|
+
{ experimental: { mixedModeEnabled } }
|
|
13274
|
+
);
|
|
13274
13275
|
});
|
|
13275
13276
|
}
|
|
13276
13277
|
function getRelativePathToWorkerConfig(deployConfigDirectory, root, outputDirectory) {
|
|
@@ -13337,6 +13338,7 @@ import * as fsp from "node:fs/promises";
|
|
|
13337
13338
|
import * as path6 from "node:path";
|
|
13338
13339
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
13339
13340
|
import {
|
|
13341
|
+
getDefaultDevRegistryPath,
|
|
13340
13342
|
kCurrentWorker,
|
|
13341
13343
|
Log,
|
|
13342
13344
|
LogLevel,
|
|
@@ -13345,7 +13347,12 @@ import {
|
|
|
13345
13347
|
import colors2 from "picocolors";
|
|
13346
13348
|
import { globSync } from "tinyglobby";
|
|
13347
13349
|
import "vite";
|
|
13348
|
-
import {
|
|
13350
|
+
import {
|
|
13351
|
+
experimental_pickRemoteBindings,
|
|
13352
|
+
experimental_startMixedModeSession,
|
|
13353
|
+
unstable_convertConfigBindingsToStartWorkerBindings,
|
|
13354
|
+
unstable_getMiniflareWorkerOptions
|
|
13355
|
+
} from "wrangler";
|
|
13349
13356
|
function getPersistenceRoot(root, persistState) {
|
|
13350
13357
|
if (persistState === false) {
|
|
13351
13358
|
return;
|
|
@@ -13440,30 +13447,29 @@ function getEntryWorkerConfig(resolvedPluginConfig) {
|
|
|
13440
13447
|
}
|
|
13441
13448
|
return resolvedPluginConfig.workers[resolvedPluginConfig.entryWorkerEnvironmentName];
|
|
13442
13449
|
}
|
|
13443
|
-
function
|
|
13444
|
-
|
|
13450
|
+
function logUnknownTails(tails, userWorkers, log) {
|
|
13451
|
+
for (const tailService of tails ?? []) {
|
|
13445
13452
|
let name;
|
|
13446
13453
|
if (typeof tailService === "string") {
|
|
13447
13454
|
name = tailService;
|
|
13448
13455
|
} else if (typeof tailService === "object" && "name" in tailService && typeof tailService.name === "string") {
|
|
13449
13456
|
name = tailService.name;
|
|
13450
13457
|
} else {
|
|
13451
|
-
|
|
13458
|
+
continue;
|
|
13452
13459
|
}
|
|
13453
13460
|
const found = userWorkers.some((w) => w.name === name);
|
|
13454
13461
|
if (!found) {
|
|
13455
13462
|
log(
|
|
13456
13463
|
colors2.dim(
|
|
13457
13464
|
colors2.yellow(
|
|
13458
|
-
`Tail consumer "${name}" was not found in your config. Make sure you add it if you'd like to simulate receiving tail events locally.`
|
|
13465
|
+
`Tail consumer "${name}" was not found in your config. Make sure you add it to the config or run it in another dev session if you'd like to simulate receiving tail events locally.`
|
|
13459
13466
|
)
|
|
13460
13467
|
)
|
|
13461
13468
|
);
|
|
13462
13469
|
}
|
|
13463
|
-
|
|
13464
|
-
});
|
|
13470
|
+
}
|
|
13465
13471
|
}
|
|
13466
|
-
function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPort) {
|
|
13472
|
+
async function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPort) {
|
|
13467
13473
|
const resolvedViteConfig = viteDevServer.config;
|
|
13468
13474
|
const entryWorkerConfig = getEntryWorkerConfig(resolvedPluginConfig);
|
|
13469
13475
|
const assetsConfig = getAssetsConfig(
|
|
@@ -13514,12 +13520,14 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13514
13520
|
serviceBindings: {
|
|
13515
13521
|
__VITE_ASSET_EXISTS__: async (request) => {
|
|
13516
13522
|
const { pathname } = new URL(request.url);
|
|
13517
|
-
|
|
13518
|
-
|
|
13519
|
-
|
|
13520
|
-
|
|
13521
|
-
|
|
13522
|
-
|
|
13523
|
+
let exists = false;
|
|
13524
|
+
if (pathname.endsWith(".html")) {
|
|
13525
|
+
try {
|
|
13526
|
+
const filePath = path6.join(resolvedViteConfig.root, pathname);
|
|
13527
|
+
const stats = await fsp.stat(filePath);
|
|
13528
|
+
exists = stats.isFile();
|
|
13529
|
+
} catch (error) {
|
|
13530
|
+
}
|
|
13523
13531
|
}
|
|
13524
13532
|
return MiniflareResponse.json(exists);
|
|
13525
13533
|
},
|
|
@@ -13533,59 +13541,75 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13533
13541
|
headers: { "Content-Type": "text/html" }
|
|
13534
13542
|
});
|
|
13535
13543
|
} catch (error) {
|
|
13536
|
-
throw new Error(`Unexpected error. Failed to load ${pathname}
|
|
13544
|
+
throw new Error(`Unexpected error. Failed to load "${pathname}".`);
|
|
13537
13545
|
}
|
|
13538
13546
|
}
|
|
13539
13547
|
}
|
|
13540
13548
|
}
|
|
13541
13549
|
];
|
|
13542
|
-
const workersFromConfig = resolvedPluginConfig.type === "workers" ?
|
|
13543
|
-
(
|
|
13544
|
-
|
|
13545
|
-
|
|
13546
|
-
|
|
13547
|
-
|
|
13548
|
-
|
|
13549
|
-
|
|
13550
|
-
|
|
13551
|
-
|
|
13552
|
-
|
|
13553
|
-
|
|
13554
|
-
|
|
13555
|
-
|
|
13556
|
-
|
|
13557
|
-
|
|
13558
|
-
|
|
13559
|
-
|
|
13560
|
-
|
|
13561
|
-
|
|
13562
|
-
...workerOptions
|
|
13563
|
-
|
|
13564
|
-
|
|
13565
|
-
|
|
13566
|
-
|
|
13567
|
-
|
|
13568
|
-
|
|
13569
|
-
|
|
13570
|
-
|
|
13571
|
-
|
|
13572
|
-
|
|
13573
|
-
|
|
13574
|
-
|
|
13575
|
-
|
|
13576
|
-
|
|
13577
|
-
|
|
13578
|
-
|
|
13579
|
-
|
|
13550
|
+
const workersFromConfig = resolvedPluginConfig.type === "workers" ? await Promise.all(
|
|
13551
|
+
Object.entries(resolvedPluginConfig.workers).map(
|
|
13552
|
+
async ([environmentName, workerConfig]) => {
|
|
13553
|
+
const mixedModeSession = resolvedPluginConfig.experimental.mixedMode ? await maybeStartOrUpdateMixedModeSession(workerConfig) : void 0;
|
|
13554
|
+
const miniflareWorkerOptions = unstable_getMiniflareWorkerOptions(
|
|
13555
|
+
{
|
|
13556
|
+
...workerConfig,
|
|
13557
|
+
assets: void 0
|
|
13558
|
+
},
|
|
13559
|
+
resolvedPluginConfig.cloudflareEnv,
|
|
13560
|
+
{
|
|
13561
|
+
mixedModeConnectionString: mixedModeSession?.mixedModeConnectionString,
|
|
13562
|
+
mixedModeEnabled: resolvedPluginConfig.experimental.mixedMode
|
|
13563
|
+
}
|
|
13564
|
+
);
|
|
13565
|
+
const { externalWorkers: externalWorkers2 } = miniflareWorkerOptions;
|
|
13566
|
+
const { ratelimits, ...workerOptions } = miniflareWorkerOptions.workerOptions;
|
|
13567
|
+
return {
|
|
13568
|
+
externalWorkers: externalWorkers2,
|
|
13569
|
+
worker: {
|
|
13570
|
+
...workerOptions,
|
|
13571
|
+
name: workerOptions.name ?? workerConfig.name,
|
|
13572
|
+
unsafeInspectorProxy: inspectorPort !== false,
|
|
13573
|
+
unsafeDirectSockets: environmentName === resolvedPluginConfig.entryWorkerEnvironmentName ? (
|
|
13574
|
+
// Expose the default entrypoint of the entry worker on the dev registry
|
|
13575
|
+
[{ entrypoint: void 0, proxy: true }]
|
|
13576
|
+
) : [],
|
|
13577
|
+
modulesRoot: miniflareModulesRoot,
|
|
13578
|
+
unsafeEvalBinding: "__VITE_UNSAFE_EVAL__",
|
|
13579
|
+
serviceBindings: {
|
|
13580
|
+
...workerOptions.serviceBindings,
|
|
13581
|
+
...environmentName === resolvedPluginConfig.entryWorkerEnvironmentName && workerConfig.assets?.binding ? {
|
|
13582
|
+
[workerConfig.assets.binding]: {
|
|
13583
|
+
node: (req, res) => {
|
|
13584
|
+
req[kRequestType] = "asset";
|
|
13585
|
+
viteDevServer.middlewares(req, res);
|
|
13586
|
+
}
|
|
13587
|
+
}
|
|
13588
|
+
} : {},
|
|
13589
|
+
__VITE_INVOKE_MODULE__: async (request) => {
|
|
13590
|
+
const payload = await request.json();
|
|
13591
|
+
const invokePayloadData = payload.data;
|
|
13592
|
+
assert6(
|
|
13593
|
+
invokePayloadData.name === "fetchModule",
|
|
13594
|
+
`Invalid invoke event: ${invokePayloadData.name}`
|
|
13595
|
+
);
|
|
13596
|
+
const [moduleId] = invokePayloadData.data;
|
|
13597
|
+
if (additionalModuleRE.test(moduleId)) {
|
|
13598
|
+
const result2 = {
|
|
13599
|
+
externalize: moduleId,
|
|
13600
|
+
type: "module"
|
|
13601
|
+
};
|
|
13602
|
+
return MiniflareResponse.json({ result: result2 });
|
|
13603
|
+
}
|
|
13604
|
+
const devEnvironment = viteDevServer.environments[environmentName];
|
|
13605
|
+
const result = await devEnvironment.hot.handleInvoke(payload);
|
|
13606
|
+
return MiniflareResponse.json(result);
|
|
13580
13607
|
}
|
|
13581
|
-
const devEnvironment = viteDevServer.environments[environmentName];
|
|
13582
|
-
const result = await devEnvironment.hot.handleInvoke(payload);
|
|
13583
|
-
return MiniflareResponse.json(result);
|
|
13584
13608
|
}
|
|
13585
13609
|
}
|
|
13586
|
-
}
|
|
13587
|
-
}
|
|
13588
|
-
|
|
13610
|
+
};
|
|
13611
|
+
}
|
|
13612
|
+
)
|
|
13589
13613
|
) : [];
|
|
13590
13614
|
const userWorkers = workersFromConfig.map((options) => options.worker);
|
|
13591
13615
|
const externalWorkers = workersFromConfig.flatMap(
|
|
@@ -13600,6 +13624,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13600
13624
|
logRequests: false,
|
|
13601
13625
|
inspectorPort: inspectorPort === false ? void 0 : inspectorPort,
|
|
13602
13626
|
unsafeInspectorProxy: inspectorPort !== false,
|
|
13627
|
+
unsafeDevRegistryPath: getDefaultDevRegistryPath(),
|
|
13603
13628
|
handleRuntimeStdio(stdout, stderr) {
|
|
13604
13629
|
const decoder = new TextDecoder();
|
|
13605
13630
|
stdout.forEach((data2) => logger.info(decoder.decode(data2)));
|
|
@@ -13653,13 +13678,13 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13653
13678
|
`export const ${className} = createWorkflowEntrypointWrapper('${className}');`
|
|
13654
13679
|
);
|
|
13655
13680
|
}
|
|
13681
|
+
logUnknownTails(
|
|
13682
|
+
workerOptions.tails,
|
|
13683
|
+
userWorkers,
|
|
13684
|
+
viteDevServer.config.logger.warn
|
|
13685
|
+
);
|
|
13656
13686
|
return {
|
|
13657
13687
|
...workerOptions,
|
|
13658
|
-
tails: filterTails(
|
|
13659
|
-
workerOptions.tails,
|
|
13660
|
-
userWorkers,
|
|
13661
|
-
viteDevServer.config.logger.warn
|
|
13662
|
-
),
|
|
13663
13688
|
modules: [
|
|
13664
13689
|
{
|
|
13665
13690
|
type: "ESModule",
|
|
@@ -13741,32 +13766,48 @@ function getPreviewModules(main, modulesRules) {
|
|
|
13741
13766
|
]
|
|
13742
13767
|
};
|
|
13743
13768
|
}
|
|
13744
|
-
function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistState, inspectorPort) {
|
|
13769
|
+
async function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistState, mixedModeEnabled, inspectorPort) {
|
|
13745
13770
|
const resolvedViteConfig = vitePreviewServer.config;
|
|
13746
|
-
const workers =
|
|
13747
|
-
|
|
13748
|
-
|
|
13749
|
-
|
|
13750
|
-
|
|
13751
|
-
|
|
13752
|
-
|
|
13753
|
-
|
|
13754
|
-
|
|
13755
|
-
|
|
13756
|
-
|
|
13757
|
-
|
|
13758
|
-
|
|
13759
|
-
|
|
13760
|
-
|
|
13761
|
-
|
|
13762
|
-
|
|
13763
|
-
|
|
13764
|
-
|
|
13771
|
+
const workers = (await Promise.all(
|
|
13772
|
+
workerConfigs.map(async (workerConfig, i) => {
|
|
13773
|
+
const mixedModeSession = mixedModeEnabled ? await maybeStartOrUpdateMixedModeSession(workerConfig) : void 0;
|
|
13774
|
+
const miniflareWorkerOptions = unstable_getMiniflareWorkerOptions(
|
|
13775
|
+
workerConfig,
|
|
13776
|
+
void 0,
|
|
13777
|
+
{
|
|
13778
|
+
mixedModeConnectionString: mixedModeSession?.mixedModeConnectionString,
|
|
13779
|
+
mixedModeEnabled
|
|
13780
|
+
}
|
|
13781
|
+
);
|
|
13782
|
+
const { externalWorkers } = miniflareWorkerOptions;
|
|
13783
|
+
const { ratelimits, modulesRules, ...workerOptions } = miniflareWorkerOptions.workerOptions;
|
|
13784
|
+
logUnknownTails(
|
|
13785
|
+
workerOptions.tails,
|
|
13786
|
+
workerConfigs,
|
|
13787
|
+
vitePreviewServer.config.logger.warn
|
|
13788
|
+
);
|
|
13789
|
+
return [
|
|
13790
|
+
{
|
|
13791
|
+
...workerOptions,
|
|
13792
|
+
name: workerOptions.name ?? workerConfig.name,
|
|
13793
|
+
unsafeInspectorProxy: inspectorPort !== false,
|
|
13794
|
+
unsafeDirectSockets: (
|
|
13795
|
+
// This exposes the default entrypoint of the entry worker on the dev registry
|
|
13796
|
+
// Assuming that the first worker config to be the entry worker.
|
|
13797
|
+
i === 0 ? [{ entrypoint: void 0, proxy: true }] : []
|
|
13798
|
+
),
|
|
13799
|
+
...miniflareWorkerOptions.main ? getPreviewModules(miniflareWorkerOptions.main, modulesRules) : { modules: true, script: "" }
|
|
13800
|
+
},
|
|
13801
|
+
...externalWorkers
|
|
13802
|
+
];
|
|
13803
|
+
})
|
|
13804
|
+
)).flat();
|
|
13765
13805
|
const logger = new ViteMiniflareLogger(resolvedViteConfig);
|
|
13766
13806
|
return {
|
|
13767
13807
|
log: logger,
|
|
13768
13808
|
inspectorPort: inspectorPort === false ? void 0 : inspectorPort,
|
|
13769
13809
|
unsafeInspectorProxy: inspectorPort !== false,
|
|
13810
|
+
unsafeDevRegistryPath: getDefaultDevRegistryPath(),
|
|
13770
13811
|
handleRuntimeStdio(stdout, stderr) {
|
|
13771
13812
|
const decoder = new TextDecoder();
|
|
13772
13813
|
stdout.forEach((data2) => logger.info(decoder.decode(data2)));
|
|
@@ -13812,6 +13853,24 @@ function miniflareLogLevelFromViteLogLevel(level = "info") {
|
|
|
13812
13853
|
return LogLevel.NONE;
|
|
13813
13854
|
}
|
|
13814
13855
|
}
|
|
13856
|
+
var mixedModeSessionsMap = /* @__PURE__ */ new Map();
|
|
13857
|
+
async function maybeStartOrUpdateMixedModeSession(workerConfig) {
|
|
13858
|
+
const workerRemoteBindings = experimental_pickRemoteBindings(
|
|
13859
|
+
unstable_convertConfigBindingsToStartWorkerBindings(workerConfig) ?? {}
|
|
13860
|
+
);
|
|
13861
|
+
assert6(workerConfig.name, "Found workerConfig without a name");
|
|
13862
|
+
let mixedModeSession = mixedModeSessionsMap.get(workerConfig.name);
|
|
13863
|
+
if (mixedModeSession === void 0) {
|
|
13864
|
+
if (Object.keys(workerRemoteBindings).length > 0) {
|
|
13865
|
+
mixedModeSession = await experimental_startMixedModeSession(workerRemoteBindings);
|
|
13866
|
+
mixedModeSessionsMap.set(workerConfig.name, mixedModeSession);
|
|
13867
|
+
}
|
|
13868
|
+
} else {
|
|
13869
|
+
await mixedModeSession.updateBindings(workerRemoteBindings);
|
|
13870
|
+
}
|
|
13871
|
+
await mixedModeSession?.ready;
|
|
13872
|
+
return mixedModeSession;
|
|
13873
|
+
}
|
|
13815
13874
|
|
|
13816
13875
|
// src/plugin-config.ts
|
|
13817
13876
|
import assert8 from "node:assert";
|
|
@@ -13866,12 +13925,15 @@ var nullableNonApplicable = [
|
|
|
13866
13925
|
"site",
|
|
13867
13926
|
"tsconfig"
|
|
13868
13927
|
];
|
|
13869
|
-
function readWorkerConfig(configPath, env2) {
|
|
13928
|
+
function readWorkerConfig(configPath, env2, mixedModeEnabled) {
|
|
13870
13929
|
const nonApplicable = {
|
|
13871
13930
|
replacedByVite: /* @__PURE__ */ new Set(),
|
|
13872
13931
|
notRelevant: /* @__PURE__ */ new Set()
|
|
13873
13932
|
};
|
|
13874
|
-
const config = unstable_readConfig2(
|
|
13933
|
+
const config = unstable_readConfig2(
|
|
13934
|
+
{ config: configPath, env: env2 },
|
|
13935
|
+
{ experimental: { mixedModeEnabled } }
|
|
13936
|
+
);
|
|
13875
13937
|
const raw = structuredClone(config);
|
|
13876
13938
|
nullableNonApplicable.forEach((prop) => {
|
|
13877
13939
|
if (config[prop] !== void 0) {
|
|
@@ -13966,11 +14028,15 @@ function isNotRelevant(configName) {
|
|
|
13966
14028
|
function missingFieldErrorMessage(field, configPath, env2) {
|
|
13967
14029
|
return `No ${field} field provided in '${configPath}'${env2 ? ` for '${env2}' environment` : ""}`;
|
|
13968
14030
|
}
|
|
13969
|
-
function getWorkerConfig(configPath, env2, opts) {
|
|
14031
|
+
function getWorkerConfig(configPath, env2, mixedModeEnabled, opts) {
|
|
13970
14032
|
if (opts?.visitedConfigPaths?.has(configPath)) {
|
|
13971
14033
|
throw new Error(`Duplicate Wrangler config path found: ${configPath}`);
|
|
13972
14034
|
}
|
|
13973
|
-
const { raw, config, nonApplicable } = readWorkerConfig(
|
|
14035
|
+
const { raw, config, nonApplicable } = readWorkerConfig(
|
|
14036
|
+
configPath,
|
|
14037
|
+
env2,
|
|
14038
|
+
mixedModeEnabled
|
|
14039
|
+
);
|
|
13974
14040
|
opts?.visitedConfigPaths?.add(configPath);
|
|
13975
14041
|
if (!config.name) {
|
|
13976
14042
|
throw new Error(missingFieldErrorMessage(`'name'`, configPath, env2));
|
|
@@ -14095,6 +14161,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
14095
14161
|
const entryWorkerResolvedConfig = getWorkerConfig(
|
|
14096
14162
|
entryWorkerConfigPath,
|
|
14097
14163
|
cloudflareEnv,
|
|
14164
|
+
pluginConfig.experimental?.mixedMode ?? false,
|
|
14098
14165
|
{
|
|
14099
14166
|
visitedConfigPaths: configPaths,
|
|
14100
14167
|
isEntryWorker: true
|
|
@@ -14128,6 +14195,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
14128
14195
|
const workerResolvedConfig = getWorkerConfig(
|
|
14129
14196
|
workerConfigPath,
|
|
14130
14197
|
cloudflareEnv,
|
|
14198
|
+
pluginConfig.experimental?.mixedMode ?? false,
|
|
14131
14199
|
{
|
|
14132
14200
|
visitedConfigPaths: configPaths
|
|
14133
14201
|
}
|
|
@@ -14445,28 +14513,21 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14445
14513
|
pluginConfig,
|
|
14446
14514
|
viteDevServer
|
|
14447
14515
|
);
|
|
14516
|
+
const miniflareDevOptions = await getDevMiniflareOptions(
|
|
14517
|
+
resolvedPluginConfig,
|
|
14518
|
+
viteDevServer,
|
|
14519
|
+
inputInspectorPort
|
|
14520
|
+
);
|
|
14448
14521
|
if (!miniflare) {
|
|
14449
|
-
miniflare = new Miniflare(
|
|
14450
|
-
getDevMiniflareOptions(
|
|
14451
|
-
resolvedPluginConfig,
|
|
14452
|
-
viteDevServer,
|
|
14453
|
-
inputInspectorPort
|
|
14454
|
-
)
|
|
14455
|
-
);
|
|
14522
|
+
miniflare = new Miniflare(miniflareDevOptions);
|
|
14456
14523
|
} else {
|
|
14457
|
-
await miniflare.setOptions(
|
|
14458
|
-
getDevMiniflareOptions(
|
|
14459
|
-
resolvedPluginConfig,
|
|
14460
|
-
viteDevServer,
|
|
14461
|
-
inputInspectorPort
|
|
14462
|
-
)
|
|
14463
|
-
);
|
|
14524
|
+
await miniflare.setOptions(miniflareDevOptions);
|
|
14464
14525
|
}
|
|
14465
14526
|
await initRunners(resolvedPluginConfig, viteDevServer, miniflare);
|
|
14466
14527
|
if (viteDevServer.httpServer) {
|
|
14467
14528
|
handleWebSocket(viteDevServer.httpServer, async () => {
|
|
14468
14529
|
assert10(miniflare, `Miniflare not defined`);
|
|
14469
|
-
const routerWorker = await
|
|
14530
|
+
const routerWorker = await miniflare.getWorker(ROUTER_WORKER_NAME);
|
|
14470
14531
|
return routerWorker.fetch;
|
|
14471
14532
|
});
|
|
14472
14533
|
}
|
|
@@ -14474,14 +14535,21 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14474
14535
|
viteDevServer.middlewares.use(async (req, res, next) => {
|
|
14475
14536
|
try {
|
|
14476
14537
|
assert10(miniflare, `Miniflare not defined`);
|
|
14477
|
-
const routerWorker = await getRouterWorker(miniflare);
|
|
14478
14538
|
const request = createRequest(req, res);
|
|
14479
|
-
|
|
14480
|
-
|
|
14481
|
-
|
|
14482
|
-
|
|
14483
|
-
|
|
14484
|
-
|
|
14539
|
+
let response;
|
|
14540
|
+
if (req[kRequestType] === "asset") {
|
|
14541
|
+
const assetWorker = await miniflare.getWorker(ASSET_WORKER_NAME);
|
|
14542
|
+
response = await assetWorker.fetch(
|
|
14543
|
+
toMiniflareRequest(request),
|
|
14544
|
+
{ redirect: "manual" }
|
|
14545
|
+
);
|
|
14546
|
+
} else {
|
|
14547
|
+
const routerWorker = await miniflare.getWorker(ROUTER_WORKER_NAME);
|
|
14548
|
+
response = await routerWorker.fetch(
|
|
14549
|
+
toMiniflareRequest(request),
|
|
14550
|
+
{ redirect: "manual" }
|
|
14551
|
+
);
|
|
14552
|
+
}
|
|
14485
14553
|
if (req.httpVersionMajor === 2) {
|
|
14486
14554
|
response.headers.delete("transfer-encoding");
|
|
14487
14555
|
}
|
|
@@ -14493,16 +14561,20 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14493
14561
|
};
|
|
14494
14562
|
},
|
|
14495
14563
|
async configurePreviewServer(vitePreviewServer) {
|
|
14496
|
-
const workerConfigs = getWorkerConfigs(
|
|
14564
|
+
const workerConfigs = getWorkerConfigs(
|
|
14565
|
+
vitePreviewServer.config.root,
|
|
14566
|
+
pluginConfig.experimental?.mixedMode ?? false
|
|
14567
|
+
);
|
|
14497
14568
|
const inputInspectorPort = await getInputInspectorPortOption(
|
|
14498
14569
|
pluginConfig,
|
|
14499
14570
|
vitePreviewServer
|
|
14500
14571
|
);
|
|
14501
14572
|
const miniflare2 = new Miniflare(
|
|
14502
|
-
getPreviewMiniflareOptions(
|
|
14573
|
+
await getPreviewMiniflareOptions(
|
|
14503
14574
|
vitePreviewServer,
|
|
14504
14575
|
workerConfigs,
|
|
14505
14576
|
pluginConfig.persistState ?? true,
|
|
14577
|
+
!!pluginConfig.experimental?.mixedMode,
|
|
14506
14578
|
inputInspectorPort
|
|
14507
14579
|
)
|
|
14508
14580
|
);
|
|
@@ -14759,7 +14831,10 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14759
14831
|
});
|
|
14760
14832
|
},
|
|
14761
14833
|
async configurePreviewServer(vitePreviewServer) {
|
|
14762
|
-
const workerConfigs = getWorkerConfigs(
|
|
14834
|
+
const workerConfigs = getWorkerConfigs(
|
|
14835
|
+
vitePreviewServer.config.root,
|
|
14836
|
+
pluginConfig.experimental?.mixedMode ?? false
|
|
14837
|
+
);
|
|
14763
14838
|
if (workerConfigs.length >= 1 && pluginConfig.inspectorPort !== false) {
|
|
14764
14839
|
addDebugToVitePrintUrls(vitePreviewServer);
|
|
14765
14840
|
}
|
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-e3b3ef51c",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -41,23 +41,22 @@
|
|
|
41
41
|
"tinyglobby": "^0.2.12",
|
|
42
42
|
"unenv": "2.0.0-rc.17",
|
|
43
43
|
"ws": "8.18.0",
|
|
44
|
-
"miniflare": "0.0.0-
|
|
45
|
-
"wrangler": "0.0.0-
|
|
44
|
+
"miniflare": "0.0.0-e3b3ef51c",
|
|
45
|
+
"wrangler": "0.0.0-e3b3ef51c"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@cloudflare/workers-types": "^4.
|
|
48
|
+
"@cloudflare/workers-types": "^4.20250604.0",
|
|
49
49
|
"@types/node": "^22.10.1",
|
|
50
50
|
"@types/ws": "^8.5.13",
|
|
51
51
|
"magic-string": "^0.30.12",
|
|
52
52
|
"mlly": "^1.7.4",
|
|
53
53
|
"tsup": "8.3.0",
|
|
54
54
|
"typescript": "^5.7.2",
|
|
55
|
-
"undici": "^5.28.5",
|
|
56
55
|
"vite": "^6.1.0",
|
|
57
56
|
"vitest": "~3.1.1",
|
|
58
57
|
"@cloudflare/mock-npm-registry": "0.0.0",
|
|
59
|
-
"@cloudflare/workers-
|
|
60
|
-
"@cloudflare/workers-
|
|
58
|
+
"@cloudflare/workers-shared": "0.0.0-e3b3ef51c",
|
|
59
|
+
"@cloudflare/workers-tsconfig": "0.0.0"
|
|
61
60
|
},
|
|
62
61
|
"peerDependencies": {
|
|
63
62
|
"vite": "^6.1.0",
|