wrangler 4.10.0 → 4.11.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.
@@ -27,14 +27,14 @@
27
27
  },
28
28
  "compatibility_date": {
29
29
  "type": "string",
30
- "description": "A date in the form yyyy-mm-dd, which will be used to determine which version of the Workers runtime is used.\n\nMore details at https://developers.cloudflare.com/workers/platform/compatibility-dates"
30
+ "description": "A date in the form yyyy-mm-dd, which will be used to determine which version of the Workers runtime is used.\n\nMore details at https://developers.cloudflare.com/workers/configuration/compatibility-dates"
31
31
  },
32
32
  "compatibility_flags": {
33
33
  "type": "array",
34
34
  "items": {
35
35
  "type": "string"
36
36
  },
37
- "description": "A list of flags that enable features from upcoming features of the Workers runtime, usually used together with compatibility_date.\n\nMore details at https://developers.cloudflare.com/workers/platform/compatibility-flags",
37
+ "description": "A list of flags that enable features from upcoming features of the Workers runtime, usually used together with compatibility_date.\n\nMore details at https://developers.cloudflare.com/workers/configuration/compatibility-flags/",
38
38
  "default": []
39
39
  },
40
40
  "main": {
@@ -954,14 +954,14 @@
954
954
  },
955
955
  "compatibility_date": {
956
956
  "type": "string",
957
- "description": "A date in the form yyyy-mm-dd, which will be used to determine which version of the Workers runtime is used.\n\nMore details at https://developers.cloudflare.com/workers/platform/compatibility-dates"
957
+ "description": "A date in the form yyyy-mm-dd, which will be used to determine which version of the Workers runtime is used.\n\nMore details at https://developers.cloudflare.com/workers/configuration/compatibility-dates"
958
958
  },
959
959
  "compatibility_flags": {
960
960
  "type": "array",
961
961
  "items": {
962
962
  "type": "string"
963
963
  },
964
- "description": "A list of flags that enable features from upcoming features of the Workers runtime, usually used together with compatibility_date.\n\nMore details at https://developers.cloudflare.com/workers/platform/compatibility-flags",
964
+ "description": "A list of flags that enable features from upcoming features of the Workers runtime, usually used together with compatibility_date.\n\nMore details at https://developers.cloudflare.com/workers/configuration/compatibility-flags/",
965
965
  "default": []
966
966
  },
967
967
  "main": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wrangler",
3
- "version": "4.10.0",
3
+ "version": "4.11.1",
4
4
  "description": "Command-line interface for all things Cloudflare Workers",
