@microwiseai/snapshot 0.8.0 → 0.9.1
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/build-info.json +1 -0
- package/dist/commands/access.d.ts +25 -9
- package/dist/commands/access.d.ts.map +1 -1
- package/dist/commands/access.js +101 -47
- package/dist/commands/access.js.map +1 -1
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +37 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/install.d.ts +54 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +494 -145
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/publish.d.ts +10 -0
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +94 -12
- package/dist/commands/publish.js.map +1 -1
- package/dist/index.js +45 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/access-index.d.ts +81 -0
- package/dist/lib/access-index.d.ts.map +1 -0
- package/dist/lib/access-index.js +175 -0
- package/dist/lib/access-index.js.map +1 -0
- package/dist/lib/access-sync.d.ts +66 -17
- package/dist/lib/access-sync.d.ts.map +1 -1
- package/dist/lib/access-sync.js +391 -217
- package/dist/lib/access-sync.js.map +1 -1
- package/dist/lib/extends-access.d.ts +34 -0
- package/dist/lib/extends-access.d.ts.map +1 -0
- package/dist/lib/extends-access.js +82 -0
- package/dist/lib/extends-access.js.map +1 -0
- package/dist/lib/gitlab-publisher.d.ts +70 -0
- package/dist/lib/gitlab-publisher.d.ts.map +1 -0
- package/dist/lib/gitlab-publisher.js +165 -0
- package/dist/lib/gitlab-publisher.js.map +1 -0
- package/dist/lib/gitlab.d.ts +4 -0
- package/dist/lib/gitlab.d.ts.map +1 -1
- package/dist/lib/gitlab.js +1 -1
- package/dist/lib/gitlab.js.map +1 -1
- package/dist/lib/grant.d.ts +157 -0
- package/dist/lib/grant.d.ts.map +1 -0
- package/dist/lib/grant.js +352 -0
- package/dist/lib/grant.js.map +1 -0
- package/dist/lib/install-verify.d.ts +16 -2
- package/dist/lib/install-verify.d.ts.map +1 -1
- package/dist/lib/install-verify.js +24 -3
- package/dist/lib/install-verify.js.map +1 -1
- package/dist/lib/ledger.d.ts +13 -0
- package/dist/lib/ledger.d.ts.map +1 -1
- package/dist/lib/ledger.js.map +1 -1
- package/dist/lib/prerequisites.d.ts.map +1 -1
- package/dist/lib/prerequisites.js +4 -1
- package/dist/lib/prerequisites.js.map +1 -1
- package/dist/lib/proxy-auth-globalconfig.d.ts +55 -0
- package/dist/lib/proxy-auth-globalconfig.d.ts.map +1 -0
- package/dist/lib/proxy-auth-globalconfig.js +110 -0
- package/dist/lib/proxy-auth-globalconfig.js.map +1 -0
- package/dist/lib/proxy-userconfig.d.ts +45 -0
- package/dist/lib/proxy-userconfig.d.ts.map +1 -0
- package/dist/lib/proxy-userconfig.js +94 -0
- package/dist/lib/proxy-userconfig.js.map +1 -0
- package/dist/lib/semver-range.d.ts +32 -0
- package/dist/lib/semver-range.d.ts.map +1 -0
- package/dist/lib/semver-range.js +243 -0
- package/dist/lib/semver-range.js.map +1 -0
- package/dist/lib/session.d.ts +5 -0
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +9 -0
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/skit-adapter.d.ts.map +1 -1
- package/dist/lib/skit-adapter.js +26 -3
- package/dist/lib/skit-adapter.js.map +1 -1
- package/dist/lib/timing.d.ts +7 -0
- package/dist/lib/timing.d.ts.map +1 -0
- package/dist/lib/timing.js +14 -0
- package/dist/lib/timing.js.map +1 -0
- package/dist/lib/types.d.ts +3 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.d.ts +25 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.js +55 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.d.ts +52 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.js +62 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.d.ts +30 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.js +39 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.d.ts +35 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.js +31 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.d.ts +42 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.js +36 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.d.ts +11 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.js +46 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.d.ts +11 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.js +81 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.d.ts +29 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.js +6 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/package.json +55 -0
- package/package.json +5 -2
- package/dist/lib/transitive-resolver.d.ts +0 -89
- package/dist/lib/transitive-resolver.d.ts.map +0 -1
- package/dist/lib/transitive-resolver.js +0 -447
- package/dist/lib/transitive-resolver.js.map +0 -1
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal npm-compatible semver range resolution (maxSatisfying).
|
|
3
|
+
*
|
|
4
|
+
* `semver` is not a declared runtime dependency of this package (only present
|
|
5
|
+
* transitively via dev tooling — see version-validator.ts), so access-sync uses
|
|
6
|
+
* this small self-contained implementation to resolve range pins such as
|
|
7
|
+
* "^0.2.0" against a packument's version list.
|
|
8
|
+
*
|
|
9
|
+
* Supported grammar (node-semver subset that covers real package.json pins):
|
|
10
|
+
* exact / "=" / "v" prefix, x-ranges (1, 1.2, 1.x, *, ""), ^, ~, ~>,
|
|
11
|
+
* <, <=, >, >=, hyphen ranges (a - b), space-separated AND, "||" OR.
|
|
12
|
+
* Prerelease rule (as npm): a prerelease version only satisfies a comparator
|
|
13
|
+
* set when some comparator the user wrote carries a prerelease on the same
|
|
14
|
+
* [major, minor, patch] tuple — i.e. a prerelease pin allows prereleases.
|
|
15
|
+
* Unsupported syntax yields `null` (caller warns).
|
|
16
|
+
*/
|
|
17
|
+
const VERSION_RE = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;
|
|
18
|
+
const PARTIAL_RE = /^v?(\d+|[xX*])(?:\.(\d+|[xX*]))?(?:\.(\d+|[xX*]))?(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;
|
|
19
|
+
function parsePre(pre) {
|
|
20
|
+
if (!pre)
|
|
21
|
+
return [];
|
|
22
|
+
return pre.split('.').map((id) => (/^\d+$/.test(id) ? BigInt(id) : id));
|
|
23
|
+
}
|
|
24
|
+
export function parseVersion(v) {
|
|
25
|
+
const m = VERSION_RE.exec(v.trim());
|
|
26
|
+
if (!m)
|
|
27
|
+
return null;
|
|
28
|
+
return { major: Number(m[1]), minor: Number(m[2]), patch: Number(m[3]), pre: parsePre(m[4]) };
|
|
29
|
+
}
|
|
30
|
+
function comparePre(a, b) {
|
|
31
|
+
if (a.length === 0 && b.length === 0)
|
|
32
|
+
return 0;
|
|
33
|
+
if (a.length === 0)
|
|
34
|
+
return 1;
|
|
35
|
+
if (b.length === 0)
|
|
36
|
+
return -1;
|
|
37
|
+
for (let i = 0; i < Math.max(a.length, b.length); i++) {
|
|
38
|
+
if (i >= a.length)
|
|
39
|
+
return -1;
|
|
40
|
+
if (i >= b.length)
|
|
41
|
+
return 1;
|
|
42
|
+
const x = a[i];
|
|
43
|
+
const y = b[i];
|
|
44
|
+
if (x === y)
|
|
45
|
+
continue;
|
|
46
|
+
// Numeric identifiers compare numerically (BigInt: dev pins such as
|
|
47
|
+
// 0.4.0-dev.1790088957963 may exceed Number's safe range) and sort below
|
|
48
|
+
// alphanumeric ones.
|
|
49
|
+
if (typeof x === 'bigint' && typeof y === 'bigint')
|
|
50
|
+
return x < y ? -1 : 1;
|
|
51
|
+
if (typeof x === 'bigint')
|
|
52
|
+
return -1;
|
|
53
|
+
if (typeof y === 'bigint')
|
|
54
|
+
return 1;
|
|
55
|
+
return x < y ? -1 : 1;
|
|
56
|
+
}
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
export function compareVersions(a, b) {
|
|
60
|
+
if (a.major !== b.major)
|
|
61
|
+
return a.major < b.major ? -1 : 1;
|
|
62
|
+
if (a.minor !== b.minor)
|
|
63
|
+
return a.minor < b.minor ? -1 : 1;
|
|
64
|
+
if (a.patch !== b.patch)
|
|
65
|
+
return a.patch < b.patch ? -1 : 1;
|
|
66
|
+
return comparePre(a.pre, b.pre);
|
|
67
|
+
}
|
|
68
|
+
const sv = (major, minor, patch, pre = []) => ({
|
|
69
|
+
major,
|
|
70
|
+
minor,
|
|
71
|
+
patch,
|
|
72
|
+
pre,
|
|
73
|
+
});
|
|
74
|
+
const ge = (v, userPre = false) => ({ op: '>=', v, userPre });
|
|
75
|
+
/** Exclusive upper bound `<M.m.p-0` (excludes that tuple's prereleases). */
|
|
76
|
+
const ltZero = (major, minor, patch) => ({
|
|
77
|
+
op: '<',
|
|
78
|
+
v: sv(major, minor, patch, [0n]),
|
|
79
|
+
userPre: false,
|
|
80
|
+
});
|
|
81
|
+
function parsePartial(s) {
|
|
82
|
+
const m = PARTIAL_RE.exec(s);
|
|
83
|
+
if (!m)
|
|
84
|
+
return null;
|
|
85
|
+
const num = (x) => (x === undefined || /^[xX*]$/.test(x) ? undefined : Number(x));
|
|
86
|
+
const major = num(m[1]);
|
|
87
|
+
const minor = major === undefined ? undefined : num(m[2]);
|
|
88
|
+
const patch = minor === undefined ? undefined : num(m[3]);
|
|
89
|
+
return { major, minor, patch, pre: patch === undefined ? [] : parsePre(m[4]) };
|
|
90
|
+
}
|
|
91
|
+
/** Desugar one primitive token (e.g. "^1.2.3", ">=1.2", "1.x") into comparators. */
|
|
92
|
+
function desugar(token) {
|
|
93
|
+
const m = /^(<=|>=|<|>|=|\^|~>?|)(.*)$/.exec(token);
|
|
94
|
+
if (!m)
|
|
95
|
+
return undefined;
|
|
96
|
+
const op = m[1];
|
|
97
|
+
const p = parsePartial(m[2]);
|
|
98
|
+
if (!p)
|
|
99
|
+
return undefined;
|
|
100
|
+
const { major: M, minor: mi, patch: pa, pre } = p;
|
|
101
|
+
const hasPre = pre.length > 0;
|
|
102
|
+
switch (op) {
|
|
103
|
+
case '':
|
|
104
|
+
case '=':
|
|
105
|
+
if (M === undefined)
|
|
106
|
+
return [];
|
|
107
|
+
if (mi === undefined)
|
|
108
|
+
return [ge(sv(M, 0, 0)), ltZero(M + 1, 0, 0)];
|
|
109
|
+
if (pa === undefined)
|
|
110
|
+
return [ge(sv(M, mi, 0)), ltZero(M, mi + 1, 0)];
|
|
111
|
+
return [{ op: '=', v: sv(M, mi, pa, pre), userPre: hasPre }];
|
|
112
|
+
case '~':
|
|
113
|
+
case '~>':
|
|
114
|
+
if (M === undefined)
|
|
115
|
+
return [];
|
|
116
|
+
if (mi === undefined)
|
|
117
|
+
return [ge(sv(M, 0, 0)), ltZero(M + 1, 0, 0)];
|
|
118
|
+
return [ge(sv(M, mi, pa ?? 0, pre), hasPre), ltZero(M, mi + 1, 0)];
|
|
119
|
+
case '^':
|
|
120
|
+
if (M === undefined)
|
|
121
|
+
return [];
|
|
122
|
+
if (M > 0)
|
|
123
|
+
return [ge(sv(M, mi ?? 0, pa ?? 0, pre), hasPre), ltZero(M + 1, 0, 0)];
|
|
124
|
+
if (mi === undefined)
|
|
125
|
+
return [ge(sv(0, 0, 0)), ltZero(1, 0, 0)];
|
|
126
|
+
if (mi > 0)
|
|
127
|
+
return [ge(sv(0, mi, pa ?? 0, pre), hasPre), ltZero(0, mi + 1, 0)];
|
|
128
|
+
if (pa === undefined)
|
|
129
|
+
return [ge(sv(0, 0, 0)), ltZero(0, 1, 0)];
|
|
130
|
+
return [ge(sv(0, 0, pa, pre), hasPre), ltZero(0, 0, pa + 1)];
|
|
131
|
+
case '>=':
|
|
132
|
+
if (M === undefined)
|
|
133
|
+
return [];
|
|
134
|
+
return [ge(sv(M, mi ?? 0, pa ?? 0, pre), hasPre)];
|
|
135
|
+
case '>':
|
|
136
|
+
if (M === undefined)
|
|
137
|
+
return null;
|
|
138
|
+
if (mi === undefined)
|
|
139
|
+
return [ge(sv(M + 1, 0, 0))];
|
|
140
|
+
if (pa === undefined)
|
|
141
|
+
return [ge(sv(M, mi + 1, 0))];
|
|
142
|
+
return [{ op: '>', v: sv(M, mi, pa, pre), userPre: hasPre }];
|
|
143
|
+
case '<':
|
|
144
|
+
if (M === undefined)
|
|
145
|
+
return null;
|
|
146
|
+
if (mi === undefined)
|
|
147
|
+
return [ltZero(M, 0, 0)];
|
|
148
|
+
if (pa === undefined)
|
|
149
|
+
return [ltZero(M, mi, 0)];
|
|
150
|
+
return [{ op: '<', v: sv(M, mi, pa, pre), userPre: hasPre }];
|
|
151
|
+
case '<=':
|
|
152
|
+
if (M === undefined)
|
|
153
|
+
return [];
|
|
154
|
+
if (mi === undefined)
|
|
155
|
+
return [ltZero(M + 1, 0, 0)];
|
|
156
|
+
if (pa === undefined)
|
|
157
|
+
return [ltZero(M, mi + 1, 0)];
|
|
158
|
+
return [{ op: '<=', v: sv(M, mi, pa, pre), userPre: hasPre }];
|
|
159
|
+
}
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
/** Parse one "||"-branch. Returns undefined on unsupported syntax. */
|
|
163
|
+
function parseSet(branch) {
|
|
164
|
+
const s = branch.trim();
|
|
165
|
+
const hyphen = /^(\S+)\s+-\s+(\S+)$/.exec(s);
|
|
166
|
+
if (hyphen) {
|
|
167
|
+
const a = parsePartial(hyphen[1]);
|
|
168
|
+
const b = parsePartial(hyphen[2]);
|
|
169
|
+
if (!a || !b)
|
|
170
|
+
return undefined;
|
|
171
|
+
const out = [];
|
|
172
|
+
if (a.major !== undefined)
|
|
173
|
+
out.push(ge(sv(a.major, a.minor ?? 0, a.patch ?? 0, a.pre), a.pre.length > 0));
|
|
174
|
+
if (b.major !== undefined) {
|
|
175
|
+
if (b.minor === undefined)
|
|
176
|
+
out.push(ltZero(b.major + 1, 0, 0));
|
|
177
|
+
else if (b.patch === undefined)
|
|
178
|
+
out.push(ltZero(b.major, b.minor + 1, 0));
|
|
179
|
+
else
|
|
180
|
+
out.push({ op: '<=', v: sv(b.major, b.minor, b.patch, b.pre), userPre: b.pre.length > 0 });
|
|
181
|
+
}
|
|
182
|
+
return out;
|
|
183
|
+
}
|
|
184
|
+
const tokens = s.replace(/(<=|>=|<|>|=|\^|~>?)\s+/g, '$1').split(/\s+/).filter(Boolean);
|
|
185
|
+
const out = [];
|
|
186
|
+
for (const t of tokens) {
|
|
187
|
+
const c = desugar(t);
|
|
188
|
+
if (c === undefined)
|
|
189
|
+
return undefined;
|
|
190
|
+
if (c === null)
|
|
191
|
+
return null;
|
|
192
|
+
out.push(...c);
|
|
193
|
+
}
|
|
194
|
+
return out;
|
|
195
|
+
}
|
|
196
|
+
function testComparator(v, c) {
|
|
197
|
+
const cmp = compareVersions(v, c.v);
|
|
198
|
+
switch (c.op) {
|
|
199
|
+
case '<':
|
|
200
|
+
return cmp < 0;
|
|
201
|
+
case '<=':
|
|
202
|
+
return cmp <= 0;
|
|
203
|
+
case '>':
|
|
204
|
+
return cmp > 0;
|
|
205
|
+
case '>=':
|
|
206
|
+
return cmp >= 0;
|
|
207
|
+
case '=':
|
|
208
|
+
return cmp === 0;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function satisfiesSet(v, set) {
|
|
212
|
+
if (!set.every((c) => testComparator(v, c)))
|
|
213
|
+
return false;
|
|
214
|
+
if (v.pre.length === 0)
|
|
215
|
+
return true;
|
|
216
|
+
return set.some((c) => c.userPre && c.v.major === v.major && c.v.minor === v.minor && c.v.patch === v.patch);
|
|
217
|
+
}
|
|
218
|
+
/** True when the spec is a registry-resolvable semver range (vs. a dist-tag / protocol). */
|
|
219
|
+
export function isSemverRange(range) {
|
|
220
|
+
const sets = range.split('||').map(parseSet);
|
|
221
|
+
return sets.every((s) => s !== undefined);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Highest version in `versions` satisfying `range`, or null (none satisfies /
|
|
225
|
+
* unsupported range syntax).
|
|
226
|
+
*/
|
|
227
|
+
export function maxSatisfying(versions, range) {
|
|
228
|
+
const sets = range.split('||').map(parseSet);
|
|
229
|
+
if (sets.some((s) => s === undefined))
|
|
230
|
+
return null;
|
|
231
|
+
let best = null;
|
|
232
|
+
for (const raw of versions) {
|
|
233
|
+
const v = parseVersion(raw);
|
|
234
|
+
if (!v)
|
|
235
|
+
continue;
|
|
236
|
+
if (!sets.some((s) => s !== null && s !== undefined && satisfiesSet(v, s)))
|
|
237
|
+
continue;
|
|
238
|
+
if (!best || compareVersions(v, best.v) > 0)
|
|
239
|
+
best = { raw, v };
|
|
240
|
+
}
|
|
241
|
+
return best?.raw ?? null;
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=semver-range.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semver-range.js","sourceRoot":"","sources":["../../src/lib/semver-range.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/session.d.ts
CHANGED
|
@@ -5,6 +5,11 @@
|
|
|
5
5
|
* - authorizeSession: proxy에 패키지 목록 승인 요청
|
|
6
6
|
* - sessionId를 skit/npm 설치 시 전달
|
|
7
7
|
*/
|
|
8
|
+
/**
|
|
9
|
+
* Mask a registry-proxy session ID for logs: first 4 chars + "…".
|
|
10
|
+
* The full ID is a bearer-equivalent for the session window — never print it.
|
|
11
|
+
*/
|
|
12
|
+
export declare function maskSessionId(id: string | undefined | null): string;
|
|
8
13
|
export interface AuthorizeSessionRequest {
|
|
9
14
|
/** API body 필드. 실제로는 license key 또는 session token이 전달됨 (proxy 호환성 유지) */
|
|
10
15
|
licenseKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAGnE;AAMD,MAAM,WAAW,uBAAuB;IACtC,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,CAiDjB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAE1E"}
|
package/dist/lib/session.js
CHANGED
|
@@ -6,6 +6,15 @@
|
|
|
6
6
|
* - sessionId를 skit/npm 설치 시 전달
|
|
7
7
|
*/
|
|
8
8
|
import { REGISTRY_PROXY_URL } from './config.js';
|
|
9
|
+
/**
|
|
10
|
+
* Mask a registry-proxy session ID for logs: first 4 chars + "…".
|
|
11
|
+
* The full ID is a bearer-equivalent for the session window — never print it.
|
|
12
|
+
*/
|
|
13
|
+
export function maskSessionId(id) {
|
|
14
|
+
if (!id)
|
|
15
|
+
return '(none)';
|
|
16
|
+
return id.length <= 4 ? '…' : `${id.slice(0, 4)}…`;
|
|
17
|
+
}
|
|
9
18
|
// ============================================================
|
|
10
19
|
// Session Authorization
|
|
11
20
|
// ============================================================
|
package/dist/lib/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAA6B;IACzD,IAAI,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzB,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AACrD,CAAC;AAiBD,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAE/D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,YAAoB,EACpB,QAAkB;IAElB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,kBAAkB,oBAAoB,CAAC;IAEtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,SAAS,EAAE;SACvC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,UAAU,EAAE,SAAS;YACrB,YAAY;YACZ,QAAQ;SACyB,CAAC;KACrC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,8BAA8B;QAC9B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;QAC1H,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,mDAAmD,QAAQ,CAAC,MAAM,IAAI,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5H,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA8B,CAAC;IAE/D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgC;IAC9D,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skit-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/skit-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"skit-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/skit-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAeH,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,sCAAsC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA8DD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AA0FD;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAY5B;AA2FD;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAO5C;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IACnD,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;CACnC,CAAC,CASD"}
|
package/dist/lib/skit-adapter.js
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { execSync } from 'child_process';
|
|
13
13
|
import { REGISTRY_PROXY_URL, getInstallerGroupFromEnv } from './config.js';
|
|
14
|
+
import { maskSessionId } from './session.js';
|
|
15
|
+
import { createProxyAuthGlobalconfig, GLOBALCONFIG_ENV_KEYS, } from './proxy-auth-globalconfig.js';
|
|
14
16
|
// ============================================================
|
|
15
17
|
// Lib Loader
|
|
16
18
|
// ============================================================
|
|
@@ -68,7 +70,7 @@ function runSkitCli(command, env) {
|
|
|
68
70
|
return { success: false, error };
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
|
-
function installSkitViaCli(spec, options) {
|
|
73
|
+
function installSkitViaCli(spec, options, authCarrier) {
|
|
72
74
|
// Parse spec: "@ist/tda-kit@1.0.0" -> name: "@ist/tda-kit", version: "1.0.0"
|
|
73
75
|
const atIndex = spec.lastIndexOf('@');
|
|
74
76
|
let name;
|
|
@@ -108,6 +110,11 @@ function installSkitViaCli(spec, options) {
|
|
|
108
110
|
if (groupFromEnv) {
|
|
109
111
|
env['IST_GITLAB_GROUP'] = groupFromEnv;
|
|
110
112
|
}
|
|
113
|
+
// Proxy auth for skit's kit npm-dep installs (skit overrides USERCONFIG, so
|
|
114
|
+
// the ~/.npmrc auth line is invisible to it) — see proxy-auth-globalconfig.ts.
|
|
115
|
+
if (authCarrier) {
|
|
116
|
+
Object.assign(env, authCarrier.env);
|
|
117
|
+
}
|
|
111
118
|
const result = runSkitCli(command, Object.keys(env).length > 0 ? env : undefined);
|
|
112
119
|
return {
|
|
113
120
|
success: result.success,
|
|
@@ -129,6 +136,18 @@ function installSkitViaCli(spec, options) {
|
|
|
129
136
|
*/
|
|
130
137
|
export async function installSkitPackage(name, version, options) {
|
|
131
138
|
const spec = version ? `${name}@${version}` : name;
|
|
139
|
+
// Authenticated session → carry the proxy auth line into skit's npm installs
|
|
140
|
+
// via a temp GLOBALCONFIG (env reference only, no token value on disk).
|
|
141
|
+
// null in anonymous mode. Always removed in the finally below.
|
|
142
|
+
const authCarrier = createProxyAuthGlobalconfig({ proxyUrl: REGISTRY_PROXY_URL });
|
|
143
|
+
try {
|
|
144
|
+
return await installSkitPackageInner(name, version, spec, options, authCarrier);
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
authCarrier?.cleanup();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async function installSkitPackageInner(name, version, spec, options, authCarrier) {
|
|
132
151
|
// Try lib first
|
|
133
152
|
const lib = await loadSkitLib();
|
|
134
153
|
if (lib) {
|
|
@@ -143,6 +162,7 @@ export async function installSkitPackage(name, version, options) {
|
|
|
143
162
|
'IST_REGISTRY_URL',
|
|
144
163
|
'IST_GITLAB_HOST',
|
|
145
164
|
'IST_GITLAB_GROUP',
|
|
165
|
+
...GLOBALCONFIG_ENV_KEYS,
|
|
146
166
|
];
|
|
147
167
|
const savedEnv = {};
|
|
148
168
|
for (const key of TOUCHED_ENV_KEYS) {
|
|
@@ -154,7 +174,7 @@ export async function installSkitPackage(name, version, options) {
|
|
|
154
174
|
process.env.SKIT_SESSION_ID = options.sessionId;
|
|
155
175
|
process.env.SKIT_REGISTRY = REGISTRY_PROXY_URL;
|
|
156
176
|
process.env.IST_REGISTRY_URL = REGISTRY_PROXY_URL;
|
|
157
|
-
console.log(`[skit-adapter] Using session: ${options.sessionId
|
|
177
|
+
console.log(`[skit-adapter] Using session: ${maskSessionId(options.sessionId)}`);
|
|
158
178
|
}
|
|
159
179
|
else {
|
|
160
180
|
console.log(`[skit-adapter] No sessionId provided`);
|
|
@@ -167,6 +187,9 @@ export async function installSkitPackage(name, version, options) {
|
|
|
167
187
|
if (groupFromEnv) {
|
|
168
188
|
process.env.IST_GITLAB_GROUP = groupFromEnv;
|
|
169
189
|
}
|
|
190
|
+
if (authCarrier) {
|
|
191
|
+
Object.assign(process.env, authCarrier.env);
|
|
192
|
+
}
|
|
170
193
|
try {
|
|
171
194
|
const libResult = await lib.installSkit(spec, {
|
|
172
195
|
onProgress: options?.silent ? undefined : options?.onProgress,
|
|
@@ -201,7 +224,7 @@ export async function installSkitPackage(name, version, options) {
|
|
|
201
224
|
}
|
|
202
225
|
}
|
|
203
226
|
// CLI fallback
|
|
204
|
-
return installSkitViaCli(spec, options);
|
|
227
|
+
return installSkitViaCli(spec, options, authCarrier);
|
|
205
228
|
}
|
|
206
229
|
/**
|
|
207
230
|
* Check if skit lib is available
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skit-adapter.js","sourceRoot":"","sources":["../../src/lib/skit-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"skit-adapter.js","sourceRoot":"","sources":["../../src/lib/skit-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in stage timing for `snapshot install` (SNAPSHOT_TIMING=1).
|
|
3
|
+
* Prints `[timing] <label> <seconds>s` to stderr when a stage ends; no-op otherwise.
|
|
4
|
+
* Measurement harness lives in @microwiseai/snapshot-install-bench.
|
|
5
|
+
*/
|
|
6
|
+
export declare function timingStart(label: string): () => void;
|
|
7
|
+
//# sourceMappingURL=timing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../src/lib/timing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,IAAI,CAMrD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in stage timing for `snapshot install` (SNAPSHOT_TIMING=1).
|
|
3
|
+
* Prints `[timing] <label> <seconds>s` to stderr when a stage ends; no-op otherwise.
|
|
4
|
+
* Measurement harness lives in @microwiseai/snapshot-install-bench.
|
|
5
|
+
*/
|
|
6
|
+
export function timingStart(label) {
|
|
7
|
+
if (process.env.SNAPSHOT_TIMING !== '1')
|
|
8
|
+
return () => { };
|
|
9
|
+
const t0 = Date.now();
|
|
10
|
+
return () => {
|
|
11
|
+
process.stderr.write(`[timing] ${label} ${((Date.now() - t0) / 1000).toFixed(2)}s\n`);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=timing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../../src/lib/timing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,GAAG;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxF,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -24,6 +24,9 @@ export interface Snapshot {
|
|
|
24
24
|
install?: Record<string, Record<string, string>>;
|
|
25
25
|
packages?: Record<string, string>;
|
|
26
26
|
skits?: Record<string, string>;
|
|
27
|
+
policy?: {
|
|
28
|
+
onDowngrade?: 'refuse' | 'warn' | 'allow';
|
|
29
|
+
};
|
|
27
30
|
}
|
|
28
31
|
export interface InstalledSnapshot {
|
|
29
32
|
name: string;
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,eAAe,GAAG,sBAAsB,CAAC;AAEjF,MAAM,WAAW,QAAQ;IAEvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,MAAM,CAAC,EAAE,cAAc,CAAC;IAExB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAG1C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAGjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,eAAe,GAAG,sBAAsB,CAAC;AAEjF,MAAM,WAAW,QAAQ;IAEvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,MAAM,CAAC,EAAE,cAAc,CAAC;IAExB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAG1C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAGjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAO/B,MAAM,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;KAC3C,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse the `name -> version` specs out of a GLOBAL install command string.
|
|
3
|
+
*
|
|
4
|
+
* This is the bridge that lets the downgrade guard sit at core's single
|
|
5
|
+
* npm-exec choke point (the raw `runCommand`/`runCommandSync` spawn wrappers),
|
|
6
|
+
* which are also used for uninstall / probe / hint commands. We only engage when
|
|
7
|
+
* the command is a *global install* carrying versioned specs; everything else
|
|
8
|
+
* returns {} so the guard is a no-op.
|
|
9
|
+
*
|
|
10
|
+
* Pure and tolerant: unknown shapes → {}. Only exact `name@version` tokens are
|
|
11
|
+
* extracted (scoped names supported: `@ist/sesh@0.3.0`). Tokens without a
|
|
12
|
+
* version (`@microwiseai/skit`), flags (`-g`), and the binary/subcommand words
|
|
13
|
+
* are ignored. Non-exact versions are still returned verbatim — the caller's
|
|
14
|
+
* detector treats non-exact semver as incomparable and skips it.
|
|
15
|
+
*
|
|
16
|
+
* Examples:
|
|
17
|
+
* 'npm install -g @ist/sesh@0.3.0 chalk@5.3.0' -> { '@ist/sesh':'0.3.0', chalk:'5.3.0' }
|
|
18
|
+
* 'glpkg install @ist/sesh@0.3.0' -> { '@ist/sesh':'0.3.0' } (glpkg installs globally)
|
|
19
|
+
* 'npm uninstall -g @ist/sesh' -> {} (uninstall)
|
|
20
|
+
* 'npm install -g @microwiseai/skit' -> {} (no version)
|
|
21
|
+
* 'npm install @ist/x@1.0.0' -> {} (not global)
|
|
22
|
+
* 'npm list -g @ist/sesh --json' -> {} (not an install)
|
|
23
|
+
*/
|
|
24
|
+
export declare function extractGlobalInstallSpecs(command: unknown): Record<string, string>;
|
|
25
|
+
//# sourceMappingURL=command-specs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-specs.d.ts","sourceRoot":"","sources":["../src/command-specs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2BlF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse the `name -> version` specs out of a GLOBAL install command string.
|
|
3
|
+
*
|
|
4
|
+
* This is the bridge that lets the downgrade guard sit at core's single
|
|
5
|
+
* npm-exec choke point (the raw `runCommand`/`runCommandSync` spawn wrappers),
|
|
6
|
+
* which are also used for uninstall / probe / hint commands. We only engage when
|
|
7
|
+
* the command is a *global install* carrying versioned specs; everything else
|
|
8
|
+
* returns {} so the guard is a no-op.
|
|
9
|
+
*
|
|
10
|
+
* Pure and tolerant: unknown shapes → {}. Only exact `name@version` tokens are
|
|
11
|
+
* extracted (scoped names supported: `@ist/sesh@0.3.0`). Tokens without a
|
|
12
|
+
* version (`@microwiseai/skit`), flags (`-g`), and the binary/subcommand words
|
|
13
|
+
* are ignored. Non-exact versions are still returned verbatim — the caller's
|
|
14
|
+
* detector treats non-exact semver as incomparable and skips it.
|
|
15
|
+
*
|
|
16
|
+
* Examples:
|
|
17
|
+
* 'npm install -g @ist/sesh@0.3.0 chalk@5.3.0' -> { '@ist/sesh':'0.3.0', chalk:'5.3.0' }
|
|
18
|
+
* 'glpkg install @ist/sesh@0.3.0' -> { '@ist/sesh':'0.3.0' } (glpkg installs globally)
|
|
19
|
+
* 'npm uninstall -g @ist/sesh' -> {} (uninstall)
|
|
20
|
+
* 'npm install -g @microwiseai/skit' -> {} (no version)
|
|
21
|
+
* 'npm install @ist/x@1.0.0' -> {} (not global)
|
|
22
|
+
* 'npm list -g @ist/sesh --json' -> {} (not an install)
|
|
23
|
+
*/
|
|
24
|
+
export function extractGlobalInstallSpecs(command) {
|
|
25
|
+
if (typeof command !== 'string' || command.length === 0)
|
|
26
|
+
return {};
|
|
27
|
+
// A command is a GLOBAL install when it carries the -g/--global flag OR is run
|
|
28
|
+
// through an installer whose installs are inherently global (glpkg /
|
|
29
|
+
// gitlab-install both install global npm packages, without a -g flag).
|
|
30
|
+
const hasGlobalFlag = /(?:^|\s)(?:-g|--global)(?:\s|$)/.test(command);
|
|
31
|
+
const isGlobalInstaller = /^\s*(?:glpkg|gitlab-install)(?:\s|$)/.test(command);
|
|
32
|
+
if (!hasGlobalFlag && !isGlobalInstaller)
|
|
33
|
+
return {};
|
|
34
|
+
const isUninstall = /(?:^|\s)(?:uninstall|remove|rm|un)(?:\s|$)/.test(command);
|
|
35
|
+
if (isUninstall)
|
|
36
|
+
return {};
|
|
37
|
+
const isInstall = /(?:^|\s)(?:install|add|i)(?:\s|$)/.test(command);
|
|
38
|
+
if (!isInstall)
|
|
39
|
+
return {};
|
|
40
|
+
const specs = {};
|
|
41
|
+
for (const tok of command.split(/\s+/)) {
|
|
42
|
+
if (!tok || tok.startsWith('-'))
|
|
43
|
+
continue; // flags / empty
|
|
44
|
+
const at = tok.lastIndexOf('@');
|
|
45
|
+
if (at <= 0)
|
|
46
|
+
continue; // no version, or a leading-@ scope with no version
|
|
47
|
+
const name = tok.slice(0, at);
|
|
48
|
+
const version = tok.slice(at + 1);
|
|
49
|
+
if (!name || !version)
|
|
50
|
+
continue;
|
|
51
|
+
specs[name] = version;
|
|
52
|
+
}
|
|
53
|
+
return specs;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=command-specs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-specs.js","sourceRoot":"","sources":["../src/command-specs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnE,+EAA+E;IAC/E,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,aAAa,GAAG,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,iBAAiB,GAAG,sCAAsC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/E,IAAI,CAAC,aAAa,IAAI,CAAC,iBAAiB;QAAE,OAAO,EAAE,CAAC;IAEpD,MAAM,WAAW,GAAG,4CAA4C,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/E,IAAI,WAAW;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,SAAS,GAAG,mCAAmC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,gBAAgB;QAC3D,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS,CAAC,mDAAmD;QAC1E,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,SAAS;QAChC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { DowngradeMode } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Machine-level snapshot config (~/.config/ist-snapshot/config.json).
|
|
4
|
+
* Only `install.onDowngrade` is meaningful here; unknown keys are preserved on
|
|
5
|
+
* round-trip so this package never clobbers config owned by other tools.
|
|
6
|
+
*/
|
|
7
|
+
export interface MachineConfig {
|
|
8
|
+
install?: {
|
|
9
|
+
onDowngrade?: DowngradeMode;
|
|
10
|
+
[k: string]: unknown;
|
|
11
|
+
};
|
|
12
|
+
[k: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
/** Minimal fs surface, injectable for hermetic tests. Defaults to node:fs. */
|
|
15
|
+
export interface ConfigFs {
|
|
16
|
+
existsSync: (p: string) => boolean;
|
|
17
|
+
readFileSync: (p: string, enc: 'utf-8') => string;
|
|
18
|
+
writeFileSync: (p: string, data: string) => void;
|
|
19
|
+
mkdirSync: (p: string, opts: {
|
|
20
|
+
recursive: boolean;
|
|
21
|
+
}) => void;
|
|
22
|
+
}
|
|
23
|
+
export interface ConfigIoOptions {
|
|
24
|
+
/** Config directory. Defaults to ~/.config/ist-snapshot. Injectable for tests. */
|
|
25
|
+
configDir?: string;
|
|
26
|
+
/** fs implementation. Defaults to node:fs. Injectable for tests. */
|
|
27
|
+
fs?: ConfigFs;
|
|
28
|
+
}
|
|
29
|
+
/** Default config directory (~/.config/ist-snapshot). */
|
|
30
|
+
export declare function getConfigDir(opts?: ConfigIoOptions): string;
|
|
31
|
+
/** Absolute path to config.json. */
|
|
32
|
+
export declare function getConfigPath(opts?: ConfigIoOptions): string;
|
|
33
|
+
/**
|
|
34
|
+
* Read the machine config. Returns {} when the file is absent or unparseable
|
|
35
|
+
* (tolerant — a broken/foreign file must not crash an install decision).
|
|
36
|
+
*/
|
|
37
|
+
export declare function readMachineConfig(opts?: ConfigIoOptions): MachineConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Write the machine config (pretty JSON), creating the config dir if needed.
|
|
40
|
+
*/
|
|
41
|
+
export declare function writeMachineConfig(config: MachineConfig, opts?: ConfigIoOptions): void;
|
|
42
|
+
/**
|
|
43
|
+
* Read `install.onDowngrade` from machine config, validated.
|
|
44
|
+
* Returns null when unset or invalid.
|
|
45
|
+
*/
|
|
46
|
+
export declare function getMachineDowngradeMode(opts?: ConfigIoOptions): DowngradeMode | null;
|
|
47
|
+
/**
|
|
48
|
+
* Set `install.onDowngrade` in machine config (read-modify-write), preserving
|
|
49
|
+
* every other key. Returns the written config.
|
|
50
|
+
*/
|
|
51
|
+
export declare function setMachineDowngradeMode(mode: DowngradeMode, opts?: ConfigIoOptions): MachineConfig;
|
|
52
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,aAAa,CAAC;QAC5B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KACtB,CAAC;IACF,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,8EAA8E;AAC9E,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;IAClD,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAID,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,IAAI,GAAE,eAAoB,GAAG,MAAM,CAE/D;AAED,oCAAoC;AACpC,wBAAgB,aAAa,CAAC,IAAI,GAAE,eAAoB,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,eAAoB,GAAG,aAAa,CAU3E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI,CAO1F;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,eAAoB,GAAG,aAAa,GAAG,IAAI,CAExF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,aAAa,EACnB,IAAI,GAAE,eAAoB,GACzB,aAAa,CAQf"}
|