@cloudflare/vite-plugin 0.0.0-6479fc522 → 0.0.0-66edd2f3b
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 +5503 -1979
- package/dist/asset-workers/router-worker.js +4274 -1707
- package/dist/index.d.ts +2 -0
- package/dist/index.js +208 -147
- package/dist/runner-worker/index.js +1 -0
- package/package.json +5 -6
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 = [
|
|
@@ -5787,14 +5788,8 @@ var InternalConfigSchema = z.object({
|
|
|
5787
5788
|
script_id: z.number().optional(),
|
|
5788
5789
|
debug: z.boolean().optional()
|
|
5789
5790
|
});
|
|
5790
|
-
var StaticRoutingSchema = z.object({
|
|
5791
|
-
version: z.literal(1),
|
|
5792
|
-
include: z.array(z.string()),
|
|
5793
|
-
exclude: z.array(z.string()).optional()
|
|
5794
|
-
});
|
|
5795
5791
|
var RouterConfigSchema = z.object({
|
|
5796
5792
|
invoke_user_worker_ahead_of_assets: z.boolean().optional(),
|
|
5797
|
-
static_routing: StaticRoutingSchema.optional(),
|
|
5798
5793
|
has_user_worker: z.boolean().optional(),
|
|
5799
5794
|
...InternalConfigSchema.shape
|
|
5800
5795
|
});
|
|
@@ -5835,7 +5830,6 @@ var AssetConfigSchema = z.object({
|
|
|
5835
5830
|
not_found_handling: z.enum(["single-page-application", "404-page", "none"]).optional(),
|
|
5836
5831
|
redirects: RedirectsSchema,
|
|
5837
5832
|
headers: HeadersSchema,
|
|
5838
|
-
has_static_routing: z.boolean().optional(),
|
|
5839
5833
|
...InternalConfigSchema.shape
|
|
5840
5834
|
});
|
|
5841
5835
|
|
|
@@ -12655,8 +12649,8 @@ function packageResolve(specifier, base, conditions) {
|
|
|
12655
12649
|
let packageJsonPath = fileURLToPath$1(packageJsonUrl);
|
|
12656
12650
|
let lastPath;
|
|
12657
12651
|
do {
|
|
12658
|
-
const
|
|
12659
|
-
if (!
|
|
12652
|
+
const stat2 = tryStatSync(packageJsonPath.slice(0, -13));
|
|
12653
|
+
if (!stat2 || !stat2.isDirectory()) {
|
|
12660
12654
|
lastPath = packageJsonPath;
|
|
12661
12655
|
packageJsonUrl = new URL$1(
|
|
12662
12656
|
(isScoped ? "../../../../node_modules/" : "../../../node_modules/") + packageName + "/package.json",
|
|
@@ -12786,8 +12780,8 @@ function _resolve(id, options = {}) {
|
|
|
12786
12780
|
}
|
|
12787
12781
|
if (isAbsolute(id)) {
|
|
12788
12782
|
try {
|
|
12789
|
-
const
|
|
12790
|
-
if (
|
|
12783
|
+
const stat2 = statSync(id);
|
|
12784
|
+
if (stat2.isFile()) {
|
|
12791
12785
|
return pathToFileURL(id);
|
|
12792
12786
|
}
|
|
12793
12787
|
} catch (error) {
|
|
@@ -13017,9 +13011,6 @@ function getOutputDirectory(userConfig, environmentName) {
|
|
|
13017
13011
|
const rootOutputDirectory = userConfig.build?.outDir ?? "dist";
|
|
13018
13012
|
return userConfig.environments?.[environmentName]?.build?.outDir ?? path4.join(rootOutputDirectory, environmentName);
|
|
13019
13013
|
}
|
|
13020
|
-
function getRouterWorker(miniflare2) {
|
|
13021
|
-
return miniflare2.getWorker(ROUTER_WORKER_NAME);
|
|
13022
|
-
}
|
|
13023
13014
|
function toMiniflareRequest(request) {
|
|
13024
13015
|
const host = request.headers.get("Host");
|
|
13025
13016
|
if (host) {
|
|
@@ -13264,7 +13255,7 @@ import { unstable_readConfig } from "wrangler";
|
|
|
13264
13255
|
function getDeployConfigPath(root) {
|
|
13265
13256
|
return path5.resolve(root, ".wrangler", "deploy", "config.json");
|
|
13266
13257
|
}
|
|
13267
|
-
function getWorkerConfigs(root) {
|
|
13258
|
+
function getWorkerConfigs(root, mixedModeEnabled) {
|
|
13268
13259
|
const deployConfigPath = getDeployConfigPath(root);
|
|
13269
13260
|
const deployConfig = JSON.parse(
|
|
13270
13261
|
fs2.readFileSync(deployConfigPath, "utf-8")
|
|
@@ -13277,7 +13268,10 @@ function getWorkerConfigs(root) {
|
|
|
13277
13268
|
path5.dirname(deployConfigPath),
|
|
13278
13269
|
configPath
|
|
13279
13270
|
);
|
|
13280
|
-
return unstable_readConfig(
|
|
13271
|
+
return unstable_readConfig(
|
|
13272
|
+
{ config: resolvedConfigPath },
|
|
13273
|
+
{ experimental: { mixedModeEnabled } }
|
|
13274
|
+
);
|
|
13281
13275
|
});
|
|
13282
13276
|
}
|
|
13283
13277
|
function getRelativePathToWorkerConfig(deployConfigDirectory, root, outputDirectory) {
|
|
@@ -13344,6 +13338,7 @@ import * as fsp from "node:fs/promises";
|
|
|
13344
13338
|
import * as path6 from "node:path";
|
|
13345
13339
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
13346
13340
|
import {
|
|
13341
|
+
getDefaultDevRegistryPath,
|
|
13347
13342
|
kCurrentWorker,
|
|
13348
13343
|
Log,
|
|
13349
13344
|
LogLevel,
|
|
@@ -13352,10 +13347,15 @@ import {
|
|
|
13352
13347
|
import colors2 from "picocolors";
|
|
13353
13348
|
import { globSync } from "tinyglobby";
|
|
13354
13349
|
import "vite";
|
|
13355
|
-
import {
|
|
13356
|
-
|
|
13350
|
+
import {
|
|
13351
|
+
experimental_pickRemoteBindings,
|
|
13352
|
+
experimental_startMixedModeSession,
|
|
13353
|
+
unstable_convertConfigBindingsToStartWorkerBindings,
|
|
13354
|
+
unstable_getMiniflareWorkerOptions
|
|
13355
|
+
} from "wrangler";
|
|
13356
|
+
function getPersistenceRoot(root, persistState) {
|
|
13357
13357
|
if (persistState === false) {
|
|
13358
|
-
return
|
|
13358
|
+
return;
|
|
13359
13359
|
}
|
|
13360
13360
|
const defaultPersistPath = ".wrangler/state";
|
|
13361
13361
|
const persistPath = path6.resolve(
|
|
@@ -13363,14 +13363,7 @@ function getPersistence(root, persistState) {
|
|
|
13363
13363
|
typeof persistState === "object" ? persistState.path : defaultPersistPath,
|
|
13364
13364
|
"v3"
|
|
13365
13365
|
);
|
|
13366
|
-
return
|
|
13367
|
-
cachePersist: path6.join(persistPath, "cache"),
|
|
13368
|
-
d1Persist: path6.join(persistPath, "d1"),
|
|
13369
|
-
durableObjectsPersist: path6.join(persistPath, "do"),
|
|
13370
|
-
kvPersist: path6.join(persistPath, "kv"),
|
|
13371
|
-
r2Persist: path6.join(persistPath, "r2"),
|
|
13372
|
-
workflowsPersist: path6.join(persistPath, "workflows")
|
|
13373
|
-
};
|
|
13366
|
+
return persistPath;
|
|
13374
13367
|
}
|
|
13375
13368
|
function missingWorkerErrorMessage(workerName) {
|
|
13376
13369
|
return `${workerName} does not match a worker name.`;
|
|
@@ -13454,30 +13447,29 @@ function getEntryWorkerConfig(resolvedPluginConfig) {
|
|
|
13454
13447
|
}
|
|
13455
13448
|
return resolvedPluginConfig.workers[resolvedPluginConfig.entryWorkerEnvironmentName];
|
|
13456
13449
|
}
|
|
13457
|
-
function
|
|
13458
|
-
|
|
13450
|
+
function logUnknownTails(tails, userWorkers, log) {
|
|
13451
|
+
for (const tailService of tails ?? []) {
|
|
13459
13452
|
let name;
|
|
13460
13453
|
if (typeof tailService === "string") {
|
|
13461
13454
|
name = tailService;
|
|
13462
13455
|
} else if (typeof tailService === "object" && "name" in tailService && typeof tailService.name === "string") {
|
|
13463
13456
|
name = tailService.name;
|
|
13464
13457
|
} else {
|
|
13465
|
-
|
|
13458
|
+
continue;
|
|
13466
13459
|
}
|
|
13467
13460
|
const found = userWorkers.some((w) => w.name === name);
|
|
13468
13461
|
if (!found) {
|
|
13469
13462
|
log(
|
|
13470
13463
|
colors2.dim(
|
|
13471
13464
|
colors2.yellow(
|
|
13472
|
-
`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.`
|
|
13473
13466
|
)
|
|
13474
13467
|
)
|
|
13475
13468
|
);
|
|
13476
13469
|
}
|
|
13477
|
-
|
|
13478
|
-
});
|
|
13470
|
+
}
|
|
13479
13471
|
}
|
|
13480
|
-
function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPort) {
|
|
13472
|
+
async function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPort) {
|
|
13481
13473
|
const resolvedViteConfig = viteDevServer.config;
|
|
13482
13474
|
const entryWorkerConfig = getEntryWorkerConfig(resolvedPluginConfig);
|
|
13483
13475
|
const assetsConfig = getAssetsConfig(
|
|
@@ -13528,12 +13520,14 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13528
13520
|
serviceBindings: {
|
|
13529
13521
|
__VITE_ASSET_EXISTS__: async (request) => {
|
|
13530
13522
|
const { pathname } = new URL(request.url);
|
|
13531
|
-
|
|
13532
|
-
|
|
13533
|
-
|
|
13534
|
-
|
|
13535
|
-
|
|
13536
|
-
|
|
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
|
+
}
|
|
13537
13531
|
}
|
|
13538
13532
|
return MiniflareResponse.json(exists);
|
|
13539
13533
|
},
|
|
@@ -13547,59 +13541,75 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13547
13541
|
headers: { "Content-Type": "text/html" }
|
|
13548
13542
|
});
|
|
13549
13543
|
} catch (error) {
|
|
13550
|
-
throw new Error(`Unexpected error. Failed to load ${pathname}
|
|
13544
|
+
throw new Error(`Unexpected error. Failed to load "${pathname}".`);
|
|
13551
13545
|
}
|
|
13552
13546
|
}
|
|
13553
13547
|
}
|
|
13554
13548
|
}
|
|
13555
13549
|
];
|
|
13556
|
-
const workersFromConfig = resolvedPluginConfig.type === "workers" ?
|
|
13557
|
-
(
|
|
13558
|
-
|
|
13559
|
-
|
|
13560
|
-
|
|
13561
|
-
|
|
13562
|
-
|
|
13563
|
-
|
|
13564
|
-
|
|
13565
|
-
|
|
13566
|
-
|
|
13567
|
-
|
|
13568
|
-
|
|
13569
|
-
|
|
13570
|
-
|
|
13571
|
-
|
|
13572
|
-
|
|
13573
|
-
|
|
13574
|
-
|
|
13575
|
-
|
|
13576
|
-
...workerOptions
|
|
13577
|
-
|
|
13578
|
-
|
|
13579
|
-
|
|
13580
|
-
|
|
13581
|
-
|
|
13582
|
-
|
|
13583
|
-
|
|
13584
|
-
|
|
13585
|
-
|
|
13586
|
-
|
|
13587
|
-
|
|
13588
|
-
|
|
13589
|
-
|
|
13590
|
-
|
|
13591
|
-
|
|
13592
|
-
|
|
13593
|
-
|
|
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);
|
|
13594
13607
|
}
|
|
13595
|
-
const devEnvironment = viteDevServer.environments[environmentName];
|
|
13596
|
-
const result = await devEnvironment.hot.handleInvoke(payload);
|
|
13597
|
-
return MiniflareResponse.json(result);
|
|
13598
13608
|
}
|
|
13599
13609
|
}
|
|
13600
|
-
}
|
|
13601
|
-
}
|
|
13602
|
-
|
|
13610
|
+
};
|
|
13611
|
+
}
|
|
13612
|
+
)
|
|
13603
13613
|
) : [];
|
|
13604
13614
|
const userWorkers = workersFromConfig.map((options) => options.worker);
|
|
13605
13615
|
const externalWorkers = workersFromConfig.flatMap(
|
|
@@ -13611,8 +13621,10 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13611
13621
|
const logger = new ViteMiniflareLogger(resolvedViteConfig);
|
|
13612
13622
|
return {
|
|
13613
13623
|
log: logger,
|
|
13624
|
+
logRequests: false,
|
|
13614
13625
|
inspectorPort: inspectorPort === false ? void 0 : inspectorPort,
|
|
13615
13626
|
unsafeInspectorProxy: inspectorPort !== false,
|
|
13627
|
+
unsafeDevRegistryPath: getDefaultDevRegistryPath(),
|
|
13616
13628
|
handleRuntimeStdio(stdout, stderr) {
|
|
13617
13629
|
const decoder = new TextDecoder();
|
|
13618
13630
|
stdout.forEach((data2) => logger.info(decoder.decode(data2)));
|
|
@@ -13620,7 +13632,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13620
13632
|
(error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
|
|
13621
13633
|
);
|
|
13622
13634
|
},
|
|
13623
|
-
|
|
13635
|
+
defaultPersistRoot: getPersistenceRoot(
|
|
13624
13636
|
resolvedViteConfig.root,
|
|
13625
13637
|
resolvedPluginConfig.persistState
|
|
13626
13638
|
),
|
|
@@ -13666,13 +13678,13 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13666
13678
|
`export const ${className} = createWorkflowEntrypointWrapper('${className}');`
|
|
13667
13679
|
);
|
|
13668
13680
|
}
|
|
13681
|
+
logUnknownTails(
|
|
13682
|
+
workerOptions.tails,
|
|
13683
|
+
userWorkers,
|
|
13684
|
+
viteDevServer.config.logger.warn
|
|
13685
|
+
);
|
|
13669
13686
|
return {
|
|
13670
13687
|
...workerOptions,
|
|
13671
|
-
tails: filterTails(
|
|
13672
|
-
workerOptions.tails,
|
|
13673
|
-
userWorkers,
|
|
13674
|
-
viteDevServer.config.logger.warn
|
|
13675
|
-
),
|
|
13676
13688
|
modules: [
|
|
13677
13689
|
{
|
|
13678
13690
|
type: "ESModule",
|
|
@@ -13754,32 +13766,48 @@ function getPreviewModules(main, modulesRules) {
|
|
|
13754
13766
|
]
|
|
13755
13767
|
};
|
|
13756
13768
|
}
|
|
13757
|
-
function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistState, inspectorPort) {
|
|
13769
|
+
async function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistState, mixedModeEnabled, inspectorPort) {
|
|
13758
13770
|
const resolvedViteConfig = vitePreviewServer.config;
|
|
13759
|
-
const workers =
|
|
13760
|
-
|
|
13761
|
-
|
|
13762
|
-
|
|
13763
|
-
|
|
13764
|
-
|
|
13765
|
-
|
|
13766
|
-
|
|
13767
|
-
|
|
13768
|
-
|
|
13769
|
-
|
|
13770
|
-
|
|
13771
|
-
|
|
13772
|
-
|
|
13773
|
-
|
|
13774
|
-
|
|
13775
|
-
|
|
13776
|
-
|
|
13777
|
-
|
|
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();
|
|
13778
13805
|
const logger = new ViteMiniflareLogger(resolvedViteConfig);
|
|
13779
13806
|
return {
|
|
13780
13807
|
log: logger,
|
|
13781
13808
|
inspectorPort: inspectorPort === false ? void 0 : inspectorPort,
|
|
13782
13809
|
unsafeInspectorProxy: inspectorPort !== false,
|
|
13810
|
+
unsafeDevRegistryPath: getDefaultDevRegistryPath(),
|
|
13783
13811
|
handleRuntimeStdio(stdout, stderr) {
|
|
13784
13812
|
const decoder = new TextDecoder();
|
|
13785
13813
|
stdout.forEach((data2) => logger.info(decoder.decode(data2)));
|
|
@@ -13787,11 +13815,13 @@ function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistSta
|
|
|
13787
13815
|
(error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
|
|
13788
13816
|
);
|
|
13789
13817
|
},
|
|
13790
|
-
|
|
13818
|
+
defaultPersistRoot: getPersistenceRoot(
|
|
13819
|
+
resolvedViteConfig.root,
|
|
13820
|
+
persistState
|
|
13821
|
+
),
|
|
13791
13822
|
workers
|
|
13792
13823
|
};
|
|
13793
13824
|
}
|
|
13794
|
-
var removedMessages = [/^Ready on http/, /^Updated and ready on http/];
|
|
13795
13825
|
var ViteMiniflareLogger = class extends Log {
|
|
13796
13826
|
logger;
|
|
13797
13827
|
constructor(config) {
|
|
@@ -13799,11 +13829,6 @@ var ViteMiniflareLogger = class extends Log {
|
|
|
13799
13829
|
this.logger = config.logger;
|
|
13800
13830
|
}
|
|
13801
13831
|
logWithLevel(level, message) {
|
|
13802
|
-
for (const removedMessage of removedMessages) {
|
|
13803
|
-
if (removedMessage.test(message)) {
|
|
13804
|
-
return;
|
|
13805
|
-
}
|
|
13806
|
-
}
|
|
13807
13832
|
switch (level) {
|
|
13808
13833
|
case LogLevel.ERROR:
|
|
13809
13834
|
return this.logger.error(message);
|
|
@@ -13813,6 +13838,8 @@ var ViteMiniflareLogger = class extends Log {
|
|
|
13813
13838
|
return this.logger.info(message);
|
|
13814
13839
|
}
|
|
13815
13840
|
}
|
|
13841
|
+
logReady() {
|
|
13842
|
+
}
|
|
13816
13843
|
};
|
|
13817
13844
|
function miniflareLogLevelFromViteLogLevel(level = "info") {
|
|
13818
13845
|
switch (level) {
|
|
@@ -13826,6 +13853,24 @@ function miniflareLogLevelFromViteLogLevel(level = "info") {
|
|
|
13826
13853
|
return LogLevel.NONE;
|
|
13827
13854
|
}
|
|
13828
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
|
+
}
|
|
13829
13874
|
|
|
13830
13875
|
// src/plugin-config.ts
|
|
13831
13876
|
import assert8 from "node:assert";
|
|
@@ -13880,12 +13925,15 @@ var nullableNonApplicable = [
|
|
|
13880
13925
|
"site",
|
|
13881
13926
|
"tsconfig"
|
|
13882
13927
|
];
|
|
13883
|
-
function readWorkerConfig(configPath, env2) {
|
|
13928
|
+
function readWorkerConfig(configPath, env2, mixedModeEnabled) {
|
|
13884
13929
|
const nonApplicable = {
|
|
13885
13930
|
replacedByVite: /* @__PURE__ */ new Set(),
|
|
13886
13931
|
notRelevant: /* @__PURE__ */ new Set()
|
|
13887
13932
|
};
|
|
13888
|
-
const config = unstable_readConfig2(
|
|
13933
|
+
const config = unstable_readConfig2(
|
|
13934
|
+
{ config: configPath, env: env2 },
|
|
13935
|
+
{ experimental: { mixedModeEnabled } }
|
|
13936
|
+
);
|
|
13889
13937
|
const raw = structuredClone(config);
|
|
13890
13938
|
nullableNonApplicable.forEach((prop) => {
|
|
13891
13939
|
if (config[prop] !== void 0) {
|
|
@@ -13980,11 +14028,15 @@ function isNotRelevant(configName) {
|
|
|
13980
14028
|
function missingFieldErrorMessage(field, configPath, env2) {
|
|
13981
14029
|
return `No ${field} field provided in '${configPath}'${env2 ? ` for '${env2}' environment` : ""}`;
|
|
13982
14030
|
}
|
|
13983
|
-
function getWorkerConfig(configPath, env2, opts) {
|
|
14031
|
+
function getWorkerConfig(configPath, env2, mixedModeEnabled, opts) {
|
|
13984
14032
|
if (opts?.visitedConfigPaths?.has(configPath)) {
|
|
13985
14033
|
throw new Error(`Duplicate Wrangler config path found: ${configPath}`);
|
|
13986
14034
|
}
|
|
13987
|
-
const { raw, config, nonApplicable } = readWorkerConfig(
|
|
14035
|
+
const { raw, config, nonApplicable } = readWorkerConfig(
|
|
14036
|
+
configPath,
|
|
14037
|
+
env2,
|
|
14038
|
+
mixedModeEnabled
|
|
14039
|
+
);
|
|
13988
14040
|
opts?.visitedConfigPaths?.add(configPath);
|
|
13989
14041
|
if (!config.name) {
|
|
13990
14042
|
throw new Error(missingFieldErrorMessage(`'name'`, configPath, env2));
|
|
@@ -14109,6 +14161,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
14109
14161
|
const entryWorkerResolvedConfig = getWorkerConfig(
|
|
14110
14162
|
entryWorkerConfigPath,
|
|
14111
14163
|
cloudflareEnv,
|
|
14164
|
+
pluginConfig.experimental?.mixedMode ?? false,
|
|
14112
14165
|
{
|
|
14113
14166
|
visitedConfigPaths: configPaths,
|
|
14114
14167
|
isEntryWorker: true
|
|
@@ -14142,6 +14195,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
14142
14195
|
const workerResolvedConfig = getWorkerConfig(
|
|
14143
14196
|
workerConfigPath,
|
|
14144
14197
|
cloudflareEnv,
|
|
14198
|
+
pluginConfig.experimental?.mixedMode ?? false,
|
|
14145
14199
|
{
|
|
14146
14200
|
visitedConfigPaths: configPaths
|
|
14147
14201
|
}
|
|
@@ -14459,28 +14513,21 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14459
14513
|
pluginConfig,
|
|
14460
14514
|
viteDevServer
|
|
14461
14515
|
);
|
|
14516
|
+
const miniflareDevOptions = await getDevMiniflareOptions(
|
|
14517
|
+
resolvedPluginConfig,
|
|
14518
|
+
viteDevServer,
|
|
14519
|
+
inputInspectorPort
|
|
14520
|
+
);
|
|
14462
14521
|
if (!miniflare) {
|
|
14463
|
-
miniflare = new Miniflare(
|
|
14464
|
-
getDevMiniflareOptions(
|
|
14465
|
-
resolvedPluginConfig,
|
|
14466
|
-
viteDevServer,
|
|
14467
|
-
inputInspectorPort
|
|
14468
|
-
)
|
|
14469
|
-
);
|
|
14522
|
+
miniflare = new Miniflare(miniflareDevOptions);
|
|
14470
14523
|
} else {
|
|
14471
|
-
await miniflare.setOptions(
|
|
14472
|
-
getDevMiniflareOptions(
|
|
14473
|
-
resolvedPluginConfig,
|
|
14474
|
-
viteDevServer,
|
|
14475
|
-
inputInspectorPort
|
|
14476
|
-
)
|
|
14477
|
-
);
|
|
14524
|
+
await miniflare.setOptions(miniflareDevOptions);
|
|
14478
14525
|
}
|
|
14479
14526
|
await initRunners(resolvedPluginConfig, viteDevServer, miniflare);
|
|
14480
14527
|
if (viteDevServer.httpServer) {
|
|
14481
14528
|
handleWebSocket(viteDevServer.httpServer, async () => {
|
|
14482
14529
|
assert10(miniflare, `Miniflare not defined`);
|
|
14483
|
-
const routerWorker = await
|
|
14530
|
+
const routerWorker = await miniflare.getWorker(ROUTER_WORKER_NAME);
|
|
14484
14531
|
return routerWorker.fetch;
|
|
14485
14532
|
});
|
|
14486
14533
|
}
|
|
@@ -14488,14 +14535,21 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14488
14535
|
viteDevServer.middlewares.use(async (req, res, next) => {
|
|
14489
14536
|
try {
|
|
14490
14537
|
assert10(miniflare, `Miniflare not defined`);
|
|
14491
|
-
const routerWorker = await getRouterWorker(miniflare);
|
|
14492
14538
|
const request = createRequest(req, res);
|
|
14493
|
-
|
|
14494
|
-
|
|
14495
|
-
|
|
14496
|
-
|
|
14497
|
-
|
|
14498
|
-
|
|
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
|
+
}
|
|
14499
14553
|
if (req.httpVersionMajor === 2) {
|
|
14500
14554
|
response.headers.delete("transfer-encoding");
|
|
14501
14555
|
}
|
|
@@ -14507,16 +14561,20 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14507
14561
|
};
|
|
14508
14562
|
},
|
|
14509
14563
|
async configurePreviewServer(vitePreviewServer) {
|
|
14510
|
-
const workerConfigs = getWorkerConfigs(
|
|
14564
|
+
const workerConfigs = getWorkerConfigs(
|
|
14565
|
+
vitePreviewServer.config.root,
|
|
14566
|
+
pluginConfig.experimental?.mixedMode ?? false
|
|
14567
|
+
);
|
|
14511
14568
|
const inputInspectorPort = await getInputInspectorPortOption(
|
|
14512
14569
|
pluginConfig,
|
|
14513
14570
|
vitePreviewServer
|
|
14514
14571
|
);
|
|
14515
14572
|
const miniflare2 = new Miniflare(
|
|
14516
|
-
getPreviewMiniflareOptions(
|
|
14573
|
+
await getPreviewMiniflareOptions(
|
|
14517
14574
|
vitePreviewServer,
|
|
14518
14575
|
workerConfigs,
|
|
14519
14576
|
pluginConfig.persistState ?? true,
|
|
14577
|
+
!!pluginConfig.experimental?.mixedMode,
|
|
14520
14578
|
inputInspectorPort
|
|
14521
14579
|
)
|
|
14522
14580
|
);
|
|
@@ -14773,7 +14831,10 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14773
14831
|
});
|
|
14774
14832
|
},
|
|
14775
14833
|
async configurePreviewServer(vitePreviewServer) {
|
|
14776
|
-
const workerConfigs = getWorkerConfigs(
|
|
14834
|
+
const workerConfigs = getWorkerConfigs(
|
|
14835
|
+
vitePreviewServer.config.root,
|
|
14836
|
+
pluginConfig.experimental?.mixedMode ?? false
|
|
14837
|
+
);
|
|
14777
14838
|
if (workerConfigs.length >= 1 && pluginConfig.inspectorPort !== false) {
|
|
14778
14839
|
addDebugToVitePrintUrls(vitePreviewServer);
|
|
14779
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-66edd2f3b",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -41,22 +41,21 @@
|
|
|
41
41
|
"tinyglobby": "^0.2.12",
|
|
42
42
|
"unenv": "2.0.0-rc.17",
|
|
43
43
|
"ws": "8.18.0",
|
|
44
|
-
"
|
|
45
|
-
"
|
|
44
|
+
"miniflare": "0.0.0-66edd2f3b",
|
|
45
|
+
"wrangler": "0.0.0-66edd2f3b"
|
|
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-shared": "0.0.0-
|
|
58
|
+
"@cloudflare/workers-shared": "0.0.0-66edd2f3b",
|
|
60
59
|
"@cloudflare/workers-tsconfig": "0.0.0"
|
|
61
60
|
},
|
|
62
61
|
"peerDependencies": {
|