@cloudflare/vite-plugin 0.0.0-d329da16c → 0.0.0-d3a6eb30e
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 +283 -161
- package/dist/runner-worker/index.js +11 -10
- package/package.json +11 -10
package/dist/index.js
CHANGED
|
@@ -489,7 +489,8 @@ 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
|
+
import replace from "@rollup/plugin-replace";
|
|
493
494
|
|
|
494
495
|
// ../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.0/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
|
|
495
496
|
var comma = ",".charCodeAt(0);
|
|
@@ -1557,7 +1558,7 @@ var MagicString = class _MagicString {
|
|
|
1557
1558
|
|
|
1558
1559
|
// src/index.ts
|
|
1559
1560
|
import { Miniflare } from "miniflare";
|
|
1560
|
-
import
|
|
1561
|
+
import colors3 from "picocolors";
|
|
1561
1562
|
import * as vite7 from "vite";
|
|
1562
1563
|
|
|
1563
1564
|
// src/constants.ts
|
|
@@ -1588,7 +1589,7 @@ function matchAdditionalModule(source) {
|
|
|
1588
1589
|
return null;
|
|
1589
1590
|
}
|
|
1590
1591
|
function createModuleReference(type, id) {
|
|
1591
|
-
return `__CLOUDFLARE_MODULE__${type}__${id}
|
|
1592
|
+
return `__CLOUDFLARE_MODULE__${type}__${id}__CLOUDFLARE_MODULE__`;
|
|
1592
1593
|
}
|
|
1593
1594
|
|
|
1594
1595
|
// src/asset-config.ts
|
|
@@ -5783,7 +5784,8 @@ var z = /* @__PURE__ */ Object.freeze({
|
|
|
5783
5784
|
// ../workers-shared/utils/types.ts
|
|
5784
5785
|
var InternalConfigSchema = z.object({
|
|
5785
5786
|
account_id: z.number().optional(),
|
|
5786
|
-
script_id: z.number().optional()
|
|
5787
|
+
script_id: z.number().optional(),
|
|
5788
|
+
debug: z.boolean().optional()
|
|
5787
5789
|
});
|
|
5788
5790
|
var RouterConfigSchema = z.object({
|
|
5789
5791
|
invoke_user_worker_ahead_of_assets: z.boolean().optional(),
|
|
@@ -5831,14 +5833,14 @@ var AssetConfigSchema = z.object({
|
|
|
5831
5833
|
});
|
|
5832
5834
|
|
|
5833
5835
|
// src/asset-config.ts
|
|
5834
|
-
function hasAssetsConfigChanged(resolvedPluginConfig, resolvedViteConfig,
|
|
5836
|
+
function hasAssetsConfigChanged(resolvedPluginConfig, resolvedViteConfig, changedFilePath) {
|
|
5835
5837
|
if (!resolvedPluginConfig.experimental?.headersAndRedirectsDevModeSupport) {
|
|
5836
5838
|
return false;
|
|
5837
5839
|
}
|
|
5838
5840
|
return [
|
|
5839
5841
|
getRedirectsConfigPath(resolvedViteConfig),
|
|
5840
5842
|
getHeadersConfigPath(resolvedViteConfig)
|
|
5841
|
-
].includes(
|
|
5843
|
+
].includes(changedFilePath);
|
|
5842
5844
|
}
|
|
5843
5845
|
function getAssetsConfig(resolvedPluginConfig, entryWorkerConfig, resolvedConfig) {
|
|
5844
5846
|
const assetsConfig = resolvedPluginConfig.type === "assets-only" ? resolvedPluginConfig.config.assets : entryWorkerConfig?.assets;
|
|
@@ -12879,6 +12881,15 @@ function isNodeCompat(workerConfig) {
|
|
|
12879
12881
|
}
|
|
12880
12882
|
return false;
|
|
12881
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
|
+
}
|
|
12882
12893
|
function injectGlobalCode(id, code) {
|
|
12883
12894
|
const injectedCode = Object.entries(env.inject).map(([globalName, globalInject]) => {
|
|
12884
12895
|
if (typeof globalInject === "string") {
|
|
@@ -12909,7 +12920,7 @@ globalThis.${globalName} = var_${globalName}.${exportName};
|
|
|
12909
12920
|
}
|
|
12910
12921
|
function resolveNodeJSImport(source) {
|
|
12911
12922
|
const alias = env.alias[source];
|
|
12912
|
-
if (alias) {
|
|
12923
|
+
if (alias && !nodeCompatExternals.has(alias)) {
|
|
12913
12924
|
return {
|
|
12914
12925
|
unresolved: alias,
|
|
12915
12926
|
resolved: resolvePathSync(alias, { url: import.meta.url })
|
|
@@ -12982,7 +12993,7 @@ var NodeJsCompatWarnings = class {
|
|
|
12982
12993
|
// src/shared.ts
|
|
12983
12994
|
var UNKNOWN_HOST = "http://localhost";
|
|
12984
12995
|
var INIT_PATH = "/__vite_plugin_cloudflare_init__";
|
|
12985
|
-
var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)
|
|
12996
|
+
var ADDITIONAL_MODULE_PATTERN = `__CLOUDFLARE_MODULE__(${ADDITIONAL_MODULE_TYPES.join("|")})__(.*?)__CLOUDFLARE_MODULE__`;
|
|
12986
12997
|
var additionalModuleRE = new RegExp(ADDITIONAL_MODULE_PATTERN);
|
|
12987
12998
|
var additionalModuleGlobalRE = new RegExp(
|
|
12988
12999
|
ADDITIONAL_MODULE_PATTERN,
|
|
@@ -13018,19 +13029,6 @@ function toMiniflareRequest(request) {
|
|
|
13018
13029
|
duplex: "half"
|
|
13019
13030
|
});
|
|
13020
13031
|
}
|
|
13021
|
-
function nodeHeadersToWebHeaders(nodeHeaders) {
|
|
13022
|
-
const headers = new Headers();
|
|
13023
|
-
for (const [key, value] of Object.entries(nodeHeaders)) {
|
|
13024
|
-
if (typeof value === "string") {
|
|
13025
|
-
headers.append(key, value);
|
|
13026
|
-
} else if (Array.isArray(value)) {
|
|
13027
|
-
for (const item of value) {
|
|
13028
|
-
headers.append(key, item);
|
|
13029
|
-
}
|
|
13030
|
-
}
|
|
13031
|
-
}
|
|
13032
|
-
return headers;
|
|
13033
|
-
}
|
|
13034
13032
|
var postfixRE = /[?#].*$/;
|
|
13035
13033
|
function cleanUrl(url) {
|
|
13036
13034
|
return url.replace(postfixRE, "");
|
|
@@ -13344,12 +13342,18 @@ import {
|
|
|
13344
13342
|
LogLevel,
|
|
13345
13343
|
Response as MiniflareResponse
|
|
13346
13344
|
} from "miniflare";
|
|
13345
|
+
import colors2 from "picocolors";
|
|
13347
13346
|
import { globSync } from "tinyglobby";
|
|
13348
13347
|
import "vite";
|
|
13349
|
-
import {
|
|
13350
|
-
|
|
13348
|
+
import {
|
|
13349
|
+
experimental_pickRemoteBindings,
|
|
13350
|
+
experimental_startMixedModeSession,
|
|
13351
|
+
unstable_convertConfigBindingsToStartWorkerBindings,
|
|
13352
|
+
unstable_getMiniflareWorkerOptions
|
|
13353
|
+
} from "wrangler";
|
|
13354
|
+
function getPersistenceRoot(root, persistState) {
|
|
13351
13355
|
if (persistState === false) {
|
|
13352
|
-
return
|
|
13356
|
+
return;
|
|
13353
13357
|
}
|
|
13354
13358
|
const defaultPersistPath = ".wrangler/state";
|
|
13355
13359
|
const persistPath = path6.resolve(
|
|
@@ -13357,14 +13361,7 @@ function getPersistence(root, persistState) {
|
|
|
13357
13361
|
typeof persistState === "object" ? persistState.path : defaultPersistPath,
|
|
13358
13362
|
"v3"
|
|
13359
13363
|
);
|
|
13360
|
-
return
|
|
13361
|
-
cachePersist: path6.join(persistPath, "cache"),
|
|
13362
|
-
d1Persist: path6.join(persistPath, "d1"),
|
|
13363
|
-
durableObjectsPersist: path6.join(persistPath, "do"),
|
|
13364
|
-
kvPersist: path6.join(persistPath, "kv"),
|
|
13365
|
-
r2Persist: path6.join(persistPath, "r2"),
|
|
13366
|
-
workflowsPersist: path6.join(persistPath, "workflows")
|
|
13367
|
-
};
|
|
13364
|
+
return persistPath;
|
|
13368
13365
|
}
|
|
13369
13366
|
function missingWorkerErrorMessage(workerName) {
|
|
13370
13367
|
return `${workerName} does not match a worker name.`;
|
|
@@ -13448,7 +13445,30 @@ function getEntryWorkerConfig(resolvedPluginConfig) {
|
|
|
13448
13445
|
}
|
|
13449
13446
|
return resolvedPluginConfig.workers[resolvedPluginConfig.entryWorkerEnvironmentName];
|
|
13450
13447
|
}
|
|
13451
|
-
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) {
|
|
13452
13472
|
const resolvedViteConfig = viteDevServer.config;
|
|
13453
13473
|
const entryWorkerConfig = getEntryWorkerConfig(resolvedPluginConfig);
|
|
13454
13474
|
const assetsConfig = getAssetsConfig(
|
|
@@ -13524,53 +13544,59 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13524
13544
|
}
|
|
13525
13545
|
}
|
|
13526
13546
|
];
|
|
13527
|
-
const workersFromConfig = resolvedPluginConfig.type === "workers" ?
|
|
13528
|
-
(
|
|
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
|
-
|
|
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);
|
|
13565
13594
|
}
|
|
13566
|
-
const devEnvironment = viteDevServer.environments[environmentName];
|
|
13567
|
-
const result = await devEnvironment.hot.handleInvoke(payload);
|
|
13568
|
-
return MiniflareResponse.json(result);
|
|
13569
13595
|
}
|
|
13570
13596
|
}
|
|
13571
|
-
}
|
|
13572
|
-
}
|
|
13573
|
-
|
|
13597
|
+
};
|
|
13598
|
+
}
|
|
13599
|
+
)
|
|
13574
13600
|
) : [];
|
|
13575
13601
|
const userWorkers = workersFromConfig.map((options) => options.worker);
|
|
13576
13602
|
const externalWorkers = workersFromConfig.flatMap(
|
|
@@ -13582,6 +13608,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13582
13608
|
const logger = new ViteMiniflareLogger(resolvedViteConfig);
|
|
13583
13609
|
return {
|
|
13584
13610
|
log: logger,
|
|
13611
|
+
logRequests: false,
|
|
13585
13612
|
inspectorPort: inspectorPort === false ? void 0 : inspectorPort,
|
|
13586
13613
|
unsafeInspectorProxy: inspectorPort !== false,
|
|
13587
13614
|
handleRuntimeStdio(stdout, stderr) {
|
|
@@ -13591,7 +13618,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13591
13618
|
(error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
|
|
13592
13619
|
);
|
|
13593
13620
|
},
|
|
13594
|
-
|
|
13621
|
+
defaultPersistRoot: getPersistenceRoot(
|
|
13595
13622
|
resolvedViteConfig.root,
|
|
13596
13623
|
resolvedPluginConfig.persistState
|
|
13597
13624
|
),
|
|
@@ -13639,6 +13666,11 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13639
13666
|
}
|
|
13640
13667
|
return {
|
|
13641
13668
|
...workerOptions,
|
|
13669
|
+
tails: filterTails(
|
|
13670
|
+
workerOptions.tails,
|
|
13671
|
+
userWorkers,
|
|
13672
|
+
viteDevServer.config.logger.warn
|
|
13673
|
+
),
|
|
13642
13674
|
modules: [
|
|
13643
13675
|
{
|
|
13644
13676
|
type: "ESModule",
|
|
@@ -13720,22 +13752,36 @@ function getPreviewModules(main, modulesRules) {
|
|
|
13720
13752
|
]
|
|
13721
13753
|
};
|
|
13722
13754
|
}
|
|
13723
|
-
function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistState, inspectorPort) {
|
|
13755
|
+
async function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistState, mixedModeEnabled, inspectorPort) {
|
|
13724
13756
|
const resolvedViteConfig = vitePreviewServer.config;
|
|
13725
|
-
const workers =
|
|
13726
|
-
|
|
13727
|
-
|
|
13728
|
-
|
|
13729
|
-
|
|
13730
|
-
|
|
13731
|
-
|
|
13732
|
-
|
|
13733
|
-
|
|
13734
|
-
|
|
13735
|
-
}
|
|
13736
|
-
...
|
|
13737
|
-
|
|
13738
|
-
|
|
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();
|
|
13739
13785
|
const logger = new ViteMiniflareLogger(resolvedViteConfig);
|
|
13740
13786
|
return {
|
|
13741
13787
|
log: logger,
|
|
@@ -13748,11 +13794,13 @@ function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistSta
|
|
|
13748
13794
|
(error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
|
|
13749
13795
|
);
|
|
13750
13796
|
},
|
|
13751
|
-
|
|
13797
|
+
defaultPersistRoot: getPersistenceRoot(
|
|
13798
|
+
resolvedViteConfig.root,
|
|
13799
|
+
persistState
|
|
13800
|
+
),
|
|
13752
13801
|
workers
|
|
13753
13802
|
};
|
|
13754
13803
|
}
|
|
13755
|
-
var removedMessages = [/^Ready on http/, /^Updated and ready on http/];
|
|
13756
13804
|
var ViteMiniflareLogger = class extends Log {
|
|
13757
13805
|
logger;
|
|
13758
13806
|
constructor(config) {
|
|
@@ -13760,11 +13808,6 @@ var ViteMiniflareLogger = class extends Log {
|
|
|
13760
13808
|
this.logger = config.logger;
|
|
13761
13809
|
}
|
|
13762
13810
|
logWithLevel(level, message) {
|
|
13763
|
-
for (const removedMessage of removedMessages) {
|
|
13764
|
-
if (removedMessage.test(message)) {
|
|
13765
|
-
return;
|
|
13766
|
-
}
|
|
13767
|
-
}
|
|
13768
13811
|
switch (level) {
|
|
13769
13812
|
case LogLevel.ERROR:
|
|
13770
13813
|
return this.logger.error(message);
|
|
@@ -13774,6 +13817,8 @@ var ViteMiniflareLogger = class extends Log {
|
|
|
13774
13817
|
return this.logger.info(message);
|
|
13775
13818
|
}
|
|
13776
13819
|
}
|
|
13820
|
+
logReady() {
|
|
13821
|
+
}
|
|
13777
13822
|
};
|
|
13778
13823
|
function miniflareLogLevelFromViteLogLevel(level = "info") {
|
|
13779
13824
|
switch (level) {
|
|
@@ -13787,6 +13832,24 @@ function miniflareLogLevelFromViteLogLevel(level = "info") {
|
|
|
13787
13832
|
return LogLevel.NONE;
|
|
13788
13833
|
}
|
|
13789
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
|
+
}
|
|
13790
13853
|
|
|
13791
13854
|
// src/plugin-config.ts
|
|
13792
13855
|
import assert8 from "node:assert";
|
|
@@ -14137,6 +14200,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
|
|
|
14137
14200
|
}
|
|
14138
14201
|
|
|
14139
14202
|
// src/websockets.ts
|
|
14203
|
+
import { createHeaders } from "@mjackson/node-fetch-server";
|
|
14140
14204
|
import { coupleWebSocket } from "miniflare";
|
|
14141
14205
|
import { WebSocketServer } from "ws";
|
|
14142
14206
|
function handleWebSocket(httpServer, getFetcher) {
|
|
@@ -14148,7 +14212,7 @@ function handleWebSocket(httpServer, getFetcher) {
|
|
|
14148
14212
|
if (request.headers["sec-websocket-protocol"]?.startsWith("vite")) {
|
|
14149
14213
|
return;
|
|
14150
14214
|
}
|
|
14151
|
-
const headers =
|
|
14215
|
+
const headers = createHeaders(request);
|
|
14152
14216
|
const fetcher = await getFetcher();
|
|
14153
14217
|
const response = await fetcher(url, {
|
|
14154
14218
|
headers,
|
|
@@ -14180,12 +14244,15 @@ function validateWorkerEnvironmentsResolvedConfigs(resolvedPluginConfig, resolve
|
|
|
14180
14244
|
for (const envName of workersEnvironmentNames) {
|
|
14181
14245
|
const workerEnvConfig = resolvedViteConfig.environments[envName];
|
|
14182
14246
|
assert9(workerEnvConfig, `Missing environment config for "${envName}"`);
|
|
14183
|
-
const { optimizeDeps, resolve:
|
|
14247
|
+
const { optimizeDeps, resolve: resolve7 } = workerEnvConfig;
|
|
14184
14248
|
const disallowedConfig = {};
|
|
14185
14249
|
const disallowedOptimizeDepsExcludeEntries = (optimizeDeps.exclude ?? []).filter((entry) => {
|
|
14186
14250
|
if (cloudflareBuiltInModules.includes(entry)) {
|
|
14187
14251
|
return false;
|
|
14188
14252
|
}
|
|
14253
|
+
if (isNodeAlsModule(entry) && isNodeAls(resolvedPluginConfig.workers[envName])) {
|
|
14254
|
+
return false;
|
|
14255
|
+
}
|
|
14189
14256
|
if (NODEJS_MODULES_RE.test(entry) && isNodeCompat(resolvedPluginConfig.workers[envName])) {
|
|
14190
14257
|
return false;
|
|
14191
14258
|
}
|
|
@@ -14194,8 +14261,8 @@ function validateWorkerEnvironmentsResolvedConfigs(resolvedPluginConfig, resolve
|
|
|
14194
14261
|
if (disallowedOptimizeDepsExcludeEntries.length > 0) {
|
|
14195
14262
|
disallowedConfig.optimizeDepsExclude = disallowedOptimizeDepsExcludeEntries;
|
|
14196
14263
|
}
|
|
14197
|
-
if (
|
|
14198
|
-
disallowedConfig.resolveExternal =
|
|
14264
|
+
if (resolve7.external === true || resolve7.external.length > 0) {
|
|
14265
|
+
disallowedConfig.resolveExternal = resolve7.external;
|
|
14199
14266
|
}
|
|
14200
14267
|
if (Object.keys(disallowedConfig).length > 0) {
|
|
14201
14268
|
disallowedEnvsConfigs.set(envName, disallowedConfig);
|
|
@@ -14401,64 +14468,58 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14401
14468
|
}
|
|
14402
14469
|
},
|
|
14403
14470
|
hotUpdate(options) {
|
|
14404
|
-
|
|
14405
|
-
|
|
14406
|
-
resolvedPluginConfig
|
|
14407
|
-
|
|
14408
|
-
|
|
14409
|
-
|
|
14410
|
-
)
|
|
14411
|
-
) {
|
|
14471
|
+
const changedFilePath = path9.resolve(options.file);
|
|
14472
|
+
if (resolvedPluginConfig.configPaths.has(changedFilePath) || hasDotDevDotVarsFileChanged(resolvedPluginConfig, changedFilePath) || hasAssetsConfigChanged(
|
|
14473
|
+
resolvedPluginConfig,
|
|
14474
|
+
resolvedViteConfig,
|
|
14475
|
+
changedFilePath
|
|
14476
|
+
)) {
|
|
14412
14477
|
options.server.restart();
|
|
14413
14478
|
return [];
|
|
14414
14479
|
}
|
|
14415
14480
|
},
|
|
14416
14481
|
async configureServer(viteDevServer) {
|
|
14417
|
-
|
|
14418
|
-
|
|
14419
|
-
|
|
14482
|
+
const inputInspectorPort = await getInputInspectorPortOption(
|
|
14483
|
+
pluginConfig,
|
|
14484
|
+
viteDevServer
|
|
14485
|
+
);
|
|
14486
|
+
const miniflareDevOptions = await getDevMiniflareOptions(
|
|
14487
|
+
resolvedPluginConfig,
|
|
14488
|
+
viteDevServer,
|
|
14489
|
+
inputInspectorPort
|
|
14420
14490
|
);
|
|
14421
14491
|
if (!miniflare) {
|
|
14422
|
-
|
|
14423
|
-
pluginConfig,
|
|
14424
|
-
viteDevServer
|
|
14425
|
-
);
|
|
14426
|
-
miniflare = new Miniflare(
|
|
14427
|
-
getDevMiniflareOptions(
|
|
14428
|
-
resolvedPluginConfig,
|
|
14429
|
-
viteDevServer,
|
|
14430
|
-
inputInspectorPort
|
|
14431
|
-
)
|
|
14432
|
-
);
|
|
14492
|
+
miniflare = new Miniflare(miniflareDevOptions);
|
|
14433
14493
|
} else {
|
|
14434
|
-
|
|
14435
|
-
await miniflare.setOptions(
|
|
14436
|
-
getDevMiniflareOptions(
|
|
14437
|
-
resolvedPluginConfig,
|
|
14438
|
-
viteDevServer,
|
|
14439
|
-
resolvedInspectorPort ?? false
|
|
14440
|
-
)
|
|
14441
|
-
);
|
|
14494
|
+
await miniflare.setOptions(miniflareDevOptions);
|
|
14442
14495
|
}
|
|
14443
14496
|
await initRunners(resolvedPluginConfig, viteDevServer, miniflare);
|
|
14444
|
-
|
|
14445
|
-
async (
|
|
14497
|
+
if (viteDevServer.httpServer) {
|
|
14498
|
+
handleWebSocket(viteDevServer.httpServer, async () => {
|
|
14446
14499
|
assert10(miniflare, `Miniflare not defined`);
|
|
14447
14500
|
const routerWorker = await getRouterWorker(miniflare);
|
|
14448
|
-
return routerWorker.fetch
|
|
14449
|
-
|
|
14450
|
-
|
|
14451
|
-
},
|
|
14452
|
-
{ alwaysCallNext: false }
|
|
14453
|
-
);
|
|
14454
|
-
handleWebSocket(viteDevServer.httpServer, async () => {
|
|
14455
|
-
assert10(miniflare, `Miniflare not defined`);
|
|
14456
|
-
const routerWorker = await getRouterWorker(miniflare);
|
|
14457
|
-
return routerWorker.fetch;
|
|
14458
|
-
});
|
|
14501
|
+
return routerWorker.fetch;
|
|
14502
|
+
});
|
|
14503
|
+
}
|
|
14459
14504
|
return () => {
|
|
14460
|
-
viteDevServer.middlewares.use((req, res, next) => {
|
|
14461
|
-
|
|
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
|
+
}
|
|
14462
14523
|
});
|
|
14463
14524
|
};
|
|
14464
14525
|
},
|
|
@@ -14469,27 +14530,32 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14469
14530
|
vitePreviewServer
|
|
14470
14531
|
);
|
|
14471
14532
|
const miniflare2 = new Miniflare(
|
|
14472
|
-
getPreviewMiniflareOptions(
|
|
14533
|
+
await getPreviewMiniflareOptions(
|
|
14473
14534
|
vitePreviewServer,
|
|
14474
14535
|
workerConfigs,
|
|
14475
14536
|
pluginConfig.persistState ?? true,
|
|
14537
|
+
!!pluginConfig.experimental?.mixedMode,
|
|
14476
14538
|
inputInspectorPort
|
|
14477
14539
|
)
|
|
14478
14540
|
);
|
|
14479
|
-
const middleware = createMiddleware(
|
|
14480
|
-
({ request }) => {
|
|
14481
|
-
return miniflare2.dispatchFetch(toMiniflareRequest(request), {
|
|
14482
|
-
redirect: "manual"
|
|
14483
|
-
});
|
|
14484
|
-
},
|
|
14485
|
-
{ alwaysCallNext: false }
|
|
14486
|
-
);
|
|
14487
14541
|
handleWebSocket(
|
|
14488
14542
|
vitePreviewServer.httpServer,
|
|
14489
14543
|
() => miniflare2.dispatchFetch
|
|
14490
14544
|
);
|
|
14491
|
-
vitePreviewServer.middlewares.use((req, res, next) => {
|
|
14492
|
-
|
|
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
|
+
}
|
|
14493
14559
|
});
|
|
14494
14560
|
}
|
|
14495
14561
|
},
|
|
@@ -14598,6 +14664,18 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14598
14664
|
configEnvironment(name) {
|
|
14599
14665
|
if (isNodeCompat(getWorkerConfig2(name))) {
|
|
14600
14666
|
return {
|
|
14667
|
+
build: {
|
|
14668
|
+
rollupOptions: {
|
|
14669
|
+
plugins: [
|
|
14670
|
+
replace({
|
|
14671
|
+
"process.env.NODE_ENV": JSON.stringify(
|
|
14672
|
+
process.env.NODE_ENV ?? "production"
|
|
14673
|
+
),
|
|
14674
|
+
preventAssignment: true
|
|
14675
|
+
})
|
|
14676
|
+
]
|
|
14677
|
+
}
|
|
14678
|
+
},
|
|
14601
14679
|
resolve: {
|
|
14602
14680
|
builtins: [...nodeCompatExternals]
|
|
14603
14681
|
},
|
|
@@ -14670,6 +14748,25 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14670
14748
|
);
|
|
14671
14749
|
}
|
|
14672
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
|
+
},
|
|
14673
14770
|
// Plugin that provides an __debug path for debugging the Cloudflare Workers.
|
|
14674
14771
|
{
|
|
14675
14772
|
name: "vite-plugin-cloudflare:debug",
|
|
@@ -14735,6 +14832,9 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14735
14832
|
build.onResolve(
|
|
14736
14833
|
{ filter: NODEJS_MODULES_RE },
|
|
14737
14834
|
({ path: path10, importer }) => {
|
|
14835
|
+
if (isNodeAls(workerConfig) && isNodeAlsModule(path10)) {
|
|
14836
|
+
return;
|
|
14837
|
+
}
|
|
14738
14838
|
const nodeJsCompatWarnings = nodeJsCompatWarningsMap.get(workerConfig);
|
|
14739
14839
|
nodeJsCompatWarnings?.registerImport(path10, importer);
|
|
14740
14840
|
return { path: path10, external: true };
|
|
@@ -14764,6 +14864,9 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14764
14864
|
async resolveId(source, importer) {
|
|
14765
14865
|
const workerConfig = getWorkerConfig2(this.environment.name);
|
|
14766
14866
|
if (workerConfig && !isNodeCompat(workerConfig)) {
|
|
14867
|
+
if (isNodeAls(workerConfig) && isNodeAlsModule(source)) {
|
|
14868
|
+
return;
|
|
14869
|
+
}
|
|
14767
14870
|
const nodeJsCompatWarnings = nodeJsCompatWarningsMap.get(workerConfig);
|
|
14768
14871
|
if (nodejsBuiltins.has(source)) {
|
|
14769
14872
|
nodeJsCompatWarnings?.registerImport(source, importer);
|
|
@@ -14782,10 +14885,16 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14782
14885
|
}
|
|
14783
14886
|
}
|
|
14784
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
|
+
}
|
|
14785
14894
|
const inputInspectorPort = pluginConfig.inspectorPort ?? await getFirstAvailablePort(DEFAULT_INSPECTOR_PORT);
|
|
14786
14895
|
if (pluginConfig.inspectorPort === void 0 && inputInspectorPort !== DEFAULT_INSPECTOR_PORT) {
|
|
14787
14896
|
viteServer.config.logger.warn(
|
|
14788
|
-
|
|
14897
|
+
colors3.dim(
|
|
14789
14898
|
`Default inspector port ${DEFAULT_INSPECTOR_PORT} not available, using ${inputInspectorPort} instead
|
|
14790
14899
|
`
|
|
14791
14900
|
)
|
|
@@ -14811,6 +14920,19 @@ function getDotDevDotVarsContent(configPath, cloudflareEnv) {
|
|
|
14811
14920
|
}
|
|
14812
14921
|
return null;
|
|
14813
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
|
+
}
|
|
14814
14936
|
export {
|
|
14815
14937
|
cloudflare2 as cloudflare
|
|
14816
14938
|
};
|