wrangler 3.60.1 → 3.60.3

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.
@@ -66506,7 +66506,7 @@ var require_path_parse = __commonJS({
66506
66506
  "../../node_modules/.pnpm/path-parse@1.0.7/node_modules/path-parse/index.js"(exports2, module3) {
66507
66507
  "use strict";
66508
66508
  init_import_meta_url();
66509
- var isWindows2 = process.platform === "win32";
66509
+ var isWindows3 = process.platform === "win32";
66510
66510
  var splitWindowsRe = /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/;
66511
66511
  var win32 = {};
66512
66512
  function win32SplitPath(filename) {
@@ -66555,7 +66555,7 @@ var require_path_parse = __commonJS({
66555
66555
  name: allParts[3]
66556
66556
  };
66557
66557
  };
66558
- if (isWindows2)
66558
+ if (isWindows3)
66559
66559
  module3.exports = win32.parse;
66560
66560
  else
66561
66561
  module3.exports = posix2.parse;
@@ -67830,22 +67830,22 @@ var require_isexe = __commonJS({
67830
67830
  var require_which = __commonJS({
67831
67831
  "../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js"(exports2, module3) {
67832
67832
  init_import_meta_url();
67833
- var isWindows2 = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
67833
+ var isWindows3 = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
67834
67834
  var path68 = require("path");
67835
- var COLON = isWindows2 ? ";" : ":";
67835
+ var COLON = isWindows3 ? ";" : ":";
67836
67836
  var isexe = require_isexe();
67837
67837
  var getNotFoundError = /* @__PURE__ */ __name((cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" }), "getNotFoundError");
67838
67838
  var getPathInfo = /* @__PURE__ */ __name((cmd, opt) => {
67839
67839
  const colon = opt.colon || COLON;
67840
- const pathEnv = cmd.match(/\//) || isWindows2 && cmd.match(/\\/) ? [""] : [
67840
+ const pathEnv = cmd.match(/\//) || isWindows3 && cmd.match(/\\/) ? [""] : [
67841
67841
  // windows always checks the cwd first
67842
- ...isWindows2 ? [process.cwd()] : [],
67842
+ ...isWindows3 ? [process.cwd()] : [],
67843
67843
  ...(opt.path || process.env.PATH || /* istanbul ignore next: very unusual */
67844
67844
  "").split(colon)
67845
67845
  ];
67846
- const pathExtExe = isWindows2 ? opt.pathExt || process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM" : "";
67847
- const pathExt = isWindows2 ? pathExtExe.split(colon) : [""];
67848
- if (isWindows2) {
67846
+ const pathExtExe = isWindows3 ? opt.pathExt || process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM" : "";
67847
+ const pathExt = isWindows3 ? pathExtExe.split(colon) : [""];
67848
+ if (isWindows3) {
67849
67849
  if (cmd.indexOf(".") !== -1 && pathExt[0] !== "")
67850
67850
  pathExt.unshift("");
67851
67851
  }
@@ -144291,8 +144291,8 @@ var require_eventemitter3 = __commonJS({
144291
144291
  var require_path = __commonJS({
144292
144292
  "../../node_modules/.pnpm/minimatch@5.1.0/node_modules/minimatch/lib/path.js"(exports2, module3) {
144293
144293
  init_import_meta_url();
144294
- var isWindows2 = typeof process === "object" && process && process.platform === "win32";
144295
- module3.exports = isWindows2 ? { sep: "\\" } : { sep: "/" };
144294
+ var isWindows3 = typeof process === "object" && process && process.platform === "win32";
144295
+ module3.exports = isWindows3 ? { sep: "\\" } : { sep: "/" };
144296
144296
  }
144297
144297
  });
144298
144298
 
@@ -152685,7 +152685,7 @@ init_import_meta_url();
152685
152685
  init_import_meta_url();
152686
152686
 
152687
152687
  // package.json
152688
- var version = "3.60.1";
152688
+ var version = "3.60.3";
152689
152689
  var package_default = {
152690
152690
  name: "wrangler",
152691
152691
  version,
@@ -152884,11 +152884,12 @@ var package_default = {
152884
152884
  };
152885
152885
 
152886
152886
  // src/pages/constants.ts
152887
+ var isWindows = process.platform === "win32";
152887
152888
  var MAX_ASSET_COUNT = 2e4;
152888
152889
  var MAX_ASSET_SIZE = 25 * 1024 * 1024;
152889
152890
  var PAGES_CONFIG_CACHE_FILENAME = "pages.json";
152890
152891
  var MAX_BUCKET_SIZE = 40 * 1024 * 1024;
152891
- var MAX_BUCKET_FILE_COUNT = 2e3;
152892
+ var MAX_BUCKET_FILE_COUNT = isWindows ? 1e3 : 2e3;
152892
152893
  var BULK_UPLOAD_CONCURRENCY = 3;
152893
152894
  var MAX_UPLOAD_ATTEMPTS = 5;
152894
152895
  var MAX_UPLOAD_GATEWAY_ERRORS = 5;
@@ -159513,13 +159514,13 @@ function handleNodeJSGlobals(build5, inject) {
159513
159514
  ...Object.keys(inject).map(
159514
159515
  (globalName) => import_node_path9.default.resolve(
159515
159516
  getBasePath(),
159516
- `_virtual_unenv_global_polyfill-${globalName}.js`
159517
+ `_virtual_unenv_global_polyfill-${encodeToLowerCase(globalName)}.js`
159517
159518
  )
159518
159519
  )
159519
159520
  ];
159520
159521
  build5.onResolve({ filter: UNENV_GLOBALS_RE }, ({ path: path68 }) => ({ path: path68 }));
159521
159522
  build5.onLoad({ filter: UNENV_GLOBALS_RE }, ({ path: path68 }) => {
159522
- const globalName = path68.match(UNENV_GLOBALS_RE)[1];
159523
+ const globalName = decodeFromLowerCase(path68.match(UNENV_GLOBALS_RE)[1]);
159523
159524
  const globalMapping = inject[globalName];
159524
159525
  if (typeof globalMapping === "string") {
159525
159526
  const globalPolyfillSpecifier = globalMapping;
@@ -159543,10 +159544,6 @@ function handleNodeJSGlobals(build5, inject) {
159543
159544
  */
159544
159545
  ""}
159545
159546
  /* @__PURE__ */ (() => {
159546
- ${/*
159547
- // TODO: should we try to preserve globalThis.${globalName} if it exists?
159548
- */
159549
- ""}
159550
159547
  return globalThis.${globalName} = globalVar;
159551
159548
  })();
159552
159549
 
@@ -159578,10 +159575,6 @@ function handleNodeJSGlobals(build5, inject) {
159578
159575
  */
159579
159576
  ""}
159580
159577
  /* @__PURE__ */ (() => {
159581
- ${/*
159582
- // TODO: should we try to preserve globalThis.${globalName} if it exists?
159583
- */
159584
- ""}
159585
159578
  return globalThis.${globalName} = ${exportName};
159586
159579
  })();
159587
159580
 
@@ -159595,6 +159588,17 @@ function handleNodeJSGlobals(build5, inject) {
159595
159588
  });
159596
159589
  }
159597
159590
  __name(handleNodeJSGlobals, "handleNodeJSGlobals");
159591
+ function encodeToLowerCase(str) {
159592
+ return str.replaceAll(/[A-Z]/g, (letter) => `$${letter.toLowerCase()}`);
159593
+ }
159594
+ __name(encodeToLowerCase, "encodeToLowerCase");
159595
+ function decodeFromLowerCase(str) {
159596
+ return str.replaceAll(
159597
+ /\$([a-z])/g,
159598
+ (match, letter) => `${letter.toUpperCase()}`
159599
+ );
159600
+ }
159601
+ __name(decodeFromLowerCase, "decodeFromLowerCase");
159598
159602
 
159599
159603
  // src/deployment-bundle/esbuild-plugins/nodejs-compat.ts
159600
159604
  init_import_meta_url();
@@ -163112,11 +163116,184 @@ var import_node_fs32 = require("node:fs");
163112
163116
  var import_node_path55 = __toESM(require("node:path"));
163113
163117
  var import_node_url15 = require("node:url");
163114
163118
 
163119
+ // ../cli/index.ts
163120
+ init_import_meta_url();
163121
+ var import_process = require("process");
163122
+
163123
+ // ../cli/colors.ts
163124
+ init_import_meta_url();
163125
+ var import_chalk7 = __toESM(require_chalk());
163126
+ var { white, gray, dim, hidden, bold, cyanBright, bgCyan } = import_chalk7.default;
163127
+ var brandColor = import_chalk7.default.hex("#BD5B08");
163128
+ var black = import_chalk7.default.hex("#111");
163129
+ var blue = import_chalk7.default.hex("#0E838F");
163130
+ var bgBlue = black.bgHex("#0E838F");
163131
+ var red = import_chalk7.default.hex("#AB2526");
163132
+ var bgRed = black.bgHex("#AB2526");
163133
+ var green = import_chalk7.default.hex("#218529");
163134
+ var bgGreen = black.bgHex("#218529");
163135
+ var yellow = import_chalk7.default.hex("#7F7322");
163136
+ var bgYellow = black.bgHex("#7F7322");
163137
+
163138
+ // ../cli/streams.ts
163139
+ init_import_meta_url();
163140
+ var stdout = process.stdout;
163141
+ var stderr = process.stderr;
163142
+
163143
+ // ../cli/index.ts
163144
+ var shapes = {
163145
+ diamond: "\u25C7",
163146
+ dash: "\u2500",
163147
+ radioInactive: "\u25CB",
163148
+ radioActive: "\u25CF",
163149
+ bar: "\u2502",
163150
+ leftT: "\u251C",
163151
+ rigthT: "\u2524",
163152
+ arrows: {
163153
+ left: "\u2039",
163154
+ right: "\u203A"
163155
+ },
163156
+ corners: {
163157
+ tl: "\u256D",
163158
+ bl: "\u2570",
163159
+ tr: "\u256E",
163160
+ br: "\u256F"
163161
+ }
163162
+ };
163163
+ var status = {
163164
+ error: bgRed(` ERROR `),
163165
+ warning: bgYellow(` WARNING `),
163166
+ info: bgBlue(` INFO `),
163167
+ success: bgGreen(` SUCCESS `),
163168
+ cancel: white.bgRed(` X `)
163169
+ };
163170
+ var space = /* @__PURE__ */ __name((n2 = 1) => {
163171
+ return hidden("\u200A".repeat(n2));
163172
+ }, "space");
163173
+ var logRaw = /* @__PURE__ */ __name((msg) => {
163174
+ stdout.write(`${msg}
163175
+ `);
163176
+ }, "logRaw");
163177
+ var log = /* @__PURE__ */ __name((msg) => {
163178
+ const lines = msg.split("\n").map((ln) => `${gray(shapes.bar)} ${white(ln)}`);
163179
+ logRaw(lines.join("\n"));
163180
+ }, "log");
163181
+ var newline = /* @__PURE__ */ __name(() => {
163182
+ log("");
163183
+ }, "newline");
163184
+ var format5 = /* @__PURE__ */ __name((msg, {
163185
+ linePrefix = gray(shapes.bar),
163186
+ firstLinePrefix = linePrefix,
163187
+ newlineBefore = false,
163188
+ newlineAfter = false,
163189
+ formatLine = /* @__PURE__ */ __name((line) => white(line), "formatLine"),
163190
+ multiline = true
163191
+ } = {}) => {
163192
+ const lines = multiline ? msg.split("\n") : [msg];
163193
+ const formattedLines = lines.map(
163194
+ (line, i) => (i === 0 ? firstLinePrefix : linePrefix) + space() + formatLine(line)
163195
+ );
163196
+ if (newlineBefore) {
163197
+ formattedLines.unshift(linePrefix);
163198
+ }
163199
+ if (newlineAfter) {
163200
+ formattedLines.push(linePrefix);
163201
+ }
163202
+ return formattedLines.join("\n");
163203
+ }, "format");
163204
+ var updateStatus = /* @__PURE__ */ __name((msg, printNewLine = true) => {
163205
+ logRaw(
163206
+ format5(msg, {
163207
+ firstLinePrefix: gray(shapes.leftT),
163208
+ linePrefix: gray(shapes.bar),
163209
+ newlineAfter: printNewLine
163210
+ })
163211
+ );
163212
+ }, "updateStatus");
163213
+ var startSection = /* @__PURE__ */ __name((heading, subheading, printNewLine = true) => {
163214
+ logRaw(
163215
+ `${gray(shapes.corners.tl)} ${brandColor(heading)} ${subheading ? dim(subheading) : ""}`
163216
+ );
163217
+ if (printNewLine) {
163218
+ newline();
163219
+ }
163220
+ }, "startSection");
163221
+ var endSection = /* @__PURE__ */ __name((heading, subheading) => {
163222
+ logRaw(
163223
+ `${gray(shapes.corners.bl)} ${brandColor(heading)} ${subheading ? dim(subheading) : ""}
163224
+ `
163225
+ );
163226
+ }, "endSection");
163227
+ var cancel = /* @__PURE__ */ __name((msg, {
163228
+ // current default is backcompat and makes sense going forward too
163229
+ shape = shapes.corners.bl,
163230
+ // current default for backcompat -- TODO: change default to true once all callees have been updated
163231
+ multiline = false
163232
+ } = {}) => {
163233
+ logRaw(
163234
+ format5(msg, {
163235
+ firstLinePrefix: `${gray(shape)} ${status.cancel}`,
163236
+ linePrefix: gray(shapes.bar),
163237
+ newlineBefore: true,
163238
+ formatLine: (line) => dim(line),
163239
+ // for backcompat but it's not ideal for this to be "dim"
163240
+ multiline
163241
+ })
163242
+ );
163243
+ }, "cancel");
163244
+ var warn = /* @__PURE__ */ __name((msg, {
163245
+ // current default for backcompat -- TODO: change default to shapes.bar once all callees have been updated
163246
+ shape = shapes.corners.bl,
163247
+ // current default for backcompat -- TODO: change default to true once all callees have been updated
163248
+ multiline = false,
163249
+ newlineBefore = true
163250
+ } = {}) => {
163251
+ logRaw(
163252
+ format5(msg, {
163253
+ firstLinePrefix: gray(shape) + space() + status.warning,
163254
+ linePrefix: gray(shapes.bar),
163255
+ formatLine: (line) => dim(line),
163256
+ // for backcompat but it's not ideal for this to be "dim"
163257
+ multiline,
163258
+ newlineBefore
163259
+ })
163260
+ );
163261
+ }, "warn");
163262
+ var success = /* @__PURE__ */ __name((msg, {
163263
+ // current default for backcompat -- TODO: change default to shapes.bar once all callees have been updated
163264
+ shape = shapes.corners.bl,
163265
+ // current default for backcompat -- TODO: change default to true once all callees have been updated
163266
+ multiline = false
163267
+ } = {}) => {
163268
+ logRaw(
163269
+ format5(msg, {
163270
+ firstLinePrefix: gray(shape) + space() + status.success,
163271
+ linePrefix: gray(shapes.bar),
163272
+ newlineBefore: true,
163273
+ formatLine: (line) => dim(line),
163274
+ // for backcompat but it's not ideal for this to be "dim"
163275
+ multiline
163276
+ })
163277
+ );
163278
+ }, "success");
163279
+ var crash = /* @__PURE__ */ __name((msg, extra) => {
163280
+ error(msg, extra);
163281
+ (0, import_process.exit)(1);
163282
+ }, "crash");
163283
+ var error = /* @__PURE__ */ __name((msg, extra, corner = shapes.corners.bl) => {
163284
+ if (msg) {
163285
+ stderr.write(
163286
+ `${gray(corner)} ${status.error} ${dim(msg)}
163287
+ ${extra ? space() + extra + "\n" : ""}`
163288
+ );
163289
+ }
163290
+ }, "error");
163291
+
163115
163292
  // src/deployment-bundle/bundle-reporter.ts
163116
163293
  init_import_meta_url();
163117
163294
  var import_node_buffer2 = require("node:buffer");
163118
163295
  var import_node_zlib = require("node:zlib");
163119
- var import_chalk7 = __toESM(require_chalk());
163296
+ var import_chalk8 = __toESM(require_chalk());
163120
163297
  var ONE_KIB_BYTES = 1024;
163121
163298
  var ALLOWED_INITIAL_MAX = ONE_KIB_BYTES * 1024;
163122
163299
  async function getSize(modules) {
@@ -163131,7 +163308,7 @@ async function printBundleSize(main2, modules) {
163131
163308
  const { size, gzipSize } = await getSize([...modules, main2]);
163132
163309
  const bundleReport = `${(size / ONE_KIB_BYTES).toFixed(2)} KiB / gzip: ${(gzipSize / ONE_KIB_BYTES).toFixed(2)} KiB`;
163133
163310
  const percentage = gzipSize / ALLOWED_INITIAL_MAX * 100;
163134
- const colorizedReport = percentage > 90 ? import_chalk7.default.red(bundleReport) : percentage > 70 ? import_chalk7.default.yellow(bundleReport) : import_chalk7.default.green(bundleReport);
163311
+ const colorizedReport = percentage > 90 ? import_chalk8.default.red(bundleReport) : percentage > 70 ? import_chalk8.default.yellow(bundleReport) : import_chalk8.default.green(bundleReport);
163135
163312
  logger.log(`Total Upload: ${colorizedReport}`);
163136
163313
  if (gzipSize > ALLOWED_INITIAL_MAX && !process.env.NO_SCRIPT_SIZE_WARNING) {
163137
163314
  logger.warn(
@@ -163859,6 +164036,15 @@ function sniffUserAgent() {
163859
164036
  }
163860
164037
  __name(sniffUserAgent, "sniffUserAgent");
163861
164038
 
164039
+ // src/utils/create-batches.ts
164040
+ init_import_meta_url();
164041
+ function* createBatches(array, size) {
164042
+ for (let i = 0; i < array.length; i += size) {
164043
+ yield array.slice(i, i + size);
164044
+ }
164045
+ }
164046
+ __name(createBatches, "createBatches");
164047
+
163862
164048
  // src/utils/shell-quote.ts
163863
164049
  init_import_meta_url();
163864
164050
  var import_shell_quote = __toESM(require_shell_quote());
@@ -167471,178 +167657,6 @@ init_import_meta_url();
167471
167657
  var import_promises5 = require("fs/promises");
167472
167658
  var import_process2 = require("process");
167473
167659
 
167474
- // ../cli/index.ts
167475
- init_import_meta_url();
167476
- var import_process = require("process");
167477
-
167478
- // ../cli/colors.ts
167479
- init_import_meta_url();
167480
- var import_chalk8 = __toESM(require_chalk());
167481
- var { white, gray, dim, hidden, bold, cyanBright, bgCyan } = import_chalk8.default;
167482
- var brandColor = import_chalk8.default.hex("#BD5B08");
167483
- var black = import_chalk8.default.hex("#111");
167484
- var blue = import_chalk8.default.hex("#0E838F");
167485
- var bgBlue = black.bgHex("#0E838F");
167486
- var red = import_chalk8.default.hex("#AB2526");
167487
- var bgRed = black.bgHex("#AB2526");
167488
- var green = import_chalk8.default.hex("#218529");
167489
- var bgGreen = black.bgHex("#218529");
167490
- var yellow = import_chalk8.default.hex("#7F7322");
167491
- var bgYellow = black.bgHex("#7F7322");
167492
-
167493
- // ../cli/streams.ts
167494
- init_import_meta_url();
167495
- var stdout = process.stdout;
167496
- var stderr = process.stderr;
167497
-
167498
- // ../cli/index.ts
167499
- var shapes = {
167500
- diamond: "\u25C7",
167501
- dash: "\u2500",
167502
- radioInactive: "\u25CB",
167503
- radioActive: "\u25CF",
167504
- bar: "\u2502",
167505
- leftT: "\u251C",
167506
- rigthT: "\u2524",
167507
- arrows: {
167508
- left: "\u2039",
167509
- right: "\u203A"
167510
- },
167511
- corners: {
167512
- tl: "\u256D",
167513
- bl: "\u2570",
167514
- tr: "\u256E",
167515
- br: "\u256F"
167516
- }
167517
- };
167518
- var status = {
167519
- error: bgRed(` ERROR `),
167520
- warning: bgYellow(` WARNING `),
167521
- info: bgBlue(` INFO `),
167522
- success: bgGreen(` SUCCESS `),
167523
- cancel: white.bgRed(` X `)
167524
- };
167525
- var space = /* @__PURE__ */ __name((n2 = 1) => {
167526
- return hidden("\u200A".repeat(n2));
167527
- }, "space");
167528
- var logRaw = /* @__PURE__ */ __name((msg) => {
167529
- stdout.write(`${msg}
167530
- `);
167531
- }, "logRaw");
167532
- var log = /* @__PURE__ */ __name((msg) => {
167533
- const lines = msg.split("\n").map((ln) => `${gray(shapes.bar)} ${white(ln)}`);
167534
- logRaw(lines.join("\n"));
167535
- }, "log");
167536
- var newline = /* @__PURE__ */ __name(() => {
167537
- log("");
167538
- }, "newline");
167539
- var format5 = /* @__PURE__ */ __name((msg, {
167540
- linePrefix = gray(shapes.bar),
167541
- firstLinePrefix = linePrefix,
167542
- newlineBefore = false,
167543
- newlineAfter = false,
167544
- formatLine = /* @__PURE__ */ __name((line) => white(line), "formatLine"),
167545
- multiline = true
167546
- } = {}) => {
167547
- const lines = multiline ? msg.split("\n") : [msg];
167548
- const formattedLines = lines.map(
167549
- (line, i) => (i === 0 ? firstLinePrefix : linePrefix) + space() + formatLine(line)
167550
- );
167551
- if (newlineBefore) {
167552
- formattedLines.unshift(linePrefix);
167553
- }
167554
- if (newlineAfter) {
167555
- formattedLines.push(linePrefix);
167556
- }
167557
- return formattedLines.join("\n");
167558
- }, "format");
167559
- var updateStatus = /* @__PURE__ */ __name((msg, printNewLine = true) => {
167560
- logRaw(
167561
- format5(msg, {
167562
- firstLinePrefix: gray(shapes.leftT),
167563
- linePrefix: gray(shapes.bar),
167564
- newlineAfter: printNewLine
167565
- })
167566
- );
167567
- }, "updateStatus");
167568
- var startSection = /* @__PURE__ */ __name((heading, subheading, printNewLine = true) => {
167569
- logRaw(
167570
- `${gray(shapes.corners.tl)} ${brandColor(heading)} ${subheading ? dim(subheading) : ""}`
167571
- );
167572
- if (printNewLine) {
167573
- newline();
167574
- }
167575
- }, "startSection");
167576
- var endSection = /* @__PURE__ */ __name((heading, subheading) => {
167577
- logRaw(
167578
- `${gray(shapes.corners.bl)} ${brandColor(heading)} ${subheading ? dim(subheading) : ""}
167579
- `
167580
- );
167581
- }, "endSection");
167582
- var cancel = /* @__PURE__ */ __name((msg, {
167583
- // current default is backcompat and makes sense going forward too
167584
- shape = shapes.corners.bl,
167585
- // current default for backcompat -- TODO: change default to true once all callees have been updated
167586
- multiline = false
167587
- } = {}) => {
167588
- logRaw(
167589
- format5(msg, {
167590
- firstLinePrefix: `${gray(shape)} ${status.cancel}`,
167591
- linePrefix: gray(shapes.bar),
167592
- newlineBefore: true,
167593
- formatLine: (line) => dim(line),
167594
- // for backcompat but it's not ideal for this to be "dim"
167595
- multiline
167596
- })
167597
- );
167598
- }, "cancel");
167599
- var warn = /* @__PURE__ */ __name((msg, {
167600
- // current default for backcompat -- TODO: change default to shapes.bar once all callees have been updated
167601
- shape = shapes.corners.bl,
167602
- // current default for backcompat -- TODO: change default to true once all callees have been updated
167603
- multiline = false
167604
- } = {}) => {
167605
- logRaw(
167606
- format5(msg, {
167607
- firstLinePrefix: gray(shape) + space() + status.warning,
167608
- linePrefix: gray(shapes.bar),
167609
- newlineBefore: true,
167610
- formatLine: (line) => dim(line),
167611
- // for backcompat but it's not ideal for this to be "dim"
167612
- multiline
167613
- })
167614
- );
167615
- }, "warn");
167616
- var success = /* @__PURE__ */ __name((msg, {
167617
- // current default for backcompat -- TODO: change default to shapes.bar once all callees have been updated
167618
- shape = shapes.corners.bl,
167619
- // current default for backcompat -- TODO: change default to true once all callees have been updated
167620
- multiline = false
167621
- } = {}) => {
167622
- logRaw(
167623
- format5(msg, {
167624
- firstLinePrefix: gray(shape) + space() + status.success,
167625
- linePrefix: gray(shapes.bar),
167626
- newlineBefore: true,
167627
- formatLine: (line) => dim(line),
167628
- // for backcompat but it's not ideal for this to be "dim"
167629
- multiline
167630
- })
167631
- );
167632
- }, "success");
167633
- var crash = /* @__PURE__ */ __name((msg, extra) => {
167634
- error(msg, extra);
167635
- (0, import_process.exit)(1);
167636
- }, "crash");
167637
- var error = /* @__PURE__ */ __name((msg, extra, corner = shapes.corners.bl) => {
167638
- if (msg) {
167639
- stderr.write(
167640
- `${gray(corner)} ${status.error} ${dim(msg)}
167641
- ${extra ? space() + extra + "\n" : ""}`
167642
- );
167643
- }
167644
- }, "error");
167645
-
167646
167660
  // ../cli/interactive.ts
167647
167661
  init_import_meta_url();
167648
167662
 
@@ -176807,7 +176821,6 @@ function Options7(d1ListYargs) {
176807
176821
  type: "string",
176808
176822
  demandOption: true
176809
176823
  }).option("timePeriod", {
176810
- choices: ["1d", "7d", "31d"],
176811
176824
  describe: "Fetch data from now to the provided time period",
176812
176825
  default: "1d"
176813
176826
  }).option("sort-type", {
@@ -176839,6 +176852,42 @@ var cliOptionToGraphQLOption = {
176839
176852
  writes: "rowsWritten",
176840
176853
  count: "count"
176841
176854
  };
176855
+ function getDurationDates(durationString) {
176856
+ const endDate = /* @__PURE__ */ new Date();
176857
+ const durationValue = parseInt(durationString.slice(0, -1));
176858
+ const durationUnit = durationString.slice(-1);
176859
+ let startDate;
176860
+ switch (durationUnit) {
176861
+ case "d":
176862
+ if (durationValue > 31) {
176863
+ throw new Error("Duration cannot be greater than 31 days");
176864
+ }
176865
+ startDate = new Date(
176866
+ endDate.getTime() - durationValue * 24 * 60 * 60 * 1e3
176867
+ );
176868
+ break;
176869
+ case "m":
176870
+ if (durationValue > 31 * 24 * 60) {
176871
+ throw new Error(
176872
+ `Duration cannot be greater than ${31 * 24 * 60} minutes (31 days)`
176873
+ );
176874
+ }
176875
+ startDate = new Date(endDate.getTime() - durationValue * 60 * 1e3);
176876
+ break;
176877
+ case "h":
176878
+ if (durationValue > 31 * 24) {
176879
+ throw new Error(
176880
+ `Duration cannot be greater than ${31 * 24} hours (31 days)`
176881
+ );
176882
+ }
176883
+ startDate = new Date(endDate.getTime() - durationValue * 60 * 60 * 1e3);
176884
+ break;
176885
+ default:
176886
+ throw new Error("Invalid duration unit");
176887
+ }
176888
+ return [startDate.toISOString(), endDate.toISOString()];
176889
+ }
176890
+ __name(getDurationDates, "getDurationDates");
176842
176891
  var Handler7 = withConfig(
176843
176892
  async ({
176844
176893
  name,
@@ -176859,11 +176908,7 @@ var Handler7 = withConfig(
176859
176908
  const result = await getDatabaseInfoFromId(accountId, db.uuid);
176860
176909
  const output = [];
176861
176910
  if (result.version !== "alpha") {
176862
- const convertedTimePeriod = Number(timePeriod.replace("d", ""));
176863
- const endDate = /* @__PURE__ */ new Date();
176864
- const startDate = new Date(
176865
- new Date(endDate).setDate(endDate.getDate() - convertedTimePeriod)
176866
- );
176911
+ const [startDate, endDate] = getDurationDates(timePeriod);
176867
176912
  const parsedSortBy = cliOptionToGraphQLOption[sortBy];
176868
176913
  const orderByClause = parsedSortBy === "count" ? `${parsedSortBy}_${sortDirection}` : `${sortType}_${parsedSortBy}_${sortDirection}`;
176869
176914
  const graphqlQueriesResult = await fetchGraphqlResult({
@@ -176897,8 +176942,8 @@ var Handler7 = withConfig(
176897
176942
  filter: {
176898
176943
  AND: [
176899
176944
  {
176900
- datetimeHour_geq: startDate.toISOString(),
176901
- datetimeHour_leq: endDate.toISOString(),
176945
+ datetimeHour_geq: startDate,
176946
+ datetimeHour_leq: endDate,
176902
176947
  databaseId: db.uuid
176903
176948
  }
176904
176949
  ]
@@ -185087,10 +185132,10 @@ ${JSON.stringify(defaultRoutesJSONSpec, null, 2)}`
185087
185132
  CLEANUP();
185088
185133
  process.exit(0);
185089
185134
  }, "Handler");
185090
- function isWindows() {
185135
+ function isWindows2() {
185091
185136
  return process.platform === "win32";
185092
185137
  }
185093
- __name(isWindows, "isWindows");
185138
+ __name(isWindows2, "isWindows");
185094
185139
  async function sleep(ms) {
185095
185140
  await new Promise((promiseResolve) => setTimeout(promiseResolve, ms));
185096
185141
  }
@@ -185098,7 +185143,7 @@ __name(sleep, "sleep");
185098
185143
  function getPids(pid) {
185099
185144
  const pids = [pid];
185100
185145
  let command2, regExp;
185101
- if (isWindows()) {
185146
+ if (isWindows2()) {
185102
185147
  command2 = `wmic process where (ParentProcessId=${pid}) get ProcessId`;
185103
185148
  regExp = new RegExp(/(\d+)/);
185104
185149
  } else {
@@ -185115,7 +185160,7 @@ function getPids(pid) {
185115
185160
  __name(getPids, "getPids");
185116
185161
  function getPort(pid) {
185117
185162
  let command2, regExp;
185118
- if (isWindows()) {
185163
+ if (isWindows2()) {
185119
185164
  command2 = process.env.SYSTEMROOT + "\\system32\\netstat.exe -nao";
185120
185165
  regExp = new RegExp(`TCP\\s+.*:(\\d+)\\s+.*:\\d+\\s+LISTENING\\s+${pid}`);
185121
185166
  } else {
@@ -185161,7 +185206,7 @@ This results in a more faithful emulation of production behavior.`
185161
185206
  command2[0].toString(),
185162
185207
  command2.slice(1).map((value) => value.toString()),
185163
185208
  {
185164
- shell: isWindows(),
185209
+ shell: isWindows2(),
185165
185210
  env: {
185166
185211
  BROWSER: "none",
185167
185212
  ...process.env
@@ -199396,16 +199441,12 @@ async function fetchLatestDeployment(accountId, workerName) {
199396
199441
  return deployments2.at(0);
199397
199442
  }
199398
199443
  __name(fetchLatestDeployment, "fetchLatestDeployment");
199399
- async function fetchLatestDeploymentVersions(accountId, workerName, versionCache) {
199400
- const latestDeployment = await fetchLatestDeployment(accountId, workerName);
199401
- if (!latestDeployment) {
199444
+ async function fetchDeploymentVersions(accountId, workerName, deployment, versionCache) {
199445
+ if (!deployment) {
199402
199446
  return [[], /* @__PURE__ */ new Map()];
199403
199447
  }
199404
199448
  const versionTraffic = new Map(
199405
- latestDeployment.versions.map(({ version_id: versionId, percentage }) => [
199406
- versionId,
199407
- percentage
199408
- ])
199449
+ deployment.versions.map((v2) => [v2.version_id, v2.percentage])
199409
199450
  );
199410
199451
  const versions = await fetchVersions(
199411
199452
  accountId,
@@ -199415,7 +199456,7 @@ async function fetchLatestDeploymentVersions(accountId, workerName, versionCache
199415
199456
  );
199416
199457
  return [versions, versionTraffic];
199417
199458
  }
199418
- __name(fetchLatestDeploymentVersions, "fetchLatestDeploymentVersions");
199459
+ __name(fetchDeploymentVersions, "fetchDeploymentVersions");
199419
199460
  async function fetchDeployableVersions(accountId, workerName, versionCache) {
199420
199461
  const { items: versions } = await fetchResult(
199421
199462
  `/accounts/${accountId}/workers/scripts/${workerName}/versions?deployable=true`
@@ -199595,34 +199636,88 @@ function getConfig2(args) {
199595
199636
  return config;
199596
199637
  }
199597
199638
  __name(getConfig2, "getConfig");
199639
+ async function confirmLatestDeploymentOverwrite(accountId, scriptName) {
199640
+ try {
199641
+ const latest = await fetchLatestDeployment(accountId, scriptName);
199642
+ if (latest && latest.versions.length >= 2) {
199643
+ const versionCache = /* @__PURE__ */ new Map();
199644
+ warn(
199645
+ `Your last deployment has multiple versions. To progress that deployment use "wrangler versions deploy" instead.`,
199646
+ { shape: shapes.corners.tl, newlineBefore: false }
199647
+ );
199648
+ newline();
199649
+ await printDeployment(
199650
+ accountId,
199651
+ scriptName,
199652
+ latest,
199653
+ "last",
199654
+ versionCache
199655
+ );
199656
+ return inputPrompt({
199657
+ type: "confirm",
199658
+ question: `"wrangler deploy" will upload a new version and deploy it globally immediately.
199659
+ Are you sure you want to continue?`,
199660
+ label: "",
199661
+ defaultValue: !isInteractive() || CI.isCI(),
199662
+ // defaults to true in CI for back-compat
199663
+ acceptDefault: !isInteractive() || CI.isCI()
199664
+ });
199665
+ }
199666
+ } catch (e3) {
199667
+ const isNotFound = e3 instanceof APIError && e3.code == 10007;
199668
+ if (!isNotFound) {
199669
+ throw e3;
199670
+ }
199671
+ }
199672
+ return true;
199673
+ }
199674
+ __name(confirmLatestDeploymentOverwrite, "confirmLatestDeploymentOverwrite");
199598
199675
  async function printLatestDeployment(accountId, workerName, versionCache) {
199599
- const [versions, traffic] = await spinnerWhile({
199676
+ const latestDeployment = await spinnerWhile({
199600
199677
  startMessage: "Fetching latest deployment",
199601
199678
  async promise() {
199602
- return fetchLatestDeploymentVersions(accountId, workerName, versionCache);
199679
+ return fetchLatestDeployment(accountId, workerName);
199603
199680
  }
199604
199681
  });
199682
+ await printDeployment(
199683
+ accountId,
199684
+ workerName,
199685
+ latestDeployment,
199686
+ "current",
199687
+ versionCache
199688
+ );
199689
+ }
199690
+ __name(printLatestDeployment, "printLatestDeployment");
199691
+ async function printDeployment(accountId, workerName, deployment, adjective, versionCache) {
199692
+ const [versions, traffic] = await fetchDeploymentVersions(
199693
+ accountId,
199694
+ workerName,
199695
+ deployment,
199696
+ versionCache
199697
+ );
199605
199698
  logRaw(
199606
- `${leftT} Your current deployment has ${versions.length} version(s):`
199699
+ `${leftT} Your ${adjective} deployment has ${versions.length} version(s):`
199607
199700
  );
199608
199701
  printVersions(versions, traffic);
199609
199702
  }
199610
- __name(printLatestDeployment, "printLatestDeployment");
199703
+ __name(printDeployment, "printDeployment");
199611
199704
  function printVersions(versions, traffic) {
199612
- for (const version3 of versions) {
199705
+ newline();
199706
+ log(formatVersions(versions, traffic));
199707
+ newline();
199708
+ }
199709
+ __name(printVersions, "printVersions");
199710
+ function formatVersions(versions, traffic) {
199711
+ return versions.map((version3) => {
199613
199712
  const trafficString = brandColor(`(${traffic.get(version3.id)}%)`);
199614
199713
  const versionIdString = white(version3.id);
199615
- log(
199616
- gray(`
199617
- ${trafficString} ${versionIdString}
199714
+ return gray(`${trafficString} ${versionIdString}
199618
199715
  Created: ${version3.metadata.created_on}
199619
199716
  Tag: ${version3.annotations?.["workers/tag"] ?? BLANK_INPUT}
199620
- Message: ${version3.annotations?.["workers/message"] ?? BLANK_INPUT}`)
199621
- );
199622
- }
199623
- newline();
199717
+ Message: ${version3.annotations?.["workers/message"] ?? BLANK_INPUT}`);
199718
+ }).join("\n\n");
199624
199719
  }
199625
- __name(printVersions, "printVersions");
199720
+ __name(formatVersions, "formatVersions");
199626
199721
  async function promptVersionsToDeploy(accountId, workerName, defaultSelectedVersionIds, versionCache, yesFlag) {
199627
199722
  await spinnerWhile({
199628
199723
  startMessage: "Fetching deployable versions",
@@ -202557,12 +202652,6 @@ function mapBindings(bindings) {
202557
202652
  }, {});
202558
202653
  }
202559
202654
  __name(mapBindings, "mapBindings");
202560
- function* createBatches(array, size) {
202561
- for (let i = 0; i < array.length; i += size) {
202562
- yield array.slice(i, i + size);
202563
- }
202564
- }
202565
- __name(createBatches, "createBatches");
202566
202655
  function assertNoTypeArg(args) {
202567
202656
  if (args.type) {
202568
202657
  let message = "The --type option is no longer supported.";
@@ -203079,11 +203168,19 @@ See https://developers.cloudflare.com/workers/platform/compatibility-dates for m
203079
203168
  const destination = props.outDir ?? getWranglerTmpDir(props.projectRoot, "deploy");
203080
203169
  const envName = props.env ?? "production";
203081
203170
  const start = Date.now();
203082
- const notProd = Boolean(!props.legacyEnv && props.env);
203171
+ const prod = Boolean(props.legacyEnv || !props.env);
203172
+ const notProd = !prod;
203083
203173
  const workerName = notProd ? `${scriptName} (${envName})` : scriptName;
203084
203174
  const workerUrl = props.dispatchNamespace ? `/accounts/${accountId}/workers/dispatch/namespaces/${props.dispatchNamespace}/scripts/${scriptName}` : notProd ? `/accounts/${accountId}/workers/services/${scriptName}/environments/${envName}` : `/accounts/${accountId}/workers/scripts/${scriptName}`;
203085
203175
  let deploymentId = null;
203086
203176
  const { format: format10 } = props.entry;
203177
+ if (!props.dispatchNamespace && prod && accountId && scriptName) {
203178
+ const yes = await confirmLatestDeploymentOverwrite(accountId, scriptName);
203179
+ if (!yes) {
203180
+ cancel("Aborting deploy...");
203181
+ return;
203182
+ }
203183
+ }
203087
203184
  if (!props.isWorkersSite && Boolean(props.assetPaths) && format10 === "service-worker") {
203088
203185
  throw new UserError(
203089
203186
  "You cannot use the service-worker format with an `assets` directory yet. For information on how to migrate to the module-worker format, see: https://developers.cloudflare.com/workers/learning/migrating-to-module-workers/"