@cloudflare/vite-plugin 1.25.4 → 1.25.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/utils.ts","../src/workers-configs.ts","../src/plugin-config.ts","../src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;ACgDK,KDMO,OCNP,CAAA,CAAA,CAAA,GDMoB,OCNpB,CDM4B,CCN5B,EAAA,SAA8B,CAAA;;;;AAA9B,KAjBO,YAAA,GAAe,IAiBtB,CAjB2B,eAiBG,EAAU,MAjBU,mBAiBV,CAA0B;KAAlE,8BAAA,UAAwC;KAExC,mBAAA,GACF,oCACA;KAEE,iCAAA,SACE;AC/BP,KDiCK,8BAAA,GACJ,8BClCuB,CAAA,aAAA,CAAA,CAAA,MAAA,CAAA;AAA8B;AAE5B;AAI0B;AAS1C,cDwBG,0BCtBJ,EAAA;EAGJ;AAEyB;AAMU;EAQnC,SAAA,cAAA,EAAsB;IAChB,SAAA,KAAA,EAAA;MAAR,SAAA,eAAA,EAAA,eAAA;MAES,SAAA,QAAA,EAAA,2DAAA;IACG,CAAA;IAED,SAAA,MAAA,EAAA;MACa,SAAA,eAAA,EAAA,QAAA;MAEX,SAAA,QAAA,EAAA,oDAAA;IAAR,CAAA;IAAO,SAAA,MAAA,EAAA;MAEE,SAAa,eAAA,EAAA,cAAA;MACV,SAAA,QAAA,EAAA,yDAAA;IACJ,CAAA;EAGA,CAAA;EALsB;;AAQtC;;EACe,SAAA,WAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA;CACA;;;AF3BH,KE9BA,YAAA,GF8BqB,OAAR,GAAA;;;UE5Bf,gBAAA;EDKE,eAAY,CAAA,EAAA;IAAQ,IAAA,CAAA,EAAA,MAAA;IAAuB,iBAAA,CAAA,EAAA,MAAA,EAAA;EAA5B,CAAA;;AAezB,UChBQ,iBAAA,SAA0B,gBDkBS,CAAA;EAExC,UAAA,CAAA,EAAA,MAAA;EAIA,MAAA,CAAA,ECtBK,sBDsBL,CAAA,IAAiC,CAAA;AACD;AAQrC,UC5BU,yBAAA,SAAkC,gBD4DlC,CAAA;;;UCxDA,2BAAA,SAAoC;EAflC,UAAA,CAAA,EAAA,MAAY;EAEd,MAAA,EAeD,sBAfiB,CAAA,KAAA,CAAA;AAAA;AAI0B,KAc/C,qBAAA,GACF,yBAVyC,GAWzC,2BAXyD;AAAA,UAalD,YAAA,CATA;EAKL;EAIK,iCAIS,CAAA,EAAA,OAAA;EAGd;EAKA,eAAA,CAAA,EARc,qBAQQ;;KALtB,yBAAA,GAA4B,IAM9B,CALF,wBAKE,EAAA,cAAA,GAAA,MAAA,CAAA;KADE,sBAGO,CAAA,uBAAA,OAAA,CAAA,GAFT,OAES,CAFD,YAEC,CAAA,GAAA,CAAA,CAAA,GAAA,IAAA,EAAA,cAAA,SAAA,IAAA,GAAA,CAAA,MAAA,EACG,YADH,CAAA,GAAA,CACG,MAAA,EAED,YAFC,EAED;EACa,iBAAA,EAAA,yBAAA;AAEX,CAAA,CAAR,EAAA,GAAA,OAAA,CAAQ,YAAR,CAAA,GAAA,IAAA,CAAA;AAAO,UAEE,YAAA,SAAqB,iBAFvB,CAAA;EAEE,gBAAa,CAAA,EACV,qBADU,EAAA;EACV,YAAA,CAAA,EACJ,YADI;EACJ,aAAA,CAAA,EAAA,MAAA,GAAA,KAAA;EAGA,cAAA,CAAA,EAAA,OAAA;EALsB,YAAA,CAAA,EAKtB,YALsB;;AAQrB,UAAA,wBAAA,SAAiC,YAAR,CAAA;EACnB,YAAA,EAAR,OAAQ,CAAA,YAAA,CAAA,cAAA,CAAA,CAAA;EAAR,IAAA,EACR,OADQ,CACA,YADA,CAAA,MAAA,CAAA,CAAA;EACA,kBAAA,EACM,OADN,CACc,YADd,CAAA,oBAAA,CAAA,CAAA;;;;;AF3Bf;;;;ACvBA;;AAAuD,iBEevC,UAAA,CFfuC,YAAA,CAAA,EEed,YFfc,CAAA,EEeM,IAAA,CAAK,MFfX,EAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/utils.ts","../src/workers-configs.ts","../src/plugin-config.ts","../src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;ACgDK,KDOO,OCPP,CAAA,CAAA,CAAA,GDOoB,OCPpB,CDO4B,CCP5B,EAAA,SAA8B,CAAA;;;;AAA9B,KAjBO,YAAA,GAAe,IAiBtB,CAjB2B,eAiBG,EAAU,MAjBU,mBAiBV,CAA0B;KAAlE,8BAAA,UAAwC;KAExC,mBAAA,GACF,oCACA;KAEE,iCAAA,SACE;AC/BP,KDiCK,8BAAA,GACJ,8BClCuB,CAAA,aAAA,CAAA,CAAA,MAAA,CAAA;AAA8B;AAE5B;AAI0B;AAS1C,cDwBG,0BCtBJ,EAAA;EAGJ;AAEyB;AAMU;EAQnC,SAAA,cAAA,EAAsB;IAChB,SAAA,KAAA,EAAA;MAAR,SAAA,eAAA,EAAA,eAAA;MAES,SAAA,QAAA,EAAA,2DAAA;IACG,CAAA;IAED,SAAA,MAAA,EAAA;MACa,SAAA,eAAA,EAAA,QAAA;MAEX,SAAA,QAAA,EAAA,oDAAA;IAAR,CAAA;IAAO,SAAA,MAAA,EAAA;MAEE,SAAa,eAAA,EAAA,cAAA;MACV,SAAA,QAAA,EAAA,yDAAA;IACJ,CAAA;EAGA,CAAA;EALsB;;AAQtC;;EACe,SAAA,WAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA;CACA;;;AF1BH,KE/BA,YAAA,GF+BqB,OAAR,GAAA;;;UE7Bf,gBAAA;EDKE,eAAY,CAAA,EAAA;IAAQ,IAAA,CAAA,EAAA,MAAA;IAAuB,iBAAA,CAAA,EAAA,MAAA,EAAA;EAA5B,CAAA;;AAezB,UChBQ,iBAAA,SAA0B,gBDkBS,CAAA;EAExC,UAAA,CAAA,EAAA,MAAA;EAIA,MAAA,CAAA,ECtBK,sBDsBL,CAAA,IAAiC,CAAA;AACD;AAQrC,UC5BU,yBAAA,SAAkC,gBD4DlC,CAAA;;;UCxDA,2BAAA,SAAoC;EAflC,UAAA,CAAA,EAAA,MAAY;EAEd,MAAA,EAeD,sBAfiB,CAAA,KAAA,CAAA;AAAA;AAI0B,KAc/C,qBAAA,GACF,yBAVyC,GAWzC,2BAXyD;AAAA,UAalD,YAAA,CATA;EAKL;EAIK,iCAIS,CAAA,EAAA,OAAA;EAGd;EAKA,eAAA,CAAA,EARc,qBAQQ;;KALtB,yBAAA,GAA4B,IAM9B,CALF,wBAKE,EAAA,cAAA,GAAA,MAAA,CAAA;KADE,sBAGO,CAAA,uBAAA,OAAA,CAAA,GAFT,OAES,CAFD,YAEC,CAAA,GAAA,CAAA,CAAA,GAAA,IAAA,EAAA,cAAA,SAAA,IAAA,GAAA,CAAA,MAAA,EACG,YADH,CAAA,GAAA,CACG,MAAA,EAED,YAFC,EAED;EACa,iBAAA,EAAA,yBAAA;AAEX,CAAA,CAAR,EAAA,GAAA,OAAA,CAAQ,YAAR,CAAA,GAAA,IAAA,CAAA;AAAO,UAEE,YAAA,SAAqB,iBAFvB,CAAA;EAEE,gBAAa,CAAA,EACV,qBADU,EAAA;EACV,YAAA,CAAA,EACJ,YADI;EACJ,aAAA,CAAA,EAAA,MAAA,GAAA,KAAA;EAGA,cAAA,CAAA,EAAA,OAAA;EALsB,YAAA,CAAA,EAKtB,YALsB;;AAQrB,UAAA,wBAAA,SAAiC,YAAR,CAAA;EACnB,YAAA,EAAR,OAAQ,CAAA,YAAA,CAAA,cAAA,CAAA,CAAA;EAAR,IAAA,EACR,OADQ,CACA,YADA,CAAA,MAAA,CAAA,CAAA;EACA,kBAAA,EACM,OADN,CACc,YADd,CAAA,oBAAA,CAAA,CAAA;;;;;AF1Bf;;;;ACxBA;;AAAuD,iBEevC,UAAA,CFfuC,YAAA,CAAA,EEed,YFfc,CAAA,EEeM,IAAA,CAAK,MFfX,EAAA"}
package/dist/index.mjs CHANGED
@@ -1,6 +1,5 @@
1
1
  import module$1, { builtinModules, createRequire } from "node:module";
