pullfrog 0.1.106 → 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/cli.mjs +1054 -882
- package/dist/index.js +4011 -3839
- package/dist/internal/index.d.ts +4 -2
- package/dist/internal.js +2287 -73
- package/dist/mcp/server.d.ts +2 -0
- package/dist/models.d.ts +34 -10
- package/dist/modes.d.ts +5 -1
- package/dist/utils/isPullfrog.d.ts +13 -1
- package/dist/utils/openCodeModels.d.ts +9 -0
- package/dist/utils/outstandingThreads.d.ts +2 -0
- package/dist/utils/publishedCatalogs.d.ts +50 -0
- package/dist/utils/runContext.d.ts +10 -1
- package/dist/utils/runContextData.d.ts +1 -1
- package/dist/utils/runErrorRenderer.d.ts +2 -0
- package/dist/utils/setup.d.ts +2 -0
- package/dist/utils/version.d.ts +2 -0
- package/package.json +1 -1
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.
|
|
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
|
|
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
|
-
|
|
21669
|
-
|
|
21670
|
-
|
|
21671
|
-
|
|
21672
|
-
|
|
21673
|
-
|
|
21674
|
-
|
|
21675
|
-
|
|
21676
|
-
|
|
21677
|
-
|
|
21678
|
-
|
|
21679
|
-
|
|
21680
|
-
|
|
21681
|
-
|
|
21682
|
-
|
|
21683
|
-
|
|
21684
|
-
|
|
21685
|
-
|
|
21686
|
-
|
|
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
|
|
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
|
|
21834
|
-
|
|
21835
|
-
|
|
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
|
-
|
|
21847
|
-
const
|
|
21848
|
-
|
|
21849
|
-
const
|
|
21850
|
-
|
|
21851
|
-
|
|
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
|
|
21869
|
-
|
|
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(
|
|
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
|
|
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
|
-
|
|
22575
|
-
|
|
22576
|
-
|
|
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
|
|
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
|
-
|
|
22686
|
-
|
|
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 &&
|
|
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,
|