5
5
  "keywords": [
6
6
  "wrangler",
@@ -52,17 +52,17 @@
52
52
  "dependencies": {
53
53
  "@cloudflare/unenv-preset": "2.3.1",
54
54
  "blake3-wasm": "2.1.5",
55
- "esbuild": "0.24.2",
55
+ "esbuild": "0.25.2",
56
56
  "path-to-regexp": "6.3.0",
57
57
  "unenv": "2.0.0-rc.15",
58
- "workerd": "1.20250409.0",
59
- "@cloudflare/kv-asset-handler": "0.4.0",
60
- "miniflare": "4.20250409.0"
58
+ "workerd": "1.20250410.0",
59
+ "miniflare": "4.20250410.1",
60
+ "@cloudflare/kv-asset-handler": "0.4.0"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@aws-sdk/client-s3": "^3.721.0",
64
64
  "@cloudflare/types": "6.18.4",
65
- "@cloudflare/workers-types": "^4.20250409.0",
65
+ "@cloudflare/workers-types": "^4.20250410.0",
66
66
  "@cspotcode/source-map-support": "0.8.1",
67
67
  "@iarna/toml": "^3.0.0",
68
68
  "@microsoft/api-extractor": "^7.47.0",
@@ -137,12 +137,12 @@
137
137
  "yargs": "^17.7.2",
138
138
  "@cloudflare/cli": "1.1.1",
139
139
  "@cloudflare/eslint-config-worker": "1.1.0",
140
- "@cloudflare/pages-shared": "^0.13.26",
141
- "@cloudflare/workers-shared": "0.17.1",
140
+ "@cloudflare/pages-shared": "^0.13.28",
141
+ "@cloudflare/workers-shared": "0.17.2",
142
142
  "@cloudflare/workers-tsconfig": "0.0.0"
143
143
  },
144
144
  "peerDependencies": {
145
- "@cloudflare/workers-types": "^4.20250409.0"
145
+ "@cloudflare/workers-types": "^4.20250410.0"
146
146
  },
147
147
  "peerDependenciesMeta": {
148
148
  "@cloudflare/workers-types": {
@@ -76,6 +76,7 @@ declare type AssetConfig = z.infer<typeof AssetConfigSchema>;
76
76
  declare const AssetConfigSchema: z.ZodObject<{
77
77
  account_id: z.ZodOptional<z.ZodNumber>;
78
78
  script_id: z.ZodOptional<z.ZodNumber>;
79
+ debug: z.ZodOptional<z.ZodBoolean>;
79
80
  compatibility_date: z.ZodOptional<z.ZodString>;
80
81
  compatibility_flags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
81
82
  html_handling: z.ZodOptional<z.ZodEnum<["auto-trailing-slash", "force-trailing-slash", "drop-trailing-slash", "none"]>>;
@@ -156,6 +157,7 @@ declare const AssetConfigSchema: z.ZodObject<{
156
157
  }, "strip", z.ZodTypeAny, {
157
158
  account_id?: number;
158
159
  script_id?: number;
160
+ debug?: boolean;
159
161
  compatibility_date?: string;
160
162
  compatibility_flags?: string[];
161
163
  html_handling?: "none" | "auto-trailing-slash" | "force-trailing-slash" | "drop-trailing-slash";
@@ -182,6 +184,7 @@ declare const AssetConfigSchema: z.ZodObject<{
182
184
  }, {
183
185
  account_id?: number;
184
186
  script_id?: number;
187
+ debug?: boolean;
185
188
  compatibility_date?: string;
186
189
  compatibility_flags?: string[];
187
190
  html_handling?: "none" | "auto-trailing-slash" | "force-trailing-slash" | "drop-trailing-slash";
@@ -1626,7 +1629,7 @@ declare interface EnvironmentInheritable {
1626
1629
  * A date in the form yyyy-mm-dd, which will be used to determine
1627
1630
  * which version of the Workers runtime is used.
1628
1631
  *
1629
- * More details at https://developers.cloudflare.com/workers/platform/compatibility-dates
1632
+ * More details at https://developers.cloudflare.com/workers/configuration/compatibility-dates
1630
1633
  *
1631
1634
  * @inheritable
1632
1635
  */
@@ -1635,7 +1638,7 @@ declare interface EnvironmentInheritable {
1635
1638
  * A list of flags that enable features from upcoming features of
1636
1639
  * the Workers runtime, usually used together with compatibility_date.
1637
1640
  *
1638
- * More details at https://developers.cloudflare.com/workers/platform/compatibility-flags
1641
+ * More details at https://developers.cloudflare.com/workers/configuration/compatibility-flags/
1639
1642
  *
1640
1643
  * @default []
1641
1644
  * @inheritable
@@ -26007,16 +26010,19 @@ declare type RouterConfig = z.infer<typeof RouterConfigSchema>;
26007
26010
  declare const RouterConfigSchema: z.ZodObject<{
26008
26011
  account_id: z.ZodOptional<z.ZodNumber>;
26009
26012
  script_id: z.ZodOptional<z.ZodNumber>;
26013
+ debug: z.ZodOptional<z.ZodBoolean>;
26010
26014
  invoke_user_worker_ahead_of_assets: z.ZodOptional<z.ZodBoolean>;
26011
26015
  has_user_worker: z.ZodOptional<z.ZodBoolean>;
26012
26016
  }, "strip", z.ZodTypeAny, {
26013
26017
  account_id?: number;
26014
26018
  script_id?: number;
26019
+ debug?: boolean;
26015
26020
  invoke_user_worker_ahead_of_assets?: boolean;
26016
26021
  has_user_worker?: boolean;
26017
26022
  }, {
26018
26023
  account_id?: number;
26019
26024
  script_id?: number;
26025
+ debug?: boolean;
26020
26026
  invoke_user_worker_ahead_of_assets?: boolean;
26021
26027
  has_user_worker?: boolean;
26022
26028
  }>;
@@ -81185,7 +81185,7 @@ var import_undici3 = __toESM(require_undici());
81185
81185
 
81186
81186
  // package.json
81187
81187
  var name = "wrangler";
81188
- var version = "4.10.0";
81188
+ var version = "4.11.1";
81189
81189
 
81190
81190
  // src/environment-variables/misc-variables.ts
81191
81191
  init_import_meta_url();
@@ -84788,11 +84788,13 @@ function normalizeAndValidateConfig(rawConfig, configPath, userConfigPath, args)
84788
84788
  let activeEnv = topLevelEnv;
84789
84789
  if (envName !== void 0) {
84790
84790
  if (isRedirectedConfig) {
84791
- diagnostics.errors.push(dedent`
84792
- You have specified the environment "${envName}", but are using a redirected configuration, produced by a build tool such as Vite.
84793
- You need to set the environment in your build tool, rather than via Wrangler.
84794
- For example, if you are using Vite, refer to these docs: https://developers.cloudflare.com/workers/vite-plugin/reference/cloudflare-environments/
84795
- `);
84791
+ if (!isPagesConfig(rawConfig)) {
84792
+ diagnostics.errors.push(dedent`
84793
+ You have specified the environment "${envName}", but are using a redirected configuration, produced by a build tool such as Vite.
84794
+ You need to set the environment in your build tool, rather than via Wrangler.
84795
+ For example, if you are using Vite, refer to these docs: https://developers.cloudflare.com/workers/vite-plugin/reference/cloudflare-environments/
84796
+ `);
84797
+ }
84796
84798
  } else {
84797
84799
  const envDiagnostics = new Diagnostics(
84798
84800
  `"env.${envName}" environment configuration`
@@ -98735,7 +98737,8 @@ var z2 = /* @__PURE__ */ Object.freeze({
98735
98737
  // ../workers-shared/utils/types.ts
98736
98738
  var InternalConfigSchema = z2.object({
98737
98739
  account_id: z2.number().optional(),
98738
- script_id: z2.number().optional()
98740
+ script_id: z2.number().optional(),
98741
+ debug: z2.boolean().optional()
98739
98742
  });
98740
98743
  var RouterConfigSchema = z2.object({
98741
98744
  invoke_user_worker_ahead_of_assets: z2.boolean().optional(),
@@ -101111,7 +101114,7 @@ __name(getDeviceId, "getDeviceId");
101111
101114
  // src/metrics/metrics-dispatcher.ts
101112
101115
  var SPARROW_URL = "https://sparrow.cloudflare.com";
101113
101116
  function getMetricsDispatcher(options33) {
101114
- const SPARROW_SOURCE_KEY = "";
101117
+ const SPARROW_SOURCE_KEY = "50598e014ed44c739ec8074fdc16057c";
101115
101118
  const requests = [];
101116
101119
  const wranglerVersion = getWranglerVersion();
101117
101120
  const amplitude_session_id = Date.now();
@@ -117499,9 +117502,9 @@ init_import_meta_url();
117499
117502
  var import_node_assert20 = __toESM(require("node:assert"));
117500
117503
  var import_undici11 = __toESM(require_undici());
117501
117504
  async function runSearch(searchTerm) {
117502
- const id = ALGOLIA_APP_ID;
117505
+ const id = "8MU1G3QO9P";
117503
117506
  const index = "developers-cloudflare2";
117504
- const key = ALGOLIA_PUBLIC_KEY;
117507
+ const key = "045e8dbec8c137a52f0f56e196d7abe0";
117505
117508
  const params = new URLSearchParams({
117506
117509
  query: searchTerm,
117507
117510
  hitsPerPage: "1",
@@ -120040,7 +120043,7 @@ function blockWorkerJsImports(nodejsCompatMode) {
120040
120043
  return {
120041
120044
  name: "block-worker-js-imports",
120042
120045
  setup(build5) {
120043
- build5.onResolve({ filter: /.*/g }, (args) => {
120046
+ build5.onResolve({ filter: /.*/ }, (args) => {
120044
120047
  if (args.kind === "entry-point") {
120045
120048
  return {
120046
120049
  path: args.path
@@ -123140,6 +123143,7 @@ async function ListHandler3({ projectName, environment }) {
123140
123143
  }, "getStatus");
123141
123144
  const data = deployments.map((deployment) => {
123142
123145
  return {
123146
+ Id: deployment.id,
123143
123147
  Environment: titleCase(deployment.environment),
123144
123148
  Branch: deployment.deployment_trigger.metadata.branch,
123145
123149
  Source: shortSha(deployment.deployment_trigger.metadata.commit_hash),
@@ -123172,7 +123176,7 @@ function esbuildAliasExternalPlugin(aliases2) {
123172
123176
  return {
123173
123177
  name: "external-alias-imports",
123174
123178
  setup(build5) {
123175
- build5.onResolve({ filter: /.*/g }, (args) => {
123179
+ build5.onResolve({ filter: /.*/ }, (args) => {
123176
123180
  if (args.kind === "entry-point") {
123177
123181
  return {
123178
123182
  path: args.path
@@ -143436,10 +143440,10 @@ var disabledDefaultIntegrations = [
143436
143440
  // Request data to Wrangler's HTTP servers may contain PII
143437
143441
  ];
143438
143442
  function setupSentry() {
143439
- if (typeof SENTRY_DSN !== "undefined") {
143443
+ if (true) {
143440
143444
  init({
143441
143445
  release: `wrangler@${version}`,
143442
- dsn: SENTRY_DSN,
143446
+ dsn: "https://9edbb8417b284aa2bbead9b4c318918b@sentry10.cfdata.org/583",
143443
143447
  transport: makeSentry10Transport,
143444
143448
  integrations(defaultIntegrations2) {
143445
143449
  return defaultIntegrations2.filter(
@@ -143471,7 +143475,7 @@ function setupSentry() {
143471
143475
  }
143472
143476
  __name(setupSentry, "setupSentry");
143473
143477
  function addBreadcrumb2(message, level = "log") {
143474
- if (typeof SENTRY_DSN !== "undefined") {
143478
+ if (true) {
143475
143479
  addBreadcrumb({
143476
143480
  message,
143477
143481
  level
@@ -143480,7 +143484,7 @@ function addBreadcrumb2(message, level = "log") {
143480
143484
  }
143481
143485
  __name(addBreadcrumb2, "addBreadcrumb");
143482
143486
  async function captureGlobalException(e7) {
143483
- if (typeof SENTRY_DSN !== "undefined") {
143487
+ if (true) {
143484
143488
  sentryReportingAllowed = await confirm(
143485
143489
  "Would you like to report this error to Cloudflare? Wrangler's output and the error details will be shared with the Wrangler team to help us diagnose and fix the issue.",
143486
143490
  { fallbackValue: false }
@@ -143495,7 +143499,7 @@ async function captureGlobalException(e7) {
143495
143499
  }
143496
143500
  __name(captureGlobalException, "captureGlobalException");
143497
143501
  async function closeSentry() {
143498
- if (typeof SENTRY_DSN !== "undefined") {
143502
+ if (true) {
143499
143503
  await close();
143500
143504
  }
143501
143505
  }
@@ -144035,7 +144039,7 @@ var typesCommand = createCommand({
144035
144039
  }
144036
144040
  }
144037
144041
  const entrypointFormat = entrypoint?.format ?? "modules";
144038
- const header = [];
144042
+ const header = ["/* eslint-disable */"];
144039
144043
  const content = [];
144040
144044
  if (args.includeEnv) {
144041
144045
  logger.log(`Generating project types...
@@ -144420,12 +144424,8 @@ var checkPath = /* @__PURE__ */ __name((path69) => {
144420
144424
  }, "checkPath");
144421
144425
  function generateTypeStrings(formatType, envInterface, envTypeStructure, modulesTypeStructure, stringKeys, compatibilityDate, compatibilityFlags) {
144422
144426
  let baseContent = "";
144423
- let eslintDisable = "";
144424
144427
  let processEnv = "";
144425
144428
  if (formatType === "modules") {
144426
- if (envTypeStructure.length === 0) {
144427
- eslintDisable = " // eslint-disable-next-line @typescript-eslint/no-empty-interface,@typescript-eslint/no-empty-object-type\n";
144428
- }
144429
144429
  if (isProcessEnvPopulated(compatibilityDate, compatibilityFlags) && stringKeys.length > 0) {
144430
144430
  processEnv = `
144431
144431
  type StringifyValues<EnvType extends Record<string, unknown>> = {
@@ -144436,7 +144436,7 @@ declare namespace NodeJS {
144436
144436
  }`;
144437
144437
  }
144438
144438
  baseContent = `declare namespace Cloudflare {
144439
- ${eslintDisable} interface Env {${envTypeStructure.map((value) => `
144439
+ interface Env {${envTypeStructure.map((value) => `
144440
144440
  ${value}`).join("")}
144441
144441
  }
144442
144442
  }
@@ -151705,6 +151705,7 @@ init_hash();
151705
151705
  var BULK_UPLOAD_CONCURRENCY2 = 3;
151706
151706
  var MAX_UPLOAD_ATTEMPTS2 = 5;
151707
151707
  var MAX_UPLOAD_GATEWAY_ERRORS2 = 5;
151708
+ var MAX_DIFF_LINES2 = 100;
151708
151709
  var syncAssets = /* @__PURE__ */ __name(async (accountId, assetDirectory, scriptName, dispatchNamespace) => {
151709
151710
  (0, import_node_assert24.default)(accountId, "Missing accountId");
151710
151711
  logger.info("\u{1F300} Building list of assets...");
@@ -151727,7 +151728,9 @@ var syncAssets = /* @__PURE__ */ __name(async (accountId, assetDirectory, script
151727
151728
  { telemetryMessage: true }
151728
151729
  );
151729
151730
  }
151730
- logger.info(`No files to upload. Proceeding with deployment...`);
151731
+ logger.info(
151732
+ `No updated asset files to upload. Proceeding with deployment...`
151733
+ );
151731
151734
  return initializeAssetsResponse.jwt;
151732
151735
  }
151733
151736
  const numberFilesToUpload = initializeAssetsResponse.buckets.flat().length;
@@ -151759,14 +151762,16 @@ var syncAssets = /* @__PURE__ */ __name(async (accountId, assetDirectory, script
151759
151762
  let attempts = 0;
151760
151763
  const start = Date.now();
151761
151764
  let completionJwt = "";
151762
- let assetUploadCount = 0;
151765
+ let uploadedAssetsCount = 0;
151763
151766
  for (const [bucketIndex, bucket] of assetBuckets.entries()) {
151764
151767
  attempts = 0;
151765
151768
  let gatewayErrors = 0;
151766
151769
  const doUpload = /* @__PURE__ */ __name(async () => {
151767
151770
  const payload = new import_undici22.FormData();
151771
+ const uploadedFiles = [];
151768
151772
  for (const manifestEntry of bucket) {
151769
151773
  const absFilePath = path62.join(assetDirectory, manifestEntry[0]);
151774
+ uploadedFiles.push(manifestEntry[0]);
151770
151775
  payload.append(
151771
151776
  manifestEntry[1].hash,
151772
151777
  new import_undici22.File(
@@ -151794,9 +151799,11 @@ var syncAssets = /* @__PURE__ */ __name(async (accountId, assetDirectory, script
151794
151799
  body: payload
151795
151800
  }
151796
151801
  );
151797
- assetUploadCount += bucket.length;
151798
- logger.info(
151799
- `Uploaded ${assetUploadCount} of ${numberFilesToUpload} assets`
151802
+ uploadedAssetsCount += bucket.length;
151803
+ logAssetsUploadStatus(
151804
+ numberFilesToUpload,
151805
+ uploadedAssetsCount,
151806
+ uploadedFiles
151800
151807
  );
151801
151808
  return res;
151802
151809
  } catch (e7) {
@@ -151863,6 +151870,7 @@ Assets already uploaded have been saved, so the next attempt will automatically
151863
151870
  }, "syncAssets");
151864
151871
  var buildAssetManifest = /* @__PURE__ */ __name(async (dir) => {
151865
151872
  const files = await (0, import_promises37.readdir)(dir, { recursive: true });
151873
+ logReadFilesFromDirectory(dir, files);
151866
151874
  const manifest = {};
151867
151875
  let counter = 0;
151868
151876
  const { assetsIgnoreFunction, assetsIgnoreFilePresent } = await createAssetsIgnoreFunction(dir);
@@ -151917,7 +151925,6 @@ Ensure all assets in your assets directory "${dir}" conform with the Workers max
151917
151925
  );
151918
151926
  return manifest;
151919
151927
  }, "buildAssetManifest");
151920
- var MAX_DIFF_LINES2 = 100;
151921
151928
  function logAssetUpload(line, diffCount) {
151922
151929
  const level = logger.loggerLevel;
151923
151930
  if (LOGGER_LEVELS[level] >= LOGGER_LEVELS.debug) {
@@ -151931,6 +151938,20 @@ function logAssetUpload(line, diffCount) {
151931
151938
  return diffCount++;
151932
151939
  }
151933
151940
  __name(logAssetUpload, "logAssetUpload");
151941
+ function logAssetsUploadStatus(numberFilesToUpload, uploadedAssetsCount, uploadedAssetFiles) {
151942
+ logger.info(
151943
+ `Uploaded ${uploadedAssetsCount} of ${numberFilesToUpload} assets`
151944
+ );
151945
+ uploadedAssetFiles.forEach((file) => logger.debug(`\u2728 ${file}`));
151946
+ }
151947
+ __name(logAssetsUploadStatus, "logAssetsUploadStatus");
151948
+ function logReadFilesFromDirectory(directory, assetFiles) {
151949
+ logger.info(
151950
+ `\u2728 Read ${assetFiles.length} file${assetFiles.length === 1 ? "" : "s"} from the assets directory ${directory}`
151951
+ );
151952
+ assetFiles.forEach((file) => logger.debug(`/${file}`));
151953
+ }
151954
+ __name(logReadFilesFromDirectory, "logReadFilesFromDirectory");
151934
151955
  function getAssetsBasePath(config, assetsCommandLineArg) {
151935
151956
  return assetsCommandLineArg ? process.cwd() : path62.resolve(path62.dirname(config.configPath ?? "wrangler.toml"));
151936
151957
  }