2
2
  import assert from "node:assert";
3
- import { randomUUID } from "node:crypto";
4
3
  import { CoreHeaders, Log, LogLevel, Miniflare, Request as Request$1, Response as Response$1, coupleWebSocket, getDefaultDevRegistryPath, getNodeCompat, getWorkerRegistry, kUnsafeEphemeralUniqueKey } from "miniflare";
5
4
  import * as wrangler from "wrangler";
6
5
  import * as nodePath from "node:path";
@@ -9,6 +8,7 @@ import * as util$1 from "node:util";
9
8
  import { format, inspect } from "node:util";
10
9
  import * as vite from "vite";
11
10
  import { version } from "vite";
11
+ import { randomUUID } from "node:crypto";
12
12
  import * as fs$1 from "node:fs";
13
13
  import fs, { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
14
14
  import os from "node:os";
@@ -1557,8 +1557,16 @@ async function sendResponse(res, response) {
1557
1557
  }
1558
1558
 
1559
1559
  //#endregion
1560
- //#region src/utils.ts
1560
+ //#region src/constants.ts
1561
1561
  var import_gte = /* @__PURE__ */ __toESM$1(require_gte(), 1);
1562
+ const ROUTER_WORKER_NAME = "__router-worker__";
1563
+ const ASSET_WORKER_NAME = "__asset-worker__";
1564
+ const VITE_PROXY_WORKER_NAME = "__vite_proxy_worker__";
1565
+ const PROXY_SHARED_SECRET = randomUUID();
1566
+ const kRequestType = Symbol("kRequestType");
1567
+
1568
+ //#endregion
1569
+ //#region src/utils.ts
1562
1570
  const debuglog = util$1.debuglog("@cloudflare:vite-plugin");
1563
1571
  /**
1564
1572
  * Creates an internal plugin to be used inside the main `vite-plugin-cloudflare` plugin.
@@ -1584,13 +1592,13 @@ function cleanUrl(url) {
1584
1592
  function withTrailingSlash(path$1) {
1585
1593
  return path$1.endsWith("/") ? path$1 : `${path$1}/`;
1586
1594
  }
1587
- function createRequestHandler(ctx, handler) {
1595
+ function createRequestHandler(handler) {
1588
1596
  return async (req, res, next) => {
1589
1597
  let request$1;
1590
1598
  try {
1591
1599
  if (req.originalUrl) req.url = req.originalUrl;
1592
1600
  request$1 = createRequest(req, res);
1593
- let response = await handler(toMiniflareRequest(ctx, request$1), req);
1601
+ let response = await handler(toMiniflareRequest(request$1), req);
1594
1602
  if (req.httpVersionMajor === 2) {
1595
1603
  response = new Response$1(response.body, response);
1596
1604
  response.headers.delete("transfer-encoding");
@@ -1605,11 +1613,11 @@ function createRequestHandler(ctx, handler) {
1605
1613
  function satisfiesViteVersion(minVersion$2) {
1606
1614
  return (0, import_gte.default)(version, minVersion$2);
1607
1615
  }
1608
- function toMiniflareRequest(ctx, request$1) {
1616
+ function toMiniflareRequest(request$1) {
1609
1617
  const host = request$1.headers.get("Host");
1610
1618
  const xForwardedHost = request$1.headers.get("X-Forwarded-Host");
1611
1619
  if (host && !xForwardedHost) request$1.headers.set("X-Forwarded-Host", host);
1612
- request$1.headers.set(CoreHeaders.PROXY_SHARED_SECRET, ctx.proxySharedSecret);
1620
+ request$1.headers.set(CoreHeaders.PROXY_SHARED_SECRET, PROXY_SHARED_SECRET);
1613
1621
  const secFetchMode = request$1.headers.get("Sec-Fetch-Mode");
1614
1622
  if (secFetchMode) request$1.headers.set(CoreHeaders.SEC_FETCH_MODE, secFetchMode);
1615
1623
  return new Request$1(request$1.url, {
@@ -1710,10 +1718,8 @@ var PluginContext = class {
1710
1718
  #sharedContext;
1711
1719
  #resolvedPluginConfig;
1712
1720
  #resolvedViteConfig;
1713
- #proxySharedSecret;
1714
1721
  constructor(sharedContext$1) {
1715
1722
  this.#sharedContext = sharedContext$1;
1716
- this.#proxySharedSecret = randomUUID();
1717
1723
  }
1718
1724
  /** Creates a new Miniflare instance or updates the existing instance */
1719
1725
  async startOrUpdateMiniflare(options) {
@@ -1758,11 +1764,14 @@ var PluginContext = class {
1758
1764
  get hasShownWorkerConfigWarnings() {
1759
1765
  return this.#sharedContext.hasShownWorkerConfigWarnings;
1760
1766
  }
1761
- setIsRestartingDevServer(isRestartingDevServer) {
1762
- this.#sharedContext.isRestartingDevServer = isRestartingDevServer;
1767
+ beginRestartingDevServer() {
1768
+ this.#sharedContext.restartingDevServerCount++;
1769
+ }
1770
+ endRestartingDevServer() {
1771
+ this.#sharedContext.restartingDevServerCount--;
1763
1772
  }
1764
1773
  get isRestartingDevServer() {
1765
- return this.#sharedContext.isRestartingDevServer;
1774
+ return this.#sharedContext.restartingDevServerCount > 0;
1766
1775
  }
1767
1776
  setResolvedPluginConfig(resolvedPluginConfig) {
1768
1777
  this.#resolvedPluginConfig = resolvedPluginConfig;
@@ -1803,9 +1812,6 @@ var PluginContext = class {
1803
1812
  getNodeJsCompat(environmentName) {
1804
1813
  return this.#getWorker(environmentName)?.nodeJsCompat;
1805
1814
  }
1806
- get proxySharedSecret() {
1807
- return this.#proxySharedSecret;
1808
- }
1809
1815
  };
1810
1816
  function assertIsNotPreview(ctx) {
1811
1817
  assert(ctx.resolvedPluginConfig.type !== "preview", `Expected "assets-only" or "workers" plugin config`);
@@ -2228,7 +2234,7 @@ function constructWranglerConfig(workerOrWorkers) {
2228
2234
  __name(constructWranglerConfig, "constructWranglerConfig");
2229
2235
 
2230
2236
  //#endregion
2231
- //#region ../workers-utils/dist/chunk-66S7A4CD.mjs
2237
+ //#region ../workers-utils/dist/chunk-NNMRVG4F.mjs
2232
2238
  var UserError = class extends Error {
2233
2239
  static {
2234
2240
  __name(this, "UserError");
@@ -4646,6 +4652,30 @@ function formatConfigSnippet(snippet, configPath, formatted = true) {
4646
4652
  else return formatted ? JSON.stringify(snippet, null, 2) : JSON.stringify(snippet);
4647
4653
  }
4648
4654
  __name(formatConfigSnippet, "formatConfigSnippet");
4655
+ function isDirectory(path2) {
4656
+ return fs.statSync(path2, { throwIfNoEntry: false })?.isDirectory() ?? false;
4657
+ }
4658
+ __name(isDirectory, "isDirectory");
4659
+ function removeDir(dirPath, { fireAndForget = false } = {}) {
4660
+ const result = fs.promises.rm(dirPath, {
4661
+ recursive: true,
4662
+ force: true,
4663
+ maxRetries: 5,
4664
+ retryDelay: 100
4665
+ });
4666
+ if (fireAndForget) result.catch(() => {});
4667
+ else return result;
4668
+ }
4669
+ __name(removeDir, "removeDir");
4670
+ function removeDirSync(dirPath) {
4671
+ fs.rmSync(dirPath, {
4672
+ recursive: true,
4673
+ force: true,
4674
+ maxRetries: 5,
4675
+ retryDelay: 100
4676
+ });
4677
+ }
4678
+ __name(removeDirSync, "removeDirSync");
4649
4679
 
4650
4680
  //#endregion
4651
4681
  //#region ../workers-utils/dist/index.mjs
@@ -5238,6 +5268,7 @@ var defaultWranglerConfig = {
5238
5268
  upload_source_maps: void 0,
5239
5269
  assets: void 0,
5240
5270
  observability: { enabled: true },
5271
+ cache: void 0,
5241
5272
  compliance_region: void 0,
5242
5273
  python_modules: { exclude: ["**/*.pyc"] },
5243
5274
  define: {},
@@ -5270,10 +5301,6 @@ __export(mod_esm_exports, { default: () => mod_esm_default });
5270
5301
  var import_mod_cjs = __toESM(require_mod_cjs3(), 1);
5271
5302
  __reExport(mod_esm_exports, __toESM(require_mod_cjs3(), 1));
5272
5303
  var mod_esm_default = import_mod_cjs.default;
5273
- function isDirectory(path4) {
5274
- return fs.statSync(path4, { throwIfNoEntry: false })?.isDirectory() ?? false;
5275
- }
5276
- __name(isDirectory, "isDirectory");
5277
5304
  function getGlobalWranglerConfigPath() {
5278
5305
  const configDir = mod_esm_default(".wrangler").config();
5279
5306
  const legacyConfigDir = path3.join(os.homedir(), ".wrangler");
@@ -6137,6 +6164,7 @@ var validateStreamingTailConsumers = /* @__PURE__ */ __name((diagnostics, field,
6137
6164
  function normalizeAndValidateEnvironment(diagnostics, configPath, rawEnv, isDispatchNamespace, preserveOriginalMain, envName = "top level", topLevelEnv, useServiceEnvironments, rawConfig) {
6138
6165
  deprecated(diagnostics, rawEnv, "node_compat", `The "node_compat" field is no longer supported as of Wrangler v4. Instead, use the \`nodejs_compat\` compatibility flag. This includes the functionality from legacy \`node_compat\` polyfills and natively implemented Node.js APIs. See https://developers.cloudflare.com/workers/runtime-apis/nodejs for more information.`, true, "Removed", "error");
6139
6166
  experimental(diagnostics, rawEnv, "unsafe");
6167
+ experimental(diagnostics, rawEnv, "secrets");
6140
6168
  const route = normalizeAndValidateRoute(diagnostics, topLevelEnv, rawEnv);
6141
6169
  const account_id = inheritableInWranglerEnvironments(diagnostics, useServiceEnvironments, topLevelEnv, mutateEmptyStringAccountIDValue(diagnostics, rawEnv), "account_id", isString$2, void 0, void 0);
6142
6170
  const routes = validateRoutes(diagnostics, topLevelEnv, rawEnv);
@@ -6166,6 +6194,7 @@ function normalizeAndValidateEnvironment(diagnostics, configPath, rawEnv, isDisp
6166
6194
  workers_dev,
6167
6195
  preview_urls,
6168
6196
  vars: notInheritable(diagnostics, topLevelEnv, rawConfig, rawEnv, envName, "vars", validateVars(envName), {}),
6197
+ secrets: notInheritable(diagnostics, topLevelEnv, rawConfig, rawEnv, envName, "secrets", validateSecrets(envName), void 0),
6169
6198
  define: notInheritable(diagnostics, topLevelEnv, rawConfig, rawEnv, envName, "define", validateDefines(envName), {}),
6170
6199
  durable_objects: notInheritable(diagnostics, topLevelEnv, rawConfig, rawEnv, envName, "durable_objects", validateBindingsProperty(envName, validateDurableObjectBinding), { bindings: [] }),
6171
6200
  workflows: notInheritable(diagnostics, topLevelEnv, rawConfig, rawEnv, envName, "workflows", all(validateBindingArray(envName, validateWorkflowBinding), validateUniqueNameProperty), []),
@@ -6208,6 +6237,7 @@ function normalizeAndValidateEnvironment(diagnostics, configPath, rawEnv, isDisp
6208
6237
  logpush: inheritable(diagnostics, topLevelEnv, rawEnv, "logpush", isBoolean, void 0),
6209
6238
  upload_source_maps: inheritable(diagnostics, topLevelEnv, rawEnv, "upload_source_maps", isBoolean, void 0),
6210
6239
  observability: inheritable(diagnostics, topLevelEnv, rawEnv, "observability", validateObservability, void 0),
6240
+ cache: inheritable(diagnostics, topLevelEnv, rawEnv, "cache", validateCache, void 0),
6211
6241
  compliance_region: inheritable(diagnostics, topLevelEnv, rawEnv, "compliance_region", isOneOf("public", "fedramp_high"), void 0),
6212
6242
  python_modules: inheritable(diagnostics, topLevelEnv, rawEnv, "python_modules", validatePythonModules, { exclude: ["**/*.pyc"] })
6213
6243
  };
@@ -6323,6 +6353,18 @@ Please add "vars.${varName}" to "env.${envName}".`);
6323
6353
  }
6324
6354
  return isValid$1;
6325
6355
  }, "validateVars");
6356
+ var validateSecrets = /* @__PURE__ */ __name((envName) => (diagnostics, field, value, config) => {
6357
+ const fieldPath = config === void 0 ? `${field}` : `env.${envName}.${field}`;
6358
+ if (value === void 0) return true;
6359
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
6360
+ diagnostics.errors.push(`The field "${fieldPath}" should be an object but got ${JSON.stringify(value)}.`);
6361
+ return false;
6362
+ }
6363
+ let isValid$1 = true;
6364
+ validateAdditionalProperties(diagnostics, fieldPath, Object.keys(value), ["required"]);
6365
+ isValid$1 = validateOptionalTypedArray(diagnostics, `${fieldPath}.required`, value.required, "string") && isValid$1;
6366
+ return isValid$1;
6367
+ }, "validateSecrets");
6326
6368
  var validateBindingsProperty = /* @__PURE__ */ __name((envName, validateBinding) => (diagnostics, field, value, config) => {
6327
6369
  let isValid$1 = true;
6328
6370
  const fieldPath = config === void 0 ? `${field}` : `env.${envName}.${field}`;
@@ -7063,6 +7105,7 @@ var validateBindingsHaveUniqueNames = /* @__PURE__ */ __name((diagnostics, confi
7063
7105
  let hasDuplicates = false;
7064
7106
  const bindingNamesArray = Object.entries(friendlyBindingNames);
7065
7107
  const bindingsGroupedByType = Object.fromEntries(bindingNamesArray.map(([bindingType, binding]) => [binding, getBindingNames(bindingType === "queues" ? config[bindingType]?.producers : config[bindingType])]));
7108
+ bindingsGroupedByType["Secret"] = config.secrets?.required ?? [];
7066
7109
  const bindingsGroupedByName = {};
7067
7110
  for (const bindingType in bindingsGroupedByType) {
7068
7111
  const bindingNames = bindingsGroupedByType[bindingType];
@@ -7500,6 +7543,18 @@ var validateObservability = /* @__PURE__ */ __name((diagnostics, field, value) =
7500
7543
  if (samplingRate && (samplingRate < 0 || samplingRate > 1)) diagnostics.errors.push(`"${field}.head_sampling_rate" must be a value between 0 and 1.`);
7501
7544
  return isValid$1;
7502
7545
  }, "validateObservability");
7546
+ var validateCache = /* @__PURE__ */ __name((diagnostics, field, value) => {
7547
+ if (value === void 0) return true;
7548
+ if (typeof value !== "object" || value === null) {
7549
+ diagnostics.errors.push(`"${field}" should be an object but got ${JSON.stringify(value)}.`);
7550
+ return false;
7551
+ }
7552
+ const val = value;
7553
+ let isValid$1 = true;
7554
+ isValid$1 = validateRequiredProperty(diagnostics, field, "enabled", val.enabled, "boolean") && isValid$1;
7555
+ isValid$1 = validateAdditionalProperties(diagnostics, field, Object.keys(val), ["enabled"]) && isValid$1;
7556
+ return isValid$1;
7557
+ }, "validateCache");
7503
7558
  function warnIfDurableObjectsHaveNoMigrations(diagnostics, durableObjects, migrations, configPath) {
7504
7559
  if (Array.isArray(durableObjects.bindings) && durableObjects.bindings.length > 0) {
7505
7560
  const exportedDurableObjects = (durableObjects.bindings || []).filter((binding) => !binding.script_name);
@@ -23199,13 +23254,6 @@ const generateStaticRoutingRuleMatcher = (rules) => ({ request: request$1 }) =>
23199
23254
  return false;
23200
23255
  };
23201
23256
 
23202
- //#endregion
23203
- //#region src/constants.ts
23204
- const ROUTER_WORKER_NAME = "__router-worker__";
23205
- const ASSET_WORKER_NAME = "__asset-worker__";
23206
- const VITE_PROXY_WORKER_NAME = "__vite_proxy_worker__";
23207
- const kRequestType = Symbol("kRequestType");
23208
-
23209
23257
  //#endregion
23210
23258
  //#region src/containers.ts
23211
23259
  /**
@@ -26017,7 +26065,7 @@ async function getDevMiniflareOptions(ctx, viteDevServer) {
26017
26065
  return {
26018
26066
  miniflareOptions: {
26019
26067
  log: logger,
26020
- unsafeProxySharedSecret: ctx.proxySharedSecret,
26068
+ unsafeProxySharedSecret: PROXY_SHARED_SECRET,
26021
26069
  logRequests: false,
26022
26070
  inspectorPort: inputInspectorPort === false ? void 0 : inputInspectorPort,
26023
26071
  unsafeDevRegistryPath: getDefaultDevRegistryPath(),
@@ -26122,7 +26170,7 @@ async function getPreviewMiniflareOptions(ctx, vitePreviewServer) {
26122
26170
  return {
26123
26171
  miniflareOptions: {
26124
26172
  log: logger,
26125
- unsafeProxySharedSecret: ctx.proxySharedSecret,
26173
+ unsafeProxySharedSecret: PROXY_SHARED_SECRET,
26126
26174
  inspectorPort: inputInspectorPort === false ? void 0 : inputInspectorPort,
26127
26175
  unsafeDevRegistryPath: getDefaultDevRegistryPath(),
26128
26176
  unsafeTriggerHandlers: true,
@@ -26263,7 +26311,7 @@ const devPlugin = createPlugin("dev", (ctx) => {
26263
26311
  if (staticRouting) {
26264
26312
  const excludeRulesMatcher = generateStaticRoutingRuleMatcher(staticRouting.asset_worker ?? []);
26265
26313
  const includeRulesMatcher = generateStaticRoutingRuleMatcher(staticRouting.user_worker);
26266
- const userWorkerHandler = createRequestHandler(ctx, async (request$1) => {
26314
+ const userWorkerHandler = createRequestHandler(async (request$1) => {
26267
26315
  request$1.headers.set(CoreHeaders.ROUTE_OVERRIDE, entryWorkerName);
26268
26316
  return ctx.miniflare.dispatchFetch(request$1, { redirect: "manual" });
26269
26317
  });
@@ -26305,7 +26353,7 @@ const devPlugin = createPlugin("dev", (ctx) => {
26305
26353
  handle: preMiddleware
26306
26354
  });
26307
26355
  }
26308
- viteDevServer.middlewares.use(createRequestHandler(ctx, async (request$1, req) => {
26356
+ viteDevServer.middlewares.use(createRequestHandler(async (request$1, req) => {
26309
26357
  if (req[kRequestType] === "asset") {
26310
26358
  request$1.headers.set(CoreHeaders.ROUTE_OVERRIDE, ASSET_WORKER_NAME);
26311
26359
  return ctx.miniflare.dispatchFetch(request$1, { redirect: "manual" });
@@ -26465,10 +26513,12 @@ const outputConfigPlugin = createPlugin("output-config", (ctx) => {
26465
26513
  });
26466
26514
  }
26467
26515
  } else if (this.environment.name === "client") {
26516
+ const filesToAssetsIgnore = ["wrangler.json", ".dev.vars"];
26517
+ const existingAssetsIgnoreContent = ctx.resolvedViteConfig.publicDir.length > 0 ? readAssetsIgnoreFile(nodePath.join(ctx.resolvedViteConfig.publicDir, ".assetsignore")) : "";
26468
26518
  this.emitFile({
26469
26519
  type: "asset",
26470
26520
  fileName: ".assetsignore",
26471
- source: `${["wrangler.json", ".dev.vars"].join("\n")}\n`
26521
+ source: `${existingAssetsIgnoreContent}${filesToAssetsIgnore.join("\n")}\n`
26472
26522
  });
26473
26523
  if (ctx.resolvedPluginConfig.type === "assets-only") {
26474
26524
  const inputAssetsOnlyConfig = ctx.resolvedPluginConfig.config;
@@ -26495,6 +26545,11 @@ const outputConfigPlugin = createPlugin("output-config", (ctx) => {
26495
26545
  }
26496
26546
  };
26497
26547
  });
26548
+ function readAssetsIgnoreFile(assetsIgnorePath) {
26549
+ const content = existsSync(assetsIgnorePath) ? readFileSync(assetsIgnorePath, "utf-8") : "";
26550
+ if (content.length === 0) return "";
26551
+ return content.at(-1) === "\n" ? content : `${content}\n`;
26552
+ }
26498
26553
  function getAssetsDirectory(workerOutputDirectory, resolvedViteConfig) {
26499
26554
  const clientOutputDirectory = resolvedViteConfig.environments.client?.build.outDir;
26500
26555
  assert(clientOutputDirectory, "Unexpected error: client output directory is undefined");
@@ -26538,7 +26593,7 @@ const previewPlugin = createPlugin("preview", (ctx) => {
26538
26593
  };
26539
26594
  }
26540
26595
  handleWebSocket(vitePreviewServer.httpServer, ctx.miniflare);
26541
- vitePreviewServer.middlewares.use(createRequestHandler(ctx, (request$1) => {
26596
+ vitePreviewServer.middlewares.use(createRequestHandler((request$1) => {
26542
26597
  return ctx.miniflare.dispatchFetch(request$1, { redirect: "manual" });
26543
26598
  }));
26544
26599
  } };
@@ -26618,7 +26673,7 @@ const triggerHandlersPlugin = createPlugin("trigger-handlers", (ctx) => {
26618
26673
  const entryWorkerConfig = ctx.entryWorkerConfig;
26619
26674
  if (!entryWorkerConfig) return;
26620
26675
  const entryWorkerName = entryWorkerConfig.name;
26621
- const requestHandler = createRequestHandler(ctx, (request$1) => {
26676
+ const requestHandler = createRequestHandler((request$1) => {
26622
26677
  request$1.headers.set(CoreHeaders.ROUTE_OVERRIDE, entryWorkerName);
26623
26678
  return ctx.miniflare.dispatchFetch(request$1, { redirect: "manual" });
26624
26679
  });
@@ -26658,7 +26713,7 @@ const wasmHelperPlugin = createPlugin("wasm-helper", (ctx) => {
26658
26713
  //#region src/index.ts
26659
26714
  const sharedContext = {
26660
26715
  hasShownWorkerConfigWarnings: false,
26661
- isRestartingDevServer: false
26716
+ restartingDevServerCount: 0
26662
26717
  };
26663
26718
  await assertWranglerVersion();
26664
26719
  /**
@@ -26682,12 +26737,12 @@ function cloudflare(pluginConfig = {}) {
26682
26737
  const restartServer = viteDevServer.restart.bind(viteDevServer);
26683
26738
  viteDevServer.restart = async () => {
26684
26739
  try {
26685
- ctx.setIsRestartingDevServer(true);
26740
+ ctx.beginRestartingDevServer();
26686
26741
  debuglog("From server.restart(): Restarting server...");
26687
26742
  await restartServer();
26688
26743
  debuglog("From server.restart(): Restarted server...");
26689
26744
  } finally {
26690
- ctx.setIsRestartingDevServer(false);
26745
+ ctx.endRestartingDevServer();
26691
26746
  }
26692
26747
  };
26693
26748
  }