pullfrog 0.1.105 → 0.1.107

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/internal.js CHANGED
@@ -1,14 +1,2032 @@
1
1
  import { createRequire as __createRequire } from 'module'; import { fileURLToPath as __fileURLToPath } from 'url'; import { dirname as __dirnameFn } from 'path'; const require = __createRequire(import.meta.url); const __filename = __fileURLToPath(import.meta.url); const __dirname = __dirnameFn(__filename);
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __commonJS = (cb, mod) => function __require() {
9
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
+ };
3
11
  var __export = (target, all) => {
4
12
  for (var name in all)
5
13
  __defProp(target, name, { get: all[name], enumerable: true });
6
14
  };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from))
18
+ if (!__hasOwnProp.call(to, key) && key !== except)
19
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
20
+ }
21
+ return to;
22
+ };
23
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
24
+ // If the importer is in node compatibility mode or this is not an ESM
25
+ // file that has been converted to a CommonJS file using a Babel-
26
+ // compatible transform (i.e. "__esModule" has not been set), then set
27
+ // "default" to the CommonJS "module.exports" for node compatibility.
28
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
29
+ mod
30
+ ));
31
+
32
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js
33
+ var require_constants = __commonJS({
34
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js"(exports, module) {
35
+ "use strict";
36
+ var SEMVER_SPEC_VERSION = "2.0.0";
37
+ var MAX_LENGTH = 256;
38
+ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
39
+ 9007199254740991;
40
+ var MAX_SAFE_COMPONENT_LENGTH = 16;
41
+ var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;
42
+ var RELEASE_TYPES = [
43
+ "major",
44
+ "premajor",
45
+ "minor",
46
+ "preminor",
47
+ "patch",
48
+ "prepatch",
49
+ "prerelease"
50
+ ];
51
+ module.exports = {
52
+ MAX_LENGTH,
53
+ MAX_SAFE_COMPONENT_LENGTH,
54
+ MAX_SAFE_BUILD_LENGTH,
55
+ MAX_SAFE_INTEGER,
56
+ RELEASE_TYPES,
57
+ SEMVER_SPEC_VERSION,
58
+ FLAG_INCLUDE_PRERELEASE: 1,
59
+ FLAG_LOOSE: 2
60
+ };
61
+ }
62
+ });
63
+
64
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js
65
+ var require_debug = __commonJS({
66
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js"(exports, module) {
67
+ "use strict";
68
+ var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
69
+ };
70
+ module.exports = debug;
71
+ }
72
+ });
73
+
74
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js
75
+ var require_re = __commonJS({
76
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js"(exports, module) {
77
+ "use strict";
78
+ var {
79
+ MAX_SAFE_COMPONENT_LENGTH,
80
+ MAX_SAFE_BUILD_LENGTH,
81
+ MAX_LENGTH
82
+ } = require_constants();
83
+ var debug = require_debug();
84
+ exports = module.exports = {};
85
+ var re = exports.re = [];
86
+ var safeRe = exports.safeRe = [];
87
+ var src = exports.src = [];
88
+ var safeSrc = exports.safeSrc = [];
89
+ var t = exports.t = {};
90
+ var R = 0;
91
+ var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
92
+ var safeRegexReplacements = [
93
+ ["\\s", 1],
94
+ ["\\d", MAX_LENGTH],
95
+ [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]
96
+ ];
97
+ var makeSafeRegex = (value) => {
98
+ for (const [token, max] of safeRegexReplacements) {
99
+ value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);
100
+ }
101
+ return value;
102
+ };
103
+ var createToken = (name, value, isGlobal) => {
104
+ const safe = makeSafeRegex(value);
105
+ const index = R++;
106
+ debug(name, index, value);
107
+ t[name] = index;
108
+ src[index] = value;
109
+ safeSrc[index] = safe;
110
+ re[index] = new RegExp(value, isGlobal ? "g" : void 0);
111
+ safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0);
112
+ };
113
+ createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*");
114
+ createToken("NUMERICIDENTIFIERLOOSE", "\\d+");
115
+ createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
116
+ createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`);
117
+ createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);
118
+ createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);
119
+ createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);
120
+ createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`);
121
+ createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);
122
+ createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`);
123
+ createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`);
124
+ createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);
125
+ createToken("FULL", `^${src[t.FULLPLAIN]}$`);
126
+ createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);
127
+ createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`);
128
+ createToken("GTLT", "((?:<|>)?=?)");
129
+ createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);
130
+ createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`);
131
+ createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);
132
+ createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);
133
+ createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`);
134
+ createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`);
135
+ createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);
136
+ createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`);
137
+ createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`);
138
+ createToken("COERCERTL", src[t.COERCE], true);
139
+ createToken("COERCERTLFULL", src[t.COERCEFULL], true);
140
+ createToken("LONETILDE", "(?:~>?)");
141
+ createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true);
142
+ exports.tildeTrimReplace = "$1~";
143
+ createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
144
+ createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
145
+ createToken("LONECARET", "(?:\\^)");
146
+ createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true);
147
+ exports.caretTrimReplace = "$1^";
148
+ createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
149
+ createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
150
+ createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);
151
+ createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);
152
+ createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
153
+ exports.comparatorTrimReplace = "$1$2$3";
154
+ createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`);
155
+ createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`);
156
+ createToken("STAR", "(<|>)?=?\\s*\\*");
157
+ createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$");
158
+ createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$");
159
+ }
160
+ });
161
+
162
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js
163
+ var require_parse_options = __commonJS({
164
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js"(exports, module) {
165
+ "use strict";
166
+ var looseOption = Object.freeze({ loose: true });
167
+ var emptyOpts = Object.freeze({});
168
+ var parseOptions = (options) => {
169
+ if (!options) {
170
+ return emptyOpts;
171
+ }
172
+ if (typeof options !== "object") {
173
+ return looseOption;
174
+ }
175
+ return options;
176
+ };
177
+ module.exports = parseOptions;
178
+ }
179
+ });
180
+
181
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js
182
+ var require_identifiers = __commonJS({
183
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js"(exports, module) {
184
+ "use strict";
185
+ var numeric = /^[0-9]+$/;
186
+ var compareIdentifiers = (a, b) => {
187
+ if (typeof a === "number" && typeof b === "number") {
188
+ return a === b ? 0 : a < b ? -1 : 1;
189
+ }
190
+ const anum = numeric.test(a);
191
+ const bnum = numeric.test(b);
192
+ if (anum && bnum) {
193
+ a = +a;
194
+ b = +b;
195
+ }
196
+ return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
197
+ };
198
+ var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a);
199
+ module.exports = {
200
+ compareIdentifiers,
201
+ rcompareIdentifiers
202
+ };
203
+ }
204
+ });
205
+
206
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js
207
+ var require_semver = __commonJS({
208
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js"(exports, module) {
209
+ "use strict";
210
+ var debug = require_debug();
211
+ var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
212
+ var { safeRe: re, t } = require_re();
213
+ var parseOptions = require_parse_options();
214
+ var { compareIdentifiers } = require_identifiers();
215
+ var isPrereleaseIdentifier = (prerelease, identifier) => {
216
+ const identifiers = identifier.split(".");
217
+ if (identifiers.length > prerelease.length) {
218
+ return false;
219
+ }
220
+ for (let i = 0; i < identifiers.length; i++) {
221
+ if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {
222
+ return false;
223
+ }
224
+ }
225
+ return true;
226
+ };
227
+ var SemVer = class _SemVer {
228
+ constructor(version2, options) {
229
+ options = parseOptions(options);
230
+ if (version2 instanceof _SemVer) {
231
+ if (version2.loose === !!options.loose && version2.includePrerelease === !!options.includePrerelease) {
232
+ return version2;
233
+ } else {
234
+ version2 = version2.version;
235
+ }
236
+ } else if (typeof version2 !== "string") {
237
+ throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version2}".`);
238
+ }
239
+ if (version2.length > MAX_LENGTH) {
240
+ throw new TypeError(
241
+ `version is longer than ${MAX_LENGTH} characters`
242
+ );
243
+ }
244
+ debug("SemVer", version2, options);
245
+ this.options = options;
246
+ this.loose = !!options.loose;
247
+ this.includePrerelease = !!options.includePrerelease;
248
+ const m = version2.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
249
+ if (!m) {
250
+ throw new TypeError(`Invalid Version: ${version2}`);
251
+ }
252
+ this.raw = version2;
253
+ this.major = +m[1];
254
+ this.minor = +m[2];
255
+ this.patch = +m[3];
256
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
257
+ throw new TypeError("Invalid major version");
258
+ }
259
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
260
+ throw new TypeError("Invalid minor version");
261
+ }
262
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
263
+ throw new TypeError("Invalid patch version");
264
+ }
265
+ if (!m[4]) {
266
+ this.prerelease = [];
267
+ } else {
268
+ this.prerelease = m[4].split(".").map((id) => {
269
+ if (/^[0-9]+$/.test(id)) {
270
+ const num = +id;
271
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
272
+ return num;
273
+ }
274
+ }
275
+ return id;
276
+ });
277
+ }
278
+ this.build = m[5] ? m[5].split(".") : [];
279
+ this.format();
280
+ }
281
+ format() {
282
+ this.version = `${this.major}.${this.minor}.${this.patch}`;
283
+ if (this.prerelease.length) {
284
+ this.version += `-${this.prerelease.join(".")}`;
285
+ }
286
+ return this.version;
287
+ }
288
+ toString() {
289
+ return this.version;
290
+ }
291
+ compare(other) {
292
+ debug("SemVer.compare", this.version, this.options, other);
293
+ if (!(other instanceof _SemVer)) {
294
+ if (typeof other === "string" && other === this.version) {
295
+ return 0;
296
+ }
297
+ other = new _SemVer(other, this.options);
298
+ }
299
+ if (other.version === this.version) {
300
+ return 0;
301
+ }
302
+ return this.compareMain(other) || this.comparePre(other);
303
+ }
304
+ compareMain(other) {
305
+ if (!(other instanceof _SemVer)) {
306
+ other = new _SemVer(other, this.options);
307
+ }
308
+ if (this.major < other.major) {
309
+ return -1;
310
+ }
311
+ if (this.major > other.major) {
312
+ return 1;
313
+ }
314
+ if (this.minor < other.minor) {
315
+ return -1;
316
+ }
317
+ if (this.minor > other.minor) {
318
+ return 1;
319
+ }
320
+ if (this.patch < other.patch) {
321
+ return -1;
322
+ }
323
+ if (this.patch > other.patch) {
324
+ return 1;
325
+ }
326
+ return 0;
327
+ }
328
+ comparePre(other) {
329
+ if (!(other instanceof _SemVer)) {
330
+ other = new _SemVer(other, this.options);
331
+ }
332
+ if (this.prerelease.length && !other.prerelease.length) {
333
+ return -1;
334
+ } else if (!this.prerelease.length && other.prerelease.length) {
335
+ return 1;
336
+ } else if (!this.prerelease.length && !other.prerelease.length) {
337
+ return 0;
338
+ }
339
+ let i = 0;
340
+ do {
341
+ const a = this.prerelease[i];
342
+ const b = other.prerelease[i];
343
+ debug("prerelease compare", i, a, b);
344
+ if (a === void 0 && b === void 0) {
345
+ return 0;
346
+ } else if (b === void 0) {
347
+ return 1;
348
+ } else if (a === void 0) {
349
+ return -1;
350
+ } else if (a === b) {
351
+ continue;
352
+ } else {
353
+ return compareIdentifiers(a, b);
354
+ }
355
+ } while (++i);
356
+ }
357
+ compareBuild(other) {
358
+ if (!(other instanceof _SemVer)) {
359
+ other = new _SemVer(other, this.options);
360
+ }
361
+ let i = 0;
362
+ do {
363
+ const a = this.build[i];
364
+ const b = other.build[i];
365
+ debug("build compare", i, a, b);
366
+ if (a === void 0 && b === void 0) {
367
+ return 0;
368
+ } else if (b === void 0) {
369
+ return 1;
370
+ } else if (a === void 0) {
371
+ return -1;
372
+ } else if (a === b) {
373
+ continue;
374
+ } else {
375
+ return compareIdentifiers(a, b);
376
+ }
377
+ } while (++i);
378
+ }
379
+ // preminor will bump the version up to the next minor release, and immediately
380
+ // down to pre-release. premajor and prepatch work the same way.
381
+ inc(release, identifier, identifierBase) {
382
+ if (release.startsWith("pre")) {
383
+ if (!identifier && identifierBase === false) {
384
+ throw new Error("invalid increment argument: identifier is empty");
385
+ }
386
+ if (identifier) {
387
+ const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);
388
+ if (!match || match[1] !== identifier) {
389
+ throw new Error(`invalid identifier: ${identifier}`);
390
+ }
391
+ }
392
+ }
393
+ switch (release) {
394
+ case "premajor":
395
+ this.prerelease.length = 0;
396
+ this.patch = 0;
397
+ this.minor = 0;
398
+ this.major++;
399
+ this.inc("pre", identifier, identifierBase);
400
+ break;
401
+ case "preminor":
402
+ this.prerelease.length = 0;
403
+ this.patch = 0;
404
+ this.minor++;
405
+ this.inc("pre", identifier, identifierBase);
406
+ break;
407
+ case "prepatch":
408
+ this.prerelease.length = 0;
409
+ this.inc("patch", identifier, identifierBase);
410
+ this.inc("pre", identifier, identifierBase);
411
+ break;
412
+ // If the input is a non-prerelease version, this acts the same as
413
+ // prepatch.
414
+ case "prerelease":
415
+ if (this.prerelease.length === 0) {
416
+ this.inc("patch", identifier, identifierBase);
417
+ }
418
+ this.inc("pre", identifier, identifierBase);
419
+ break;
420
+ case "release":
421
+ if (this.prerelease.length === 0) {
422
+ throw new Error(`version ${this.raw} is not a prerelease`);
423
+ }
424
+ this.prerelease.length = 0;
425
+ break;
426
+ case "major":
427
+ if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
428
+ this.major++;
429
+ }
430
+ this.minor = 0;
431
+ this.patch = 0;
432
+ this.prerelease = [];
433
+ break;
434
+ case "minor":
435
+ if (this.patch !== 0 || this.prerelease.length === 0) {
436
+ this.minor++;
437
+ }
438
+ this.patch = 0;
439
+ this.prerelease = [];
440
+ break;
441
+ case "patch":
442
+ if (this.prerelease.length === 0) {
443
+ this.patch++;
444
+ }
445
+ this.prerelease = [];
446
+ break;
447
+ // This probably shouldn't be used publicly.
448
+ // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
449
+ case "pre": {
450
+ const base = Number(identifierBase) ? 1 : 0;
451
+ if (this.prerelease.length === 0) {
452
+ this.prerelease = [base];
453
+ } else {
454
+ let i = this.prerelease.length;
455
+ while (--i >= 0) {
456
+ if (typeof this.prerelease[i] === "number") {
457
+ this.prerelease[i]++;
458
+ i = -2;
459
+ }
460
+ }
461
+ if (i === -1) {
462
+ if (identifier === this.prerelease.join(".") && identifierBase === false) {
463
+ throw new Error("invalid increment argument: identifier already exists");
464
+ }
465
+ this.prerelease.push(base);
466
+ }
467
+ }
468
+ if (identifier) {
469
+ let prerelease = [identifier, base];
470
+ if (identifierBase === false) {
471
+ prerelease = [identifier];
472
+ }
473
+ if (isPrereleaseIdentifier(this.prerelease, identifier)) {
474
+ const prereleaseBase = this.prerelease[identifier.split(".").length];
475
+ if (isNaN(prereleaseBase)) {
476
+ this.prerelease = prerelease;
477
+ }
478
+ } else {
479
+ this.prerelease = prerelease;
480
+ }
481
+ }
482
+ break;
483
+ }
484
+ default:
485
+ throw new Error(`invalid increment argument: ${release}`);
486
+ }
487
+ this.raw = this.format();
488
+ if (this.build.length) {
489
+ this.raw += `+${this.build.join(".")}`;
490
+ }
491
+ return this;
492
+ }
493
+ };
494
+ module.exports = SemVer;
495
+ }
496
+ });
497
+
498
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js
499
+ var require_parse = __commonJS({
500
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js"(exports, module) {
501
+ "use strict";
502
+ var SemVer = require_semver();
503
+ var parse3 = (version2, options, throwErrors = false) => {
504
+ if (version2 instanceof SemVer) {
505
+ return version2;
506
+ }
507
+ try {
508
+ return new SemVer(version2, options);
509
+ } catch (er) {
510
+ if (!throwErrors) {
511
+ return null;
512
+ }
513
+ throw er;
514
+ }
515
+ };
516
+ module.exports = parse3;
517
+ }
518
+ });
519
+
520
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js
521
+ var require_valid = __commonJS({
522
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js"(exports, module) {
523
+ "use strict";
524
+ var parse3 = require_parse();
525
+ var valid = (version2, options) => {
526
+ const v = parse3(version2, options);
527
+ return v ? v.version : null;
528
+ };
529
+ module.exports = valid;
530
+ }
531
+ });
532
+
533
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js
534
+ var require_clean = __commonJS({
535
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js"(exports, module) {
536
+ "use strict";
537
+ var parse3 = require_parse();
538
+ var clean = (version2, options) => {
539
+ const s = parse3(version2.trim().replace(/^[=v]+/, ""), options);
540
+ return s ? s.version : null;
541
+ };
542
+ module.exports = clean;
543
+ }
544
+ });
545
+
546
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js
547
+ var require_inc = __commonJS({
548
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js"(exports, module) {
549
+ "use strict";
550
+ var SemVer = require_semver();
551
+ var inc = (version2, release, options, identifier, identifierBase) => {
552
+ if (typeof options === "string") {
553
+ identifierBase = identifier;
554
+ identifier = options;
555
+ options = void 0;
556
+ }
557
+ try {
558
+ return new SemVer(
559
+ version2 instanceof SemVer ? version2.version : version2,
560
+ options
561
+ ).inc(release, identifier, identifierBase).version;
562
+ } catch (er) {
563
+ return null;
564
+ }
565
+ };
566
+ module.exports = inc;
567
+ }
568
+ });
569
+
570
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js
571
+ var require_diff = __commonJS({
572
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js"(exports, module) {
573
+ "use strict";
574
+ var parse3 = require_parse();
575
+ var diff = (version1, version2) => {
576
+ const v1 = parse3(version1, null, true);
577
+ const v2 = parse3(version2, null, true);
578
+ const comparison = v1.compare(v2);
579
+ if (comparison === 0) {
580
+ return null;
581
+ }
582
+ const v1Higher = comparison > 0;
583
+ const highVersion = v1Higher ? v1 : v2;
584
+ const lowVersion = v1Higher ? v2 : v1;
585
+ const highHasPre = !!highVersion.prerelease.length;
586
+ const lowHasPre = !!lowVersion.prerelease.length;
587
+ if (lowHasPre && !highHasPre) {
588
+ if (!lowVersion.patch && !lowVersion.minor) {
589
+ return "major";
590
+ }
591
+ if (lowVersion.compareMain(highVersion) === 0) {
592
+ if (lowVersion.minor && !lowVersion.patch) {
593
+ return "minor";
594
+ }
595
+ return "patch";
596
+ }
597
+ }
598
+ const prefix = highHasPre ? "pre" : "";
599
+ if (v1.major !== v2.major) {
600
+ return prefix + "major";
601
+ }
602
+ if (v1.minor !== v2.minor) {
603
+ return prefix + "minor";
604
+ }
605
+ if (v1.patch !== v2.patch) {
606
+ return prefix + "patch";
607
+ }
608
+ return "prerelease";
609
+ };
610
+ module.exports = diff;
611
+ }
612
+ });
613
+
614
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js
615
+ var require_major = __commonJS({
616
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js"(exports, module) {
617
+ "use strict";
618
+ var SemVer = require_semver();
619
+ var major = (a, loose) => new SemVer(a, loose).major;
620
+ module.exports = major;
621
+ }
622
+ });
623
+
624
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js
625
+ var require_minor = __commonJS({
626
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js"(exports, module) {
627
+ "use strict";
628
+ var SemVer = require_semver();
629
+ var minor = (a, loose) => new SemVer(a, loose).minor;
630
+ module.exports = minor;
631
+ }
632
+ });
633
+
634
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js
635
+ var require_patch = __commonJS({
636
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js"(exports, module) {
637
+ "use strict";
638
+ var SemVer = require_semver();
639
+ var patch = (a, loose) => new SemVer(a, loose).patch;
640
+ module.exports = patch;
641
+ }
642
+ });
643
+
644
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js
645
+ var require_prerelease = __commonJS({
646
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js"(exports, module) {
647
+ "use strict";
648
+ var parse3 = require_parse();
649
+ var prerelease = (version2, options) => {
650
+ const parsed = parse3(version2, options);
651
+ return parsed && parsed.prerelease.length ? parsed.prerelease : null;
652
+ };
653
+ module.exports = prerelease;
654
+ }
655
+ });
656
+
657
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js
658
+ var require_compare = __commonJS({
659
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js"(exports, module) {
660
+ "use strict";
661
+ var SemVer = require_semver();
662
+ var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
663
+ module.exports = compare;
664
+ }
665
+ });
666
+
667
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js
668
+ var require_rcompare = __commonJS({
669
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js"(exports, module) {
670
+ "use strict";
671
+ var compare = require_compare();
672
+ var rcompare = (a, b, loose) => compare(b, a, loose);
673
+ module.exports = rcompare;
674
+ }
675
+ });
676
+
677
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js
678
+ var require_compare_loose = __commonJS({
679
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js"(exports, module) {
680
+ "use strict";
681
+ var compare = require_compare();
682
+ var compareLoose = (a, b) => compare(a, b, true);
683
+ module.exports = compareLoose;
684
+ }
685
+ });
686
+
687
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js
688
+ var require_compare_build = __commonJS({
689
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js"(exports, module) {
690
+ "use strict";
691
+ var SemVer = require_semver();
692
+ var compareBuild = (a, b, loose) => {
693
+ const versionA = new SemVer(a, loose);
694
+ const versionB = new SemVer(b, loose);
695
+ return versionA.compare(versionB) || versionA.compareBuild(versionB);
696
+ };
697
+ module.exports = compareBuild;
698
+ }
699
+ });
700
+
701
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js
702
+ var require_sort = __commonJS({
703
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js"(exports, module) {
704
+ "use strict";
705
+ var compareBuild = require_compare_build();
706
+ var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
707
+ module.exports = sort;
708
+ }
709
+ });
710
+
711
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js
712
+ var require_rsort = __commonJS({
713
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js"(exports, module) {
714
+ "use strict";
715
+ var compareBuild = require_compare_build();
716
+ var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
717
+ module.exports = rsort;
718
+ }
719
+ });
720
+
721
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js
722
+ var require_gt = __commonJS({
723
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js"(exports, module) {
724
+ "use strict";
725
+ var compare = require_compare();
726
+ var gt = (a, b, loose) => compare(a, b, loose) > 0;
727
+ module.exports = gt;
728
+ }
729
+ });
730
+
731
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js
732
+ var require_lt = __commonJS({
733
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js"(exports, module) {
734
+ "use strict";
735
+ var compare = require_compare();
736
+ var lt = (a, b, loose) => compare(a, b, loose) < 0;
737
+ module.exports = lt;
738
+ }
739
+ });
740
+
741
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js
742
+ var require_eq = __commonJS({
743
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js"(exports, module) {
744
+ "use strict";
745
+ var compare = require_compare();
746
+ var eq = (a, b, loose) => compare(a, b, loose) === 0;
747
+ module.exports = eq;
748
+ }
749
+ });
750
+
751
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js
752
+ var require_neq = __commonJS({
753
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js"(exports, module) {
754
+ "use strict";
755
+ var compare = require_compare();
756
+ var neq = (a, b, loose) => compare(a, b, loose) !== 0;
757
+ module.exports = neq;
758
+ }
759
+ });
760
+
761
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js
762
+ var require_gte = __commonJS({
763
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js"(exports, module) {
764
+ "use strict";
765
+ var compare = require_compare();
766
+ var gte = (a, b, loose) => compare(a, b, loose) >= 0;
767
+ module.exports = gte;
768
+ }
769
+ });
770
+
771
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js
772
+ var require_lte = __commonJS({
773
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js"(exports, module) {
774
+ "use strict";
775
+ var compare = require_compare();
776
+ var lte = (a, b, loose) => compare(a, b, loose) <= 0;
777
+ module.exports = lte;
778
+ }
779
+ });
780
+
781
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js
782
+ var require_cmp = __commonJS({
783
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js"(exports, module) {
784
+ "use strict";
785
+ var eq = require_eq();
786
+ var neq = require_neq();
787
+ var gt = require_gt();
788
+ var gte = require_gte();
789
+ var lt = require_lt();
790
+ var lte = require_lte();
791
+ var cmp = (a, op, b, loose) => {
792
+ switch (op) {
793
+ case "===":
794
+ if (typeof a === "object") {
795
+ a = a.version;
796
+ }
797
+ if (typeof b === "object") {
798
+ b = b.version;
799
+ }
800
+ return a === b;
801
+ case "!==":
802
+ if (typeof a === "object") {
803
+ a = a.version;
804
+ }
805
+ if (typeof b === "object") {
806
+ b = b.version;
807
+ }
808
+ return a !== b;
809
+ case "":
810
+ case "=":
811
+ case "==":
812
+ return eq(a, b, loose);
813
+ case "!=":
814
+ return neq(a, b, loose);
815
+ case ">":
816
+ return gt(a, b, loose);
817
+ case ">=":
818
+ return gte(a, b, loose);
819
+ case "<":
820
+ return lt(a, b, loose);
821
+ case "<=":
822
+ return lte(a, b, loose);
823
+ default:
824
+ throw new TypeError(`Invalid operator: ${op}`);
825
+ }
826
+ };
827
+ module.exports = cmp;
828
+ }
829
+ });
830
+
831
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js
832
+ var require_coerce = __commonJS({
833
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js"(exports, module) {
834
+ "use strict";
835
+ var SemVer = require_semver();
836
+ var parse3 = require_parse();
837
+ var { safeRe: re, t } = require_re();
838
+ var coerce = (version2, options) => {
839
+ if (version2 instanceof SemVer) {
840
+ return version2;
841
+ }
842
+ if (typeof version2 === "number") {
843
+ version2 = String(version2);
844
+ }
845
+ if (typeof version2 !== "string") {
846
+ return null;
847
+ }
848
+ options = options || {};
849
+ let match = null;
850
+ if (!options.rtl) {
851
+ match = version2.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]);
852
+ } else {
853
+ const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL];
854
+ let next;
855
+ while ((next = coerceRtlRegex.exec(version2)) && (!match || match.index + match[0].length !== version2.length)) {
856
+ if (!match || next.index + next[0].length !== match.index + match[0].length) {
857
+ match = next;
858
+ }
859
+ coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length;
860
+ }
861
+ coerceRtlRegex.lastIndex = -1;
862
+ }
863
+ if (match === null) {
864
+ return null;
865
+ }
866
+ const major = match[2];
867
+ const minor = match[3] || "0";
868
+ const patch = match[4] || "0";
869
+ const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : "";
870
+ const build = options.includePrerelease && match[6] ? `+${match[6]}` : "";
871
+ return parse3(`${major}.${minor}.${patch}${prerelease}${build}`, options);
872
+ };
873
+ module.exports = coerce;
874
+ }
875
+ });
876
+
877
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js
878
+ var require_truncate = __commonJS({
879
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js"(exports, module) {
880
+ "use strict";
881
+ var parse3 = require_parse();
882
+ var constants = require_constants();
883
+ var SemVer = require_semver();
884
+ var truncate = (version2, truncation, options) => {
885
+ if (!constants.RELEASE_TYPES.includes(truncation)) {
886
+ return null;
887
+ }
888
+ const clonedVersion = cloneInputVersion(version2, options);
889
+ return clonedVersion && doTruncation(clonedVersion, truncation);
890
+ };
891
+ var cloneInputVersion = (version2, options) => {
892
+ const versionStringToParse = version2 instanceof SemVer ? version2.version : version2;
893
+ return parse3(versionStringToParse, options);
894
+ };
895
+ var doTruncation = (version2, truncation) => {
896
+ if (isPrerelease(truncation)) {
897
+ return version2.version;
898
+ }
899
+ version2.prerelease = [];
900
+ switch (truncation) {
901
+ case "major":
902
+ version2.minor = 0;
903
+ version2.patch = 0;
904
+ break;
905
+ case "minor":
906
+ version2.patch = 0;
907
+ break;
908
+ }
909
+ return version2.format();
910
+ };
911
+ var isPrerelease = (type) => {
912
+ return type.startsWith("pre");
913
+ };
914
+ module.exports = truncate;
915
+ }
916
+ });
917
+
918
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js
919
+ var require_lrucache = __commonJS({
920
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js"(exports, module) {
921
+ "use strict";
922
+ var LRUCache = class {
923
+ constructor() {
924
+ this.max = 1e3;
925
+ this.map = /* @__PURE__ */ new Map();
926
+ }
927
+ get(key) {
928
+ const value = this.map.get(key);
929
+ if (value === void 0) {
930
+ return void 0;
931
+ } else {
932
+ this.map.delete(key);
933
+ this.map.set(key, value);
934
+ return value;
935
+ }
936
+ }
937
+ delete(key) {
938
+ return this.map.delete(key);
939
+ }
940
+ set(key, value) {
941
+ const deleted = this.delete(key);
942
+ if (!deleted && value !== void 0) {
943
+ if (this.map.size >= this.max) {
944
+ const firstKey = this.map.keys().next().value;
945
+ this.delete(firstKey);
946
+ }
947
+ this.map.set(key, value);
948
+ }
949
+ return this;
950
+ }
951
+ };
952
+ module.exports = LRUCache;
953
+ }
954
+ });
955
+
956
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js
957
+ var require_range = __commonJS({
958
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js"(exports, module) {
959
+ "use strict";
960
+ var SPACE_CHARACTERS = /\s+/g;
961
+ var Range = class _Range {
962
+ constructor(range, options) {
963
+ options = parseOptions(options);
964
+ if (range instanceof _Range) {
965
+ if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
966
+ return range;
967
+ } else {
968
+ return new _Range(range.raw, options);
969
+ }
970
+ }
971
+ if (range instanceof Comparator) {
972
+ this.raw = range.value;
973
+ this.set = [[range]];
974
+ this.formatted = void 0;
975
+ return this;
976
+ }
977
+ this.options = options;
978
+ this.loose = !!options.loose;
979
+ this.includePrerelease = !!options.includePrerelease;
980
+ this.raw = range.trim().replace(SPACE_CHARACTERS, " ");
981
+ this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length);
982
+ if (!this.set.length) {
983
+ throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
984
+ }
985
+ if (this.set.length > 1) {
986
+ const first = this.set[0];
987
+ this.set = this.set.filter((c) => !isNullSet(c[0]));
988
+ if (this.set.length === 0) {
989
+ this.set = [first];
990
+ } else if (this.set.length > 1) {
991
+ for (const c of this.set) {
992
+ if (c.length === 1 && isAny(c[0])) {
993
+ this.set = [c];
994
+ break;
995
+ }
996
+ }
997
+ }
998
+ }
999
+ this.formatted = void 0;
1000
+ }
1001
+ get range() {
1002
+ if (this.formatted === void 0) {
1003
+ this.formatted = "";
1004
+ for (let i = 0; i < this.set.length; i++) {
1005
+ if (i > 0) {
1006
+ this.formatted += "||";
1007
+ }
1008
+ const comps = this.set[i];
1009
+ for (let k = 0; k < comps.length; k++) {
1010
+ if (k > 0) {
1011
+ this.formatted += " ";
1012
+ }
1013
+ this.formatted += comps[k].toString().trim();
1014
+ }
1015
+ }
1016
+ }
1017
+ return this.formatted;
1018
+ }
1019
+ format() {
1020
+ return this.range;
1021
+ }
1022
+ toString() {
1023
+ return this.range;
1024
+ }
1025
+ parseRange(range) {
1026
+ range = range.replace(BUILDSTRIPRE, "");
1027
+ const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
1028
+ const memoKey = memoOpts + ":" + range;
1029
+ const cached2 = cache.get(memoKey);
1030
+ if (cached2) {
1031
+ return cached2;
1032
+ }
1033
+ const loose = this.options.loose;
1034
+ const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
1035
+ range = range.replace(hr, hyphenReplace(this.options.includePrerelease));
1036
+ debug("hyphen replace", range);
1037
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
1038
+ debug("comparator trim", range);
1039
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace);
1040
+ debug("tilde trim", range);
1041
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace);
1042
+ debug("caret trim", range);
1043
+ let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options));
1044
+ if (loose) {
1045
+ rangeList = rangeList.filter((comp) => {
1046
+ debug("loose invalid filter", comp, this.options);
1047
+ return !!comp.match(re[t.COMPARATORLOOSE]);
1048
+ });
1049
+ }
1050
+ debug("range list", rangeList);
1051
+ const rangeMap = /* @__PURE__ */ new Map();
1052
+ const comparators = rangeList.map((comp) => new Comparator(comp, this.options));
1053
+ for (const comp of comparators) {
1054
+ if (isNullSet(comp)) {
1055
+ return [comp];
1056
+ }
1057
+ rangeMap.set(comp.value, comp);
1058
+ }
1059
+ if (rangeMap.size > 1 && rangeMap.has("")) {
1060
+ rangeMap.delete("");
1061
+ }
1062
+ const result = [...rangeMap.values()];
1063
+ cache.set(memoKey, result);
1064
+ return result;
1065
+ }
1066
+ intersects(range, options) {
1067
+ if (!(range instanceof _Range)) {
1068
+ throw new TypeError("a Range is required");
1069
+ }
1070
+ return this.set.some((thisComparators) => {
1071
+ return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => {
1072
+ return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => {
1073
+ return rangeComparators.every((rangeComparator) => {
1074
+ return thisComparator.intersects(rangeComparator, options);
1075
+ });
1076
+ });
1077
+ });
1078
+ });
1079
+ }
1080
+ // if ANY of the sets match ALL of its comparators, then pass
1081
+ test(version2) {
1082
+ if (!version2) {
1083
+ return false;
1084
+ }
1085
+ if (typeof version2 === "string") {
1086
+ try {
1087
+ version2 = new SemVer(version2, this.options);
1088
+ } catch (er) {
1089
+ return false;
1090
+ }
1091
+ }
1092
+ for (let i = 0; i < this.set.length; i++) {
1093
+ if (testSet(this.set[i], version2, this.options)) {
1094
+ return true;
1095
+ }
1096
+ }
1097
+ return false;
1098
+ }
1099
+ };
1100
+ module.exports = Range;
1101
+ var LRU = require_lrucache();
1102
+ var cache = new LRU();
1103
+ var parseOptions = require_parse_options();
1104
+ var Comparator = require_comparator();
1105
+ var debug = require_debug();
1106
+ var SemVer = require_semver();
1107
+ var {
1108
+ safeRe: re,
1109
+ src,
1110
+ t,
1111
+ comparatorTrimReplace,
1112
+ tildeTrimReplace,
1113
+ caretTrimReplace
1114
+ } = require_re();
1115
+ var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
1116
+ var BUILDSTRIPRE = new RegExp(src[t.BUILD], "g");
1117
+ var isNullSet = (c) => c.value === "<0.0.0-0";
1118
+ var isAny = (c) => c.value === "";
1119
+ var isSatisfiable = (comparators, options) => {
1120
+ let result = true;
1121
+ const remainingComparators = comparators.slice();
1122
+ let testComparator = remainingComparators.pop();
1123
+ while (result && remainingComparators.length) {
1124
+ result = remainingComparators.every((otherComparator) => {
1125
+ return testComparator.intersects(otherComparator, options);
1126
+ });
1127
+ testComparator = remainingComparators.pop();
1128
+ }
1129
+ return result;
1130
+ };
1131
+ var parseComparator = (comp, options) => {
1132
+ comp = comp.replace(re[t.BUILD], "");
1133
+ debug("comp", comp, options);
1134
+ comp = replaceCarets(comp, options);
1135
+ debug("caret", comp);
1136
+ comp = replaceTildes(comp, options);
1137
+ debug("tildes", comp);
1138
+ comp = replaceXRanges(comp, options);
1139
+ debug("xrange", comp);
1140
+ comp = replaceStars(comp, options);
1141
+ debug("stars", comp);
1142
+ return comp;
1143
+ };
1144
+ var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
1145
+ var invalidXRangeOrder = (M, m, p) => isX(M) && !isX(m) || isX(m) && p && !isX(p);
1146
+ var replaceTildes = (comp, options) => {
1147
+ return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
1148
+ };
1149
+ var replaceTilde = (comp, options) => {
1150
+ const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
1151
+ const z2 = options.includePrerelease ? "-0" : "";
1152
+ return comp.replace(r, (_, M, m, p, pr) => {
1153
+ debug("tilde", comp, _, M, m, p, pr);
1154
+ let ret;
1155
+ if (isX(M)) {
1156
+ ret = "";
1157
+ } else if (isX(m)) {
1158
+ ret = `>=${M}.0.0${z2} <${+M + 1}.0.0-0`;
1159
+ } else if (isX(p)) {
1160
+ ret = `>=${M}.${m}.0${z2} <${M}.${+m + 1}.0-0`;
1161
+ } else if (pr) {
1162
+ debug("replaceTilde pr", pr);
1163
+ ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
1164
+ } else {
1165
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
1166
+ }
1167
+ debug("tilde return", ret);
1168
+ return ret;
1169
+ });
1170
+ };
1171
+ var replaceCarets = (comp, options) => {
1172
+ return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" ");
1173
+ };
1174
+ var replaceCaret = (comp, options) => {
1175
+ debug("caret", comp, options);
1176
+ const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
1177
+ const z2 = options.includePrerelease ? "-0" : "";
1178
+ return comp.replace(r, (_, M, m, p, pr) => {
1179
+ debug("caret", comp, _, M, m, p, pr);
1180
+ let ret;
1181
+ if (isX(M)) {
1182
+ ret = "";
1183
+ } else if (isX(m)) {
1184
+ ret = `>=${M}.0.0${z2} <${+M + 1}.0.0-0`;
1185
+ } else if (isX(p)) {
1186
+ if (M === "0") {
1187
+ ret = `>=${M}.${m}.0${z2} <${M}.${+m + 1}.0-0`;
1188
+ } else {
1189
+ ret = `>=${M}.${m}.0${z2} <${+M + 1}.0.0-0`;
1190
+ }
1191
+ } else if (pr) {
1192
+ debug("replaceCaret pr", pr);
1193
+ if (M === "0") {
1194
+ if (m === "0") {
1195
+ ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
1196
+ } else {
1197
+ ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
1198
+ }
1199
+ } else {
1200
+ ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
1201
+ }
1202
+ } else {
1203
+ debug("no pr");
1204
+ if (M === "0") {
1205
+ if (m === "0") {
1206
+ ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
1207
+ } else {
1208
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
1209
+ }
1210
+ } else {
1211
+ ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
1212
+ }
1213
+ }
1214
+ debug("caret return", ret);
1215
+ return ret;
1216
+ });
1217
+ };
1218
+ var replaceXRanges = (comp, options) => {
1219
+ debug("replaceXRanges", comp, options);
1220
+ return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ");
1221
+ };
1222
+ var replaceXRange = (comp, options) => {
1223
+ comp = comp.trim();
1224
+ const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
1225
+ return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
1226
+ debug("xRange", comp, ret, gtlt, M, m, p, pr);
1227
+ if (invalidXRangeOrder(M, m, p)) {
1228
+ return comp;
1229
+ }
1230
+ const xM = isX(M);
1231
+ const xm = xM || isX(m);
1232
+ const xp = xm || isX(p);
1233
+ const anyX = xp;
1234
+ if (gtlt === "=" && anyX) {
1235
+ gtlt = "";
1236
+ }
1237
+ pr = options.includePrerelease ? "-0" : "";
1238
+ if (xM) {
1239
+ if (gtlt === ">" || gtlt === "<") {
1240
+ ret = "<0.0.0-0";
1241
+ } else {
1242
+ ret = "*";
1243
+ }
1244
+ } else if (gtlt && anyX) {
1245
+ if (xm) {
1246
+ m = 0;
1247
+ }
1248
+ p = 0;
1249
+ if (gtlt === ">") {
1250
+ gtlt = ">=";
1251
+ if (xm) {
1252
+ M = +M + 1;
1253
+ m = 0;
1254
+ p = 0;
1255
+ } else {
1256
+ m = +m + 1;
1257
+ p = 0;
1258
+ }
1259
+ } else if (gtlt === "<=") {
1260
+ gtlt = "<";
1261
+ if (xm) {
1262
+ M = +M + 1;
1263
+ } else {
1264
+ m = +m + 1;
1265
+ }
1266
+ }
1267
+ if (gtlt === "<") {
1268
+ pr = "-0";
1269
+ }
1270
+ ret = `${gtlt + M}.${m}.${p}${pr}`;
1271
+ } else if (xm) {
1272
+ ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;
1273
+ } else if (xp) {
1274
+ ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
1275
+ }
1276
+ debug("xRange return", ret);
1277
+ return ret;
1278
+ });
1279
+ };
1280
+ var replaceStars = (comp, options) => {
1281
+ debug("replaceStars", comp, options);
1282
+ return comp.trim().replace(re[t.STAR], "");
1283
+ };
1284
+ var replaceGTE0 = (comp, options) => {
1285
+ debug("replaceGTE0", comp, options);
1286
+ return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "");
1287
+ };
1288
+ var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {
1289
+ if (isX(fM)) {
1290
+ from = "";
1291
+ } else if (isX(fm)) {
1292
+ from = `>=${fM}.0.0${incPr ? "-0" : ""}`;
1293
+ } else if (isX(fp)) {
1294
+ from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`;
1295
+ } else if (fpr) {
1296
+ from = `>=${from}`;
1297
+ } else {
1298
+ from = `>=${from}${incPr ? "-0" : ""}`;
1299
+ }
1300
+ if (isX(tM)) {
1301
+ to = "";
1302
+ } else if (isX(tm)) {
1303
+ to = `<${+tM + 1}.0.0-0`;
1304
+ } else if (isX(tp)) {
1305
+ to = `<${tM}.${+tm + 1}.0-0`;
1306
+ } else if (tpr) {
1307
+ to = `<=${tM}.${tm}.${tp}-${tpr}`;
1308
+ } else if (incPr) {
1309
+ to = `<${tM}.${tm}.${+tp + 1}-0`;
1310
+ } else {
1311
+ to = `<=${to}`;
1312
+ }
1313
+ return `${from} ${to}`.trim();
1314
+ };
1315
+ var testSet = (set2, version2, options) => {
1316
+ for (let i = 0; i < set2.length; i++) {
1317
+ if (!set2[i].test(version2)) {
1318
+ return false;
1319
+ }
1320
+ }
1321
+ if (version2.prerelease.length && !options.includePrerelease) {
1322
+ for (let i = 0; i < set2.length; i++) {
1323
+ debug(set2[i].semver);
1324
+ if (set2[i].semver === Comparator.ANY) {
1325
+ continue;
1326
+ }
1327
+ if (set2[i].semver.prerelease.length > 0) {
1328
+ const allowed = set2[i].semver;
1329
+ if (allowed.major === version2.major && allowed.minor === version2.minor && allowed.patch === version2.patch) {
1330
+ return true;
1331
+ }
1332
+ }
1333
+ }
1334
+ return false;
1335
+ }
1336
+ return true;
1337
+ };
1338
+ }
1339
+ });
1340
+
1341
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js
1342
+ var require_comparator = __commonJS({
1343
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js"(exports, module) {
1344
+ "use strict";
1345
+ var ANY = Symbol("SemVer ANY");
1346
+ var Comparator = class _Comparator {
1347
+ static get ANY() {
1348
+ return ANY;
1349
+ }
1350
+ constructor(comp, options) {
1351
+ options = parseOptions(options);
1352
+ if (comp instanceof _Comparator) {
1353
+ if (comp.loose === !!options.loose) {
1354
+ return comp;
1355
+ } else {
1356
+ comp = comp.value;
1357
+ }
1358
+ }
1359
+ comp = comp.trim().split(/\s+/).join(" ");
1360
+ debug("comparator", comp, options);
1361
+ this.options = options;
1362
+ this.loose = !!options.loose;
1363
+ this.parse(comp);
1364
+ if (this.semver === ANY) {
1365
+ this.value = "";
1366
+ } else {
1367
+ this.value = this.operator + this.semver.version;
1368
+ }
1369
+ debug("comp", this);
1370
+ }
1371
+ parse(comp) {
1372
+ const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
1373
+ const m = comp.match(r);
1374
+ if (!m) {
1375
+ throw new TypeError(`Invalid comparator: ${comp}`);
1376
+ }
1377
+ this.operator = m[1] !== void 0 ? m[1] : "";
1378
+ if (this.operator === "=") {
1379
+ this.operator = "";
1380
+ }
1381
+ if (!m[2]) {
1382
+ this.semver = ANY;
1383
+ } else {
1384
+ this.semver = new SemVer(m[2], this.options.loose);
1385
+ }
1386
+ }
1387
+ toString() {
1388
+ return this.value;
1389
+ }
1390
+ test(version2) {
1391
+ debug("Comparator.test", version2, this.options.loose);
1392
+ if (this.semver === ANY || version2 === ANY) {
1393
+ return true;
1394
+ }
1395
+ if (typeof version2 === "string") {
1396
+ try {
1397
+ version2 = new SemVer(version2, this.options);
1398
+ } catch (er) {
1399
+ return false;
1400
+ }
1401
+ }
1402
+ return cmp(version2, this.operator, this.semver, this.options);
1403
+ }
1404
+ intersects(comp, options) {
1405
+ if (!(comp instanceof _Comparator)) {
1406
+ throw new TypeError("a Comparator is required");
1407
+ }
1408
+ if (this.operator === "") {
1409
+ if (this.value === "") {
1410
+ return true;
1411
+ }
1412
+ return new Range(comp.value, options).test(this.value);
1413
+ } else if (comp.operator === "") {
1414
+ if (comp.value === "") {
1415
+ return true;
1416
+ }
1417
+ return new Range(this.value, options).test(comp.semver);
1418
+ }
1419
+ options = parseOptions(options);
1420
+ if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
1421
+ return false;
1422
+ }
1423
+ if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
1424
+ return false;
1425
+ }
1426
+ if (this.operator.startsWith(">") && comp.operator.startsWith(">")) {
1427
+ return true;
1428
+ }
1429
+ if (this.operator.startsWith("<") && comp.operator.startsWith("<")) {
1430
+ return true;
1431
+ }
1432
+ if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) {
1433
+ return true;
1434
+ }
1435
+ if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) {
1436
+ return true;
1437
+ }
1438
+ if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) {
1439
+ return true;
1440
+ }
1441
+ return false;
1442
+ }
1443
+ };
1444
+ module.exports = Comparator;
1445
+ var parseOptions = require_parse_options();
1446
+ var { safeRe: re, t } = require_re();
1447
+ var cmp = require_cmp();
1448
+ var debug = require_debug();
1449
+ var SemVer = require_semver();
1450
+ var Range = require_range();
1451
+ }
1452
+ });
1453
+
1454
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js
1455
+ var require_satisfies = __commonJS({
1456
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js"(exports, module) {
1457
+ "use strict";
1458
+ var Range = require_range();
1459
+ var satisfies = (version2, range, options) => {
1460
+ try {
1461
+ range = new Range(range, options);
1462
+ } catch (er) {
1463
+ return false;
1464
+ }
1465
+ return range.test(version2);
1466
+ };
1467
+ module.exports = satisfies;
1468
+ }
1469
+ });
1470
+
1471
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js
1472
+ var require_to_comparators = __commonJS({
1473
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js"(exports, module) {
1474
+ "use strict";
1475
+ var Range = require_range();
1476
+ var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
1477
+ module.exports = toComparators;
1478
+ }
1479
+ });
1480
+
1481
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js
1482
+ var require_max_satisfying = __commonJS({
1483
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js"(exports, module) {
1484
+ "use strict";
1485
+ var SemVer = require_semver();
1486
+ var Range = require_range();
1487
+ var maxSatisfying = (versions, range, options) => {
1488
+ let max = null;
1489
+ let maxSV = null;
1490
+ let rangeObj = null;
1491
+ try {
1492
+ rangeObj = new Range(range, options);
1493
+ } catch (er) {
1494
+ return null;
1495
+ }
1496
+ versions.forEach((v) => {
1497
+ if (rangeObj.test(v)) {
1498
+ if (!max || maxSV.compare(v) === -1) {
1499
+ max = v;
1500
+ maxSV = new SemVer(max, options);
1501
+ }
1502
+ }
1503
+ });
1504
+ return max;
1505
+ };
1506
+ module.exports = maxSatisfying;
1507
+ }
1508
+ });
1509
+
1510
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js
1511
+ var require_min_satisfying = __commonJS({
1512
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js"(exports, module) {
1513
+ "use strict";
1514
+ var SemVer = require_semver();
1515
+ var Range = require_range();
1516
+ var minSatisfying = (versions, range, options) => {
1517
+ let min = null;
1518
+ let minSV = null;
1519
+ let rangeObj = null;
1520
+ try {
1521
+ rangeObj = new Range(range, options);
1522
+ } catch (er) {
1523
+ return null;
1524
+ }
1525
+ versions.forEach((v) => {
1526
+ if (rangeObj.test(v)) {
1527
+ if (!min || minSV.compare(v) === 1) {
1528
+ min = v;
1529
+ minSV = new SemVer(min, options);
1530
+ }
1531
+ }
1532
+ });
1533
+ return min;
1534
+ };
1535
+ module.exports = minSatisfying;
1536
+ }
1537
+ });
1538
+
1539
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js
1540
+ var require_min_version = __commonJS({
1541
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js"(exports, module) {
1542
+ "use strict";
1543
+ var SemVer = require_semver();
1544
+ var Range = require_range();
1545
+ var gt = require_gt();
1546
+ var minVersion = (range, loose) => {
1547
+ range = new Range(range, loose);
1548
+ let minver = new SemVer("0.0.0");
1549
+ if (range.test(minver)) {
1550
+ return minver;
1551
+ }
1552
+ minver = new SemVer("0.0.0-0");
1553
+ if (range.test(minver)) {
1554
+ return minver;
1555
+ }
1556
+ minver = null;
1557
+ for (let i = 0; i < range.set.length; ++i) {
1558
+ const comparators = range.set[i];
1559
+ let setMin = null;
1560
+ comparators.forEach((comparator) => {
1561
+ const compver = new SemVer(comparator.semver.version);
1562
+ switch (comparator.operator) {
1563
+ case ">":
1564
+ if (compver.prerelease.length === 0) {
1565
+ compver.patch++;
1566
+ } else {
1567
+ compver.prerelease.push(0);
1568
+ }
1569
+ compver.raw = compver.format();
1570
+ /* fallthrough */
1571
+ case "":
1572
+ case ">=":
1573
+ if (!setMin || gt(compver, setMin)) {
1574
+ setMin = compver;
1575
+ }
1576
+ break;
1577
+ case "<":
1578
+ case "<=":
1579
+ break;
1580
+ /* istanbul ignore next */
1581
+ default:
1582
+ throw new Error(`Unexpected operation: ${comparator.operator}`);
1583
+ }
1584
+ });
1585
+ if (setMin && (!minver || gt(minver, setMin))) {
1586
+ minver = setMin;
1587
+ }
1588
+ }
1589
+ if (minver && range.test(minver)) {
1590
+ return minver;
1591
+ }
1592
+ return null;
1593
+ };
1594
+ module.exports = minVersion;
1595
+ }
1596
+ });
1597
+
1598
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js
1599
+ var require_valid2 = __commonJS({
1600
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js"(exports, module) {
1601
+ "use strict";
1602
+ var Range = require_range();
1603
+ var validRange = (range, options) => {
1604
+ try {
1605
+ return new Range(range, options).range || "*";
1606
+ } catch (er) {
1607
+ return null;
1608
+ }
1609
+ };
1610
+ module.exports = validRange;
1611
+ }
1612
+ });
1613
+
1614
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js
1615
+ var require_outside = __commonJS({
1616
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js"(exports, module) {
1617
+ "use strict";
1618
+ var SemVer = require_semver();
1619
+ var Comparator = require_comparator();
1620
+ var { ANY } = Comparator;
1621
+ var Range = require_range();
1622
+ var satisfies = require_satisfies();
1623
+ var gt = require_gt();
1624
+ var lt = require_lt();
1625
+ var lte = require_lte();
1626
+ var gte = require_gte();
1627
+ var outside = (version2, range, hilo, options) => {
1628
+ version2 = new SemVer(version2, options);
1629
+ range = new Range(range, options);
1630
+ let gtfn, ltefn, ltfn, comp, ecomp;
1631
+ switch (hilo) {
1632
+ case ">":
1633
+ gtfn = gt;
1634
+ ltefn = lte;
1635
+ ltfn = lt;
1636
+ comp = ">";
1637
+ ecomp = ">=";
1638
+ break;
1639
+ case "<":
1640
+ gtfn = lt;
1641
+ ltefn = gte;
1642
+ ltfn = gt;
1643
+ comp = "<";
1644
+ ecomp = "<=";
1645
+ break;
1646
+ default:
1647
+ throw new TypeError('Must provide a hilo val of "<" or ">"');
1648
+ }
1649
+ if (satisfies(version2, range, options)) {
1650
+ return false;
1651
+ }
1652
+ for (let i = 0; i < range.set.length; ++i) {
1653
+ const comparators = range.set[i];
1654
+ let high = null;
1655
+ let low = null;
1656
+ comparators.forEach((comparator) => {
1657
+ if (comparator.semver === ANY) {
1658
+ comparator = new Comparator(">=0.0.0");
1659
+ }
1660
+ high = high || comparator;
1661
+ low = low || comparator;
1662
+ if (gtfn(comparator.semver, high.semver, options)) {
1663
+ high = comparator;
1664
+ } else if (ltfn(comparator.semver, low.semver, options)) {
1665
+ low = comparator;
1666
+ }
1667
+ });
1668
+ if (high.operator === comp || high.operator === ecomp) {
1669
+ return false;
1670
+ }
1671
+ if ((!low.operator || low.operator === comp) && ltefn(version2, low.semver)) {
1672
+ return false;
1673
+ } else if (low.operator === ecomp && ltfn(version2, low.semver)) {
1674
+ return false;
1675
+ }
1676
+ }
1677
+ return true;
1678
+ };
1679
+ module.exports = outside;
1680
+ }
1681
+ });
1682
+
1683
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js
1684
+ var require_gtr = __commonJS({
1685
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js"(exports, module) {
1686
+ "use strict";
1687
+ var outside = require_outside();
1688
+ var gtr = (version2, range, options) => outside(version2, range, ">", options);
1689
+ module.exports = gtr;
1690
+ }
1691
+ });
1692
+
1693
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js
1694
+ var require_ltr = __commonJS({
1695
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js"(exports, module) {
1696
+ "use strict";
1697
+ var outside = require_outside();
1698
+ var ltr = (version2, range, options) => outside(version2, range, "<", options);
1699
+ module.exports = ltr;
1700
+ }
1701
+ });
1702
+
1703
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js
1704
+ var require_intersects = __commonJS({
1705
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js"(exports, module) {
1706
+ "use strict";
1707
+ var Range = require_range();
1708
+ var intersects = (r1, r2, options) => {
1709
+ r1 = new Range(r1, options);
1710
+ r2 = new Range(r2, options);
1711
+ return r1.intersects(r2, options);
1712
+ };
1713
+ module.exports = intersects;
1714
+ }
1715
+ });
1716
+
1717
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js
1718
+ var require_simplify = __commonJS({
1719
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js"(exports, module) {
1720
+ "use strict";
1721
+ var satisfies = require_satisfies();
1722
+ var compare = require_compare();
1723
+ module.exports = (versions, range, options) => {
1724
+ const set2 = [];
1725
+ let first = null;
1726
+ let prev = null;
1727
+ const v = versions.sort((a, b) => compare(a, b, options));
1728
+ for (const version2 of v) {
1729
+ const included = satisfies(version2, range, options);
1730
+ if (included) {
1731
+ prev = version2;
1732
+ if (!first) {
1733
+ first = version2;
1734
+ }
1735
+ } else {
1736
+ if (prev) {
1737
+ set2.push([first, prev]);
1738
+ }
1739
+ prev = null;
1740
+ first = null;
1741
+ }
1742
+ }
1743
+ if (first) {
1744
+ set2.push([first, null]);
1745
+ }
1746
+ const ranges = [];
1747
+ for (const [min, max] of set2) {
1748
+ if (min === max) {
1749
+ ranges.push(min);
1750
+ } else if (!max && min === v[0]) {
1751
+ ranges.push("*");
1752
+ } else if (!max) {
1753
+ ranges.push(`>=${min}`);
1754
+ } else if (min === v[0]) {
1755
+ ranges.push(`<=${max}`);
1756
+ } else {
1757
+ ranges.push(`${min} - ${max}`);
1758
+ }
1759
+ }
1760
+ const simplified = ranges.join(" || ");
1761
+ const original = typeof range.raw === "string" ? range.raw : String(range);
1762
+ return simplified.length < original.length ? simplified : range;
1763
+ };
1764
+ }
1765
+ });
1766
+
1767
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js
1768
+ var require_subset = __commonJS({
1769
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js"(exports, module) {
1770
+ "use strict";
1771
+ var Range = require_range();
1772
+ var Comparator = require_comparator();
1773
+ var { ANY } = Comparator;
1774
+ var satisfies = require_satisfies();
1775
+ var compare = require_compare();
1776
+ var subset = (sub, dom, options = {}) => {
1777
+ if (sub === dom) {
1778
+ return true;
1779
+ }
1780
+ sub = new Range(sub, options);
1781
+ dom = new Range(dom, options);
1782
+ let sawNonNull = false;
1783
+ OUTER: for (const simpleSub of sub.set) {
1784
+ for (const simpleDom of dom.set) {
1785
+ const isSub = simpleSubset(simpleSub, simpleDom, options);
1786
+ sawNonNull = sawNonNull || isSub !== null;
1787
+ if (isSub) {
1788
+ continue OUTER;
1789
+ }
1790
+ }
1791
+ if (sawNonNull) {
1792
+ return false;
1793
+ }
1794
+ }
1795
+ return true;
1796
+ };
1797
+ var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")];
1798
+ var minimumVersion = [new Comparator(">=0.0.0")];
1799
+ var simpleSubset = (sub, dom, options) => {
1800
+ if (sub === dom) {
1801
+ return true;
1802
+ }
1803
+ if (sub.length === 1 && sub[0].semver === ANY) {
1804
+ if (dom.length === 1 && dom[0].semver === ANY) {
1805
+ return true;
1806
+ } else if (options.includePrerelease) {
1807
+ sub = minimumVersionWithPreRelease;
1808
+ } else {
1809
+ sub = minimumVersion;
1810
+ }
1811
+ }
1812
+ if (dom.length === 1 && dom[0].semver === ANY) {
1813
+ if (options.includePrerelease) {
1814
+ return true;
1815
+ } else {
1816
+ dom = minimumVersion;
1817
+ }
1818
+ }
1819
+ const eqSet = /* @__PURE__ */ new Set();
1820
+ let gt, lt;
1821
+ for (const c of sub) {
1822
+ if (c.operator === ">" || c.operator === ">=") {
1823
+ gt = higherGT(gt, c, options);
1824
+ } else if (c.operator === "<" || c.operator === "<=") {
1825
+ lt = lowerLT(lt, c, options);
1826
+ } else {
1827
+ eqSet.add(c.semver);
1828
+ }
1829
+ }
1830
+ if (eqSet.size > 1) {
1831
+ return null;
1832
+ }
1833
+ let gtltComp;
1834
+ if (gt && lt) {
1835
+ gtltComp = compare(gt.semver, lt.semver, options);
1836
+ if (gtltComp > 0) {
1837
+ return null;
1838
+ } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
1839
+ return null;
1840
+ }
1841
+ }
1842
+ for (const eq of eqSet) {
1843
+ if (gt && !satisfies(eq, String(gt), options)) {
1844
+ return null;
1845
+ }
1846
+ if (lt && !satisfies(eq, String(lt), options)) {
1847
+ return null;
1848
+ }
1849
+ for (const c of dom) {
1850
+ if (!satisfies(eq, String(c), options)) {
1851
+ return false;
1852
+ }
1853
+ }
1854
+ return true;
1855
+ }
1856
+ let higher, lower;
1857
+ let hasDomLT, hasDomGT;
1858
+ let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
1859
+ let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
1860
+ if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
1861
+ needDomLTPre = false;
1862
+ }
1863
+ for (const c of dom) {
1864
+ hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">=";
1865
+ hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<=";
1866
+ if (gt) {
1867
+ if (needDomGTPre) {
1868
+ if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) {
1869
+ needDomGTPre = false;
1870
+ }
1871
+ }
1872
+ if (c.operator === ">" || c.operator === ">=") {
1873
+ higher = higherGT(gt, c, options);
1874
+ if (higher === c && higher !== gt) {
1875
+ return false;
1876
+ }
1877
+ } else if (gt.operator === ">=" && !c.test(gt.semver)) {
1878
+ return false;
1879
+ }
1880
+ }
1881
+ if (lt) {
1882
+ if (needDomLTPre) {
1883
+ if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
1884
+ needDomLTPre = false;
1885
+ }
1886
+ }
1887
+ if (c.operator === "<" || c.operator === "<=") {
1888
+ lower = lowerLT(lt, c, options);
1889
+ if (lower === c && lower !== lt) {
1890
+ return false;
1891
+ }
1892
+ } else if (lt.operator === "<=" && !c.test(lt.semver)) {
1893
+ return false;
1894
+ }
1895
+ }
1896
+ if (!c.operator && (lt || gt) && gtltComp !== 0) {
1897
+ return false;
1898
+ }
1899
+ }
1900
+ if (gt && hasDomLT && !lt && gtltComp !== 0) {
1901
+ return false;
1902
+ }
1903
+ if (lt && hasDomGT && !gt && gtltComp !== 0) {
1904
+ return false;
1905
+ }
1906
+ if (needDomGTPre || needDomLTPre) {
1907
+ return false;
1908
+ }
1909
+ return true;
1910
+ };
1911
+ var higherGT = (a, b, options) => {
1912
+ if (!a) {
1913
+ return b;
1914
+ }
1915
+ const comp = compare(a.semver, b.semver, options);
1916
+ return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a;
1917
+ };
1918
+ var lowerLT = (a, b, options) => {
1919
+ if (!a) {
1920
+ return b;
1921
+ }
1922
+ const comp = compare(a.semver, b.semver, options);
1923
+ return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a;
1924
+ };
1925
+ module.exports = subset;
1926
+ }
1927
+ });
1928
+
1929
+ // node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js
1930
+ var require_semver2 = __commonJS({
1931
+ "node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js"(exports, module) {
1932
+ "use strict";
1933
+ var internalRe = require_re();
1934
+ var constants = require_constants();
1935
+ var SemVer = require_semver();
1936
+ var identifiers = require_identifiers();
1937
+ var parse3 = require_parse();
1938
+ var valid = require_valid();
1939
+ var clean = require_clean();
1940
+ var inc = require_inc();
1941
+ var diff = require_diff();
1942
+ var major = require_major();
1943
+ var minor = require_minor();
1944
+ var patch = require_patch();
1945
+ var prerelease = require_prerelease();
1946
+ var compare = require_compare();
1947
+ var rcompare = require_rcompare();
1948
+ var compareLoose = require_compare_loose();
1949
+ var compareBuild = require_compare_build();
1950
+ var sort = require_sort();
1951
+ var rsort = require_rsort();
1952
+ var gt = require_gt();
1953
+ var lt = require_lt();
1954
+ var eq = require_eq();
1955
+ var neq = require_neq();
1956
+ var gte = require_gte();
1957
+ var lte = require_lte();
1958
+ var cmp = require_cmp();
1959
+ var coerce = require_coerce();
1960
+ var truncate = require_truncate();
1961
+ var Comparator = require_comparator();
1962
+ var Range = require_range();
1963
+ var satisfies = require_satisfies();
1964
+ var toComparators = require_to_comparators();
1965
+ var maxSatisfying = require_max_satisfying();
1966
+ var minSatisfying = require_min_satisfying();
1967
+ var minVersion = require_min_version();
1968
+ var validRange = require_valid2();
1969
+ var outside = require_outside();
1970
+ var gtr = require_gtr();
1971
+ var ltr = require_ltr();
1972
+ var intersects = require_intersects();
1973
+ var simplifyRange = require_simplify();
1974
+ var subset = require_subset();
1975
+ module.exports = {
1976
+ parse: parse3,
1977
+ valid,
1978
+ clean,
1979
+ inc,
1980
+ diff,
1981
+ major,
1982
+ minor,
1983
+ patch,
1984
+ prerelease,
1985
+ compare,
1986
+ rcompare,
1987
+ compareLoose,
1988
+ compareBuild,
1989
+ sort,
1990
+ rsort,
1991
+ gt,
1992
+ lt,
1993
+ eq,
1994
+ neq,
1995
+ gte,
1996
+ lte,
1997
+ cmp,
1998
+ coerce,
1999
+ truncate,
2000
+ Comparator,
2001
+ Range,
2002
+ satisfies,
2003
+ toComparators,
2004
+ maxSatisfying,
2005
+ minSatisfying,
2006
+ minVersion,
2007
+ validRange,
2008
+ outside,
2009
+ gtr,
2010
+ ltr,
2011
+ intersects,
2012
+ simplifyRange,
2013
+ subset,
2014
+ SemVer,
2015
+ re: internalRe.re,
2016
+ src: internalRe.src,
2017
+ tokens: internalRe.t,
2018
+ SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
2019
+ RELEASE_TYPES: constants.RELEASE_TYPES,
2020
+ compareIdentifiers: identifiers.compareIdentifiers,
2021
+ rcompareIdentifiers: identifiers.rcompareIdentifiers
2022
+ };
2023
+ }
2024
+ });
7
2025
 
8
2026
  // package.json
9
2027
  var package_default = {
10
2028
  name: "pullfrog",
11
- version: "0.1.105",
2029
+ version: "0.1.107",
12
2030
  cliContractVersion: "1",
13
2031
  type: "module",
14
2032
  bin: {
@@ -20267,7 +22285,7 @@ function rungLabel(rung) {
20267
22285
  function provider(config2) {
20268
22286
  return config2;
20269
22287
  }
20270
- var providers = {
22288
+ var bundledProviders = {
20271
22289
  anthropic: provider({
20272
22290
  displayName: "Anthropic",
20273
22291
  envVars: ["ANTHROPIC_API_KEY", "CLAUDE_CODE_OAUTH_TOKEN"],
@@ -20287,7 +22305,8 @@ var providers = {
20287
22305
  // versions (claude-fable-5 was missing there when this was added), so track ~…-latest to
20288
22306
  // stay catalog-valid and auto-follow version bumps.
20289
22307
  openRouterResolve: "openrouter/~anthropic/claude-fable-latest",
20290
- subagentModel: "claude-sonnet"
22308
+ subagentModel: "claude-sonnet",
22309
+ pinned: true
20291
22310
  },
20292
22311
  "claude-opus": {
20293
22312
  displayName: "Claude Opus",
@@ -20345,7 +22364,8 @@ var providers = {
20345
22364
  resolve: "openai/gpt-6.1-sol",
20346
22365
  effort: ["low", "medium", "high", "xhigh", "max"],
20347
22366
  openRouterResolve: "openrouter/openai/gpt-6.1-sol-pro",
20348
- subagentModel: "gpt-sol"
22367
+ subagentModel: "gpt-sol",
22368
+ pinned: true
20349
22369
  },
20350
22370
  // gpt-5.6's balanced mid-tier. selectable on its own and doubles as Sol's
20351
22371
  // cheaper lens-fanout subagent — replaces the old hidden gpt-5.4 target.
@@ -20533,7 +22553,8 @@ var providers = {
20533
22553
  resolve: "deepseek/deepseek-flash",
20534
22554
  effort: ["low", "high", "max"],
20535
22555
  openRouterEffort: ["none", "low", "high", "max"],
20536
- openRouterResolve: "openrouter/deepseek/deepseek-v4.1-flash"
22556
+ openRouterResolve: "openrouter/deepseek/deepseek-v4.1-flash",
22557
+ pinned: true
20537
22558
  },
20538
22559
  // legacy aliases — deepseek retires these on 2026-07-24; transparently
20539
22560
  // upgrade existing users to the v4 family via the fallback chain.
@@ -20708,7 +22729,8 @@ var providers = {
20708
22729
  resolve: "opencode/claude-fable-5-1",
20709
22730
  effort: ["low", "medium", "high", "xhigh", "max"],
20710
22731
  openRouterResolve: "openrouter/~anthropic/claude-fable-latest",
20711
- subagentModel: "claude-sonnet"
22732
+ subagentModel: "claude-sonnet",
22733
+ pinned: true
20712
22734
  },
20713
22735
  "claude-opus": {
20714
22736
  displayName: "Claude Opus",
@@ -20756,7 +22778,8 @@ var providers = {
20756
22778
  resolve: "opencode/gpt-6.1-sol",
20757
22779
  effort: ["low", "medium", "high", "xhigh", "max"],
20758
22780
  openRouterResolve: "openrouter/openai/gpt-6.1-sol-pro",
20759
- subagentModel: "gpt-sol"
22781
+ subagentModel: "gpt-sol",
22782
+ pinned: true
20760
22783
  },
20761
22784
  // gpt-5.6 balanced mid-tier — selectable + Sol's subagent. see openai above.
20762
22785
  "gpt-terra": {
@@ -20843,7 +22866,8 @@ var providers = {
20843
22866
  // id. k2.6 is the newest build Zen will actually serve, and the mirror
20844
22867
  // guard permits the step down because k2.7-code is in ZEN_UNDEPLOYED.
20845
22868
  resolve: "opencode/kimi-k2.6",
20846
- openRouterResolve: "openrouter/moonshotai/kimi-k2.7-code"
22869
+ openRouterResolve: "openrouter/moonshotai/kimi-k2.7-code",
22870
+ pinned: true
20847
22871
  },
20848
22872
  // M3 is its own line beside M2, not a bump of it — same reason `kimi-k3`
20849
22873
  // sits beside `kimi-k2` rather than replacing it.
@@ -21312,13 +23336,15 @@ var providers = {
21312
23336
  effort: ["low", "medium", "high", "xhigh", "max"],
21313
23337
  openRouterResolve: "openrouter/~anthropic/claude-opus-latest",
21314
23338
  preferred: true,
21315
- subagentModel: "claude-sonnet"
23339
+ subagentModel: "claude-sonnet",
23340
+ pinned: true
21316
23341
  },
21317
23342
  "claude-sonnet": {
21318
23343
  displayName: "Claude Sonnet",
21319
23344
  resolve: "openrouter/~anthropic/claude-sonnet-latest",
21320
23345
  effort: ["low", "medium", "high", "xhigh", "max"],
21321
- openRouterResolve: "openrouter/~anthropic/claude-sonnet-latest"
23346
+ openRouterResolve: "openrouter/~anthropic/claude-sonnet-latest",
23347
+ pinned: true
21322
23348
  },
21323
23349
  "claude-haiku": {
21324
23350
  displayName: "Claude Haiku",
@@ -21326,7 +23352,8 @@ var providers = {
21326
23352
  // the rolling alias moved to Haiku 5.5 on 2026-10-07, which publishes
21327
23353
  // the ladder Haiku 4.5 did not.
21328
23354
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
21329
- openRouterResolve: "openrouter/~anthropic/claude-haiku-latest"
23355
+ openRouterResolve: "openrouter/~anthropic/claude-haiku-latest",
23356
+ pinned: true
21330
23357
  },
21331
23358
  // pinned to the explicit Sol/Terra/Luna tiers (not the ~openai/gpt-latest
21332
23359
  // rolling alias): after that rename, ~gpt-mini-latest no longer maps
@@ -21353,7 +23380,8 @@ var providers = {
21353
23380
  resolve: "openrouter/openai/gpt-6.1-sol-pro",
21354
23381
  effort: ["low", "medium", "high", "xhigh", "max"],
21355
23382
  openRouterResolve: "openrouter/openai/gpt-6.1-sol-pro",
21356
- subagentModel: "gpt-sol"
23383
+ subagentModel: "gpt-sol",
23384
+ pinned: true
21357
23385
  },
21358
23386
  // gpt-5.6 balanced mid-tier — selectable + Sol's subagent. see openai above.
21359
23387
  "gpt-terra": {
@@ -21418,8 +23446,9 @@ var providers = {
21418
23446
  displayName: "Gemini Pro",
21419
23447
  resolve: "openrouter/~google/gemini-pro-latest",
21420
23448
  effort: ["low", "medium", "high"],
21421
- openRouterResolve: "openrouter/~google/gemini-pro-latest"
23449
+ openRouterResolve: "openrouter/~google/gemini-pro-latest",
21422
23450
  // Inherit — see google/gemini-pro for rationale.
23451
+ pinned: true
21423
23452
  },
21424
23453
  "gemini-flash": {
21425
23454
  displayName: "Gemini Flash",
@@ -21428,7 +23457,8 @@ var providers = {
21428
23457
  // entry tracks its siblings' generation bumps for free. the ladder still
21429
23458
  // mirrors exactly: claude-code hard-errors on an out-of-range `--effort`.
21430
23459
  effort: ["low", "medium", "high"],
21431
- openRouterResolve: "openrouter/~google/gemini-flash-latest"
23460
+ openRouterResolve: "openrouter/~google/gemini-flash-latest",
23461
+ pinned: true
21432
23462
  },
21433
23463
  grok: {
21434
23464
  displayName: "Grok",
@@ -21451,7 +23481,8 @@ var providers = {
21451
23481
  displayName: "DeepSeek Flash",
21452
23482
  resolve: "openrouter/deepseek/deepseek-v4.1-flash",
21453
23483
  effort: ["none", "low", "high", "max"],
21454
- openRouterResolve: "openrouter/deepseek/deepseek-v4.1-flash"
23484
+ openRouterResolve: "openrouter/deepseek/deepseek-v4.1-flash",
23485
+ pinned: true
21455
23486
  },
21456
23487
  // legacy alias — deepseek retires this on 2026-07-24; transparently
21457
23488
  // upgrade existing users to the v4 family via the fallback chain.
@@ -21608,6 +23639,7 @@ var providers = {
21608
23639
  }
21609
23640
  })
21610
23641
  };
23642
+ var providers = bundledProviders;
21611
23643
  function parseModel(slug) {
21612
23644
  const slashIdx = slug.indexOf("/");
21613
23645
  if (slashIdx === -1) {
@@ -21665,27 +23697,30 @@ function routerProxyOptOut(ctx) {
21665
23697
  function resolvePickModel(params) {
21666
23698
  return params.proxied && !routerProxyOptOut(params) ? resolveOpenRouterModel(params.slug) : resolveCliModel(params.slug);
21667
23699
  }
21668
- var modelAliases = Object.entries(providers).flatMap(
21669
- ([providerKey, config2]) => Object.entries(config2.models).map(([modelId, def]) => ({
21670
- slug: `${providerKey}/${modelId}`,
21671
- provider: providerKey,
21672
- displayName: def.displayName,
21673
- description: def.description,
21674
- resolve: def.resolve,
21675
- openRouterResolve: def.openRouterResolve,
21676
- preferred: def.preferred ?? false,
21677
- isFree: def.isFree ?? false,
21678
- fallback: def.fallback,
21679
- routing: def.routing,
21680
- // subagentModel is stored as an alias key local to the provider; expand
21681
- // here to a fully-qualified slug so callers can look up the target alias
21682
- // directly without re-deriving the provider.
21683
- subagentModel: def.subagentModel ? `${providerKey}/${def.subagentModel}` : void 0,
21684
- effort: def.effort,
21685
- openRouterEffort: def.openRouterEffort,
21686
- hidden: def.hidden ?? false
21687
- }))
21688
- );
23700
+ function flattenAliases(source) {
23701
+ return Object.entries(source).flatMap(
23702
+ ([providerKey, config2]) => Object.entries(config2.models).map(([modelId, def]) => ({
23703
+ slug: `${providerKey}/${modelId}`,
23704
+ provider: providerKey,
23705
+ displayName: def.displayName,
23706
+ description: def.description,
23707
+ resolve: def.resolve,
23708
+ openRouterResolve: def.openRouterResolve,
23709
+ preferred: def.preferred ?? false,
23710
+ isFree: def.isFree ?? false,
23711
+ fallback: def.fallback,
23712
+ routing: def.routing,
23713
+ // subagentModel is stored as an alias key local to the provider; expand
23714
+ // here to a fully-qualified slug so callers can look up the target alias
23715
+ // directly without re-deriving the provider.
23716
+ subagentModel: def.subagentModel ? `${providerKey}/${def.subagentModel}` : void 0,
23717
+ effort: def.effort,
23718
+ openRouterEffort: def.openRouterEffort,
23719
+ hidden: def.hidden ?? false
23720
+ }))
23721
+ );
23722
+ }
23723
+ var modelAliases = flattenAliases(providers);
21689
23724
  var AUTO_EFFICIENT = "auto/efficient";
21690
23725
  var AUTO_INTELLIGENT = "auto/intelligent";
21691
23726
  var AUTO_TIER_TARGET = {
@@ -21778,9 +23813,7 @@ function isAutoSlug(slug) {
21778
23813
  function autoRoutedSlug(provider2) {
21779
23814
  return `${AUTO_PREFIX}${provider2}`;
21780
23815
  }
21781
- var ROUTED_PROVIDERS = Object.keys(
21782
- PROVIDER_LADDERS
21783
- ).map((key) => ({ key, displayName: providers[key].displayName }));
23816
+ var ROUTED_PROVIDERS;
21784
23817
  function ladderRungs(ladder) {
21785
23818
  const rungs = [];
21786
23819
  for (const tier of ROUTER_TIERS) {
@@ -21830,27 +23863,21 @@ function resolveModelRung(params) {
21830
23863
  if (!published) return void 0;
21831
23864
  return resolveRung({ position: params.position, published });
21832
23865
  }
21833
- var defaultProxyAlias = resolveDisplayAlias(AUTO_EFFICIENT);
21834
- if (!defaultProxyAlias?.openRouterResolve) {
21835
- throw new Error(`DEFAULT_PROXY_MODEL: ${AUTO_EFFICIENT} has no openRouterResolve`);
21836
- }
21837
- var DEFAULT_PROXY_MODEL = defaultProxyAlias.openRouterResolve;
21838
- var defaultProxyDisplayName = defaultProxyAlias.displayName;
21839
- var trialProxyAlias = resolveDisplayAlias("openai/gpt-luna");
21840
- if (!trialProxyAlias?.openRouterResolve) {
21841
- throw new Error("TRIAL_PROXY_MODEL: openai/gpt-luna has no openRouterResolve");
21842
- }
21843
- var TRIAL_PROXY_MODEL = trialProxyAlias.openRouterResolve;
21844
- var TRIAL_PROXY_DISPLAY_NAME = trialProxyAlias.displayName;
23866
+ var DEFAULT_PROXY_MODEL;
23867
+ var defaultProxyDisplayName;
23868
+ var TRIAL_PROXY_MODEL;
23869
+ var TRIAL_PROXY_DISPLAY_NAME;
21845
23870
  var TRIAL_FUNDED_USD_LIMIT = 10;
21846
- for (const [name, ladder] of Object.entries({ ...PROVIDER_LADDERS, router: ROUTER_LADDER })) {
21847
- const terminal = /* @__PURE__ */ new Set();
21848
- for (const slug of Object.values(ladder)) {
21849
- const alias = resolveDisplayAlias(slug);
21850
- if (!alias) throw new Error(`${name} ladder names unknown alias ${slug}`);
21851
- terminal.add(alias.slug);
23871
+ function checkLadders() {
23872
+ for (const [name, ladder] of Object.entries({ ...PROVIDER_LADDERS, router: ROUTER_LADDER })) {
23873
+ const terminal = /* @__PURE__ */ new Set();
23874
+ for (const slug of Object.values(ladder)) {
23875
+ const alias = resolveDisplayAlias(slug);
23876
+ if (!alias) throw new Error(`${name} ladder names unknown alias ${slug}`);
23877
+ terminal.add(alias.slug);
23878
+ }
23879
+ if (terminal.size < 2) throw new Error(`${name} ladder runs every tier on ${[...terminal][0]}`);
21852
23880
  }
21853
- if (terminal.size < 2) throw new Error(`${name} ladder runs every tier on ${[...terminal][0]}`);
21854
23881
  }
21855
23882
  var OSS_MODEL_ALLOWLIST = [
21856
23883
  // opt-in: 0.86x the old default on the measured mix, and Meta trains on the
@@ -21865,13 +23892,46 @@ var OSS_RECOMMENDED_MODEL = AUTO_TIER_TARGET[AUTO_EFFICIENT];
21865
23892
  function ossFundedModelNames() {
21866
23893
  return OSS_MODEL_ALLOWLIST.map((slug) => resolveDisplayAlias(slug)?.displayName ?? slug);
21867
23894
  }
21868
- var ossAllowedTargets = new Set(
21869
- OSS_MODEL_ALLOWLIST.map((slug) => {
23895
+ var ossAllowedTargets;
23896
+ function deriveFromProviders() {
23897
+ const efficient = resolveDisplayAlias(AUTO_EFFICIENT);
23898
+ if (!efficient?.openRouterResolve) {
23899
+ throw new Error(`DEFAULT_PROXY_MODEL: ${AUTO_EFFICIENT} has no openRouterResolve`);
23900
+ }
23901
+ const trial = resolveDisplayAlias("openai/gpt-luna");
23902
+ if (!trial?.openRouterResolve) {
23903
+ throw new Error("TRIAL_PROXY_MODEL: openai/gpt-luna has no openRouterResolve");
23904
+ }
23905
+ checkLadders();
23906
+ const allowed = OSS_MODEL_ALLOWLIST.map((slug) => {
21870
23907
  const target = resolveOpenRouterModel(slug);
21871
23908
  if (!target) throw new Error(`OSS_MODEL_ALLOWLIST: ${slug} has no openRouterResolve`);
21872
23909
  return target;
21873
- })
21874
- );
23910
+ });
23911
+ DEFAULT_PROXY_MODEL = efficient.openRouterResolve;
23912
+ defaultProxyDisplayName = efficient.displayName;
23913
+ TRIAL_PROXY_MODEL = trial.openRouterResolve;
23914
+ TRIAL_PROXY_DISPLAY_NAME = trial.displayName;
23915
+ ossAllowedTargets = new Set(allowed);
23916
+ ROUTED_PROVIDERS = Object.keys(PROVIDER_LADDERS).map((key) => ({
23917
+ key,
23918
+ displayName: providers[key]?.displayName ?? key
23919
+ }));
23920
+ }
23921
+ deriveFromProviders();
23922
+ function installProviders(next) {
23923
+ const previous = providers;
23924
+ try {
23925
+ providers = next;
23926
+ modelAliases = flattenAliases(next);
23927
+ deriveFromProviders();
23928
+ } catch (error62) {
23929
+ providers = previous;
23930
+ modelAliases = flattenAliases(previous);
23931
+ deriveFromProviders();
23932
+ throw error62;
23933
+ }
23934
+ }
21875
23935
  function isOssAllowedModel(slug) {
21876
23936
  if (!slug) return false;
21877
23937
  const target = resolveOpenRouterModel(slug);
@@ -22006,8 +24066,12 @@ Every body \`### \` section carries one; an inline comment carries one when its
22006
24066
  The 4-backtick fence lets the block hold its own 3-backtick fences and stay one-click copyable. Skip the optional sections when they'd add nothing.
22007
24067
 
22008
24068
  Backtick-wrap identifiers and file names. Don't repeat diff content, don't include raw \`+123 / -45\` stats, no changelog, no horizontal rules, and no \`### Key changes\` / \`### Issues found\` / \`<b>TL;DR</b>\` heading \u2014 each \`### \` heading IS the issue.`;
22009
- function computeModes(agentId, signedCommits = false) {
24069
+ function computeModes(params) {
24070
+ const agentId = params.agentId;
24071
+ const signedCommits = params.signedCommits ?? false;
24072
+ const botLogin = params.botLogin ?? "pullfrog[bot]";
22010
24073
  const t = (toolName) => formatMcpToolRef(agentId, toolName);
24074
+ const selfAuthor = botLogin === "pullfrog[bot]" ? "`author=pullfrog[bot]`" : `\`author=${botLogin}\` or \`author=pullfrog[bot]\``;
22011
24075
  const commitStep = signedCommits ? `commit via \`${t("commit_changes")}\` \u2014 it lands a GitHub-signed commit directly on the remote branch (no push step)` : `commit locally via shell (\`git add . && git commit -m "..."\`)`;
22012
24076
  const finalizeStep = signedCommits ? `confirm a clean working tree (\`git status\`) \u2014 your \`${t("commit_changes")}\` calls already landed the work on the remote` : `confirm a clean working tree, then push via \`${t("push_branch")}\``;
22013
24077
  return [
@@ -22181,7 +24245,7 @@ ${PR_SUMMARY_FORMAT}`
22181
24245
 
22182
24246
  4. **prior feedback \u2014 read AND retire it**: fetch previous reviews via \`${t("list_pull_request_reviews")}\`, then call \`${t("get_review_comments")}\` on each prior Pullfrog review. Each thread renders as a section whose first line is a fenced tag \`comment author=<login> id=<fullDatabaseId> review=<reviewId> thread=<graphqlId>\`; section headers carry \`[RESOLVED]\` / \`[OUTDATED]\` when relevant. For every **open, Pullfrog-originated** thread, decide and act:
22183
24247
 
22184
- - **Pullfrog-originated** means the FIRST \`comment author=...\` tag in the section is \`author=pullfrog[bot]\`. The \`*\` marker on individual comments is unrelated \u2014 it flags whether a comment belongs to the queried review, not whether it is the thread root.
24248
+ - **Pullfrog-originated** means the FIRST \`comment author=...\` tag in the section is ${selfAuthor}. The \`*\` marker on individual comments is unrelated \u2014 it flags whether a comment belongs to the queried review, not whether it is the thread root.
22185
24249
  - **addressed?** read the file at the thread's anchor and judge whether the substantive concern is now resolved by the new commits. Lines being modified isn't enough: reformatting, renaming, or moving the same code elsewhere doesn't address a concern. If the comment raised multiple distinct concerns, ALL must be addressed. The \`[OUTDATED]\` tag means GitHub moved the anchor (line shift, force-push, rename) \u2014 it does NOT mean the concern was addressed; re-read the code at its new location before deciding.
22186
24250
  - **if addressed**: call \`${t("reply_to_review_comment")}\` with the root tag's numeric \`id=\` as \`comment_id\` (NOT the \`thread=\` value \u2014 that's a separate GraphQL ID used only by resolve) and a one-line body (e.g. \`Addressed in <short-sha>.\`), then call \`${t("resolve_review_thread")}\` with the root tag's \`thread=\` value as \`thread_id\`. Do this BEFORE drafting the new review so the GitHub thread state aligns with the new review by the time it lands.
22187
24251
  - **if uncertain or partially addressed**: leave open. False-positive resolutions erode trust faster than false negatives.
@@ -22322,7 +24386,7 @@ ${PR_SUMMARY_FORMAT}`
22322
24386
  }
22323
24387
  ];
22324
24388
  }
22325
- var modes = computeModes("opencode");
24389
+ var modes = computeModes({ agentId: "opencode" });
22326
24390
 
22327
24391
  // utils/failureBody.ts
22328
24392
  function renderFailure(params) {
@@ -22571,12 +24635,15 @@ function stringifyCodexAuthBody(body) {
22571
24635
 
22572
24636
  // utils/claudeSubscription.ts
22573
24637
  var CLAUDE_CODE_IDENTITY = "You are Claude Code, Anthropic's official CLI for Claude.";
22574
- var fallbackResolve = resolveModelSlug("anthropic/claude-haiku");
22575
- if (!fallbackResolve) {
22576
- throw new Error("claudeSubscription preflight: anthropic/claude-haiku missing from registry");
24638
+ function fallbackProbeModel() {
24639
+ const resolve = resolveModelSlug("anthropic/claude-haiku");
24640
+ if (!resolve) {
24641
+ throw new Error("claudeSubscription preflight: anthropic/claude-haiku missing from registry");
24642
+ }
24643
+ return resolve.slice(resolve.indexOf("/") + 1);
22577
24644
  }
22578
- var FALLBACK_PROBE_MODEL = fallbackResolve.slice(fallbackResolve.indexOf("/") + 1);
22579
24645
  async function preflightClaudeSubscription(params) {
24646
+ const model = params.model ?? fallbackProbeModel();
22580
24647
  let res;
22581
24648
  try {
22582
24649
  res = await fetch("https://api.anthropic.com/v1/messages", {
@@ -22589,7 +24656,7 @@ async function preflightClaudeSubscription(params) {
22589
24656
  "x-app": "cli"
22590
24657
  },
22591
24658
  body: JSON.stringify({
22592
- model: params.model ?? FALLBACK_PROBE_MODEL,
24659
+ model,
22593
24660
  max_tokens: 1,
22594
24661
  system: CLAUDE_CODE_IDENTITY,
22595
24662
  messages: [{ role: "user", content: "ok" }]
@@ -22681,9 +24748,18 @@ async function verifyCredential(params) {
22681
24748
  var GENERATED = /(^|\/)(package-lock\.json|pnpm-lock\.yaml|yarn\.lock|bun\.lockb?|Cargo\.lock|go\.sum|poetry\.lock|Pipfile\.lock|Gemfile\.lock|composer\.lock|.*\.snap|.*\.min\.(js|css)|.*\.map|.*\.lock|.*\.(pb\.go|_pb2\.py|g\.dart)|.*\.(generated|gen)\.[^/]+|.*\.(svg|png|jpe?g|gif|ico|webp|woff2?|ttf|pdf))$|(^|\/)(dist|generated|__generated__|node_modules|\.yarn|__snapshots__|coverage|\.next|\.turbo|drizzle\/meta)\//i;
22682
24749
 
22683
24750
  // utils/isPullfrog.ts
24751
+ var BUILT_IN = /* @__PURE__ */ new Set(["pullfrog", "pullfrogdev"]);
24752
+ var runBotLogin = "pullfrog";
22684
24753
  function isPullfrog(actor) {
22685
- actor = actor?.toLowerCase().replace("[bot]", "");
22686
- return !!actor && (actor === "pullfrog" || actor === "pullfrogdev");
24754
+ if (!actor) return false;
24755
+ const login = normalize(actor);
24756
+ return login === runBotLogin || BUILT_IN.has(login);
24757
+ }
24758
+ function isBotLogin(actor, botLogin) {
24759
+ return !!actor && normalize(actor) === normalize(botLogin);
24760
+ }
24761
+ function normalize(login) {
24762
+ return login.toLowerCase().replace("[bot]", "");
22687
24763
  }
22688
24764
 
22689
24765
  // utils/leapingComment.ts
@@ -22727,6 +24803,7 @@ query ($owner: String!, $name: String!, $prNumber: Int!, $cursor: String) {
22727
24803
  }
22728
24804
  `;
22729
24805
  async function countOutstandingPullfrogThreads(ctx, pullNumber) {
24806
+ const isOwn = ctx.isPullfrog ?? isPullfrog;
22730
24807
  let count = 0;
22731
24808
  let cursor = null;
22732
24809
  for (let page = 0; page < 50; page += 1) {
@@ -22738,7 +24815,7 @@ async function countOutstandingPullfrogThreads(ctx, pullNumber) {
22738
24815
  for (const thread of conn?.nodes ?? []) {
22739
24816
  if (!thread || thread.isResolved) continue;
22740
24817
  const root = thread.comments?.nodes?.find((c) => c != null);
22741
- if (root && isPullfrog(root.author?.login)) count += 1;
24818
+ if (root && isOwn(root.author?.login)) count += 1;
22742
24819
  }
22743
24820
  if (!conn?.pageInfo.hasNextPage) break;
22744
24821
  cursor = conn.pageInfo.endCursor;
@@ -23103,6 +25180,123 @@ function extractExcerpt(text, matchIndex) {
23103
25180
  return excerpt.trim();
23104
25181
  }
23105
25182
 
25183
+ // utils/publishedCatalogs.ts
25184
+ async function getJson(url2, signal) {
25185
+ const response = await fetch(url2, { signal });
25186
+ if (!response.ok) throw new Error(`${url2} answered ${response.status}`);
25187
+ return JSON.parse(await response.text());
25188
+ }
25189
+ async function fetchPublishedCatalogs(signal) {
25190
+ const [modelsDev, gateway, zen, go, openrouter] = await Promise.all([
25191
+ getJson("https://models.dev/api.json", signal),
25192
+ getJson("https://ai-gateway.vercel.sh/v1/models", signal),
25193
+ getJson("https://opencode.ai/zen/v1/models", signal),
25194
+ getJson("https://opencode.ai/zen/go/v1/models", signal),
25195
+ getJson("https://openrouter.ai/api/v1/models", signal)
25196
+ ]);
25197
+ const ids = (listing) => new Set(listing.data.map((m) => m.id));
25198
+ return {
25199
+ modelsDev,
25200
+ gateway,
25201
+ served: {
25202
+ opencode: ids(zen),
25203
+ "opencode-go": ids(go),
25204
+ openrouter: ids(openrouter),
25205
+ vercel: ids(gateway)
25206
+ }
25207
+ };
25208
+ }
25209
+ var ROUTE_PROVIDERS = ["opencode", "opencode-go", "openrouter", "vercel"];
25210
+ var isRoute = (provider2) => ROUTE_PROVIDERS.some((route) => route === provider2);
25211
+ var ZEN_UNDEPLOYED = [
25212
+ // 2026-08-28: 400 on both tiers, while kimi-k2.6 and kimi-k3 answer 200 on the same key.
25213
+ "kimi-k2.7-code"
25214
+ ];
25215
+ var FREE_ZEN_FALLBACK = "opencode/big-pickle";
25216
+ var KEEP_BUNDLED_LADDER = /* @__PURE__ */ new Set(["opencode-go/glm-flash"]);
25217
+ var split = (spec) => [
25218
+ spec.slice(0, spec.indexOf("/")),
25219
+ spec.slice(spec.indexOf("/") + 1)
25220
+ ];
25221
+ function isServed(ctx, spec) {
25222
+ const [route, id] = split(spec);
25223
+ if (!isRoute(route)) return true;
25224
+ if (route.startsWith("opencode") && ZEN_UNDEPLOYED.includes(id)) return false;
25225
+ return ctx.catalogs.served[route].has(id);
25226
+ }
25227
+ function idsFor(ctx, route, canonical) {
25228
+ return Object.entries(ctx.catalogs.modelsDev[route]?.models ?? {}).filter(([, m]) => m.canonical_model_id === canonical && m.status !== "deprecated").map(([id]) => `${route}/${id}`);
25229
+ }
25230
+ function baseOf(ids) {
25231
+ return ids.find((base) => ids.every((id) => id.startsWith(base)));
25232
+ }
25233
+ function canonicalOf(ctx, spec) {
25234
+ const [provider2, id] = split(spec);
25235
+ const canonical = ctx.catalogs.modelsDev[provider2]?.models[id]?.canonical_model_id;
25236
+ if (!canonical) return void 0;
25237
+ return baseOf(idsFor(ctx, provider2, canonical)) === spec ? canonical : void 0;
25238
+ }
25239
+ function routeIdFor(ctx, route, canonical) {
25240
+ if (!canonical) return void 0;
25241
+ return baseOf(idsFor(ctx, route, canonical).filter((spec) => isServed(ctx, spec)));
25242
+ }
25243
+ function siblingCanonical(ctx, key) {
25244
+ const ids = Object.entries(ctx.providers).filter(([provider2]) => !isRoute(provider2)).flatMap(([, config2]) => {
25245
+ const def = config2.models[key];
25246
+ return def && !def.routing && !def.fallback ? [def] : [];
25247
+ }).map((def) => canonicalOf(ctx, def.resolve));
25248
+ return ids.length > 0 && ids.every((id) => id && id === ids[0]) ? ids[0] : void 0;
25249
+ }
25250
+ function publishedLadder(ctx, spec) {
25251
+ const [provider2, id] = split(spec);
25252
+ const model = provider2 === "vercel" ? ctx.catalogs.gateway.data.find((m) => m.id === id) : ctx.catalogs.modelsDev[provider2]?.models[id];
25253
+ if (!model) return void 0;
25254
+ return { ladder: model.reasoning_options?.find((o) => o.type === "effort")?.values };
25255
+ }
25256
+ function isDeadFreeZen(ctx, slug, def) {
25257
+ if (!def.isFree || def.fallback || !slug.startsWith("opencode/") || slug === FREE_ZEN_FALLBACK) {
25258
+ return false;
25259
+ }
25260
+ const pickle = ctx.providers.opencode?.models["big-pickle"];
25261
+ if (!pickle || !isServed(ctx, pickle.resolve)) return false;
25262
+ const [, id] = split(def.resolve);
25263
+ return ctx.catalogs.modelsDev.opencode?.models[id]?.status === "deprecated" || !isServed(ctx, def.resolve);
25264
+ }
25265
+ function withPublished(ctx, slug, def) {
25266
+ if (def.routing || def.fallback) return def;
25267
+ if (isDeadFreeZen(ctx, slug, def)) return { ...def, fallback: FREE_ZEN_FALLBACK };
25268
+ const [provider2, key] = split(slug);
25269
+ const resolve = !def.pinned && !def.isFree && isRoute(provider2) && routeIdFor(ctx, provider2, siblingCanonical(ctx, key)) || def.resolve;
25270
+ const openRouterResolve = def.openRouterResolve && (!def.pinned && routeIdFor(ctx, "openrouter", canonicalOf(ctx, resolve)) || def.openRouterResolve);
25271
+ if (KEEP_BUNDLED_LADDER.has(slug)) return { ...def, resolve, openRouterResolve };
25272
+ const direct = publishedLadder(ctx, resolve);
25273
+ const router = openRouterResolve ? publishedLadder(ctx, openRouterResolve) : void 0;
25274
+ return {
25275
+ ...def,
25276
+ resolve,
25277
+ openRouterResolve,
25278
+ effort: direct ? direct.ladder : def.effort,
25279
+ // `[]`, not undefined: an absent openRouterEffort means "the direct route's ladder"
25280
+ openRouterEffort: router ? router.ladder ?? [] : def.openRouterEffort
25281
+ };
25282
+ }
25283
+ function applyPublishedCatalogs(params) {
25284
+ return Object.fromEntries(
25285
+ Object.entries(params.providers).map(([key, config2]) => [
25286
+ key,
25287
+ {
25288
+ ...config2,
25289
+ models: Object.fromEntries(
25290
+ Object.entries(config2.models).map(([id, def]) => [
25291
+ id,
25292
+ withPublished(params, `${key}/${id}`, def)
25293
+ ])
25294
+ )
25295
+ }
25296
+ ])
25297
+ );
25298
+ }
25299
+
23106
25300
  // utils/runStatusCheck.ts
23107
25301
  var RUN_STATUS_CHECK_NAME = "pullfrog";
23108
25302
  var GITHUB_ACTIONS_APP_SLUG = "github-actions";
@@ -23516,6 +25710,20 @@ function parseTimeString(input2) {
23516
25710
  function isValidTimeString(input2) {
23517
25711
  return parseTimeString(input2) !== null;
23518
25712
  }
25713
+
25714
+ // utils/version.ts
25715
+ var import_semver = __toESM(require_semver2(), 1);
25716
+ function getDevDependencyVersion(name) {
25717
+ const version2 = package_default.devDependencies[name];
25718
+ if (!import_semver.default.valid(version2)) {
25719
+ throw new Error(`dev dependency "${name}" must be a pinned version, got "${version2}"`);
25720
+ }
25721
+ return version2;
25722
+ }
25723
+ var HARNESS_PACKAGES = ["@anthropic-ai/claude-code", "@openai/codex", "opencode-ai"];
25724
+ function getHarnessPins() {
25725
+ return Object.fromEntries(HARNESS_PACKAGES.map((name) => [name, getDevDependencyVersion(name)]));
25726
+ }
23519
25727
  export {
23520
25728
  APPROVAL_CHECK_NAME,
23521
25729
  AUTO_EFFICIENT,
@@ -23544,9 +25752,11 @@ export {
23544
25752
  SubscriptionCredentialError,
23545
25753
  TIMEOUT_DISABLED,
23546
25754
  TRIAL_FUNDED_USD_LIMIT,
25755
+ applyPublishedCatalogs,
23547
25756
  autoLadder,
23548
25757
  autoRoutedSlug,
23549
25758
  buildPullfrogFooter,
25759
+ bundledProviders,
23550
25760
  commercialPaywallBody,
23551
25761
  configEntrySchema,
23552
25762
  configFields,
@@ -23561,17 +25771,21 @@ export {
23561
25771
  defaultAutoTier,
23562
25772
  deleteProgressCommentApi,
23563
25773
  detectProviderError,
25774
+ fetchPublishedCatalogs,
23564
25775
  finalizeRunStatusCheck,
23565
25776
  getAutoSelectHintModel,
25777
+ getHarnessPins,
23566
25778
  getModelEffortLevels,
23567
25779
  getModelEnvVars,
23568
25780
  getModelManagedCredentials,
23569
25781
  getModelProvider,
23570
25782
  getProgressComment,
23571
25783
  getProviderDisplayName,
25784
+ installProviders,
23572
25785
  isAutoRouted,
23573
25786
  isAutoSlug,
23574
25787
  isAutoTier,
25788
+ isBotLogin,
23575
25789
  isCardGatedModel,
23576
25790
  isCredentialProbeable,
23577
25791
  isEffortPosition,