@cloudflare/vite-plugin 0.0.0-abffd425c → 0.0.0-ad3d0f9a8
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 +679 -660
- package/dist/asset-workers/router-worker.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +270 -161
- package/dist/runner-worker/index.js +11 -10
- package/package.json +10 -10
package/dist/index.js
CHANGED
|
@@ -489,7 +489,7 @@ import assert10 from "node:assert";
|
|
|
489
489
|
import * as fs5 from "node:fs";
|
|
490
490
|
import * as fsp2 from "node:fs/promises";
|
|
491
491
|
import * as path9 from "node:path";
|
|
492
|
-
import {
|
|
492
|
+
import { createRequest, sendResponse } from "@mjackson/node-fetch-server";
|
|
493
493
|
import replace from "@rollup/plugin-replace";
|
|
494
494
|
|
|
495
495
|
// ../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.0/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
|
|
@@ -1558,7 +1558,7 @@ var MagicString = class _MagicString {
|
|
|
1558
1558
|
|
|
1559
1559
|
// src/index.ts
|
|
1560
1560
|
import { Miniflare } from "miniflare";
|
|
1561
|
-
import
|
|
1561
|
+
import colors3 from "picocolors";
|
|
1562
1562
|
import * as vite7 from "vite";
|
|
1563
1563
|
|
|
1564
1564
|
// src/constants.ts
|
|
@@ -1589,7 +1589,7 @@ function matchAdditionalModule(source) {
|
|
|
1589
1589
|
return null;
|
|
1590
1590
|
}
|
|
1591
1591
|
function createModuleReference(type, id) {
|
|
1592
|
-
return `__CLOUDFLARE_MODULE__${type}__${id}
|
|
1592
|
+
return `__CLOUDFLARE_MODULE__${type}__${id}__CLOUDFLARE_MODULE__`;
|
|
1593
1593
|
}
|
|
1594
1594
|
|
|
1595
1595
|
// src/asset-config.ts
|
|
@@ -5784,7 +5784,8 @@ var z = /* @__PURE__ */ Object.freeze({
|
|
|
5784
5784
|
// ../workers-shared/utils/types.ts
|
|
5785
5785
|
var InternalConfigSchema = z.object({
|
|
5786
5786
|
account_id: z.number().optional(),
|
|
5787
|
-
script_id: z.number().optional()
|
|
5787
|
+
script_id: z.number().optional(),
|
|
5788
|
+
debug: z.boolean().optional()
|
|
5788
5789
|
});
|
|
5789
5790
|
var RouterConfigSchema = z.object({
|
|
5790
5791
|
invoke_user_worker_ahead_of_assets: z.boolean().optional(),
|
|
@@ -5832,14 +5833,14 @@ var AssetConfigSchema = z.object({
|
|
|
5832
5833
|
});
|
|
5833
5834
|
|
|
5834
5835
|
// src/asset-config.ts
|
|
5835
|
-
function hasAssetsConfigChanged(resolvedPluginConfig, resolvedViteConfig,
|
|
5836
|
+
function hasAssetsConfigChanged(resolvedPluginConfig, resolvedViteConfig, changedFilePath) {
|
|
5836
5837
|
if (!resolvedPluginConfig.experimental?.headersAndRedirectsDevModeSupport) {
|
|
5837
5838
|
return false;
|
|
5838
5839
|
}
|
|
5839
5840
|
return [
|
|
5840
5841
|
getRedirectsConfigPath(resolvedViteConfig),
|
|
5841
5842
|
getHeadersConfigPath(resolvedViteConfig)
|
|
5842
|
-
].includes(
|
|
5843
|
+
].includes(changedFilePath);
|
|
5843
5844
|
}
|
|
5844
5845
|
function getAssetsConfig(resolvedPluginConfig, entryWorkerConfig, resolvedConfig) {
|
|
5845
5846
|
const assetsConfig = resolvedPluginConfig.type === "assets-only" ? resolvedPluginConfig.config.assets : entryWorkerConfig?.assets;
|
|
@@ -12880,6 +12881,15 @@ function isNodeCompat(workerConfig) {
|
|
|
12880
12881
|
}
|
|
12881
12882
|
return false;
|
|
12882
12883
|
}
|
|
12884
|
+
function isNodeAls(workerConfig) {
|
|
12885
|
+
return workerConfig !== void 0 && getNodeCompat(
|
|
12886
|
+
workerConfig.compatibility_date,
|
|
12887
|
+
workerConfig.compatibility_flags ?? []
|
|
12888
|
+
).mode === "als";
|
|
12889
|
+
}
|
|
12890
|
+
function isNodeAlsModule(path10) {
|
|
12891
|
+
return /^(node:)?async_hooks$/.test(path10);
|
|
12892
|
+
}
|
|
12883
12893
|
function injectGlobalCode(id, code) {
|
|
12884
12894
|
const injectedCode = Object.entries(env.inject).map(([globalName, globalInject]) => {
|
|
12885
12895
|
if (typeof globalInject === "string") {
|
|
@@ -12910,7 +12920,7 @@ globalThis.${globalName} = var_${globalName}.${exportName};
|
|
|
12910
12920
|
}
|
|
12911
12921
|
function resolveNodeJSImport(source) {
|
|
12912
12922
|
const alias = env.alias[source];
|
|
12913
|
-
if (alias) {
|
|
12923
|
+
if (alias && !nodeCompatExternals.has(alias)) {
|
|
12914
12924
|
return {
|
|
12915
12925
|
unresolved: alias,
|
|
12916
12926
|
resolved: resolvePathSync(alias, { url: import.meta.url })
|
|
@@ -12983,7 +12993,7 @@ var NodeJsCompatWarnings = class {
|
|
|
12983
12993
|
// src/shared.ts
|
|
12984
12994
|
var UNKNOWN_HOST = "http://localhost";
|
|
12985
12995
|
var INIT_PATH = "/__vite_plugin_cloudflare_init__";
|
|
12986
|
-
var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)
|
|
12996
|
+
var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)__CLOUDFLARE_MODULE__`;
|
|
12987
12997
|
var additionalModuleRE = new RegExp(ADDITIONAL_MODULE_PATTERN);
|
|
12988
12998
|
var additionalModuleGlobalRE = new RegExp(
|
|
12989
12999
|
ADDITIONAL_MODULE_PATTERN,
|
|
@@ -13019,19 +13029,6 @@ function toMiniflareRequest(request) {
|
|
|
13019
13029
|
duplex: "half"
|
|
13020
13030
|
});
|
|
13021
13031
|
}
|
|
13022
|
-
function nodeHeadersToWebHeaders(nodeHeaders) {
|
|
13023
|
-
const headers = new Headers();
|
|
13024
|
-
for (const [key, value] of Object.entries(nodeHeaders)) {
|
|
13025
|
-
if (typeof value === "string") {
|
|
13026
|
-
headers.append(key, value);
|
|
13027
|
-
} else if (Array.isArray(value)) {
|
|
13028
|
-
for (const item of value) {
|
|
13029
|
-
headers.append(key, item);
|
|
13030
|
-
}
|
|
13031
|
-
}
|
|
13032
|
-
}
|
|
13033
|
-
return headers;
|
|
13034
|
-
}
|
|
13035
13032
|
var postfixRE = /[?#].*$/;
|
|
13036
13033
|
function cleanUrl(url) {
|
|
13037
13034
|
return url.replace(postfixRE, "");
|
|
@@ -13345,12 +13342,18 @@ import {
|
|
|
13345
13342
|
LogLevel,
|
|
13346
13343
|
Response as MiniflareResponse
|
|
13347
13344
|
} from "miniflare";
|
|
13345
|
+
import colors2 from "picocolors";
|
|
13348
13346
|
import { globSync } from "tinyglobby";
|
|
13349
13347
|
import "vite";
|
|
13350
|
-
import {
|
|
13351
|
-
|
|
13348
|
+
import {
|
|
13349
|
+
experimental_pickRemoteBindings,
|
|
13350
|
+
experimental_startMixedModeSession,
|
|
13351
|
+
unstable_convertConfigBindingsToStartWorkerBindings,
|
|
13352
|
+
unstable_getMiniflareWorkerOptions
|
|
13353
|
+
} from "wrangler";
|
|
13354
|
+
function getPersistenceRoot(root, persistState) {
|
|
13352
13355
|
if (persistState === false) {
|
|
13353
|
-
return
|
|
13356
|
+
return;
|
|
13354
13357
|
}
|
|
13355
13358
|
const defaultPersistPath = ".wrangler/state";
|
|
13356
13359
|
const persistPath = path6.resolve(
|
|
@@ -13358,14 +13361,7 @@ function getPersistence(root, persistState) {
|
|
|
13358
13361
|
typeof persistState === "object" ? persistState.path : defaultPersistPath,
|
|
13359
13362
|
"v3"
|
|
13360
13363
|
);
|
|
13361
|
-
return
|
|
13362
|
-
cachePersist: path6.join(persistPath, "cache"),
|
|
13363
|
-
d1Persist: path6.join(persistPath, "d1"),
|
|
13364
|
-
durableObjectsPersist: path6.join(persistPath, "do"),
|
|
13365
|
-
kvPersist: path6.join(persistPath, "kv"),
|
|
13366
|
-
r2Persist: path6.join(persistPath, "r2"),
|
|
13367
|
-
workflowsPersist: path6.join(persistPath, "workflows")
|
|
13368
|
-
};
|
|
13364
|
+
return persistPath;
|
|
13369
13365
|
}
|
|
13370
13366
|
function missingWorkerErrorMessage(workerName) {
|
|
13371
13367
|
return `${workerName} does not match a worker name.`;
|
|
@@ -13449,7 +13445,30 @@ function getEntryWorkerConfig(resolvedPluginConfig) {
|
|
|
13449
13445
|
}
|
|
13450
13446
|
return resolvedPluginConfig.workers[resolvedPluginConfig.entryWorkerEnvironmentName];
|
|
13451
13447
|
}
|
|
13452
|
-
function
|
|
13448
|
+
function filterTails(tails, userWorkers, log) {
|
|
13449
|
+
return tails?.filter((tailService) => {
|
|
13450
|
+
let name;
|
|
13451
|
+
if (typeof tailService === "string") {
|
|
13452
|
+
name = tailService;
|
|
13453
|
+
} else if (typeof tailService === "object" && "name" in tailService && typeof tailService.name === "string") {
|
|
13454
|
+
name = tailService.name;
|
|
13455
|
+
} else {
|
|
13456
|
+
return true;
|
|
13457
|
+
}
|
|
13458
|
+
const found = userWorkers.some((w) => w.name === name);
|
|
13459
|
+
if (!found) {
|
|
13460
|
+
log(
|
|
13461
|
+
colors2.dim(
|
|
13462
|
+
colors2.yellow(
|
|
13463
|
+
`Tail consumer "${name}" was not found in your config. Make sure you add it if you'd like to simulate receiving tail events locally.`
|
|
13464
|
+
)
|
|
13465
|
+
)
|
|
13466
|
+
);
|
|
13467
|
+
}
|
|
13468
|
+
return found;
|
|
13469
|
+
});
|
|
13470
|
+
}
|
|
13471
|
+
async function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPort) {
|
|
13453
13472
|
const resolvedViteConfig = viteDevServer.config;
|
|
13454
13473
|
const entryWorkerConfig = getEntryWorkerConfig(resolvedPluginConfig);
|
|
13455
13474
|
const assetsConfig = getAssetsConfig(
|
|
@@ -13525,53 +13544,59 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13525
13544
|
}
|
|
13526
13545
|
}
|
|
13527
13546
|
];
|
|
13528
|
-
const workersFromConfig = resolvedPluginConfig.type === "workers" ?
|
|
13529
|
-
(
|
|
13530
|
-
|
|
13531
|
-
|
|
13532
|
-
|
|
13533
|
-
|
|
13534
|
-
|
|
13535
|
-
|
|
13536
|
-
|
|
13537
|
-
|
|
13538
|
-
|
|
13539
|
-
|
|
13540
|
-
|
|
13541
|
-
|
|
13542
|
-
|
|
13543
|
-
|
|
13544
|
-
|
|
13545
|
-
|
|
13546
|
-
|
|
13547
|
-
|
|
13548
|
-
|
|
13549
|
-
|
|
13550
|
-
|
|
13551
|
-
|
|
13552
|
-
|
|
13553
|
-
|
|
13554
|
-
|
|
13555
|
-
|
|
13556
|
-
|
|
13557
|
-
|
|
13558
|
-
|
|
13559
|
-
|
|
13560
|
-
|
|
13561
|
-
|
|
13562
|
-
|
|
13563
|
-
|
|
13564
|
-
|
|
13565
|
-
|
|
13547
|
+
const workersFromConfig = resolvedPluginConfig.type === "workers" ? await Promise.all(
|
|
13548
|
+
Object.entries(resolvedPluginConfig.workers).map(
|
|
13549
|
+
async ([environmentName, workerConfig]) => {
|
|
13550
|
+
const mixedModeSession = resolvedPluginConfig.experimental.mixedMode ? await maybeStartOrUpdateMixedModeSession(workerConfig) : void 0;
|
|
13551
|
+
const miniflareWorkerOptions = unstable_getMiniflareWorkerOptions(
|
|
13552
|
+
{
|
|
13553
|
+
...workerConfig,
|
|
13554
|
+
assets: void 0
|
|
13555
|
+
},
|
|
13556
|
+
resolvedPluginConfig.cloudflareEnv,
|
|
13557
|
+
{
|
|
13558
|
+
mixedModeConnectionString: mixedModeSession?.mixedModeConnectionString
|
|
13559
|
+
}
|
|
13560
|
+
);
|
|
13561
|
+
const { externalWorkers: externalWorkers2 } = miniflareWorkerOptions;
|
|
13562
|
+
const { ratelimits, ...workerOptions } = miniflareWorkerOptions.workerOptions;
|
|
13563
|
+
return {
|
|
13564
|
+
externalWorkers: externalWorkers2,
|
|
13565
|
+
worker: {
|
|
13566
|
+
...workerOptions,
|
|
13567
|
+
name: workerOptions.name ?? workerConfig.name,
|
|
13568
|
+
unsafeInspectorProxy: inspectorPort !== false,
|
|
13569
|
+
modulesRoot: miniflareModulesRoot,
|
|
13570
|
+
unsafeEvalBinding: "__VITE_UNSAFE_EVAL__",
|
|
13571
|
+
serviceBindings: {
|
|
13572
|
+
...workerOptions.serviceBindings,
|
|
13573
|
+
...environmentName === resolvedPluginConfig.entryWorkerEnvironmentName && workerConfig.assets?.binding ? {
|
|
13574
|
+
[workerConfig.assets.binding]: ASSET_WORKER_NAME
|
|
13575
|
+
} : {},
|
|
13576
|
+
__VITE_INVOKE_MODULE__: async (request) => {
|
|
13577
|
+
const payload = await request.json();
|
|
13578
|
+
const invokePayloadData = payload.data;
|
|
13579
|
+
assert6(
|
|
13580
|
+
invokePayloadData.name === "fetchModule",
|
|
13581
|
+
`Invalid invoke event: ${invokePayloadData.name}`
|
|
13582
|
+
);
|
|
13583
|
+
const [moduleId] = invokePayloadData.data;
|
|
13584
|
+
if (additionalModuleRE.test(moduleId)) {
|
|
13585
|
+
const result2 = {
|
|
13586
|
+
externalize: moduleId,
|
|
13587
|
+
type: "module"
|
|
13588
|
+
};
|
|
13589
|
+
return MiniflareResponse.json({ result: result2 });
|
|
13590
|
+
}
|
|
13591
|
+
const devEnvironment = viteDevServer.environments[environmentName];
|
|
13592
|
+
const result = await devEnvironment.hot.handleInvoke(payload);
|
|
13593
|
+
return MiniflareResponse.json(result);
|
|
13566
13594
|
}
|
|
13567
|
-
const devEnvironment = viteDevServer.environments[environmentName];
|
|
13568
|
-
const result = await devEnvironment.hot.handleInvoke(payload);
|
|
13569
|
-
return MiniflareResponse.json(result);
|
|
13570
13595
|
}
|
|
13571
13596
|
}
|
|
13572
|
-
}
|
|
13573
|
-
}
|
|
13574
|
-
|
|
13597
|
+
};
|
|
13598
|
+
}
|
|
13599
|
+
)
|
|
13575
13600
|
) : [];
|
|
13576
13601
|
const userWorkers = workersFromConfig.map((options) => options.worker);
|
|
13577
13602
|
const externalWorkers = workersFromConfig.flatMap(
|
|
@@ -13583,6 +13608,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13583
13608
|
const logger = new ViteMiniflareLogger(resolvedViteConfig);
|
|
13584
13609
|
return {
|
|
13585
13610
|
log: logger,
|
|
13611
|
+
logRequests: false,
|
|
13586
13612
|
inspectorPort: inspectorPort === false ? void 0 : inspectorPort,
|
|
13587
13613
|
unsafeInspectorProxy: inspectorPort !== false,
|
|
13588
13614
|
handleRuntimeStdio(stdout, stderr) {
|
|
@@ -13592,7 +13618,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13592
13618
|
(error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
|
|
13593
13619
|
);
|
|
13594
13620
|
},
|
|
13595
|
-
|
|
13621
|
+
defaultPersistRoot: getPersistenceRoot(
|
|
13596
13622
|
resolvedViteConfig.root,
|
|
13597
13623
|
resolvedPluginConfig.persistState
|
|
13598
13624
|
),
|
|
@@ -13640,6 +13666,11 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13640
13666
|
}
|
|
13641
13667
|
return {
|
|
13642
13668
|
...workerOptions,
|
|
13669
|
+
tails: filterTails(
|
|
13670
|
+
workerOptions.tails,
|
|
13671
|
+
userWorkers,
|
|
13672
|
+
viteDevServer.config.logger.warn
|
|
13673
|
+
),
|
|
13643
13674
|
modules: [
|
|
13644
13675
|
{
|
|
13645
13676
|
type: "ESModule",
|
|
@@ -13721,22 +13752,36 @@ function getPreviewModules(main, modulesRules) {
|
|
|
13721
13752
|
]
|
|
13722
13753
|
};
|
|
13723
13754
|
}
|
|
13724
|
-
function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistState, inspectorPort) {
|
|
13755
|
+
async function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistState, mixedModeEnabled, inspectorPort) {
|
|
13725
13756
|
const resolvedViteConfig = vitePreviewServer.config;
|
|
13726
|
-
const workers =
|
|
13727
|
-
|
|
13728
|
-
|
|
13729
|
-
|
|
13730
|
-
|
|
13731
|
-
|
|
13732
|
-
|
|
13733
|
-
|
|
13734
|
-
|
|
13735
|
-
|
|
13736
|
-
}
|
|
13737
|
-
...
|
|
13738
|
-
|
|
13739
|
-
|
|
13757
|
+
const workers = (await Promise.all(
|
|
13758
|
+
workerConfigs.map(async (workerConfig) => {
|
|
13759
|
+
const mixedModeSession = mixedModeEnabled ? await maybeStartOrUpdateMixedModeSession(workerConfig) : void 0;
|
|
13760
|
+
const miniflareWorkerOptions = unstable_getMiniflareWorkerOptions(
|
|
13761
|
+
workerConfig,
|
|
13762
|
+
void 0,
|
|
13763
|
+
{
|
|
13764
|
+
mixedModeConnectionString: mixedModeSession?.mixedModeConnectionString
|
|
13765
|
+
}
|
|
13766
|
+
);
|
|
13767
|
+
const { externalWorkers } = miniflareWorkerOptions;
|
|
13768
|
+
const { ratelimits, modulesRules, ...workerOptions } = miniflareWorkerOptions.workerOptions;
|
|
13769
|
+
return [
|
|
13770
|
+
{
|
|
13771
|
+
...workerOptions,
|
|
13772
|
+
tails: filterTails(
|
|
13773
|
+
workerOptions.tails,
|
|
13774
|
+
workerConfigs,
|
|
13775
|
+
vitePreviewServer.config.logger.warn
|
|
13776
|
+
),
|
|
13777
|
+
name: workerOptions.name ?? workerConfig.name,
|
|
13778
|
+
unsafeInspectorProxy: inspectorPort !== false,
|
|
13779
|
+
...miniflareWorkerOptions.main ? getPreviewModules(miniflareWorkerOptions.main, modulesRules) : { modules: true, script: "" }
|
|
13780
|
+
},
|
|
13781
|
+
...externalWorkers
|
|
13782
|
+
];
|
|
13783
|
+
})
|
|
13784
|
+
)).flat();
|
|
13740
13785
|
const logger = new ViteMiniflareLogger(resolvedViteConfig);
|
|
13741
13786
|
return {
|
|
13742
13787
|
log: logger,
|
|
@@ -13749,11 +13794,13 @@ function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistSta
|
|
|
13749
13794
|
(error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
|
|
13750
13795
|
);
|
|
13751
13796
|
},
|
|
13752
|
-
|
|
13797
|
+
defaultPersistRoot: getPersistenceRoot(
|
|
13798
|
+
resolvedViteConfig.root,
|
|
13799
|
+
persistState
|
|
13800
|
+
),
|
|
13753
13801
|
workers
|
|
13754
13802
|
};
|
|
13755
13803
|
}
|
|
13756
|
-
var removedMessages = [/^Ready on http/, /^Updated and ready on http/];
|
|
13757
13804
|
var ViteMiniflareLogger = class extends Log {
|
|
13758
13805
|
logger;
|
|
13759
13806
|
constructor(config) {
|
|
@@ -13761,11 +13808,6 @@ var ViteMiniflareLogger = class extends Log {
|
|
|
13761
13808
|
this.logger = config.logger;
|
|
13762
13809
|
}
|
|
13763
13810
|
logWithLevel(level, message) {
|
|
13764
|
-
for (const removedMessage of removedMessages) {
|
|
13765
|
-
if (removedMessage.test(message)) {
|
|
13766
|
-
return;
|
|
13767
|
-
}
|
|
13768
|
-
}
|
|
13769
13811
|
switch (level) {
|
|
13770
13812
|
case LogLevel.ERROR:
|
|
13771
13813
|
return this.logger.error(message);
|
|
@@ -13775,6 +13817,8 @@ var ViteMiniflareLogger = class extends Log {
|
|
|
13775
13817
|
return this.logger.info(message);
|
|
13776
13818
|
}
|
|
13777
13819
|
}
|
|
13820
|
+
logReady() {
|
|
13821
|
+
}
|
|
13778
13822
|
};
|
|
13779
13823
|
function miniflareLogLevelFromViteLogLevel(level = "info") {
|
|
13780
13824
|
switch (level) {
|
|
@@ -13788,6 +13832,24 @@ function miniflareLogLevelFromViteLogLevel(level = "info") {
|
|
|
13788
13832
|
return LogLevel.NONE;
|
|
13789
13833
|
}
|
|
13790
13834
|
}
|
|
13835
|
+
var mixedModeSessionsMap = /* @__PURE__ */ new Map();
|
|
13836
|
+
async function maybeStartOrUpdateMixedModeSession(workerConfig) {
|
|
13837
|
+
const workerRemoteBindings = experimental_pickRemoteBindings(
|
|
13838
|
+
unstable_convertConfigBindingsToStartWorkerBindings(workerConfig) ?? {}
|
|
13839
|
+
);
|
|
13840
|
+
assert6(workerConfig.name, "Found workerConfig without a name");
|
|
13841
|
+
let mixedModeSession = mixedModeSessionsMap.get(workerConfig.name);
|
|
13842
|
+
if (mixedModeSession === void 0) {
|
|
13843
|
+
if (Object.keys(workerRemoteBindings).length > 0) {
|
|
13844
|
+
mixedModeSession = await experimental_startMixedModeSession(workerRemoteBindings);
|
|
13845
|
+
mixedModeSessionsMap.set(workerConfig.name, mixedModeSession);
|
|
13846
|
+
}
|
|
13847
|
+
} else {
|
|
13848
|
+
await mixedModeSession.updateBindings(workerRemoteBindings);
|
|
13849
|
+
}
|
|
13850
|
+
await mixedModeSession?.ready;
|
|
13851
|
+
return mixedModeSession;
|
|
13852
|
+
}
|
|
13791
13853
|
|
|
13792
13854
|
// src/plugin-config.ts
|
|
13793
13855
|
import assert8 from "node:assert";
|
|
@@ -14138,6 +14200,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
14138
14200
|
}
|
|
14139
14201
|
|
|
14140
14202
|
// src/websockets.ts
|
|
14203
|
+
import { createHeaders } from "@mjackson/node-fetch-server";
|
|
14141
14204
|
import { coupleWebSocket } from "miniflare";
|
|
14142
14205
|
import { WebSocketServer } from "ws";
|
|
14143
14206
|
function handleWebSocket(httpServer, getFetcher) {
|
|
@@ -14149,7 +14212,7 @@ function handleWebSocket(httpServer, getFetcher) {
|
|
|
14149
14212
|
if (request.headers["sec-websocket-protocol"]?.startsWith("vite")) {
|
|
14150
14213
|
return;
|
|
14151
14214
|
}
|
|
14152
|
-
const headers =
|
|
14215
|
+
const headers = createHeaders(request);
|
|
14153
14216
|
const fetcher = await getFetcher();
|
|
14154
14217
|
const response = await fetcher(url, {
|
|
14155
14218
|
headers,
|
|
@@ -14181,12 +14244,15 @@ function validateWorkerEnvironmentsResolvedConfigs(resolvedPluginConfig, resolve
|
|
|
14181
14244
|
for (const envName of workersEnvironmentNames) {
|
|
14182
14245
|
const workerEnvConfig = resolvedViteConfig.environments[envName];
|
|
14183
14246
|
assert9(workerEnvConfig, `Missing environment config for "${envName}"`);
|
|
14184
|
-
const { optimizeDeps, resolve:
|
|
14247
|
+
const { optimizeDeps, resolve: resolve7 } = workerEnvConfig;
|
|
14185
14248
|
const disallowedConfig = {};
|
|
14186
14249
|
const disallowedOptimizeDepsExcludeEntries = (optimizeDeps.exclude ?? []).filter((entry) => {
|
|
14187
14250
|
if (cloudflareBuiltInModules.includes(entry)) {
|
|
14188
14251
|
return false;
|
|
14189
14252
|
}
|
|
14253
|
+
if (isNodeAlsModule(entry) && isNodeAls(resolvedPluginConfig.workers[envName])) {
|
|
14254
|
+
return false;
|
|
14255
|
+
}
|
|
14190
14256
|
if (NODEJS_MODULES_RE.test(entry) && isNodeCompat(resolvedPluginConfig.workers[envName])) {
|
|
14191
14257
|
return false;
|
|
14192
14258
|
}
|
|
@@ -14195,8 +14261,8 @@ function validateWorkerEnvironmentsResolvedConfigs(resolvedPluginConfig, resolve
|
|
|
14195
14261
|
if (disallowedOptimizeDepsExcludeEntries.length > 0) {
|
|
14196
14262
|
disallowedConfig.optimizeDepsExclude = disallowedOptimizeDepsExcludeEntries;
|
|
14197
14263
|
}
|
|
14198
|
-
if (
|
|
14199
|
-
disallowedConfig.resolveExternal =
|
|
14264
|
+
if (resolve7.external === true || resolve7.external.length > 0) {
|
|
14265
|
+
disallowedConfig.resolveExternal = resolve7.external;
|
|
14200
14266
|
}
|
|
14201
14267
|
if (Object.keys(disallowedConfig).length > 0) {
|
|
14202
14268
|
disallowedEnvsConfigs.set(envName, disallowedConfig);
|
|
@@ -14402,64 +14468,58 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14402
14468
|
}
|
|
14403
14469
|
},
|
|
14404
14470
|
hotUpdate(options) {
|
|
14405
|
-
|
|
14406
|
-
|
|
14407
|
-
resolvedPluginConfig
|
|
14408
|
-
|
|
14409
|
-
|
|
14410
|
-
|
|
14411
|
-
)
|
|
14412
|
-
) {
|
|
14471
|
+
const changedFilePath = path9.resolve(options.file);
|
|
14472
|
+
if (resolvedPluginConfig.configPaths.has(changedFilePath) || hasDotDevDotVarsFileChanged(resolvedPluginConfig, changedFilePath) || hasAssetsConfigChanged(
|
|
14473
|
+
resolvedPluginConfig,
|
|
14474
|
+
resolvedViteConfig,
|
|
14475
|
+
changedFilePath
|
|
14476
|
+
)) {
|
|
14413
14477
|
options.server.restart();
|
|
14414
14478
|
return [];
|
|
14415
14479
|
}
|
|
14416
14480
|
},
|
|
14417
14481
|
async configureServer(viteDevServer) {
|
|
14418
|
-
|
|
14419
|
-
|
|
14420
|
-
|
|
14482
|
+
const inputInspectorPort = await getInputInspectorPortOption(
|
|
14483
|
+
pluginConfig,
|
|
14484
|
+
viteDevServer
|
|
14485
|
+
);
|
|
14486
|
+
const miniflareDevOptions = await getDevMiniflareOptions(
|
|
14487
|
+
resolvedPluginConfig,
|
|
14488
|
+
viteDevServer,
|
|
14489
|
+
inputInspectorPort
|
|
14421
14490
|
);
|
|
14422
14491
|
if (!miniflare) {
|
|
14423
|
-
|
|
14424
|
-
pluginConfig,
|
|
14425
|
-
viteDevServer
|
|
14426
|
-
);
|
|
14427
|
-
miniflare = new Miniflare(
|
|
14428
|
-
getDevMiniflareOptions(
|
|
14429
|
-
resolvedPluginConfig,
|
|
14430
|
-
viteDevServer,
|
|
14431
|
-
inputInspectorPort
|
|
14432
|
-
)
|
|
14433
|
-
);
|
|
14492
|
+
miniflare = new Miniflare(miniflareDevOptions);
|
|
14434
14493
|
} else {
|
|
14435
|
-
|
|
14436
|
-
await miniflare.setOptions(
|
|
14437
|
-
getDevMiniflareOptions(
|
|
14438
|
-
resolvedPluginConfig,
|
|
14439
|
-
viteDevServer,
|
|
14440
|
-
resolvedInspectorPort ?? false
|
|
14441
|
-
)
|
|
14442
|
-
);
|
|
14494
|
+
await miniflare.setOptions(miniflareDevOptions);
|
|
14443
14495
|
}
|
|
14444
14496
|
await initRunners(resolvedPluginConfig, viteDevServer, miniflare);
|
|
14445
|
-
|
|
14446
|
-
async (
|
|
14497
|
+
if (viteDevServer.httpServer) {
|
|
14498
|
+
handleWebSocket(viteDevServer.httpServer, async () => {
|
|
14447
14499
|
assert10(miniflare, `Miniflare not defined`);
|
|
14448
14500
|
const routerWorker = await getRouterWorker(miniflare);
|
|
14449
|
-
return routerWorker.fetch
|
|
14450
|
-
|
|
14451
|
-
|
|
14452
|
-
},
|
|
14453
|
-
{ alwaysCallNext: false }
|
|
14454
|
-
);
|
|
14455
|
-
handleWebSocket(viteDevServer.httpServer, async () => {
|
|
14456
|
-
assert10(miniflare, `Miniflare not defined`);
|
|
14457
|
-
const routerWorker = await getRouterWorker(miniflare);
|
|
14458
|
-
return routerWorker.fetch;
|
|
14459
|
-
});
|
|
14501
|
+
return routerWorker.fetch;
|
|
14502
|
+
});
|
|
14503
|
+
}
|
|
14460
14504
|
return () => {
|
|
14461
|
-
viteDevServer.middlewares.use((req, res, next) => {
|
|
14462
|
-
|
|
14505
|
+
viteDevServer.middlewares.use(async (req, res, next) => {
|
|
14506
|
+
try {
|
|
14507
|
+
assert10(miniflare, `Miniflare not defined`);
|
|
14508
|
+
const routerWorker = await getRouterWorker(miniflare);
|
|
14509
|
+
const request = createRequest(req, res);
|
|
14510
|
+
const response = await routerWorker.fetch(
|
|
14511
|
+
toMiniflareRequest(request),
|
|
14512
|
+
{
|
|
14513
|
+
redirect: "manual"
|
|
14514
|
+
}
|
|
14515
|
+
);
|
|
14516
|
+
if (req.httpVersionMajor === 2) {
|
|
14517
|
+
response.headers.delete("transfer-encoding");
|
|
14518
|
+
}
|
|
14519
|
+
await sendResponse(res, response);
|
|
14520
|
+
} catch (error) {
|
|
14521
|
+
next(error);
|
|
14522
|
+
}
|
|
14463
14523
|
});
|
|
14464
14524
|
};
|
|
14465
14525
|
},
|
|
@@ -14470,27 +14530,32 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14470
14530
|
vitePreviewServer
|
|
14471
14531
|
);
|
|
14472
14532
|
const miniflare2 = new Miniflare(
|
|
14473
|
-
getPreviewMiniflareOptions(
|
|
14533
|
+
await getPreviewMiniflareOptions(
|
|
14474
14534
|
vitePreviewServer,
|
|
14475
14535
|
workerConfigs,
|
|
14476
14536
|
pluginConfig.persistState ?? true,
|
|
14537
|
+
!!pluginConfig.experimental?.mixedMode,
|
|
14477
14538
|
inputInspectorPort
|
|
14478
14539
|
)
|
|
14479
14540
|
);
|
|
14480
|
-
const middleware = createMiddleware(
|
|
14481
|
-
({ request }) => {
|
|
14482
|
-
return miniflare2.dispatchFetch(toMiniflareRequest(request), {
|
|
14483
|
-
redirect: "manual"
|
|
14484
|
-
});
|
|
14485
|
-
},
|
|
14486
|
-
{ alwaysCallNext: false }
|
|
14487
|
-
);
|
|
14488
14541
|
handleWebSocket(
|
|
14489
14542
|
vitePreviewServer.httpServer,
|
|
14490
14543
|
() => miniflare2.dispatchFetch
|
|
14491
14544
|
);
|
|
14492
|
-
vitePreviewServer.middlewares.use((req, res, next) => {
|
|
14493
|
-
|
|
14545
|
+
vitePreviewServer.middlewares.use(async (req, res, next) => {
|
|
14546
|
+
try {
|
|
14547
|
+
const request = createRequest(req, res);
|
|
14548
|
+
const response = await miniflare2.dispatchFetch(
|
|
14549
|
+
toMiniflareRequest(request),
|
|
14550
|
+
{ redirect: "manual" }
|
|
14551
|
+
);
|
|
14552
|
+
if (req.httpVersionMajor === 2) {
|
|
14553
|
+
response.headers.delete("transfer-encoding");
|
|
14554
|
+
}
|
|
14555
|
+
await sendResponse(res, response);
|
|
14556
|
+
} catch (error) {
|
|
14557
|
+
next(error);
|
|
14558
|
+
}
|
|
14494
14559
|
});
|
|
14495
14560
|
}
|
|
14496
14561
|
},
|
|
@@ -14683,6 +14748,25 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14683
14748
|
);
|
|
14684
14749
|
}
|
|
14685
14750
|
},
|
|
14751
|
+
// Plugin that handles Node.js Async Local Storage (ALS) compatibility support for Vite Environments that are hosted in Cloudflare Workers.
|
|
14752
|
+
{
|
|
14753
|
+
name: "vite-plugin-cloudflare:nodejs-als",
|
|
14754
|
+
apply(_config, env2) {
|
|
14755
|
+
return !env2.isPreview;
|
|
14756
|
+
},
|
|
14757
|
+
configEnvironment(name, config) {
|
|
14758
|
+
if (isNodeAls(getWorkerConfig2(name))) {
|
|
14759
|
+
return {
|
|
14760
|
+
resolve: {
|
|
14761
|
+
builtins: ["async_hooks", "node:async_hooks"]
|
|
14762
|
+
},
|
|
14763
|
+
optimizeDeps: {
|
|
14764
|
+
exclude: ["async_hooks", "node:async_hooks"]
|
|
14765
|
+
}
|
|
14766
|
+
};
|
|
14767
|
+
}
|
|
14768
|
+
}
|
|
14769
|
+
},
|
|
14686
14770
|
// Plugin that provides an __debug path for debugging the Cloudflare Workers.
|
|
14687
14771
|
{
|
|
14688
14772
|
name: "vite-plugin-cloudflare:debug",
|
|
@@ -14748,6 +14832,9 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14748
14832
|
build.onResolve(
|
|
14749
14833
|
{ filter: NODEJS_MODULES_RE },
|
|
14750
14834
|
({ path: path10, importer }) => {
|
|
14835
|
+
if (isNodeAls(workerConfig) && isNodeAlsModule(path10)) {
|
|
14836
|
+
return;
|
|
14837
|
+
}
|
|
14751
14838
|
const nodeJsCompatWarnings = nodeJsCompatWarningsMap.get(workerConfig);
|
|
14752
14839
|
nodeJsCompatWarnings?.registerImport(path10, importer);
|
|
14753
14840
|
return { path: path10, external: true };
|
|
@@ -14777,6 +14864,9 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14777
14864
|
async resolveId(source, importer) {
|
|
14778
14865
|
const workerConfig = getWorkerConfig2(this.environment.name);
|
|
14779
14866
|
if (workerConfig && !isNodeCompat(workerConfig)) {
|
|
14867
|
+
if (isNodeAls(workerConfig) && isNodeAlsModule(source)) {
|
|
14868
|
+
return;
|
|
14869
|
+
}
|
|
14780
14870
|
const nodeJsCompatWarnings = nodeJsCompatWarningsMap.get(workerConfig);
|
|
14781
14871
|
if (nodejsBuiltins.has(source)) {
|
|
14782
14872
|
nodeJsCompatWarnings?.registerImport(source, importer);
|
|
@@ -14795,10 +14885,16 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14795
14885
|
}
|
|
14796
14886
|
}
|
|
14797
14887
|
async function getInputInspectorPortOption(pluginConfig, viteServer) {
|
|
14888
|
+
if (pluginConfig.inspectorPort === void 0 || pluginConfig.inspectorPort === 0) {
|
|
14889
|
+
const resolvedInspectorPort = await getResolvedInspectorPort(pluginConfig);
|
|
14890
|
+
if (resolvedInspectorPort !== null) {
|
|
14891
|
+
return resolvedInspectorPort;
|
|
14892
|
+
}
|
|
14893
|
+
}
|
|
14798
14894
|
const inputInspectorPort = pluginConfig.inspectorPort ?? await getFirstAvailablePort(DEFAULT_INSPECTOR_PORT);
|
|
14799
14895
|
if (pluginConfig.inspectorPort === void 0 && inputInspectorPort !== DEFAULT_INSPECTOR_PORT) {
|
|
14800
14896
|
viteServer.config.logger.warn(
|
|
14801
|
-
|
|
14897
|
+
colors3.dim(
|
|
14802
14898
|
`Default inspector port ${DEFAULT_INSPECTOR_PORT} not available, using ${inputInspectorPort} instead
|
|
14803
14899
|
`
|
|
14804
14900
|
)
|
|
@@ -14824,6 +14920,19 @@ function getDotDevDotVarsContent(configPath, cloudflareEnv) {
|
|
|
14824
14920
|
}
|
|
14825
14921
|
return null;
|
|
14826
14922
|
}
|
|
14923
|
+
function hasDotDevDotVarsFileChanged(resolvedPluginConfig, changedFilePath) {
|
|
14924
|
+
return [...resolvedPluginConfig.configPaths].some((configPath) => {
|
|
14925
|
+
const dotDevDotVars = path9.join(path9.dirname(configPath), ".dev.vars");
|
|
14926
|
+
if (dotDevDotVars === changedFilePath) {
|
|
14927
|
+
return true;
|
|
14928
|
+
}
|
|
14929
|
+
if (resolvedPluginConfig.cloudflareEnv) {
|
|
14930
|
+
const dotDevDotVarsForEnv = `${dotDevDotVars}.${resolvedPluginConfig.cloudflareEnv}`;
|
|
14931
|
+
return dotDevDotVarsForEnv === changedFilePath;
|
|
14932
|
+
}
|
|
14933
|
+
return false;
|
|
14934
|
+
});
|
|
14935
|
+
}
|
|
14827
14936
|
export {
|
|
14828
14937
|
cloudflare2 as cloudflare
|
|
14829
14938
|
};
|