@microwiseai/snapshot 0.3.46 → 0.3.57

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.
Files changed (53) hide show
  1. package/dist/commands/access.js +1 -1
  2. package/dist/commands/access.js.map +1 -1
  3. package/dist/commands/doctor.d.ts +2 -0
  4. package/dist/commands/doctor.d.ts.map +1 -0
  5. package/dist/commands/doctor.js +37 -0
  6. package/dist/commands/doctor.js.map +1 -0
  7. package/dist/commands/install.d.ts.map +1 -1
  8. package/dist/commands/install.js +335 -112
  9. package/dist/commands/install.js.map +1 -1
  10. package/dist/commands/setup.d.ts +5 -0
  11. package/dist/commands/setup.d.ts.map +1 -0
  12. package/dist/commands/setup.js +52 -0
  13. package/dist/commands/setup.js.map +1 -0
  14. package/dist/index.js +16 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/lib/access-sync.d.ts.map +1 -1
  17. package/dist/lib/access-sync.js +2 -0
  18. package/dist/lib/access-sync.js.map +1 -1
  19. package/dist/lib/config.d.ts +15 -0
  20. package/dist/lib/config.d.ts.map +1 -1
  21. package/dist/lib/config.js +96 -0
  22. package/dist/lib/config.js.map +1 -1
  23. package/dist/lib/gitlab.js +3 -3
  24. package/dist/lib/gitlab.js.map +1 -1
  25. package/dist/lib/prerequisites.d.ts +33 -0
  26. package/dist/lib/prerequisites.d.ts.map +1 -0
  27. package/dist/lib/prerequisites.js +109 -0
  28. package/dist/lib/prerequisites.js.map +1 -0
  29. package/dist/lib/session.d.ts +6 -8
  30. package/dist/lib/session.d.ts.map +1 -1
  31. package/dist/lib/session.js +10 -12
  32. package/dist/lib/session.js.map +1 -1
  33. package/dist/lib/types.d.ts +1 -1
  34. package/dist/lib/types.d.ts.map +1 -1
  35. package/node_modules/@microwiseai/snapshot-dedup/dist/dedup.d.ts +108 -0
  36. package/node_modules/@microwiseai/snapshot-dedup/dist/dedup.d.ts.map +1 -0
  37. package/node_modules/@microwiseai/snapshot-dedup/dist/dedup.js +196 -0
  38. package/node_modules/@microwiseai/snapshot-dedup/dist/dedup.js.map +1 -0
  39. package/node_modules/@microwiseai/snapshot-dedup/dist/index.d.ts +21 -0
  40. package/node_modules/@microwiseai/snapshot-dedup/dist/index.d.ts.map +1 -0
  41. package/node_modules/@microwiseai/snapshot-dedup/dist/index.js +27 -0
  42. package/node_modules/@microwiseai/snapshot-dedup/dist/index.js.map +1 -0
  43. package/node_modules/@microwiseai/snapshot-dedup/package.json +41 -0
  44. package/node_modules/@microwiseai/snapshot-parallel/dist/index.d.ts +9 -0
  45. package/node_modules/@microwiseai/snapshot-parallel/dist/index.d.ts.map +1 -0
  46. package/node_modules/@microwiseai/snapshot-parallel/dist/index.js +8 -0
  47. package/node_modules/@microwiseai/snapshot-parallel/dist/index.js.map +1 -0
  48. package/node_modules/@microwiseai/snapshot-parallel/dist/parallel-installer.d.ts +86 -0
  49. package/node_modules/@microwiseai/snapshot-parallel/dist/parallel-installer.d.ts.map +1 -0
  50. package/node_modules/@microwiseai/snapshot-parallel/dist/parallel-installer.js +159 -0
  51. package/node_modules/@microwiseai/snapshot-parallel/dist/parallel-installer.js.map +1 -0
  52. package/node_modules/@microwiseai/snapshot-parallel/package.json +41 -0
  53. package/package.json +7 -3
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @microwiseai/snapshot-parallel
3
+ *
4
+ * Parallel package installer with concurrency control.
5
+ * Drop-in replacement for serial install loops in @microwiseai/snapshot core.
6
+ */
7
+ export { parallelInstall, recordToEntries, partitionEntries, } from './parallel-installer.js';
8
+ export type { PackageEntry, PackageInstallResult, ParallelInstallResult, ProgressEvent, InstallFn, ParallelInstallOptions, } from './parallel-installer.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,SAAS,EACT,sBAAsB,GACvB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @microwiseai/snapshot-parallel
3
+ *
4
+ * Parallel package installer with concurrency control.
5
+ * Drop-in replacement for serial install loops in @microwiseai/snapshot core.
6
+ */
7
+ export { parallelInstall, recordToEntries, partitionEntries, } from './parallel-installer.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Parallel Package Installer
3
+ *
4
+ * Concurrency-limited parallel execution for package installation.
5
+ * Replaces serial for-loops in core/install.ts with Promise-pool pattern.
6
+ */
7
+ /** A single package to install: name + version */
8
+ export interface PackageEntry {
9
+ name: string;
10
+ version: string;
11
+ }
12
+ /** Result of installing a single package */
13
+ export interface PackageInstallResult {
14
+ name: string;
15
+ version: string;
16
+ /** "name@version" convenience string */
17
+ spec: string;
18
+ success: boolean;
19
+ /** Error message if failed */
20
+ error?: string;
21
+ /** Duration in ms */
22
+ durationMs: number;
23
+ }
24
+ /** Aggregated results from a parallel install batch */
25
+ export interface ParallelInstallResult {
26
+ installed: string[];
27
+ failed: string[];
28
+ results: PackageInstallResult[];
29
+ totalDurationMs: number;
30
+ }
31
+ /** Progress event emitted for each package completion */
32
+ export interface ProgressEvent {
33
+ /** 1-based index of completed package */
34
+ current: number;
35
+ /** Total number of packages */
36
+ total: number;
37
+ /** The result for the just-completed package */
38
+ result: PackageInstallResult;
39
+ }
40
+ /** Function that actually installs a single package. Provided by the caller. */
41
+ export type InstallFn = (entry: PackageEntry) => Promise<{
42
+ success: boolean;
43
+ error?: string;
44
+ }>;
45
+ /** Options for parallel installation */
46
+ export interface ParallelInstallOptions {
47
+ /** Max concurrent installs (default: 4) */
48
+ concurrency?: number;
49
+ /** Called after each package completes */
50
+ onProgress?: (event: ProgressEvent) => void;
51
+ /** AbortSignal to cancel remaining installs */
52
+ signal?: AbortSignal;
53
+ }
54
+ /**
55
+ * Install packages in parallel with concurrency control.
56
+ *
57
+ * @param entries - List of packages to install
58
+ * @param installFn - Function that installs a single package (caller provides the actual logic)
59
+ * @param options - Concurrency, progress callback, abort signal
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * import { parallelInstall } from '@microwiseai/snapshot-parallel';
64
+ *
65
+ * const result = await parallelInstall(
66
+ * [{ name: '@ist/smon', version: '0.2.15' }],
67
+ * async (entry) => {
68
+ * // your install logic here
69
+ * return { success: true };
70
+ * },
71
+ * { concurrency: 4, onProgress: (e) => console.log(`${e.current}/${e.total}`) }
72
+ * );
73
+ * ```
74
+ */
75
+ export declare function parallelInstall(entries: PackageEntry[], installFn: InstallFn, options?: ParallelInstallOptions): Promise<ParallelInstallResult>;
76
+ /**
77
+ * Convert a { name: version } record to PackageEntry[].
78
+ * Preserves insertion order.
79
+ */
80
+ export declare function recordToEntries(packages: Record<string, string>): PackageEntry[];
81
+ /**
82
+ * Partition entries by a classifier function.
83
+ * Useful for splitting skit vs npm vs generic before parallel install.
84
+ */
85
+ export declare function partitionEntries<K extends string>(entries: PackageEntry[], classifier: (entry: PackageEntry) => K): Record<K, PackageEntry[]>;
86
+ //# sourceMappingURL=parallel-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-installer.d.ts","sourceRoot":"","sources":["../src/parallel-installer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED,gFAAgF;AAChF,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE/F,wCAAwC;AACxC,MAAM,WAAW,sBAAsB;IACrC,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,+CAA+C;IAC/C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA2CD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CA8FhC;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY,EAAE,CAEhF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAC/C,OAAO,EAAE,YAAY,EAAE,EACvB,UAAU,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,CAAC,GACrC,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAU3B"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Parallel Package Installer
3
+ *
4
+ * Concurrency-limited parallel execution for package installation.
5
+ * Replaces serial for-loops in core/install.ts with Promise-pool pattern.
6
+ */
7
+ // ============================================================
8
+ // Core: Concurrency-limited Promise Pool
9
+ // ============================================================
10
+ /**
11
+ * Run an array of async tasks with a concurrency limit.
12
+ * Uses a pool pattern (not chunking) so a new task starts
13
+ * as soon as a slot frees up.
14
+ */
15
+ async function runPool(items, concurrency, fn, signal) {
16
+ const results = new Array(items.length);
17
+ let nextIndex = 0;
18
+ async function worker() {
19
+ while (nextIndex < items.length) {
20
+ if (signal?.aborted) {
21
+ break;
22
+ }
23
+ const idx = nextIndex++;
24
+ results[idx] = await fn(items[idx], idx);
25
+ }
26
+ }
27
+ const workers = Array.from({ length: Math.min(concurrency, items.length) }, () => worker());
28
+ await Promise.all(workers);
29
+ return results;
30
+ }
31
+ // ============================================================
32
+ // Public API
33
+ // ============================================================
34
+ /**
35
+ * Install packages in parallel with concurrency control.
36
+ *
37
+ * @param entries - List of packages to install
38
+ * @param installFn - Function that installs a single package (caller provides the actual logic)
39
+ * @param options - Concurrency, progress callback, abort signal
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * import { parallelInstall } from '@microwiseai/snapshot-parallel';
44
+ *
45
+ * const result = await parallelInstall(
46
+ * [{ name: '@ist/smon', version: '0.2.15' }],
47
+ * async (entry) => {
48
+ * // your install logic here
49
+ * return { success: true };
50
+ * },
51
+ * { concurrency: 4, onProgress: (e) => console.log(`${e.current}/${e.total}`) }
52
+ * );
53
+ * ```
54
+ */
55
+ export async function parallelInstall(entries, installFn, options = {}) {
56
+ const { concurrency = 4, onProgress, signal } = options;
57
+ if (entries.length === 0) {
58
+ return { installed: [], failed: [], results: [], totalDurationMs: 0 };
59
+ }
60
+ const totalStart = Date.now();
61
+ let completedCount = 0;
62
+ const results = await runPool(entries, concurrency, async (entry, _index) => {
63
+ const spec = `${entry.name}@${entry.version}`;
64
+ const start = Date.now();
65
+ if (signal?.aborted) {
66
+ const res = {
67
+ name: entry.name,
68
+ version: entry.version,
69
+ spec,
70
+ success: false,
71
+ error: 'Aborted',
72
+ durationMs: 0,
73
+ };
74
+ return res;
75
+ }
76
+ try {
77
+ const outcome = await installFn(entry);
78
+ const durationMs = Date.now() - start;
79
+ const res = {
80
+ name: entry.name,
81
+ version: entry.version,
82
+ spec,
83
+ success: outcome.success,
84
+ error: outcome.error,
85
+ durationMs,
86
+ };
87
+ completedCount++;
88
+ onProgress?.({
89
+ current: completedCount,
90
+ total: entries.length,
91
+ result: res,
92
+ });
93
+ return res;
94
+ }
95
+ catch (err) {
96
+ const durationMs = Date.now() - start;
97
+ const error = err instanceof Error ? err.message : String(err);
98
+ const res = {
99
+ name: entry.name,
100
+ version: entry.version,
101
+ spec,
102
+ success: false,
103
+ error,
104
+ durationMs,
105
+ };
106
+ completedCount++;
107
+ onProgress?.({
108
+ current: completedCount,
109
+ total: entries.length,
110
+ result: res,
111
+ });
112
+ return res;
113
+ }
114
+ }, signal);
115
+ const installed = [];
116
+ const failed = [];
117
+ for (const r of results) {
118
+ if (!r)
119
+ continue; // skipped due to abort
120
+ if (r.success) {
121
+ installed.push(r.spec);
122
+ }
123
+ else {
124
+ failed.push(r.spec);
125
+ }
126
+ }
127
+ return {
128
+ installed,
129
+ failed,
130
+ results: results.filter(Boolean),
131
+ totalDurationMs: Date.now() - totalStart,
132
+ };
133
+ }
134
+ // ============================================================
135
+ // Helpers: Convert between Record<string,string> and PackageEntry[]
136
+ // ============================================================
137
+ /**
138
+ * Convert a { name: version } record to PackageEntry[].
139
+ * Preserves insertion order.
140
+ */
141
+ export function recordToEntries(packages) {
142
+ return Object.entries(packages).map(([name, version]) => ({ name, version }));
143
+ }
144
+ /**
145
+ * Partition entries by a classifier function.
146
+ * Useful for splitting skit vs npm vs generic before parallel install.
147
+ */
148
+ export function partitionEntries(entries, classifier) {
149
+ const result = {};
150
+ for (const entry of entries) {
151
+ const key = classifier(entry);
152
+ if (!result[key]) {
153
+ result[key] = [];
154
+ }
155
+ result[key].push(entry);
156
+ }
157
+ return result;
158
+ }
159
+ //# sourceMappingURL=parallel-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-installer.js","sourceRoot":"","sources":["../src/parallel-installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@microwiseai/snapshot-parallel",
3
+ "version": "0.1.0",
4
+ "description": "Parallel package installer with concurrency control for Snapshot CLI",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "dev": "tsc --watch",
17
+ "test": "vitest",
18
+ "test:run": "vitest run",
19
+ "prepublishOnly": "npm run build"
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "keywords": [
25
+ "snapshot",
26
+ "parallel",
27
+ "installer",
28
+ "concurrency"
29
+ ],
30
+ "author": "IST Team",
31
+ "license": "MIT",
32
+ "dependencies": {},
33
+ "devDependencies": {
34
+ "@types/node": "^20.11.0",
35
+ "typescript": "^5.7.3",
36
+ "vitest": "^4.0.18"
37
+ },
38
+ "engines": {
39
+ "node": ">=18.0.0"
40
+ }
41
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microwiseai/snapshot",
3
- "version": "0.3.46",
3
+ "version": "0.3.57",
4
4
  "description": "CLI for installing IST Snapshot packages",
5
5
  "type": "module",
6
6
  "main": "./dist/lib.js",
@@ -35,7 +35,9 @@
35
35
  "@ist/registry-config",
36
36
  "@microwiseai/import-telemetry",
37
37
  "@microwiseai/license",
38
- "@microwiseai/skit"
38
+ "@microwiseai/skit",
39
+ "@microwiseai/snapshot-dedup",
40
+ "@microwiseai/snapshot-parallel"
39
41
  ],
40
42
  "keywords": [
41
43
  "snapshot",
@@ -72,6 +74,8 @@
72
74
  "@ist/registry-config",
73
75
  "@microwiseai/import-telemetry",
74
76
  "@microwiseai/license",
75
- "@microwiseai/skit"
77
+ "@microwiseai/skit",
78
+ "@microwiseai/snapshot-dedup",
79
+ "@microwiseai/snapshot-parallel"
76
80
  ]
77
81
  }