@pipeline-builder/api-core 5.2.7 → 5.2.9

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.
@@ -0,0 +1,120 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * The small slice of semver the platform needs without a dependency: ordering
5
+ * versions (SemVer 2.0 §11, prereleases included) and checking a version
6
+ * against an `engines`-style range. Shared by the CLI's `--upgrade` and the
7
+ * server's minimum-client-version gate so both order versions identically.
8
+ */
9
+ const SEMVER = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;
10
+ function parse(v) {
11
+ const m = SEMVER.exec(v.trim());
12
+ if (!m)
13
+ return null;
14
+ return { nums: [Number(m[1]), Number(m[2]), Number(m[3])], pre: m[4] ? m[4].split('.') : [] };
15
+ }
16
+ /** True for a full `x.y.z[-pre][+build]` version (a leading `v` is allowed). */
17
+ export function isSemver(v) {
18
+ return parse(v) !== null;
19
+ }
20
+ /**
21
+ * -1 / 0 / 1 ordering of two versions per SemVer §11: numeric x.y.z, a
22
+ * prerelease sorts before its release, and prerelease identifiers compare
23
+ * numerically when both are numeric (`rc.2` < `rc.10`), else as ASCII, with a
24
+ * numeric identifier below an alphanumeric one and a shorter set below a
25
+ * longer one that it prefixes. Throws on a value that isn't a version.
26
+ */
27
+ export function compareSemver(a, b) {
28
+ const x = parse(a);
29
+ const y = parse(b);
30
+ if (!x || !y)
31
+ throw new Error(`Not a semver version: ${!x ? a : b}`);
32
+ for (let i = 0; i < 3; i++) {
33
+ if (x.nums[i] !== y.nums[i])
34
+ return x.nums[i] < y.nums[i] ? -1 : 1;
35
+ }
36
+ if (!x.pre.length || !y.pre.length) {
37
+ if (x.pre.length === y.pre.length)
38
+ return 0;
39
+ return x.pre.length ? -1 : 1;
40
+ }
41
+ for (let i = 0; i < Math.max(x.pre.length, y.pre.length); i++) {
42
+ const p = x.pre[i];
43
+ const q = y.pre[i];
44
+ if (p === undefined)
45
+ return -1;
46
+ if (q === undefined)
47
+ return 1;
48
+ if (p === q)
49
+ continue;
50
+ const pn = /^\d+$/.test(p);
51
+ const qn = /^\d+$/.test(q);
52
+ if (pn && qn)
53
+ return Number(p) < Number(q) ? -1 : 1;
54
+ if (pn !== qn)
55
+ return pn ? -1 : 1;
56
+ return p < q ? -1 : 1;
57
+ }
58
+ return 0;
59
+ }
60
+ /** A partial version (`26`, `26.13`) padded to x.y.z, or null. */
61
+ function padded(v) {
62
+ const m = /^v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(-[0-9A-Za-z.-]+)?$/.exec(v);
63
+ if (!m)
64
+ return null;
65
+ return `${m[1]}.${m[2] ?? 0}.${m[3] ?? 0}${m[4] ?? ''}`;
66
+ }
67
+ function satisfiesComparator(version, comparator) {
68
+ const m = /^(>=|<=|>|<|=|\^|~)?\s*(.+)$/.exec(comparator);
69
+ if (!m)
70
+ return null;
71
+ const op = m[1] ?? '=';
72
+ const base = padded(m[2]);
73
+ if (!base)
74
+ return null;
75
+ const c = compareSemver(version, base);
76
+ switch (op) {
77
+ case '>=': return c >= 0;
78
+ case '>': return c > 0;
79
+ case '<=': return c <= 0;
80
+ case '<': return c < 0;
81
+ case '=': return c === 0;
82
+ default: {
83
+ // ^ keeps the left-most non-zero part fixed; ~ keeps major.minor fixed.
84
+ const [maj, min] = base.split(/[.-]/).map(Number);
85
+ const upper = op === '~' ? `${maj}.${min + 1}.0` : maj > 0 ? `${maj + 1}.0.0` : `0.${min + 1}.0`;
86
+ return c >= 0 && compareSemver(version, `${upper}-0`) < 0;
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * Whether `version` satisfies an `engines`-style range: comparator sets joined
92
+ * by `||`, each a space-separated AND of `>=`, `>`, `<=`, `<`, `=`, `^`, `~` or
93
+ * bare versions (partials like `>= 26` allowed). `*` / empty match anything.
94
+ * Returns null when the range uses syntax outside that (hyphen ranges, `x`
95
+ * wildcards), so the caller can decide rather than guess.
96
+ */
97
+ export function satisfiesRange(version, range) {
98
+ if (!isSemver(version))
99
+ return null;
100
+ const trimmed = range.trim();
101
+ if (trimmed === '' || trimmed === '*')
102
+ return true;
103
+ let any = false;
104
+ for (const set of trimmed.split('||')) {
105
+ // Join an operator to its version (`>= 26.13.0` → `>=26.13.0`), then split.
106
+ const comparators = set.trim().replace(/(>=|<=|>|<|=|\^|~)\s+/g, '$1').split(/\s+/).filter(Boolean);
107
+ let all = true;
108
+ for (const comparator of comparators) {
109
+ const ok = satisfiesComparator(version, comparator);
110
+ if (ok === null)
111
+ return null;
112
+ if (!ok)
113
+ all = false;
114
+ }
115
+ if (all)
116
+ any = true;
117
+ }
118
+ return any;
119
+ }
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtdmVyLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc2VtdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7O0dBS0c7QUFFSCxNQUFNLE1BQU0sR0FBRyxvRUFBb0UsQ0FBQztBQUlwRixTQUFTLEtBQUssQ0FBQyxDQUFTO0lBQ3RCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEMsSUFBSSxDQUFDLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNwQixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRyxDQUFDO0FBRUQsZ0ZBQWdGO0FBQ2hGLE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBUztJQUNoQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDaEQsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMs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Q2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBzbWFsbCBzbGljZSBvZiBzZW12ZXIgdGhlIHBsYXRmb3JtIG5lZWRzIHdpdGhvdXQgYSBkZXBlbmRlbmN5OiBvcmRlcmluZ1xuICogdmVyc2lvbnMgKFNlbVZlciAyLjAgwqcxMSwgcHJlcmVsZWFzZXMgaW5jbHVkZWQpIGFuZCBjaGVja2luZyBhIHZlcnNpb25cbiAqIGFnYWluc3QgYW4gYGVuZ2luZXNgLXN0eWxlIHJhbmdlLiBTaGFyZWQgYnkgdGhlIENMSSdzIGAtLXVwZ3JhZGVgIGFuZCB0aGVcbiAqIHNlcnZlcidzIG1pbmltdW0tY2xpZW50LXZlcnNpb24gZ2F0ZSBzbyBib3RoIG9yZGVyIHZlcnNpb25zIGlkZW50aWNhbGx5LlxuICovXG5cbmNvbnN0IFNFTVZFUiA9IC9edj8oXFxkKylcXC4oXFxkKylcXC4oXFxkKykoPzotKFswLTlBLVphLXouLV0rKSk/KD86XFwrWzAtOUEtWmEtei4tXSspPyQvO1xuXG5pbnRlcmZhY2UgUGFyc2VkIHsgbnVtczogW251bWJlciwgbnVtYmVyLCBudW1iZXJdOyBwcmU6IHN0cmluZ1tdIH1cblxuZnVuY3Rpb24gcGFyc2Uodjogc3RyaW5nKTogUGFyc2VkIHwgbnVsbCB7XG4gIGNvbnN0IG0gPSBTRU1WRVIuZXhlYyh2LnRyaW0oKSk7XG4gIGlmICghbSkgcmV0dXJuIG51bGw7XG4gIHJldHVybiB7IG51bXM6IFtOdW1iZXIobVsxXSksIE51bWJlcihtWzJdKSwgTnVtYmVyKG1bM10pXSwgcHJlOiBtWzRdID8gbVs0XS5zcGxpdCgnLicpIDogW10gfTtcbn1cblxuLyoqIFRydWUgZm9yIGEgZnVsbCBgeC55LnpbLXByZV1bK2J1aWxkXWAgdmVyc2lvbiAoYSBsZWFkaW5nIGB2YCBpcyBhbGxvd2VkKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbXZlcih2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHBhcnNlKHYpICE9PSBudWxsO1xufVxuXG4vKipcbiAqIC0xIC8gMCAvIDEgb3JkZXJpbmcgb2YgdHdvIHZlcnNpb25zIHBlciBTZW1WZXIgwqcxMTogbnVtZXJpYyB4LnkueiwgYVxuICogcHJlcmVsZWFzZSBzb3J0cyBiZWZvcmUgaXRzIHJlbGVhc2UsIGFuZCBwcmVyZWxlYXNlIGlkZW50aWZpZXJzIGNvbXBhcmVcbiAqIG51bWVyaWNhbGx5IHdoZW4gYm90aCBhcmUgbnVtZXJpYyAoYHJjLjJgIDwgYHJjLjEwYCksIGVsc2UgYXMgQVNDSUksIHdpdGggYVxuICogbnVtZXJpYyBpZGVudGlmaWVyIGJlbG93IGFuIGFscGhhbnVtZXJpYyBvbmUgYW5kIGEgc2hvcnRlciBzZXQgYmVsb3cgYVxuICogbG9uZ2VyIG9uZSB0aGF0IGl0IHByZWZpeGVzLiBUaHJvd3Mgb24gYSB2YWx1ZSB0aGF0IGlzbid0IGEgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVTZW12ZXIoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiAtMSB8IDAgfCAxIHtcbiAgY29uc3QgeCA9IHBhcnNlKGEpO1xuICBjb25zdCB5ID0gcGFyc2UoYik7XG4gIGlmICgheCB8fCAheSkgdGhyb3cgbmV3IEVycm9yKGBOb3QgYSBzZW12ZXIgdmVyc2lvbjogJHsheCA/IGEgOiBifWApO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgIGlmICh4Lm51bXNbaV0gIT09IHkubnVtc1tpXSkgcmV0dXJuIHgubnVtc1tpXSEgPCB5Lm51bXNbaV0hID8gLTEgOiAxO1xuICB9XG4gIGlmICgheC5wcmUubGVuZ3RoIHx8ICF5LnByZS5sZW5ndGgpIHtcbiAgICBpZiAoeC5wcmUubGVuZ3RoID09PSB5LnByZS5sZW5ndGgpIHJldHVybiAwO1xuICAgIHJldHVybiB4LnByZS5sZW5ndGggPyAtMSA6IDE7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1heCh4LnByZS5sZW5ndGgsIHkucHJlLmxlbmd0aCk7IGkrKykge1xuICAgIGNvbnN0IHAgPSB4LnByZVtpXTtcbiAgICBjb25zdCBxID0geS5wcmVbaV07XG4gICAgaWYgKHAgPT09IHVuZGVmaW5lZCkgcmV0dXJuIC0xO1xuICAgIGlmIChxID09PSB1bmRlZmluZWQpIHJldHVybiAxO1xuICAgIGlmIChwID09PSBxKSBjb250aW51ZTtcbiAgICBjb25zdCBwbiA9IC9eXFxkKyQvLnRlc3QocCk7XG4gICAgY29uc3QgcW4gPSAvXlxcZCskLy50ZXN0KHEpO1xuICAgIGlmIChwbiAmJiBxbikgcmV0dXJuIE51bWJlcihwKSA8IE51bWJlcihxKSA/IC0xIDogMTtcbiAgICBpZiAocG4gIT09IHFuKSByZXR1cm4gcG4gPyAtMSA6IDE7XG4gICAgcmV0dXJuIHAgPCBxID8gLTEgOiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vKiogQSBwYXJ0aWFsIHZlcnNpb24gKGAyNmAsIGAyNi4xM2ApIHBhZGRlZCB0byB4Lnkueiwgb3IgbnVsbC4gKi9cbmZ1bmN0aW9uIHBhZGRlZCh2OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgbSA9IC9edj8oXFxkKykoPzpcXC4oXFxkKykpPyg/OlxcLihcXGQrKSk/KC1bMC05QS1aYS16Li1dKyk/JC8uZXhlYyh2KTtcbiAgaWYgKCFtKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIGAke21bMV19LiR7bVsyXSA/PyAwfS4ke21bM10gPz8gMH0ke21bNF0gPz8gJyd9YDtcbn1cblxuZnVuY3Rpb24gc2F0aXNmaWVzQ29tcGFyYXRvcih2ZXJzaW9uOiBzdHJpbmcsIGNvbXBhcmF0b3I6IHN0cmluZyk6IGJvb2xlYW4gfCBudWxsIHtcbiAgY29uc3QgbSA9IC9eKD49fDw9fD58PHw9fFxcXnx+KT9cXHMqKC4rKSQvLmV4ZWMoY29tcGFyYXRvcik7XG4gIGlmICghbSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IG9wID0gbVsxXSA/PyAnPSc7XG4gIGNvbnN0IGJhc2UgPSBwYWRkZWQobVsyXSEpO1xuICBpZiAoIWJhc2UpIHJldHVybiBudWxsO1xuICBjb25zdCBjID0gY29tcGFyZVNlbXZlcih2ZXJzaW9uLCBiYXNlKTtcbiAgc3dpdGNoIChvcCkge1xuICAgIGNhc2UgJz49JzogcmV0dXJuIGMgPj0gMDtcbiAgICBjYXNlICc+JzogcmV0dXJuIGMgPiAwO1xuICAgIGNhc2UgJzw9JzogcmV0dXJuIGMgPD0gMDtcbiAgICBjYXNlICc8JzogcmV0dXJuIGMgPCAwO1xuICAgIGNhc2UgJz0nOiByZXR1cm4gYyA9PT0gMDtcbiAgICBkZWZhdWx0OiB7XG4gICAgICAvLyBeIGtlZXBzIHRoZSBsZWZ0LW1vc3Qgbm9uLXplcm8gcGFydCBmaXhlZDsgfiBrZWVwcyBtYWpvci5taW5vciBmaXhlZC5cbiAgICAgIGNvbnN0IFttYWosIG1pbl0gPSBiYXNlLnNwbGl0KC9bLi1dLykubWFwKE51bWJlcikgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICAgIGNvbnN0IHVwcGVyID0gb3AgPT09ICd+JyA/IGAke21han0uJHttaW4gKyAxfS4wYCA6IG1haiA+IDAgPyBgJHttYWogKyAxfS4wLjBgIDogYDAuJHttaW4gKyAxfS4wYDtcbiAgICAgIHJldHVybiBjID49IDAgJiYgY29tcGFyZVNlbXZlcih2ZXJzaW9uLCBgJHt1cHBlcn0tMGApIDwgMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIGB2ZXJzaW9uYCBzYXRpc2ZpZXMgYW4gYGVuZ2luZXNgLXN0eWxlIHJhbmdlOiBjb21wYXJhdG9yIHNldHMgam9pbmVkXG4gKiBieSBgfHxgLCBlYWNoIGEgc3BhY2Utc2VwYXJhdGVkIEFORCBvZiBgPj1gLCBgPmAsIGA8PWAsIGA8YCwgYD1gLCBgXmAsIGB+YCBvclxuICogYmFyZSB2ZXJzaW9ucyAocGFydGlhbHMgbGlrZSBgPj0gMjZgIGFsbG93ZWQpLiBgKmAgLyBlbXB0eSBtYXRjaCBhbnl0aGluZy5cbiAqIFJldHVybnMgbnVsbCB3aGVuIHRoZSByYW5nZSB1c2VzIHN5bnRheCBvdXRzaWRlIHRoYXQgKGh5cGhlbiByYW5nZXMsIGB4YFxuICogd2lsZGNhcmRzKSwgc28gdGhlIGNhbGxlciBjYW4gZGVjaWRlIHJhdGhlciB0aGFuIGd1ZXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2F0aXNmaWVzUmFuZ2UodmVyc2lvbjogc3RyaW5nLCByYW5nZTogc3RyaW5nKTogYm9vbGVhbiB8IG51bGwge1xuICBpZiAoIWlzU2VtdmVyKHZlcnNpb24pKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgdHJpbW1lZCA9IHJhbmdlLnRyaW0oKTtcbiAgaWYgKHRyaW1tZWQgPT09ICcnIHx8IHRyaW1tZWQgPT09ICcqJykgcmV0dXJuIHRydWU7XG4gIGxldCBhbnkgPSBmYWxzZTtcbiAgZm9yIChjb25zdCBzZXQgb2YgdHJpbW1lZC5zcGxpdCgnfHwnKSkge1xuICAgIC8vIEpvaW4gYW4gb3BlcmF0b3IgdG8gaXRzIHZlcnNpb24gKGA+PSAyNi4xMy4wYCDihpIgYD49MjYuMTMuMGApLCB0aGVuIHNwbGl0LlxuICAgIGNvbnN0IGNvbXBhcmF0b3JzID0gc2V0LnRyaW0oKS5yZXBsYWNlKC8oPj18PD18Pnw8fD18XFxefH4pXFxzKy9nLCAnJDEnKS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKTtcbiAgICBsZXQgYWxsID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IGNvbXBhcmF0b3Igb2YgY29tcGFyYXRvcnMpIHtcbiAgICAgIGNvbnN0IG9rID0gc2F0aXNmaWVzQ29tcGFyYXRvcih2ZXJzaW9uLCBjb21wYXJhdG9yKTtcbiAgICAgIGlmIChvayA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICBpZiAoIW9rKSBhbGwgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGFsbCkgYW55ID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gYW55O1xufVxuIl19
package/package.json CHANGED
@@ -127,7 +127,7 @@
127
127
  ]
128
128
  }
129
129
  },
130
- "version": "5.2.7",
130
+ "version": "5.2.9",
131
131
  "bugs": {
132
132
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
133
133
  },