@vltpkg/semver 1.0.0-rc.23 → 1.0.0-rc.25

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/range.js ADDED
@@ -0,0 +1,101 @@
1
+ import { fastSplit } from '@vltpkg/fast-split';
2
+ import { Comparator } from "./comparator.js";
3
+ import { asError } from '@vltpkg/types';
4
+ export const isRange = (range) => {
5
+ return (range instanceof Range ||
6
+ (typeof range === 'object' &&
7
+ range !== null &&
8
+ 'raw' in range &&
9
+ typeof range.raw === 'string' &&
10
+ 'set' in range &&
11
+ Array.isArray(range.set) &&
12
+ range.set.every(c => c instanceof Comparator)));
13
+ };
14
+ /**
15
+ * A representation of a semver range, used to test versions.
16
+ *
17
+ * Includes a set of comparators representing the `||`-separated
18
+ * sections of the range string
19
+ */
20
+ export class Range {
21
+ /** raw string used to create this Range */
22
+ raw;
23
+ /** true if the range is `*` */
24
+ isAny;
25
+ /** true if the range is a single semver version */
26
+ isSingle;
27
+ /** true if the range cannot match anything */
28
+ /**
29
+ * set of {@link Comparator} objects representing the `||`-separated sections
30
+ * of the range. If at least one of these matches, then the version is a
31
+ * match.
32
+ */
33
+ set = [];
34
+ /** true if all prerelease versions should be included */
35
+ includePrerelease;
36
+ /** cached toString */
37
+ #toString;
38
+ constructor(range, includePrerelease = false) {
39
+ this.raw = range;
40
+ this.includePrerelease = includePrerelease;
41
+ this.isAny = false;
42
+ let isFirst = true;
43
+ this.isSingle = false;
44
+ const comparatorErrors = [];
45
+ fastSplit(range, '||', -1, part => {
46
+ if (this.isAny)
47
+ return;
48
+ const cmp = this.#maybeComparator(part, this.includePrerelease);
49
+ if (cmp instanceof Error) {
50
+ comparatorErrors.push(cmp);
51
+ return;
52
+ }
53
+ if (cmp.isAny) {
54
+ this.set = [cmp];
55
+ this.isAny = true;
56
+ return;
57
+ }
58
+ this.set.push(cmp);
59
+ if (!isFirst)
60
+ this.isSingle = false;
61
+ else if (Array.isArray(cmp.tuples) &&
62
+ cmp.tuples.length === 1 &&
63
+ Array.isArray(cmp.tuples[0]) &&
64
+ cmp.tuples[0][0] === '') {
65
+ this.isSingle = true;
66
+ }
67
+ isFirst = false;
68
+ });
69
+ if (!this.set.length && comparatorErrors.length) {
70
+ if (comparatorErrors.length === 1 && comparatorErrors[0]) {
71
+ throw comparatorErrors[0];
72
+ }
73
+ throw new AggregateError(comparatorErrors);
74
+ }
75
+ }
76
+ #maybeComparator(part, includePrerelease) {
77
+ try {
78
+ return new Comparator(part, includePrerelease);
79
+ }
80
+ catch (er) {
81
+ return asError(er);
82
+ }
83
+ }
84
+ /**
85
+ * test a {@link Version} against the range
86
+ */
87
+ test(v) {
88
+ return this.set.some(c => c.test(v));
89
+ }
90
+ /** return the simplified canonical form of this range */
91
+ toString() {
92
+ if (this.#toString)
93
+ return this.#toString;
94
+ if (this.isSingle) {
95
+ this.#toString = String(this.set[0]);
96
+ return this.#toString;
97
+ }
98
+ this.#toString = this.set.map(c => String(c)).join(' || ');
99
+ return this.#toString;
100
+ }
101
+ }
@@ -0,0 +1,131 @@
1
+ import type { Range } from './range.ts';
2
+ /**
3
+ * Values of valid increment types.
4
+ */
5
+ export declare const versionIncrements: readonly ["major", "minor", "patch", "pre", "premajor", "preminor", "prepatch", "prerelease"];
6
+ /**
7
+ * Types of incrementing supported by {@link Version#inc}
8
+ */
9
+ export type IncrementType = (typeof versionIncrements)[number];
10
+ /**
11
+ * A parsed object representation of a SemVer version string
12
+ *
13
+ * This is a bit less forgiving than node-semver, in that prerelease versions
14
+ * MUST start with '-'. Otherwise, the allowed syntax is identical.
15
+ */
16
+ export declare class Version {
17
+ /** raw string provided to create this Version */
18
+ raw: string;
19
+ /** major version number */
20
+ major: number;
21
+ /** minor version number */
22
+ minor: number;
23
+ /** patch version number */
24
+ patch: number;
25
+ /**
26
+ * List of `'.'`-separated strings and numbers indicating that this
27
+ * version is a prerelease.
28
+ *
29
+ * This is undefined if the version does not have a prerelease section.
30
+ */
31
+ prerelease?: (number | string)[];
32
+ /**
33
+ * List of `'.'`-separated strings in the `build` section.
34
+ *
35
+ * This is undefined if the version does not have a build.
36
+ */
37
+ build?: string[];
38
+ /** Canonical strict form of this version */
39
+ toString(): string;
40
+ /** Generate a `Version` object from a SemVer string */
41
+ static parse(version: string): Version;
42
+ constructor(version: string, major: number, minor: number, patch: number, prerelease: string | undefined, build: string | undefined);
43
+ /**
44
+ * Return 1 if this is > the provided version, -1 if we're less, or 0 if
45
+ * they are equal.
46
+ *
47
+ * No special handling for prerelease versions, this is just a precedence
48
+ * comparison.
49
+ *
50
+ * This can be used to sort a list of versions by precedence:
51
+ *
52
+ * ```ts
53
+ * const versions: Version[] = getVersionsSomehow()
54
+ * const sorted = versions.sort((a, b) => a.compare(b))
55
+ * ```
56
+ */
57
+ compare(v: Version): -1 | 0 | 1;
58
+ /**
59
+ * The inverse of compare, for sorting version lists in reverse order
60
+ */
61
+ rcompare(v: Version): number;
62
+ /** true if this version is > the argument */
63
+ greaterThan(v: Version): boolean;
64
+ /** true if this version is >= the argument */
65
+ greaterThanEqual(v: Version): boolean;
66
+ /** true if this version is < the argument */
67
+ lessThan(v: Version): boolean;
68
+ /** true if this version is &lt;= the argument */
69
+ lessThanEqual(v: Version): boolean;
70
+ /** true if these two versions have equal SemVer precedence */
71
+ equals(v: Version): boolean;
72
+ /** just compare the M.m.p parts of the version */
73
+ tupleEquals(v: Version): boolean;
74
+ /** true if this version satisfies the range */
75
+ satisfies(r: Range): boolean;
76
+ /**
77
+ * Increment the version in place, in the manner specified.
78
+ *
79
+ * Part behaviors:
80
+ *
81
+ * - `'major'` If the version is a `M.0.0-...` version with a prerelease, then
82
+ * simply drop the prerelease. Otherwise, set the minor and patch to 0, and
83
+ * increment the major. So `1.0.0-beta` becomes `1.0.0`, and `1.2.3` becomes
84
+ * `2.0.0`
85
+ *
86
+ * - `'minor'` If the version is a `M.m.0-...` version with a prerelease, then
87
+ * simply drop the prerelease. Otherwise, set the patch to 0, and increment the
88
+ * minor. So `1.2.0-beta` becomes `1.2.0`, and `1.2.3` becomes `1.3.0`.
89
+ *
90
+ * - `'patch'` If the version has a prerelease, then simply drop the
91
+ * prerelease. Otherwise, increment the patch value. So `1.2.3-beta` becomes
92
+ * `1.2.3` and `1.2.3` becomes `1.2.4`.
93
+ *
94
+ * - `'premajor'` Set the patch and minor versions to `0`, increment the major
95
+ * version, and add a prerelease, using the optional identifier.
96
+ *
97
+ * - `'preminor'` Set the patch version to `0`, increment the minor version,
98
+ * and add a prerelease, using the optional identifier.
99
+ *
100
+ * - `'prepatch'` If a prerelease is already present, increment the patch
101
+ * version, otherwise leave it untouched, and add a prerelease, using the
102
+ * optional identifier.
103
+ *
104
+ * - `'prerelease'` If a prerelease version is present, then behave the same as
105
+ * `'prepatch'`. Otherwise, add a prerelease, using the optional identifier.
106
+ *
107
+ * - `'pre'` This is mostly for use by the other prerelease incrementers.
108
+ *
109
+ * - If a prerelease identifier is provided:
110
+ *
111
+ * Update that named portion of the prerelease. For example,
112
+ * `inc('1.2.3-beta.4', 'pre', 'beta')` would result in `1.2.3-beta.5`.
113
+ *
114
+ * If there is no prerelease identifier by that name, then replace the
115
+ * prerelease with `[name]`. So `inc('1.2.3-alpha.4', 'pre', 'beta')`
116
+ * would result in `1.2.3-beta`.
117
+ *
118
+ * If the prerelease identifer is present, but has no numeric value
119
+ * following it, then add `0`. So `inc('1.2.3-beta', 'pre', 'beta')`
120
+ * would result in `1.2.3-beta.0`.
121
+ *
122
+ * - If no prerelease identifier is provided:
123
+ *
124
+ * If there is no current prerelease, then set the prerelease to `0`. So,
125
+ * `inc('1.2.3', 'pre')` becomes `1.2.3-0`.
126
+ *
127
+ * If the last item in the prerelease is numeric, then increment it. So,
128
+ * `inc('1.2.3-beta.3', 'pre')` becomes `1.2.3-beta.4`.
129
+ */
130
+ inc(part: IncrementType, prereleaseIdentifier?: string): this;
131
+ }
@@ -0,0 +1,366 @@
1
+ import { syntaxError, typeError } from '@vltpkg/error-cause';
2
+ import { fastSplit } from '@vltpkg/fast-split';
3
+ const maybeNumber = (s) => {
4
+ if (!/^[0-9]+$/.test(s))
5
+ return s;
6
+ const n = Number(s);
7
+ return n <= Number.MAX_SAFE_INTEGER ? n : s;
8
+ };
9
+ const safeNumber = (s, version, field) => {
10
+ const n = Number(s);
11
+ if (n > Number.MAX_SAFE_INTEGER) {
12
+ throw invalidVersion(version, `invalid ${field}, must be <= ${Number.MAX_SAFE_INTEGER}`);
13
+ }
14
+ return n;
15
+ };
16
+ const re = {
17
+ prefix: /^[ v=]+/,
18
+ main: /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)/,
19
+ prerelease: /-([0-9a-zA-Z_.-]+)(?:$|\+)/,
20
+ build: /\+([0-9a-zA-Z_.-]+)$/,
21
+ full: /^[ v=]*(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9a-zA-Z_.-]+))?(?:\+([0-9a-zA-Z_.-]+))?$/,
22
+ };
23
+ const invalidVersion = (version, message) => {
24
+ const er = syntaxError(`invalid version: ${message}`, { version }, Version);
25
+ return er;
26
+ };
27
+ /**
28
+ * Values of valid increment types.
29
+ */
30
+ export const versionIncrements = [
31
+ 'major',
32
+ 'minor',
33
+ 'patch',
34
+ 'pre',
35
+ 'premajor',
36
+ 'preminor',
37
+ 'prepatch',
38
+ 'prerelease',
39
+ ];
40
+ /**
41
+ * A parsed object representation of a SemVer version string
42
+ *
43
+ * This is a bit less forgiving than node-semver, in that prerelease versions
44
+ * MUST start with '-'. Otherwise, the allowed syntax is identical.
45
+ */
46
+ export class Version {
47
+ /** raw string provided to create this Version */
48
+ raw;
49
+ /** major version number */
50
+ major;
51
+ /** minor version number */
52
+ minor;
53
+ /** patch version number */
54
+ patch;
55
+ /**
56
+ * List of `'.'`-separated strings and numbers indicating that this
57
+ * version is a prerelease.
58
+ *
59
+ * This is undefined if the version does not have a prerelease section.
60
+ */
61
+ prerelease;
62
+ /**
63
+ * List of `'.'`-separated strings in the `build` section.
64
+ *
65
+ * This is undefined if the version does not have a build.
66
+ */
67
+ build;
68
+ /** Canonical strict form of this version */
69
+ toString() {
70
+ return `${this.major}.${this.minor}.${this.patch}${this.prerelease ? '-' + this.prerelease.join('.') : ''}${this.build ? '+' + this.build.join('.') : ''}`;
71
+ }
72
+ /** Generate a `Version` object from a SemVer string */
73
+ static parse(version) {
74
+ version = version.replace(re.prefix, '').trim();
75
+ if (version.length > 256) {
76
+ throw invalidVersion(version, 'must be less than 256 characters');
77
+ }
78
+ const parsed = re.full.exec(version);
79
+ if (!parsed) {
80
+ const main = re.main.exec(version);
81
+ if (!main) {
82
+ throw invalidVersion(version, 'no Major.minor.patch tuple present');
83
+ }
84
+ else {
85
+ throw invalidVersion(version, 'invalid build or patch section');
86
+ }
87
+ }
88
+ const [_, major_, minor_, patch_, prerelease, build] = parsed;
89
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
90
+ const major = safeNumber(major_, version, 'major');
91
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
92
+ const minor = safeNumber(minor_, version, 'minor');
93
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
94
+ const patch = safeNumber(patch_, version, 'patch');
95
+ return new Version(version, major, minor, patch, prerelease, build);
96
+ }
97
+ constructor(version, major, minor, patch, prerelease, build) {
98
+ this.raw = version;
99
+ this.major = major;
100
+ this.minor = minor;
101
+ this.patch = patch;
102
+ // has prerelease and/or build
103
+ if (prerelease) {
104
+ this.prerelease = fastSplit(prerelease, '.', -1, c => {
105
+ if (!c) {
106
+ throw invalidVersion(version, 'invalid prerelease, empty identifiers not allowed');
107
+ }
108
+ return maybeNumber(c);
109
+ });
110
+ }
111
+ if (build) {
112
+ this.build = fastSplit(build, '.', -1, c => {
113
+ if (!c) {
114
+ throw invalidVersion(version, 'invalid build metadata, empty identifiers not allowed');
115
+ }
116
+ });
117
+ }
118
+ }
119
+ /**
120
+ * Return 1 if this is > the provided version, -1 if we're less, or 0 if
121
+ * they are equal.
122
+ *
123
+ * No special handling for prerelease versions, this is just a precedence
124
+ * comparison.
125
+ *
126
+ * This can be used to sort a list of versions by precedence:
127
+ *
128
+ * ```ts
129
+ * const versions: Version[] = getVersionsSomehow()
130
+ * const sorted = versions.sort((a, b) => a.compare(b))
131
+ * ```
132
+ */
133
+ compare(v) {
134
+ if (this.major > v.major)
135
+ return 1;
136
+ if (this.major < v.major)
137
+ return -1;
138
+ if (this.minor > v.minor)
139
+ return 1;
140
+ if (this.minor < v.minor)
141
+ return -1;
142
+ if (this.patch > v.patch)
143
+ return 1;
144
+ if (this.patch < v.patch)
145
+ return -1;
146
+ // main tuple is equal now
147
+ // if the version has no pr, we're definitely less than or equal to
148
+ if (!v.prerelease?.length)
149
+ return !this.prerelease?.length ? 0 : -1;
150
+ // v has a pr. if we don't, we're > it
151
+ if (!this.prerelease?.length)
152
+ return 1;
153
+ // we both have prereleases
154
+ const len = Math.max(this.prerelease.length, v.prerelease.length);
155
+ const me = this.prerelease;
156
+ const thee = v.prerelease;
157
+ for (let i = 0; i < len; i++) {
158
+ const m = me[i];
159
+ const t = thee[i];
160
+ if (m === t)
161
+ continue;
162
+ // having a field is > not having it
163
+ if (t === undefined)
164
+ return 1;
165
+ if (m === undefined)
166
+ return -1;
167
+ // string parts are higher precedence than
168
+ if (typeof m !== typeof t) {
169
+ return typeof m === 'string' ? 1 : -1;
170
+ }
171
+ return m > t ? 1 : -1;
172
+ }
173
+ return 0;
174
+ }
175
+ /**
176
+ * The inverse of compare, for sorting version lists in reverse order
177
+ */
178
+ rcompare(v) {
179
+ return -1 * this.compare(v);
180
+ }
181
+ /** true if this version is > the argument */
182
+ greaterThan(v) {
183
+ return this.compare(v) === 1;
184
+ }
185
+ /** true if this version is >= the argument */
186
+ greaterThanEqual(v) {
187
+ return this.compare(v) > -1;
188
+ }
189
+ /** true if this version is < the argument */
190
+ lessThan(v) {
191
+ return this.compare(v) === -1;
192
+ }
193
+ /** true if this version is &lt;= the argument */
194
+ lessThanEqual(v) {
195
+ return this.compare(v) < 1;
196
+ }
197
+ /** true if these two versions have equal SemVer precedence */
198
+ equals(v) {
199
+ return this.compare(v) === 0;
200
+ }
201
+ /** just compare the M.m.p parts of the version */
202
+ tupleEquals(v) {
203
+ return (this.major === v.major &&
204
+ this.minor === v.minor &&
205
+ this.patch === v.patch);
206
+ }
207
+ /** true if this version satisfies the range */
208
+ satisfies(r) {
209
+ return r.test(this);
210
+ }
211
+ /**
212
+ * Increment the version in place, in the manner specified.
213
+ *
214
+ * Part behaviors:
215
+ *
216
+ * - `'major'` If the version is a `M.0.0-...` version with a prerelease, then
217
+ * simply drop the prerelease. Otherwise, set the minor and patch to 0, and
218
+ * increment the major. So `1.0.0-beta` becomes `1.0.0`, and `1.2.3` becomes
219
+ * `2.0.0`
220
+ *
221
+ * - `'minor'` If the version is a `M.m.0-...` version with a prerelease, then
222
+ * simply drop the prerelease. Otherwise, set the patch to 0, and increment the
223
+ * minor. So `1.2.0-beta` becomes `1.2.0`, and `1.2.3` becomes `1.3.0`.
224
+ *
225
+ * - `'patch'` If the version has a prerelease, then simply drop the
226
+ * prerelease. Otherwise, increment the patch value. So `1.2.3-beta` becomes
227
+ * `1.2.3` and `1.2.3` becomes `1.2.4`.
228
+ *
229
+ * - `'premajor'` Set the patch and minor versions to `0`, increment the major
230
+ * version, and add a prerelease, using the optional identifier.
231
+ *
232
+ * - `'preminor'` Set the patch version to `0`, increment the minor version,
233
+ * and add a prerelease, using the optional identifier.
234
+ *
235
+ * - `'prepatch'` If a prerelease is already present, increment the patch
236
+ * version, otherwise leave it untouched, and add a prerelease, using the
237
+ * optional identifier.
238
+ *
239
+ * - `'prerelease'` If a prerelease version is present, then behave the same as
240
+ * `'prepatch'`. Otherwise, add a prerelease, using the optional identifier.
241
+ *
242
+ * - `'pre'` This is mostly for use by the other prerelease incrementers.
243
+ *
244
+ * - If a prerelease identifier is provided:
245
+ *
246
+ * Update that named portion of the prerelease. For example,
247
+ * `inc('1.2.3-beta.4', 'pre', 'beta')` would result in `1.2.3-beta.5`.
248
+ *
249
+ * If there is no prerelease identifier by that name, then replace the
250
+ * prerelease with `[name]`. So `inc('1.2.3-alpha.4', 'pre', 'beta')`
251
+ * would result in `1.2.3-beta`.
252
+ *
253
+ * If the prerelease identifer is present, but has no numeric value
254
+ * following it, then add `0`. So `inc('1.2.3-beta', 'pre', 'beta')`
255
+ * would result in `1.2.3-beta.0`.
256
+ *
257
+ * - If no prerelease identifier is provided:
258
+ *
259
+ * If there is no current prerelease, then set the prerelease to `0`. So,
260
+ * `inc('1.2.3', 'pre')` becomes `1.2.3-0`.
261
+ *
262
+ * If the last item in the prerelease is numeric, then increment it. So,
263
+ * `inc('1.2.3-beta.3', 'pre')` becomes `1.2.3-beta.4`.
264
+ */
265
+ inc(part, prereleaseIdentifier) {
266
+ switch (part) {
267
+ case 'premajor':
268
+ this.prerelease = undefined;
269
+ this.patch = 0;
270
+ this.minor = 0;
271
+ this.major++;
272
+ this.inc('pre', prereleaseIdentifier);
273
+ break;
274
+ case 'preminor':
275
+ this.prerelease = undefined;
276
+ this.patch = 0;
277
+ this.minor++;
278
+ this.inc('pre', prereleaseIdentifier);
279
+ break;
280
+ case 'prepatch':
281
+ this.prerelease = undefined;
282
+ this.inc('patch');
283
+ this.inc('pre', prereleaseIdentifier);
284
+ break;
285
+ case 'prerelease':
286
+ if (!this.prerelease?.length)
287
+ this.inc('patch', prereleaseIdentifier);
288
+ this.inc('pre', prereleaseIdentifier);
289
+ break;
290
+ case 'pre': {
291
+ // this is a bit different than node-semver's logic, but simpler
292
+ // always do zero-based incrementing, and either bump the existing
293
+ // numeric pr value, or add a `.0` after the identifier.
294
+ if (!prereleaseIdentifier) {
295
+ if (!this.prerelease?.length) {
296
+ this.prerelease = [0];
297
+ break;
298
+ }
299
+ const last = this.prerelease[this.prerelease.length - 1];
300
+ if (typeof last === 'number') {
301
+ this.prerelease[this.prerelease.length - 1] = last + 1;
302
+ }
303
+ else {
304
+ this.prerelease.push(0);
305
+ }
306
+ break;
307
+ }
308
+ if (!this.prerelease?.length) {
309
+ this.prerelease = [prereleaseIdentifier];
310
+ break;
311
+ }
312
+ const i = this.prerelease.indexOf(maybeNumber(prereleaseIdentifier));
313
+ if (i === -1) {
314
+ this.prerelease = [prereleaseIdentifier];
315
+ break;
316
+ }
317
+ const baseValue = this.prerelease[i + 1];
318
+ if (typeof baseValue === 'number') {
319
+ this.prerelease[i + 1] = baseValue + 1;
320
+ break;
321
+ }
322
+ if (i === this.prerelease.length - 1) {
323
+ this.prerelease.push(0);
324
+ break;
325
+ }
326
+ this.prerelease.splice(i + 1, 0, 0);
327
+ break;
328
+ }
329
+ case 'major':
330
+ if (!this.prerelease?.length || this.minor || this.patch)
331
+ this.major++;
332
+ this.prerelease = undefined;
333
+ this.patch = 0;
334
+ this.minor = 0;
335
+ break;
336
+ case 'minor':
337
+ if (!this.prerelease?.length || this.patch)
338
+ this.minor++;
339
+ this.prerelease = undefined;
340
+ this.patch = 0;
341
+ break;
342
+ case 'patch':
343
+ if (!this.prerelease?.length)
344
+ this.patch++;
345
+ this.prerelease = undefined;
346
+ break;
347
+ default:
348
+ throw typeError('Invalid increment identifier', {
349
+ version: this,
350
+ found: part,
351
+ validOptions: [
352
+ 'major',
353
+ 'minor',
354
+ 'patch',
355
+ 'premajor',
356
+ 'preminor',
357
+ 'prepatch',
358
+ 'prerelease',
359
+ 'pre',
360
+ ],
361
+ }, this.inc);
362
+ }
363
+ this.raw = this.toString();
364
+ return this;
365
+ }
366
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vltpkg/semver",
3
3
  "description": "The semantic version parser used by vlt",
4
- "version": "1.0.0-rc.23",
4
+ "version": "1.0.0-rc.25",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/vltpkg/vltpkg.git",
@@ -12,9 +12,9 @@
12
12
  "email": "support@vlt.sh"
13
13
  },
14
14
  "dependencies": {
15
- "@vltpkg/error-cause": "1.0.0-rc.23",
16
- "@vltpkg/fast-split": "1.0.0-rc.23",
17
- "@vltpkg/types": "1.0.0-rc.23"
15
+ "@vltpkg/error-cause": "1.0.0-rc.25",
16
+ "@vltpkg/fast-split": "1.0.0-rc.25",
17
+ "@vltpkg/types": "1.0.0-rc.25"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@eslint/js": "^9.39.1",