@cloudflare/vite-plugin 0.0.0-d329da16c → 0.0.0-d34ef3d5b

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.
@@ -1985,7 +1985,7 @@ var we = class {
1985
1985
  this.hasWritten || this.readyAnalytics && (this.hasWritten = true, this.readyAnalytics.logEvent({ version: 1, accountId: this.data.accountId, indexId: this.data.scriptId?.toString(), doubles: [this.data.requestTime ?? -1, this.data.coloId ?? -1, this.data.metalId ?? -1, this.data.coloTier ?? -1, this.data.userWorkerAhead === void 0 ? -1 : Number(this.data.userWorkerAhead)], blobs: [this.data.hostname?.substring(0, 256), this.data.dispatchtype, this.data.error?.substring(0, 256), this.data.version, this.data.coloRegion] }));
1986
1986
  }
1987
1987
  };
1988
- var On = (t4) => ({ invoke_user_worker_ahead_of_assets: t4?.invoke_user_worker_ahead_of_assets ?? false, has_user_worker: t4?.has_user_worker ?? false, account_id: t4?.account_id ?? -1, script_id: t4?.script_id ?? -1 });
1988
+ var On = (t4) => ({ invoke_user_worker_ahead_of_assets: t4?.invoke_user_worker_ahead_of_assets ?? false, has_user_worker: t4?.has_user_worker ?? false, account_id: t4?.account_id ?? -1, script_id: t4?.script_id ?? -1, debug: t4?.debug ?? false });
1989
1989
  var Bc = { async fetch(t4, e, n) {
1990
1990
  let r, o = false, s = new we(e.ANALYTICS), i = new ue(e.UNSAFE_PERFORMANCE), a = i.now();
1991
1991
  try {
package/dist/index.js CHANGED
@@ -490,6 +490,7 @@ import * as fs5 from "node:fs";
490
490
  import * as fsp2 from "node:fs/promises";
491
491
  import * as path9 from "node:path";
492
492
  import { createMiddleware } from "@hattip/adapter-node";
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);
@@ -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, changedFile) {
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(path.resolve(changedFile));
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 })
@@ -14180,12 +14191,15 @@ function validateWorkerEnvironmentsResolvedConfigs(resolvedPluginConfig, resolve
14180
14191
  for (const envName of workersEnvironmentNames) {
14181
14192
  const workerEnvConfig = resolvedViteConfig.environments[envName];
14182
14193
  assert9(workerEnvConfig, `Missing environment config for "${envName}"`);
14183
- const { optimizeDeps, resolve: resolve8 } = workerEnvConfig;
14194
+ const { optimizeDeps, resolve: resolve7 } = workerEnvConfig;
14184
14195
  const disallowedConfig = {};
14185
14196
  const disallowedOptimizeDepsExcludeEntries = (optimizeDeps.exclude ?? []).filter((entry) => {
14186
14197
  if (cloudflareBuiltInModules.includes(entry)) {
14187
14198
  return false;
14188
14199
  }
14200
+ if (isNodeAlsModule(entry) && isNodeAls(resolvedPluginConfig.workers[envName])) {
14201
+ return false;
14202
+ }
14189
14203
  if (NODEJS_MODULES_RE.test(entry) && isNodeCompat(resolvedPluginConfig.workers[envName])) {
14190
14204
  return false;
14191
14205
  }
@@ -14194,8 +14208,8 @@ function validateWorkerEnvironmentsResolvedConfigs(resolvedPluginConfig, resolve
14194
14208
  if (disallowedOptimizeDepsExcludeEntries.length > 0) {
14195
14209
  disallowedConfig.optimizeDepsExclude = disallowedOptimizeDepsExcludeEntries;
14196
14210
  }
14197
- if (resolve8.external === true || resolve8.external.length > 0) {
14198
- disallowedConfig.resolveExternal = resolve8.external;
14211
+ if (resolve7.external === true || resolve7.external.length > 0) {
14212
+ disallowedConfig.resolveExternal = resolve7.external;
14199
14213
  }
14200
14214
  if (Object.keys(disallowedConfig).length > 0) {
14201
14215
  disallowedEnvsConfigs.set(envName, disallowedConfig);
@@ -14401,14 +14415,12 @@ function cloudflare2(pluginConfig = {}) {
14401
14415
  }
14402
14416
  },
14403
14417
  hotUpdate(options) {
14404
- if (
14405
- // Vite normalizes `options.file` so we use `path.resolve` for Windows compatibility
14406
- resolvedPluginConfig.configPaths.has(path9.resolve(options.file)) || hasAssetsConfigChanged(
14407
- resolvedPluginConfig,
14408
- resolvedViteConfig,
14409
- options.file
14410
- )
14411
- ) {
14418
+ const changedFilePath = path9.resolve(options.file);
14419
+ if (resolvedPluginConfig.configPaths.has(changedFilePath) || hasDotDevDotVarsFileChanged(resolvedPluginConfig, changedFilePath) || hasAssetsConfigChanged(
14420
+ resolvedPluginConfig,
14421
+ resolvedViteConfig,
14422
+ changedFilePath
14423
+ )) {
14412
14424
  options.server.restart();
14413
14425
  return [];
14414
14426
  }
@@ -14418,11 +14430,11 @@ function cloudflare2(pluginConfig = {}) {
14418
14430
  viteDevServer.httpServer,
14419
14431
  "Unexpected error: No Vite HTTP server"
14420
14432
  );
14433
+ const inputInspectorPort = await getInputInspectorPortOption(
14434
+ pluginConfig,
14435
+ viteDevServer
14436
+ );
14421
14437
  if (!miniflare) {
14422
- const inputInspectorPort = await getInputInspectorPortOption(
14423
- pluginConfig,
14424
- viteDevServer
14425
- );
14426
14438
  miniflare = new Miniflare(
14427
14439
  getDevMiniflareOptions(
14428
14440
  resolvedPluginConfig,
@@ -14431,12 +14443,11 @@ function cloudflare2(pluginConfig = {}) {
14431
14443
  )
14432
14444
  );
14433
14445
  } else {
14434
- const resolvedInspectorPort = await getResolvedInspectorPort(pluginConfig);
14435
14446
  await miniflare.setOptions(
14436
14447
  getDevMiniflareOptions(
14437
14448
  resolvedPluginConfig,
14438
14449
  viteDevServer,
14439
- resolvedInspectorPort ?? false
14450
+ inputInspectorPort
14440
14451
  )
14441
14452
  );
14442
14453
  }
@@ -14598,6 +14609,18 @@ function cloudflare2(pluginConfig = {}) {
14598
14609
  configEnvironment(name) {
14599
14610
  if (isNodeCompat(getWorkerConfig2(name))) {
14600
14611
  return {
14612
+ build: {
14613
+ rollupOptions: {
14614
+ plugins: [
14615
+ replace({
14616
+ "process.env.NODE_ENV": JSON.stringify(
14617
+ process.env.NODE_ENV ?? "production"
14618
+ ),
14619
+ preventAssignment: true
14620
+ })
14621
+ ]
14622
+ }
14623
+ },
14601
14624
  resolve: {
14602
14625
  builtins: [...nodeCompatExternals]
14603
14626
  },
@@ -14670,6 +14693,25 @@ function cloudflare2(pluginConfig = {}) {
14670
14693
  );
14671
14694
  }
14672
14695
  },
14696
+ // Plugin that handles Node.js Async Local Storage (ALS) compatibility support for Vite Environments that are hosted in Cloudflare Workers.
14697
+ {
14698
+ name: "vite-plugin-cloudflare:nodejs-als",
14699
+ apply(_config, env2) {
14700
+ return !env2.isPreview;
14701
+ },
14702
+ configEnvironment(name, config) {
14703
+ if (isNodeAls(getWorkerConfig2(name))) {
14704
+ return {
14705
+ resolve: {
14706
+ builtins: ["async_hooks", "node:async_hooks"]
14707
+ },
14708
+ optimizeDeps: {
14709
+ exclude: ["async_hooks", "node:async_hooks"]
14710
+ }
14711
+ };
14712
+ }
14713
+ }
14714
+ },
14673
14715
  // Plugin that provides an __debug path for debugging the Cloudflare Workers.
14674
14716
  {
14675
14717
  name: "vite-plugin-cloudflare:debug",
@@ -14735,6 +14777,9 @@ function cloudflare2(pluginConfig = {}) {
14735
14777
  build.onResolve(
14736
14778
  { filter: NODEJS_MODULES_RE },
14737
14779
  ({ path: path10, importer }) => {
14780
+ if (isNodeAls(workerConfig) && isNodeAlsModule(path10)) {
14781
+ return;
14782
+ }
14738
14783
  const nodeJsCompatWarnings = nodeJsCompatWarningsMap.get(workerConfig);
14739
14784
  nodeJsCompatWarnings?.registerImport(path10, importer);
14740
14785
  return { path: path10, external: true };
@@ -14764,6 +14809,9 @@ function cloudflare2(pluginConfig = {}) {
14764
14809
  async resolveId(source, importer) {
14765
14810
  const workerConfig = getWorkerConfig2(this.environment.name);
14766
14811
  if (workerConfig && !isNodeCompat(workerConfig)) {
14812
+ if (isNodeAls(workerConfig) && isNodeAlsModule(source)) {
14813
+ return;
14814
+ }
14767
14815
  const nodeJsCompatWarnings = nodeJsCompatWarningsMap.get(workerConfig);
14768
14816
  if (nodejsBuiltins.has(source)) {
14769
14817
  nodeJsCompatWarnings?.registerImport(source, importer);
@@ -14782,6 +14830,12 @@ function cloudflare2(pluginConfig = {}) {
14782
14830
  }
14783
14831
  }
14784
14832
  async function getInputInspectorPortOption(pluginConfig, viteServer) {
14833
+ if (pluginConfig.inspectorPort === void 0 || pluginConfig.inspectorPort === 0) {
14834
+ const resolvedInspectorPort = await getResolvedInspectorPort(pluginConfig);
14835
+ if (resolvedInspectorPort !== null) {
14836
+ return resolvedInspectorPort;
14837
+ }
14838
+ }
14785
14839
  const inputInspectorPort = pluginConfig.inspectorPort ?? await getFirstAvailablePort(DEFAULT_INSPECTOR_PORT);
14786
14840
  if (pluginConfig.inspectorPort === void 0 && inputInspectorPort !== DEFAULT_INSPECTOR_PORT) {
14787
14841
  viteServer.config.logger.warn(
@@ -14811,6 +14865,19 @@ function getDotDevDotVarsContent(configPath, cloudflareEnv) {
14811
14865
  }
14812
14866
  return null;
14813
14867
  }
14868
+ function hasDotDevDotVarsFileChanged(resolvedPluginConfig, changedFilePath) {
14869
+ return [...resolvedPluginConfig.configPaths].some((configPath) => {
14870
+ const dotDevDotVars = path9.join(path9.dirname(configPath), ".dev.vars");
14871
+ if (dotDevDotVars === changedFilePath) {
14872
+ return true;
14873
+ }
14874
+ if (resolvedPluginConfig.cloudflareEnv) {
14875
+ const dotDevDotVarsForEnv = `${dotDevDotVars}.${resolvedPluginConfig.cloudflareEnv}`;
14876
+ return dotDevDotVarsForEnv === changedFilePath;
14877
+ }
14878
+ return false;
14879
+ });
14880
+ }
14814
14881
  export {
14815
14882
  cloudflare2 as cloudflare
14816
14883
  };
@@ -1435,20 +1435,21 @@ async function getWorkerEntryExport(path, entrypoint) {
1435
1435
  }
1436
1436
 
1437
1437
  // src/runner-worker/index.ts
1438
+ var IGNORED_KEYS = ["self", "tailStream"];
1438
1439
  var WORKER_ENTRYPOINT_KEYS = [
1439
1440
  "fetch",
1441
+ "queue",
1440
1442
  "tail",
1443
+ "test",
1441
1444
  "trace",
1442
- "scheduled",
1443
- "queue",
1444
- "test"
1445
+ "scheduled"
1445
1446
  ];
1446
1447
  var DURABLE_OBJECT_KEYS = [
1447
- "fetch",
1448
1448
  "alarm",
1449
- "webSocketMessage",
1449
+ "fetch",
1450
1450
  "webSocketClose",
1451
- "webSocketError"
1451
+ "webSocketError",
1452
+ "webSocketMessage"
1452
1453
  ];
1453
1454
  var WORKFLOW_ENTRYPOINT_KEYS = ["run"];
1454
1455
  var entryPath = "";
@@ -1513,7 +1514,7 @@ function createWorkerEntrypointWrapper(entrypoint) {
1513
1514
  if (value !== void 0) {
1514
1515
  return value;
1515
1516
  }
1516
- if (key === "self" || typeof key === "symbol" || DURABLE_OBJECT_KEYS.includes(key)) {
1517
+ if (typeof key === "symbol" || IGNORED_KEYS.includes(key) || DURABLE_OBJECT_KEYS.includes(key)) {
1517
1518
  return;
1518
1519
  }
1519
1520
  const property = getWorkerEntrypointRpcProperty.call(
@@ -1611,7 +1612,7 @@ function createDurableObjectWrapper(className) {
1611
1612
  if (value !== void 0) {
1612
1613
  return value;
1613
1614
  }
1614
- if (key === "self" || typeof key === "symbol" || WORKER_ENTRYPOINT_KEYS.includes(key)) {
1615
+ if (typeof key === "symbol" || IGNORED_KEYS.includes(key) || WORKER_ENTRYPOINT_KEYS.includes(key)) {
1615
1616
  return;
1616
1617
  }
1617
1618
  const property = getDurableObjectRpcProperty.call(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/vite-plugin",
3
- "version": "0.0.0-d329da16c",
3
+ "version": "0.0.0-d34ef3d5b",
4
4
  "description": "Cloudflare plugin for Vite",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -34,17 +34,18 @@
34
34
  ],
35
35
  "dependencies": {
36
36
  "@hattip/adapter-node": "^0.0.49",
37
+ "@rollup/plugin-replace": "^6.0.1",
37
38
  "get-port": "^7.1.0",
38
39
  "picocolors": "^1.1.1",
39
40
  "tinyglobby": "^0.2.12",
40
41
  "unenv": "2.0.0-rc.15",
41
42
  "ws": "8.18.0",
42
- "@cloudflare/unenv-preset": "0.0.0-d329da16c",
43
- "miniflare": "0.0.0-d329da16c",
44
- "wrangler": "0.0.0-d329da16c"
43
+ "@cloudflare/unenv-preset": "0.0.0-d34ef3d5b",
44
+ "miniflare": "0.0.0-d34ef3d5b",
45
+ "wrangler": "0.0.0-d34ef3d5b"
45
46
  },
46
47
  "devDependencies": {
47
- "@cloudflare/workers-types": "^4.20250405.0",
48
+ "@cloudflare/workers-types": "^4.20250424.0",
48
49
  "@types/node": "^22.10.1",
49
50
  "@types/ws": "^8.5.13",
50
51
  "magic-string": "^0.30.12",
@@ -53,10 +54,10 @@
53
54
  "typescript": "^5.7.2",
54
55
  "undici": "^5.28.5",
55
56
  "vite": "^6.1.0",
56
- "vitest": "~3.0.8",
57
+ "vitest": "~3.1.1",
58
+ "@cloudflare/workers-shared": "0.0.0-d34ef3d5b",
57
59
  "@cloudflare/mock-npm-registry": "0.0.0",
58
- "@cloudflare/workers-tsconfig": "0.0.0",
59
- "@cloudflare/workers-shared": "0.0.0-d329da16c"
60
+ "@cloudflare/workers-tsconfig": "0.0.0"
60
61
  },
61
62
  "peerDependencies": {
62
63
  "vite": "^6.1.0",