@cloudflare/vite-plugin 1.2.4 → 1.3.1
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/index.d.ts +2 -0
- package/dist/index.js +124 -99
- package/package.json +4 -4
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
|
@@ -13345,10 +13345,15 @@ import {
|
|
|
13345
13345
|
import colors2 from "picocolors";
|
|
13346
13346
|
import { globSync } from "tinyglobby";
|
|
13347
13347
|
import "vite";
|
|
13348
|
-
import {
|
|
13349
|
-
|
|
13348
|
+
import {
|
|
13349
|
+
experimental_pickRemoteBindings,
|
|
13350
|
+
experimental_startMixedModeSession,
|
|
13351
|
+
unstable_convertConfigBindingsToStartWorkerBindings,
|
|
13352
|
+
unstable_getMiniflareWorkerOptions
|
|
13353
|
+
} from "wrangler";
|
|
13354
|
+
function getPersistenceRoot(root, persistState) {
|
|
13350
13355
|
if (persistState === false) {
|
|
13351
|
-
return
|
|
13356
|
+
return;
|
|
13352
13357
|
}
|
|
13353
13358
|
const defaultPersistPath = ".wrangler/state";
|
|
13354
13359
|
const persistPath = path6.resolve(
|
|
@@ -13356,14 +13361,7 @@ function getPersistence(root, persistState) {
|
|
|
13356
13361
|
typeof persistState === "object" ? persistState.path : defaultPersistPath,
|
|
13357
13362
|
"v3"
|
|
13358
13363
|
);
|
|
13359
|
-
return
|
|
13360
|
-
cachePersist: path6.join(persistPath, "cache"),
|
|
13361
|
-
d1Persist: path6.join(persistPath, "d1"),
|
|
13362
|
-
durableObjectsPersist: path6.join(persistPath, "do"),
|
|
13363
|
-
kvPersist: path6.join(persistPath, "kv"),
|
|
13364
|
-
r2Persist: path6.join(persistPath, "r2"),
|
|
13365
|
-
workflowsPersist: path6.join(persistPath, "workflows")
|
|
13366
|
-
};
|
|
13364
|
+
return persistPath;
|
|
13367
13365
|
}
|
|
13368
13366
|
function missingWorkerErrorMessage(workerName) {
|
|
13369
13367
|
return `${workerName} does not match a worker name.`;
|
|
@@ -13470,7 +13468,7 @@ function filterTails(tails, userWorkers, log) {
|
|
|
13470
13468
|
return found;
|
|
13471
13469
|
});
|
|
13472
13470
|
}
|
|
13473
|
-
function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPort) {
|
|
13471
|
+
async function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPort) {
|
|
13474
13472
|
const resolvedViteConfig = viteDevServer.config;
|
|
13475
13473
|
const entryWorkerConfig = getEntryWorkerConfig(resolvedPluginConfig);
|
|
13476
13474
|
const assetsConfig = getAssetsConfig(
|
|
@@ -13546,53 +13544,59 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13546
13544
|
}
|
|
13547
13545
|
}
|
|
13548
13546
|
];
|
|
13549
|
-
const workersFromConfig = resolvedPluginConfig.type === "workers" ?
|
|
13550
|
-
(
|
|
13551
|
-
|
|
13552
|
-
|
|
13553
|
-
|
|
13554
|
-
|
|
13555
|
-
|
|
13556
|
-
|
|
13557
|
-
|
|
13558
|
-
|
|
13559
|
-
|
|
13560
|
-
|
|
13561
|
-
|
|
13562
|
-
|
|
13563
|
-
|
|
13564
|
-
|
|
13565
|
-
|
|
13566
|
-
|
|
13567
|
-
|
|
13568
|
-
|
|
13569
|
-
|
|
13570
|
-
|
|
13571
|
-
|
|
13572
|
-
|
|
13573
|
-
|
|
13574
|
-
|
|
13575
|
-
|
|
13576
|
-
|
|
13577
|
-
|
|
13578
|
-
|
|
13579
|
-
|
|
13580
|
-
|
|
13581
|
-
|
|
13582
|
-
|
|
13583
|
-
|
|
13584
|
-
|
|
13585
|
-
|
|
13586
|
-
|
|
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);
|
|
13587
13594
|
}
|
|
13588
|
-
const devEnvironment = viteDevServer.environments[environmentName];
|
|
13589
|
-
const result = await devEnvironment.hot.handleInvoke(payload);
|
|
13590
|
-
return MiniflareResponse.json(result);
|
|
13591
13595
|
}
|
|
13592
13596
|
}
|
|
13593
|
-
}
|
|
13594
|
-
}
|
|
13595
|
-
|
|
13597
|
+
};
|
|
13598
|
+
}
|
|
13599
|
+
)
|
|
13596
13600
|
) : [];
|
|
13597
13601
|
const userWorkers = workersFromConfig.map((options) => options.worker);
|
|
13598
13602
|
const externalWorkers = workersFromConfig.flatMap(
|
|
@@ -13604,6 +13608,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13604
13608
|
const logger = new ViteMiniflareLogger(resolvedViteConfig);
|
|
13605
13609
|
return {
|
|
13606
13610
|
log: logger,
|
|
13611
|
+
logRequests: false,
|
|
13607
13612
|
inspectorPort: inspectorPort === false ? void 0 : inspectorPort,
|
|
13608
13613
|
unsafeInspectorProxy: inspectorPort !== false,
|
|
13609
13614
|
handleRuntimeStdio(stdout, stderr) {
|
|
@@ -13613,7 +13618,7 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
|
|
|
13613
13618
|
(error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
|
|
13614
13619
|
);
|
|
13615
13620
|
},
|
|
13616
|
-
|
|
13621
|
+
defaultPersistRoot: getPersistenceRoot(
|
|
13617
13622
|
resolvedViteConfig.root,
|
|
13618
13623
|
resolvedPluginConfig.persistState
|
|
13619
13624
|
),
|
|
@@ -13747,27 +13752,36 @@ function getPreviewModules(main, modulesRules) {
|
|
|
13747
13752
|
]
|
|
13748
13753
|
};
|
|
13749
13754
|
}
|
|
13750
|
-
function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistState, inspectorPort) {
|
|
13755
|
+
async function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistState, mixedModeEnabled, inspectorPort) {
|
|
13751
13756
|
const resolvedViteConfig = vitePreviewServer.config;
|
|
13752
|
-
const workers =
|
|
13753
|
-
|
|
13754
|
-
|
|
13755
|
-
|
|
13756
|
-
|
|
13757
|
-
|
|
13758
|
-
|
|
13759
|
-
|
|
13760
|
-
|
|
13761
|
-
|
|
13762
|
-
|
|
13763
|
-
|
|
13764
|
-
|
|
13765
|
-
|
|
13766
|
-
|
|
13767
|
-
|
|
13768
|
-
|
|
13769
|
-
|
|
13770
|
-
|
|
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();
|
|
13771
13785
|
const logger = new ViteMiniflareLogger(resolvedViteConfig);
|
|
13772
13786
|
return {
|
|
13773
13787
|
log: logger,
|
|
@@ -13780,11 +13794,13 @@ function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistSta
|
|
|
13780
13794
|
(error) => logger.logWithLevel(LogLevel.ERROR, decoder.decode(error))
|
|
13781
13795
|
);
|
|
13782
13796
|
},
|
|
13783
|
-
|
|
13797
|
+
defaultPersistRoot: getPersistenceRoot(
|
|
13798
|
+
resolvedViteConfig.root,
|
|
13799
|
+
persistState
|
|
13800
|
+
),
|
|
13784
13801
|
workers
|
|
13785
13802
|
};
|
|
13786
13803
|
}
|
|
13787
|
-
var removedMessages = [/^Ready on http/, /^Updated and ready on http/];
|
|
13788
13804
|
var ViteMiniflareLogger = class extends Log {
|
|
13789
13805
|
logger;
|
|
13790
13806
|
constructor(config) {
|
|
@@ -13792,11 +13808,6 @@ var ViteMiniflareLogger = class extends Log {
|
|
|
13792
13808
|
this.logger = config.logger;
|
|
13793
13809
|
}
|
|
13794
13810
|
logWithLevel(level, message) {
|
|
13795
|
-
for (const removedMessage of removedMessages) {
|
|
13796
|
-
if (removedMessage.test(message)) {
|
|
13797
|
-
return;
|
|
13798
|
-
}
|
|
13799
|
-
}
|
|
13800
13811
|
switch (level) {
|
|
13801
13812
|
case LogLevel.ERROR:
|
|
13802
13813
|
return this.logger.error(message);
|
|
@@ -13806,6 +13817,8 @@ var ViteMiniflareLogger = class extends Log {
|
|
|
13806
13817
|
return this.logger.info(message);
|
|
13807
13818
|
}
|
|
13808
13819
|
}
|
|
13820
|
+
logReady() {
|
|
13821
|
+
}
|
|
13809
13822
|
};
|
|
13810
13823
|
function miniflareLogLevelFromViteLogLevel(level = "info") {
|
|
13811
13824
|
switch (level) {
|
|
@@ -13819,6 +13832,24 @@ function miniflareLogLevelFromViteLogLevel(level = "info") {
|
|
|
13819
13832
|
return LogLevel.NONE;
|
|
13820
13833
|
}
|
|
13821
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
|
+
}
|
|
13822
13853
|
|
|
13823
13854
|
// src/plugin-config.ts
|
|
13824
13855
|
import assert8 from "node:assert";
|
|
@@ -14452,22 +14483,15 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14452
14483
|
pluginConfig,
|
|
14453
14484
|
viteDevServer
|
|
14454
14485
|
);
|
|
14486
|
+
const miniflareDevOptions = await getDevMiniflareOptions(
|
|
14487
|
+
resolvedPluginConfig,
|
|
14488
|
+
viteDevServer,
|
|
14489
|
+
inputInspectorPort
|
|
14490
|
+
);
|
|
14455
14491
|
if (!miniflare) {
|
|
14456
|
-
miniflare = new Miniflare(
|
|
14457
|
-
getDevMiniflareOptions(
|
|
14458
|
-
resolvedPluginConfig,
|
|
14459
|
-
viteDevServer,
|
|
14460
|
-
inputInspectorPort
|
|
14461
|
-
)
|
|
14462
|
-
);
|
|
14492
|
+
miniflare = new Miniflare(miniflareDevOptions);
|
|
14463
14493
|
} else {
|
|
14464
|
-
await miniflare.setOptions(
|
|
14465
|
-
getDevMiniflareOptions(
|
|
14466
|
-
resolvedPluginConfig,
|
|
14467
|
-
viteDevServer,
|
|
14468
|
-
inputInspectorPort
|
|
14469
|
-
)
|
|
14470
|
-
);
|
|
14494
|
+
await miniflare.setOptions(miniflareDevOptions);
|
|
14471
14495
|
}
|
|
14472
14496
|
await initRunners(resolvedPluginConfig, viteDevServer, miniflare);
|
|
14473
14497
|
if (viteDevServer.httpServer) {
|
|
@@ -14506,10 +14530,11 @@ function cloudflare2(pluginConfig = {}) {
|
|
|
14506
14530
|
vitePreviewServer
|
|
14507
14531
|
);
|
|
14508
14532
|
const miniflare2 = new Miniflare(
|
|
14509
|
-
getPreviewMiniflareOptions(
|
|
14533
|
+
await getPreviewMiniflareOptions(
|
|
14510
14534
|
vitePreviewServer,
|
|
14511
14535
|
workerConfigs,
|
|
14512
14536
|
pluginConfig.persistState ?? true,
|
|
14537
|
+
!!pluginConfig.experimental?.mixedMode,
|
|
14513
14538
|
inputInspectorPort
|
|
14514
14539
|
)
|
|
14515
14540
|
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudflare/vite-plugin",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
"tinyglobby": "^0.2.12",
|
|
42
42
|
"unenv": "2.0.0-rc.17",
|
|
43
43
|
"ws": "8.18.0",
|
|
44
|
-
"miniflare": "4.
|
|
45
|
-
"wrangler": "4.
|
|
44
|
+
"miniflare": "4.20250525.0",
|
|
45
|
+
"wrangler": "4.18.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@cloudflare/workers-types": "^4.
|
|
48
|
+
"@cloudflare/workers-types": "^4.20250525.0",
|
|
49
49
|
"@types/node": "^22.10.1",
|
|
50
50
|
"@types/ws": "^8.5.13",
|
|
51
51
|
"magic-string": "^0.30.12",
|