@microwiseai/snapshot 0.3.71 → 0.5.0
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/commands/clone-all.d.ts +21 -0
- package/dist/commands/clone-all.d.ts.map +1 -0
- package/dist/commands/clone-all.js +57 -0
- package/dist/commands/clone-all.js.map +1 -0
- package/dist/commands/install.d.ts +9 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +219 -49
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/license.js.map +1 -1
- package/dist/commands/list.d.ts +15 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +21 -39
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +22 -0
- package/dist/commands/publish.js.map +1 -1
- package/dist/index.js +51 -29
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +15 -10
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/gitlab.d.ts.map +1 -1
- package/dist/lib/gitlab.js +6 -8
- package/dist/lib/gitlab.js.map +1 -1
- package/dist/lib/transitive-resolver.js.map +1 -1
- package/dist/lib/types.d.ts +1 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/version-validator.d.ts +28 -0
- package/dist/lib/version-validator.d.ts.map +1 -0
- package/dist/lib/version-validator.js +105 -0
- package/dist/lib/version-validator.js.map +1 -0
- package/dist/lib.js.map +1 -1
- package/node_modules/@microwiseai/snapshot-dedup/dist/dedup.d.ts +86 -1
- package/node_modules/@microwiseai/snapshot-dedup/dist/dedup.d.ts.map +1 -1
- package/node_modules/@microwiseai/snapshot-dedup/dist/dedup.js +171 -5
- package/node_modules/@microwiseai/snapshot-dedup/dist/dedup.js.map +1 -1
- package/node_modules/@microwiseai/snapshot-dedup/dist/index.d.ts +1 -1
- package/node_modules/@microwiseai/snapshot-dedup/dist/index.d.ts.map +1 -1
- package/node_modules/@microwiseai/snapshot-dedup/dist/index.js +4 -2
- package/node_modules/@microwiseai/snapshot-dedup/dist/index.js.map +1 -1
- package/node_modules/@microwiseai/snapshot-dedup/package.json +8 -2
- package/package.json +18 -4
- package/dist/commands/doctor.d.ts +0 -2
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -37
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -5
- package/dist/commands/setup.d.ts.map +0 -1
- package/dist/commands/setup.js +0 -52
- package/dist/commands/setup.js.map +0 -1
- package/dist/lib/access-sync.test.d.ts +0 -2
- package/dist/lib/access-sync.test.d.ts.map +0 -1
- package/dist/lib/access-sync.test.js +0 -112
- package/dist/lib/access-sync.test.js.map +0 -1
- package/dist/lib/auth-flow.test.d.ts +0 -2
- package/dist/lib/auth-flow.test.d.ts.map +0 -1
- package/dist/lib/auth-flow.test.js +0 -265
- package/dist/lib/auth-flow.test.js.map +0 -1
- package/dist/lib/config.test.d.ts +0 -2
- package/dist/lib/config.test.d.ts.map +0 -1
- package/dist/lib/config.test.js +0 -151
- package/dist/lib/config.test.js.map +0 -1
- package/dist/lib/gitlab.test.d.ts +0 -2
- package/dist/lib/gitlab.test.d.ts.map +0 -1
- package/dist/lib/gitlab.test.js +0 -63
- package/dist/lib/gitlab.test.js.map +0 -1
- package/dist/lib/prerequisites.d.ts +0 -33
- package/dist/lib/prerequisites.d.ts.map +0 -1
- package/dist/lib/prerequisites.js +0 -123
- package/dist/lib/prerequisites.js.map +0 -1
- package/dist/lib/registry.d.ts +0 -3
- package/dist/lib/registry.d.ts.map +0 -1
- package/dist/lib/registry.js +0 -53
- package/dist/lib/registry.js.map +0 -1
- package/dist/lib/transitive-resolver.test.d.ts +0 -2
- package/dist/lib/transitive-resolver.test.d.ts.map +0 -1
- package/dist/lib/transitive-resolver.test.js +0 -279
- package/dist/lib/transitive-resolver.test.js.map +0 -1
|
@@ -37,6 +37,12 @@ export function loadInstallHistory(historyPath) {
|
|
|
37
37
|
if (!data.packages || typeof data.packages !== 'object') {
|
|
38
38
|
return { packages: {}, updatedAt: new Date().toISOString() };
|
|
39
39
|
}
|
|
40
|
+
// Backward-compat migration: ensure every entry has a referencedBy set.
|
|
41
|
+
// Older history files (pre replace-mode / ADR 001) only stored `snapshot`
|
|
42
|
+
// (the first installer). Backfill referencedBy = [snapshot] so the safety
|
|
43
|
+
// check has data to work with. This runs in-memory on every load; it is
|
|
44
|
+
// persisted the next time saveInstallHistory() is called.
|
|
45
|
+
backfillReferencedBy(data);
|
|
40
46
|
return data;
|
|
41
47
|
}
|
|
42
48
|
catch {
|
|
@@ -44,6 +50,19 @@ export function loadInstallHistory(historyPath) {
|
|
|
44
50
|
return { packages: {}, updatedAt: new Date().toISOString() };
|
|
45
51
|
}
|
|
46
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Ensure every history entry has a `referencedBy` array (migration/backfill).
|
|
55
|
+
* Missing/invalid → `[snapshot]` (or `[]` if snapshot also missing).
|
|
56
|
+
* Mutates the passed history in place.
|
|
57
|
+
*/
|
|
58
|
+
export function backfillReferencedBy(history) {
|
|
59
|
+
for (const entry of Object.values(history.packages)) {
|
|
60
|
+
if (!Array.isArray(entry.referencedBy)) {
|
|
61
|
+
entry.referencedBy = entry.snapshot ? [entry.snapshot] : [];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return history;
|
|
65
|
+
}
|
|
47
66
|
/**
|
|
48
67
|
* Save install history to disk
|
|
49
68
|
*/
|
|
@@ -64,14 +83,64 @@ export function recordInstalledPackages(packages, snapshotName, historyPath) {
|
|
|
64
83
|
const now = new Date().toISOString();
|
|
65
84
|
for (const [name, version] of Object.entries(packages)) {
|
|
66
85
|
const key = `${name}@${version}`;
|
|
67
|
-
history.packages[key]
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
86
|
+
const existing = history.packages[key];
|
|
87
|
+
if (existing) {
|
|
88
|
+
// Package already tracked: preserve the first-installer metadata
|
|
89
|
+
// (snapshot / installedAt) and just union this snapshot into referencedBy.
|
|
90
|
+
const refs = new Set(existing.referencedBy ?? (existing.snapshot ? [existing.snapshot] : []));
|
|
91
|
+
refs.add(snapshotName);
|
|
92
|
+
existing.referencedBy = Array.from(refs);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
history.packages[key] = {
|
|
96
|
+
snapshot: snapshotName,
|
|
97
|
+
installedAt: now,
|
|
98
|
+
version,
|
|
99
|
+
referencedBy: [snapshotName],
|
|
100
|
+
};
|
|
101
|
+
}
|
|
72
102
|
}
|
|
73
103
|
saveInstallHistory(history, historyPath);
|
|
74
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Record that a snapshot *references* a set of packages, without (re)installing
|
|
107
|
+
* them. Used for dedup-skipped packages: even when a package was already
|
|
108
|
+
* installed by another snapshot and is skipped, the referencing snapshot must
|
|
109
|
+
* still be recorded in referencedBy so replace-mode won't later remove a
|
|
110
|
+
* package that this snapshot depends on.
|
|
111
|
+
*
|
|
112
|
+
* Only touches packages that already exist in history (skipped ⇒ present).
|
|
113
|
+
* Non-existent keys are ignored (no phantom entries).
|
|
114
|
+
*/
|
|
115
|
+
export function recordReferences(packages, snapshotName, historyPath) {
|
|
116
|
+
const history = loadInstallHistory(historyPath);
|
|
117
|
+
let changed = false;
|
|
118
|
+
for (const [name, version] of Object.entries(packages)) {
|
|
119
|
+
const key = `${name}@${version}`;
|
|
120
|
+
const existing = history.packages[key];
|
|
121
|
+
if (!existing)
|
|
122
|
+
continue;
|
|
123
|
+
const refs = new Set(existing.referencedBy ?? (existing.snapshot ? [existing.snapshot] : []));
|
|
124
|
+
if (!refs.has(snapshotName)) {
|
|
125
|
+
refs.add(snapshotName);
|
|
126
|
+
existing.referencedBy = Array.from(refs);
|
|
127
|
+
changed = true;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (changed)
|
|
131
|
+
saveInstallHistory(history, historyPath);
|
|
132
|
+
}
|
|
133
|
+
/** Record references from a list of specs (e.g. ["@ist/sesh@0.3.33"]). */
|
|
134
|
+
export function recordReferencesFromSpecs(specs, snapshotName, historyPath) {
|
|
135
|
+
const packages = {};
|
|
136
|
+
for (const spec of specs) {
|
|
137
|
+
const atIdx = spec.lastIndexOf('@');
|
|
138
|
+
if (atIdx > 0) {
|
|
139
|
+
packages[spec.substring(0, atIdx)] = spec.substring(atIdx + 1);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
recordReferences(packages, snapshotName, historyPath);
|
|
143
|
+
}
|
|
75
144
|
/**
|
|
76
145
|
* Record a list of installed package specs (e.g., ["@ist/sesh@0.3.33"])
|
|
77
146
|
*/
|
|
@@ -193,4 +262,101 @@ export function getInstalledCount(historyPath) {
|
|
|
193
262
|
const history = loadInstallHistory(historyPath);
|
|
194
263
|
return Object.keys(history.packages).length;
|
|
195
264
|
}
|
|
265
|
+
/** Split a "name@version" history key into its package name. */
|
|
266
|
+
function keyToName(key) {
|
|
267
|
+
const atIdx = key.lastIndexOf('@');
|
|
268
|
+
return atIdx > 0 ? key.substring(0, atIdx) : key;
|
|
269
|
+
}
|
|
270
|
+
/** Snapshot names that reference (require) a given package@version. */
|
|
271
|
+
export function getReferencedBy(name, version, historyPath) {
|
|
272
|
+
const history = loadInstallHistory(historyPath);
|
|
273
|
+
const entry = history.packages[`${name}@${version}`];
|
|
274
|
+
if (!entry)
|
|
275
|
+
return [];
|
|
276
|
+
return entry.referencedBy ?? (entry.snapshot ? [entry.snapshot] : []);
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Compute the replace plan for installing a new version of `snapshotName`.
|
|
280
|
+
*
|
|
281
|
+
* @param snapshotName - the snapshot whose version is being replaced
|
|
282
|
+
* @param newSet - the new version's full package set (name -> version),
|
|
283
|
+
* including the extends chain (e.g. from collectAllPackages)
|
|
284
|
+
*
|
|
285
|
+
* Ordering note: history keys are `name@version`, so recording the new version
|
|
286
|
+
* (e.g. `a@2`) never overwrites the previous entry (`a@1`) — both coexist. This
|
|
287
|
+
* function therefore works correctly whether called before OR after recording,
|
|
288
|
+
* and the install flow calls it AFTER recordInstalledSpecs/recordReferences.
|
|
289
|
+
* That order is in fact preferable: referencedBy for shared packages is
|
|
290
|
+
* up to date, the new current-version entries are classified as "keep", and
|
|
291
|
+
* superseded old-version entries are detected as `stale`. The plan is computed
|
|
292
|
+
* by iterating referencedBy (not getPackagesBySnapshot).
|
|
293
|
+
*/
|
|
294
|
+
export function computeReplacePlan(snapshotName, newSet, historyPath) {
|
|
295
|
+
const history = loadInstallHistory(historyPath); // backfilled → referencedBy present
|
|
296
|
+
const plan = { remove: [], keepShared: [], stale: [] };
|
|
297
|
+
for (const [key, entry] of Object.entries(history.packages)) {
|
|
298
|
+
const refs = new Set(entry.referencedBy ?? (entry.snapshot ? [entry.snapshot] : []));
|
|
299
|
+
if (!refs.has(snapshotName))
|
|
300
|
+
continue; // not part of this snapshot's set → untouched
|
|
301
|
+
const name = keyToName(key);
|
|
302
|
+
const version = entry.version;
|
|
303
|
+
if (name in newSet) {
|
|
304
|
+
if (newSet[name] === version) {
|
|
305
|
+
continue; // still current in the new version → keep as-is
|
|
306
|
+
}
|
|
307
|
+
// Same package, different version → old entry superseded by the new install.
|
|
308
|
+
plan.stale.push({ name, version });
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
// Package name is gone from the new version → removal candidate.
|
|
312
|
+
const remaining = new Set(refs);
|
|
313
|
+
remaining.delete(snapshotName);
|
|
314
|
+
if (remaining.size === 0) {
|
|
315
|
+
plan.remove.push({ name, version }); // nobody else references it → safe to remove
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
// Still referenced by another snapshot → keep installed (safety guard).
|
|
319
|
+
plan.keepShared.push({ name, version, remainingRefs: Array.from(remaining) });
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return plan;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Apply the history side of a replace plan.
|
|
326
|
+
*
|
|
327
|
+
* @param removed - items whose uninstall SUCCEEDED (their history key is deleted)
|
|
328
|
+
* @param keepShared - items kept installed; `snapshotName` is dropped from refs
|
|
329
|
+
* @param stale - superseded old-version items; `snapshotName` dropped from refs
|
|
330
|
+
*
|
|
331
|
+
* For keepShared/stale entries, if dropping `snapshotName` leaves an empty
|
|
332
|
+
* referencedBy the history key is deleted too. Uninstall failures should be
|
|
333
|
+
* omitted from `removed` so their entries are preserved for a later retry.
|
|
334
|
+
*/
|
|
335
|
+
export function applyReplaceHistory(snapshotName, removed, keepShared, stale, historyPath) {
|
|
336
|
+
const history = loadInstallHistory(historyPath);
|
|
337
|
+
// Hard-delete successfully uninstalled packages.
|
|
338
|
+
for (const item of removed) {
|
|
339
|
+
delete history.packages[`${item.name}@${item.version}`];
|
|
340
|
+
}
|
|
341
|
+
// Drop this snapshot from the refs of kept/superseded packages.
|
|
342
|
+
const dropRef = (name, version) => {
|
|
343
|
+
const key = `${name}@${version}`;
|
|
344
|
+
const entry = history.packages[key];
|
|
345
|
+
if (!entry)
|
|
346
|
+
return;
|
|
347
|
+
const refs = new Set(entry.referencedBy ?? (entry.snapshot ? [entry.snapshot] : []));
|
|
348
|
+
refs.delete(snapshotName);
|
|
349
|
+
if (refs.size === 0) {
|
|
350
|
+
delete history.packages[key];
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
entry.referencedBy = Array.from(refs);
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
for (const item of keepShared)
|
|
357
|
+
dropRef(item.name, item.version);
|
|
358
|
+
for (const item of stale)
|
|
359
|
+
dropRef(item.name, item.version);
|
|
360
|
+
saveInstallHistory(history, historyPath);
|
|
361
|
+
}
|
|
196
362
|
//# sourceMappingURL=dedup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dedup.js","sourceRoot":"","sources":["../src/dedup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dedup.js","sourceRoot":"","sources":["../src/dedup.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,5 +17,5 @@
|
|
|
17
17
|
* // After successful install, record them
|
|
18
18
|
* recordInstalledPackages(result.toInstall, '@ist/full');
|
|
19
19
|
*/
|
|
20
|
-
export { dedup, dedupWithReport, dedupInstallBlock, isAlreadyInstalled, loadInstallHistory, saveInstallHistory, recordInstalledPackages, recordInstalledSpecs, clearInstallHistory, getPackagesBySnapshot, getInstalledCount, getHistoryFilePath, type InstalledPackageEntry, type InstallHistory, type DedupResult, type DedupReport, type SkippedPackage, } from './dedup.js';
|
|
20
|
+
export { dedup, dedupWithReport, dedupInstallBlock, isAlreadyInstalled, loadInstallHistory, saveInstallHistory, recordInstalledPackages, recordInstalledSpecs, recordReferences, recordReferencesFromSpecs, clearInstallHistory, backfillReferencedBy, getPackagesBySnapshot, getInstalledCount, getHistoryFilePath, getReferencedBy, computeReplacePlan, applyReplaceHistory, type InstalledPackageEntry, type InstallHistory, type DedupResult, type DedupReport, type SkippedPackage, type ReplacePlan, type ReplaceRemovalItem, type ReplaceSharedItem, } from './dedup.js';
|
|
21
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAEL,KAAK,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAGlB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAEL,KAAK,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAGlB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EAGpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EAGf,kBAAkB,EAClB,mBAAmB,EAGnB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAC"}
|
|
@@ -21,7 +21,9 @@ export {
|
|
|
21
21
|
// Core dedup functions
|
|
22
22
|
dedup, dedupWithReport, dedupInstallBlock, isAlreadyInstalled,
|
|
23
23
|
// History management
|
|
24
|
-
loadInstallHistory, saveInstallHistory, recordInstalledPackages, recordInstalledSpecs, clearInstallHistory,
|
|
24
|
+
loadInstallHistory, saveInstallHistory, recordInstalledPackages, recordInstalledSpecs, recordReferences, recordReferencesFromSpecs, clearInstallHistory, backfillReferencedBy,
|
|
25
25
|
// Utility functions
|
|
26
|
-
getPackagesBySnapshot, getInstalledCount, getHistoryFilePath,
|
|
26
|
+
getPackagesBySnapshot, getInstalledCount, getHistoryFilePath, getReferencedBy,
|
|
27
|
+
// Replace mode (ADR 001)
|
|
28
|
+
computeReplacePlan, applyReplaceHistory, } from './dedup.js';
|
|
27
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO;AACL,uBAAuB;AACvB,KAAK,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB;AAElB,qBAAqB;AACrB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO;AACL,uBAAuB;AACvB,KAAK,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB;AAElB,qBAAqB;AACrB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB;AAEpB,oBAAoB;AACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe;AAEf,yBAAyB;AACzB,kBAAkB,EAClB,mBAAmB,GAWpB,MAAM,YAAY,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microwiseai/snapshot-dedup",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Deduplication logic for Snapshot CLI - prevents reinstalling already-installed packages",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -12,10 +12,13 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
|
-
"
|
|
15
|
+
"prebuild": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
16
|
+
"build": "tsc -p tsconfig.build.json",
|
|
16
17
|
"dev": "tsc --watch",
|
|
18
|
+
"typecheck": "tsc --noEmit",
|
|
17
19
|
"test": "vitest",
|
|
18
20
|
"test:run": "vitest run",
|
|
21
|
+
"lint": "eslint src",
|
|
19
22
|
"prepublishOnly": "npm run build"
|
|
20
23
|
},
|
|
21
24
|
"files": [
|
|
@@ -32,6 +35,9 @@
|
|
|
32
35
|
"dependencies": {},
|
|
33
36
|
"devDependencies": {
|
|
34
37
|
"@types/node": "^20.11.0",
|
|
38
|
+
"@typescript-eslint/eslint-plugin": "^8.57.0",
|
|
39
|
+
"@typescript-eslint/parser": "^8.57.0",
|
|
40
|
+
"eslint": "^10.0.3",
|
|
35
41
|
"typescript": "^5.7.3",
|
|
36
42
|
"vitest": "^4.0.18"
|
|
37
43
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microwiseai/snapshot",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "CLI for installing IST Snapshot packages",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/lib.js",
|
|
@@ -19,8 +19,10 @@
|
|
|
19
19
|
"snapshot": "./dist/index.js"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
|
-
"
|
|
22
|
+
"prebuild": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
23
|
+
"build": "tsc -p tsconfig.build.json",
|
|
23
24
|
"dev": "tsc --watch",
|
|
25
|
+
"typecheck": "tsc --noEmit",
|
|
24
26
|
"test": "vitest",
|
|
25
27
|
"test:run": "vitest run",
|
|
26
28
|
"lint": "eslint src",
|
|
@@ -40,10 +42,11 @@
|
|
|
40
42
|
"author": "IST Team",
|
|
41
43
|
"license": "MIT",
|
|
42
44
|
"dependencies": {
|
|
45
|
+
"@gitdot/clone-lib": "^0.2.0",
|
|
43
46
|
"@microwiseai/import-telemetry": "^0.1.0",
|
|
44
47
|
"@microwiseai/license": "^0.1.4",
|
|
45
48
|
"@microwiseai/skit": "^0.1.19",
|
|
46
|
-
"@microwiseai/snapshot-dedup": "
|
|
49
|
+
"@microwiseai/snapshot-dedup": "0.2.0",
|
|
47
50
|
"@microwiseai/snapshot-parallel": "^0.1.0",
|
|
48
51
|
"chalk": "^5.3.0",
|
|
49
52
|
"commander": "^12.1.0",
|
|
@@ -67,5 +70,16 @@
|
|
|
67
70
|
"@microwiseai/skit",
|
|
68
71
|
"@microwiseai/snapshot-dedup",
|
|
69
72
|
"@microwiseai/snapshot-parallel"
|
|
70
|
-
]
|
|
73
|
+
],
|
|
74
|
+
"glpkg": {
|
|
75
|
+
"groups": {
|
|
76
|
+
"microwiseai": [
|
|
77
|
+
"@gitdot/clone-lib"
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"repository": {
|
|
82
|
+
"type": "git",
|
|
83
|
+
"url": "git+https://gitlab.com/microwiseai/snapshot.git"
|
|
84
|
+
}
|
|
71
85
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAGA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAoCnD"}
|
package/dist/commands/doctor.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { checkPrerequisites, MINIMAL_PREREQUISITES } from '../lib/prerequisites.js';
|
|
3
|
-
export async function doctorCommand() {
|
|
4
|
-
console.log(chalk.blue('Checking prerequisites...\n'));
|
|
5
|
-
const results = checkPrerequisites(MINIMAL_PREREQUISITES);
|
|
6
|
-
const missing = results.filter(r => !r.installed);
|
|
7
|
-
// Print results
|
|
8
|
-
for (const r of results) {
|
|
9
|
-
const icon = r.installed ? chalk.green('✅') : chalk.red('❌');
|
|
10
|
-
console.log(` ${icon} ${r.name}`);
|
|
11
|
-
if (!r.installed) {
|
|
12
|
-
console.log(chalk.gray(` Required by: ${r.requiredBy.join(', ')}`));
|
|
13
|
-
if (r.installCommand) {
|
|
14
|
-
console.log(chalk.gray(` Fix: ${r.installCommand}`));
|
|
15
|
-
}
|
|
16
|
-
if (r.guide) {
|
|
17
|
-
console.log(chalk.gray(` ${r.guide}`));
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
console.log('');
|
|
22
|
-
if (missing.length === 0) {
|
|
23
|
-
console.log(chalk.green('All prerequisites satisfied! ✓'));
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
console.log(chalk.yellow(`${missing.length} issue(s) found.`));
|
|
27
|
-
const fixable = missing.filter(r => r.installCommand);
|
|
28
|
-
if (fixable.length > 0) {
|
|
29
|
-
console.log(chalk.gray(`Run 'snapshot setup' to install ${fixable.length} missing prerequisite(s).`));
|
|
30
|
-
}
|
|
31
|
-
const manual = missing.filter(r => !r.installCommand);
|
|
32
|
-
if (manual.length > 0) {
|
|
33
|
-
console.log(chalk.gray(`${manual.length} require manual action (see above).`));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAoB,MAAM,yBAAyB,CAAC;AAEtG,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAElD,gBAAgB;IAChB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,OAAO,CAAC,MAAM,2BAA2B,CAAC,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,qCAAqC,CAAC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/commands/setup.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD/F"}
|
package/dist/commands/setup.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { checkPrerequisites, installPrerequisite, MINIMAL_PREREQUISITES } from '../lib/prerequisites.js';
|
|
3
|
-
export async function setupCommand(options) {
|
|
4
|
-
console.log(chalk.blue('Setting up prerequisites...\n'));
|
|
5
|
-
const results = checkPrerequisites(MINIMAL_PREREQUISITES);
|
|
6
|
-
const missing = results.filter(r => !r.installed);
|
|
7
|
-
if (missing.length === 0) {
|
|
8
|
-
console.log(chalk.green('All prerequisites already satisfied! ✓'));
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
console.log(`Found ${missing.length} missing prerequisite(s):\n`);
|
|
12
|
-
for (const item of missing) {
|
|
13
|
-
if (!item.installCommand) {
|
|
14
|
-
// Manual action required
|
|
15
|
-
console.log(` ${chalk.yellow('⚠')} ${item.name}: requires manual action`);
|
|
16
|
-
console.log(chalk.gray(` ${item.guide || 'No instructions available.'}`));
|
|
17
|
-
console.log('');
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
if (options.dryRun) {
|
|
21
|
-
console.log(` ${chalk.cyan('→')} Would install: ${item.name}`);
|
|
22
|
-
console.log(chalk.gray(` Command: ${item.installCommand}`));
|
|
23
|
-
console.log('');
|
|
24
|
-
continue;
|
|
25
|
-
}
|
|
26
|
-
console.log(` ${chalk.cyan('→')} Installing: ${item.name}...`);
|
|
27
|
-
const result = installPrerequisite(item);
|
|
28
|
-
if (result.success) {
|
|
29
|
-
console.log(` ${chalk.green('✅')} ${item.name} installed`);
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
console.log(` ${chalk.red('❌')} ${item.name} failed: ${result.error}`);
|
|
33
|
-
}
|
|
34
|
-
console.log('');
|
|
35
|
-
}
|
|
36
|
-
// Re-check
|
|
37
|
-
console.log(chalk.blue('Verifying...\n'));
|
|
38
|
-
const recheck = checkPrerequisites(MINIMAL_PREREQUISITES);
|
|
39
|
-
const stillMissing = recheck.filter(r => !r.installed);
|
|
40
|
-
if (stillMissing.length === 0) {
|
|
41
|
-
console.log(chalk.green('All prerequisites satisfied! ✓'));
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
console.log(chalk.yellow(`${stillMissing.length} still missing:`));
|
|
45
|
-
for (const r of stillMissing) {
|
|
46
|
-
console.log(` ${chalk.red('❌')} ${r.name}`);
|
|
47
|
-
if (r.guide)
|
|
48
|
-
console.log(chalk.gray(` ${r.guide}`));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"access-sync.test.d.ts","sourceRoot":"","sources":["../../src/lib/access-sync.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
-
import { syncPackageAccess } from './access-sync.js';
|
|
3
|
-
import { LICENSE_API_URL } from './config.js';
|
|
4
|
-
/**
|
|
5
|
-
* Unit tests for access-sync.
|
|
6
|
-
*
|
|
7
|
-
* `fetch` is fully mocked — no real license-api write calls are made.
|
|
8
|
-
* Transitive resolution is disabled so the only network surface is the
|
|
9
|
-
* idempotent upsert (POST /admin/package-access/with-deps).
|
|
10
|
-
*/
|
|
11
|
-
const UPSERT_URL = `${LICENSE_API_URL}/admin/package-access/with-deps`;
|
|
12
|
-
function makeFetchMock() {
|
|
13
|
-
return vi.fn(async () => ({
|
|
14
|
-
ok: true,
|
|
15
|
-
json: async () => ({}),
|
|
16
|
-
}));
|
|
17
|
-
}
|
|
18
|
-
/** Extract parsed bodies of every upsert call recorded by the fetch mock. */
|
|
19
|
-
function upsertBodies(fetchMock) {
|
|
20
|
-
return fetchMock.mock.calls
|
|
21
|
-
.filter((call) => call[0] === UPSERT_URL)
|
|
22
|
-
.map((call) => JSON.parse(call[1].body));
|
|
23
|
-
}
|
|
24
|
-
describe('syncPackageAccess - snapshot own package registration', () => {
|
|
25
|
-
let originalFetch;
|
|
26
|
-
beforeEach(() => {
|
|
27
|
-
originalFetch = globalThis.fetch;
|
|
28
|
-
process.env.LICENSE_API_ADMIN_KEY = 'test-admin-key';
|
|
29
|
-
vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
30
|
-
vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
31
|
-
});
|
|
32
|
-
afterEach(() => {
|
|
33
|
-
globalThis.fetch = originalFetch;
|
|
34
|
-
delete process.env.LICENSE_API_ADMIN_KEY;
|
|
35
|
-
vi.restoreAllMocks();
|
|
36
|
-
});
|
|
37
|
-
it("registers the snapshot's own package with its declared access level", async () => {
|
|
38
|
-
const fetchMock = makeFetchMock();
|
|
39
|
-
globalThis.fetch = fetchMock;
|
|
40
|
-
const snapshot = {
|
|
41
|
-
name: '@ist/testing',
|
|
42
|
-
version: '0.1.0',
|
|
43
|
-
access: 'authenticated',
|
|
44
|
-
install: {
|
|
45
|
-
'gitlab-install': {
|
|
46
|
-
'@ist/member-a': '1.0.0',
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
const result = await syncPackageAccess(snapshot, { includeTransitive: false });
|
|
51
|
-
const bodies = upsertBodies(fetchMock);
|
|
52
|
-
const self = bodies.find((b) => b.scope === '@ist' && b.packageName === 'testing');
|
|
53
|
-
expect(self).toBeDefined();
|
|
54
|
-
expect(self.accessLevel).toBe('authenticated');
|
|
55
|
-
// Snapshot's own package has no parent.
|
|
56
|
-
expect(self.parentPackage).toBeUndefined();
|
|
57
|
-
// Still uses the idempotent with-deps upsert with empty dependencies.
|
|
58
|
-
expect(self.dependencies).toEqual([]);
|
|
59
|
-
// Member package is registered too and points to the snapshot as parent.
|
|
60
|
-
const member = bodies.find((b) => b.packageName === 'member-a');
|
|
61
|
-
expect(member).toBeDefined();
|
|
62
|
-
expect(member.parentPackage).toBe('@ist/testing');
|
|
63
|
-
expect(result.registered).toContain('@ist/testing');
|
|
64
|
-
});
|
|
65
|
-
it('maps public access for the snapshot own package', async () => {
|
|
66
|
-
const fetchMock = makeFetchMock();
|
|
67
|
-
globalThis.fetch = fetchMock;
|
|
68
|
-
const snapshot = {
|
|
69
|
-
name: '@ist/free',
|
|
70
|
-
version: '1.0.0',
|
|
71
|
-
access: 'public',
|
|
72
|
-
install: {},
|
|
73
|
-
};
|
|
74
|
-
await syncPackageAccess(snapshot, { includeTransitive: false });
|
|
75
|
-
const self = upsertBodies(fetchMock).find((b) => b.packageName === 'free');
|
|
76
|
-
expect(self).toBeDefined();
|
|
77
|
-
expect(self.accessLevel).toBe('public');
|
|
78
|
-
});
|
|
79
|
-
it('maps licensed access and propagates productId for the snapshot own package', async () => {
|
|
80
|
-
const fetchMock = makeFetchMock();
|
|
81
|
-
globalThis.fetch = fetchMock;
|
|
82
|
-
const snapshot = {
|
|
83
|
-
name: '@ist/pro',
|
|
84
|
-
version: '1.0.0',
|
|
85
|
-
access: { type: 'licensed', productId: 'prod_123' },
|
|
86
|
-
install: {},
|
|
87
|
-
};
|
|
88
|
-
await syncPackageAccess(snapshot, { includeTransitive: false });
|
|
89
|
-
const self = upsertBodies(fetchMock).find((b) => b.packageName === 'pro');
|
|
90
|
-
expect(self).toBeDefined();
|
|
91
|
-
expect(self.accessLevel).toBe('licensed');
|
|
92
|
-
expect(self.requiredProductIds).toBe('prod_123');
|
|
93
|
-
});
|
|
94
|
-
it('does not duplicate when the snapshot package also appears as a member', async () => {
|
|
95
|
-
const fetchMock = makeFetchMock();
|
|
96
|
-
globalThis.fetch = fetchMock;
|
|
97
|
-
const snapshot = {
|
|
98
|
-
name: '@ist/testing',
|
|
99
|
-
version: '0.1.0',
|
|
100
|
-
access: 'authenticated',
|
|
101
|
-
install: {
|
|
102
|
-
'gitlab-install': {
|
|
103
|
-
'@ist/testing': '0.1.0',
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
};
|
|
107
|
-
await syncPackageAccess(snapshot, { includeTransitive: false });
|
|
108
|
-
const selfHits = upsertBodies(fetchMock).filter((b) => b.scope === '@ist' && b.packageName === 'testing');
|
|
109
|
-
expect(selfHits).toHaveLength(1);
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
//# sourceMappingURL=access-sync.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"access-sync.test.js","sourceRoot":"","sources":["../../src/lib/access-sync.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-flow.test.d.ts","sourceRoot":"","sources":["../../src/lib/auth-flow.test.ts"],"names":[],"mappings":""}
|