@microwiseai/snapshot 0.3.71 → 0.4.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/doctor.js.map +1 -1
- package/dist/commands/install.d.ts +9 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +210 -17
- 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 +37 -11
- 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/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 +9 -4
- 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/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
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
// Mock gitlab.js to avoid network calls
|
|
3
|
-
vi.mock('./gitlab.js', () => ({
|
|
4
|
-
fetchSnapshotFromRepo: vi.fn(),
|
|
5
|
-
}));
|
|
6
|
-
// Mock config.js to provide test values
|
|
7
|
-
vi.mock('./config.js', async (importOriginal) => {
|
|
8
|
-
const original = await importOriginal();
|
|
9
|
-
return {
|
|
10
|
-
...original,
|
|
11
|
-
getLicenseKey: vi.fn(() => 'test-license-key'),
|
|
12
|
-
REGISTRY_PROXY_URL: 'https://test-registry.example.com',
|
|
13
|
-
GITLAB_GROUP_ID: '12345',
|
|
14
|
-
LICENSE_API_URL: 'https://test-license.example.com',
|
|
15
|
-
};
|
|
16
|
-
});
|
|
17
|
-
describe('transitive-resolver.ts - Scope Extraction', () => {
|
|
18
|
-
let fetchSnapshotFromRepo;
|
|
19
|
-
let resolveAllDependencies;
|
|
20
|
-
let clearTransitiveCache;
|
|
21
|
-
beforeEach(async () => {
|
|
22
|
-
vi.resetModules();
|
|
23
|
-
// Get mocked fetchSnapshotFromRepo
|
|
24
|
-
const gitlabModule = await import('./gitlab.js');
|
|
25
|
-
fetchSnapshotFromRepo = gitlabModule.fetchSnapshotFromRepo;
|
|
26
|
-
// Import the module under test
|
|
27
|
-
const transitiveResolver = await import('./transitive-resolver.js');
|
|
28
|
-
resolveAllDependencies = transitiveResolver.resolveAllDependencies;
|
|
29
|
-
clearTransitiveCache = transitiveResolver.clearTransitiveCache;
|
|
30
|
-
});
|
|
31
|
-
afterEach(() => {
|
|
32
|
-
vi.clearAllMocks();
|
|
33
|
-
clearTransitiveCache?.();
|
|
34
|
-
});
|
|
35
|
-
describe('extractScopesFromRegistry - Dynamic Scope Extraction', () => {
|
|
36
|
-
it('should extract scopes from snapshot.registry field', async () => {
|
|
37
|
-
const mockSnapshot = {
|
|
38
|
-
name: '@ist/test-snapshot',
|
|
39
|
-
version: '1.0.0',
|
|
40
|
-
registry: {
|
|
41
|
-
'@ist': { group: '110834981' },
|
|
42
|
-
'@microwiseai': { group: '99999999' },
|
|
43
|
-
},
|
|
44
|
-
install: {
|
|
45
|
-
npm: {
|
|
46
|
-
'@ist/some-package': '1.0.0',
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
fetchSnapshotFromRepo.mockResolvedValue(mockSnapshot);
|
|
51
|
-
const result = await resolveAllDependencies('@ist/test-snapshot', {
|
|
52
|
-
resolveTransitive: false, // Skip actual transitive resolution
|
|
53
|
-
});
|
|
54
|
-
// scopeGroups should contain extracted scopes from registry
|
|
55
|
-
expect(result.scopeGroups).toHaveProperty('@ist');
|
|
56
|
-
expect(result.scopeGroups).toHaveProperty('@microwiseai');
|
|
57
|
-
expect(result.scopeGroups['@ist']).toBe('110834981');
|
|
58
|
-
expect(result.scopeGroups['@microwiseai']).toBe('99999999');
|
|
59
|
-
});
|
|
60
|
-
it('should extract scopes from extended snapshot registry', async () => {
|
|
61
|
-
const baseSnapshot = {
|
|
62
|
-
name: '@ist/base',
|
|
63
|
-
version: '1.0.0',
|
|
64
|
-
registry: {
|
|
65
|
-
'@ist': { group: '110834981' },
|
|
66
|
-
},
|
|
67
|
-
install: {},
|
|
68
|
-
};
|
|
69
|
-
const extendedSnapshot = {
|
|
70
|
-
name: '@ist/extended',
|
|
71
|
-
version: '1.0.0',
|
|
72
|
-
extends: '@ist/base',
|
|
73
|
-
registry: {
|
|
74
|
-
'@custom': { group: '88888888' },
|
|
75
|
-
},
|
|
76
|
-
install: {},
|
|
77
|
-
};
|
|
78
|
-
fetchSnapshotFromRepo.mockImplementation(async (name) => {
|
|
79
|
-
if (name === '@ist/extended')
|
|
80
|
-
return extendedSnapshot;
|
|
81
|
-
if (name === '@ist/base')
|
|
82
|
-
return baseSnapshot;
|
|
83
|
-
throw new Error(`Unknown snapshot: ${name}`);
|
|
84
|
-
});
|
|
85
|
-
const result = await resolveAllDependencies('@ist/extended', {
|
|
86
|
-
resolveTransitive: false,
|
|
87
|
-
});
|
|
88
|
-
// Should have scopes from both base and extended snapshots
|
|
89
|
-
expect(result.scopeGroups).toHaveProperty('@ist');
|
|
90
|
-
expect(result.scopeGroups).toHaveProperty('@custom');
|
|
91
|
-
});
|
|
92
|
-
it('should return empty scopeGroups when no registry defined', async () => {
|
|
93
|
-
const mockSnapshot = {
|
|
94
|
-
name: '@ist/no-registry',
|
|
95
|
-
version: '1.0.0',
|
|
96
|
-
install: {},
|
|
97
|
-
};
|
|
98
|
-
fetchSnapshotFromRepo.mockResolvedValue(mockSnapshot);
|
|
99
|
-
const result = await resolveAllDependencies('@ist/no-registry', {
|
|
100
|
-
resolveTransitive: false,
|
|
101
|
-
});
|
|
102
|
-
expect(result.scopeGroups).toEqual({});
|
|
103
|
-
});
|
|
104
|
-
it('should not overwrite scope if already collected from parent', async () => {
|
|
105
|
-
// Base has @ist → group A
|
|
106
|
-
const baseSnapshot = {
|
|
107
|
-
name: '@ist/base',
|
|
108
|
-
version: '1.0.0',
|
|
109
|
-
registry: {
|
|
110
|
-
'@ist': { group: 'base-group' },
|
|
111
|
-
},
|
|
112
|
-
install: {},
|
|
113
|
-
};
|
|
114
|
-
// Child also defines @ist → group B (should be ignored since base comes first)
|
|
115
|
-
const childSnapshot = {
|
|
116
|
-
name: '@ist/child',
|
|
117
|
-
version: '1.0.0',
|
|
118
|
-
extends: '@ist/base',
|
|
119
|
-
registry: {
|
|
120
|
-
'@ist': { group: 'child-group' },
|
|
121
|
-
},
|
|
122
|
-
install: {},
|
|
123
|
-
};
|
|
124
|
-
fetchSnapshotFromRepo.mockImplementation(async (name) => {
|
|
125
|
-
if (name === '@ist/child')
|
|
126
|
-
return childSnapshot;
|
|
127
|
-
if (name === '@ist/base')
|
|
128
|
-
return baseSnapshot;
|
|
129
|
-
throw new Error(`Unknown snapshot: ${name}`);
|
|
130
|
-
});
|
|
131
|
-
const result = await resolveAllDependencies('@ist/child', {
|
|
132
|
-
resolveTransitive: false,
|
|
133
|
-
});
|
|
134
|
-
// First collected scope wins (from base snapshot traversed first)
|
|
135
|
-
expect(result.scopeGroups['@ist']).toBe('base-group');
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
describe('Package Collection', () => {
|
|
139
|
-
it('should collect npm packages from install.npm', async () => {
|
|
140
|
-
const mockSnapshot = {
|
|
141
|
-
name: '@ist/pkg-test',
|
|
142
|
-
version: '1.0.0',
|
|
143
|
-
install: {
|
|
144
|
-
npm: {
|
|
145
|
-
'@ist/package-a': '1.0.0',
|
|
146
|
-
'@ist/package-b': '2.0.0',
|
|
147
|
-
},
|
|
148
|
-
},
|
|
149
|
-
};
|
|
150
|
-
fetchSnapshotFromRepo.mockResolvedValue(mockSnapshot);
|
|
151
|
-
const result = await resolveAllDependencies('@ist/pkg-test', {
|
|
152
|
-
resolveTransitive: false,
|
|
153
|
-
});
|
|
154
|
-
expect(result.npm.length).toBe(2);
|
|
155
|
-
const names = result.npm.map(p => p.name);
|
|
156
|
-
expect(names).toContain('@ist/package-a');
|
|
157
|
-
expect(names).toContain('@ist/package-b');
|
|
158
|
-
});
|
|
159
|
-
it('should collect skit packages from install.skit', async () => {
|
|
160
|
-
const mockSnapshot = {
|
|
161
|
-
name: '@ist/skit-test',
|
|
162
|
-
version: '1.0.0',
|
|
163
|
-
install: {
|
|
164
|
-
skit: {
|
|
165
|
-
'@ist/my-kit': '1.0.0',
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
};
|
|
169
|
-
fetchSnapshotFromRepo.mockResolvedValue(mockSnapshot);
|
|
170
|
-
const result = await resolveAllDependencies('@ist/skit-test', {
|
|
171
|
-
resolveTransitive: false,
|
|
172
|
-
});
|
|
173
|
-
expect(result.skit.length).toBe(1);
|
|
174
|
-
expect(result.skit[0].name).toBe('@ist/my-kit');
|
|
175
|
-
expect(result.skit[0].source).toBe('snapshot');
|
|
176
|
-
});
|
|
177
|
-
it('should collect from legacy packages field', async () => {
|
|
178
|
-
const mockSnapshot = {
|
|
179
|
-
name: '@ist/legacy',
|
|
180
|
-
version: '1.0.0',
|
|
181
|
-
packages: {
|
|
182
|
-
'@ist/legacy-pkg': '1.0.0',
|
|
183
|
-
'@ist/legacy-kit': '1.0.0', // -kit suffix → skit
|
|
184
|
-
},
|
|
185
|
-
};
|
|
186
|
-
fetchSnapshotFromRepo.mockResolvedValue(mockSnapshot);
|
|
187
|
-
const result = await resolveAllDependencies('@ist/legacy', {
|
|
188
|
-
resolveTransitive: false,
|
|
189
|
-
});
|
|
190
|
-
// kit suffix package goes to skit
|
|
191
|
-
const skitNames = result.skit.map(p => p.name);
|
|
192
|
-
expect(skitNames).toContain('@ist/legacy-kit');
|
|
193
|
-
// regular package goes to npm
|
|
194
|
-
const npmNames = result.npm.map(p => p.name);
|
|
195
|
-
expect(npmNames).toContain('@ist/legacy-pkg');
|
|
196
|
-
});
|
|
197
|
-
it('should collect from skits field', async () => {
|
|
198
|
-
const mockSnapshot = {
|
|
199
|
-
name: '@ist/skits-test',
|
|
200
|
-
version: '1.0.0',
|
|
201
|
-
skits: {
|
|
202
|
-
'@ist/direct-kit': '1.0.0',
|
|
203
|
-
},
|
|
204
|
-
};
|
|
205
|
-
fetchSnapshotFromRepo.mockResolvedValue(mockSnapshot);
|
|
206
|
-
const result = await resolveAllDependencies('@ist/skits-test', {
|
|
207
|
-
resolveTransitive: false,
|
|
208
|
-
});
|
|
209
|
-
expect(result.skit.length).toBe(1);
|
|
210
|
-
expect(result.skit[0].name).toBe('@ist/direct-kit');
|
|
211
|
-
expect(result.skit[0].isDirect).toBe(true);
|
|
212
|
-
});
|
|
213
|
-
});
|
|
214
|
-
describe('Error Handling', () => {
|
|
215
|
-
it('should record errors when snapshot fetch fails', async () => {
|
|
216
|
-
fetchSnapshotFromRepo.mockRejectedValue(new Error('Network error'));
|
|
217
|
-
const result = await resolveAllDependencies('@ist/failing', {
|
|
218
|
-
resolveTransitive: false,
|
|
219
|
-
});
|
|
220
|
-
expect(result.errors.length).toBeGreaterThan(0);
|
|
221
|
-
expect(result.errors[0].name).toBe('@ist/failing');
|
|
222
|
-
expect(result.errors[0].error).toContain('Network error');
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
describe('TransitiveResolutionResult structure', () => {
|
|
226
|
-
it('should return expected structure', async () => {
|
|
227
|
-
const mockSnapshot = {
|
|
228
|
-
name: '@ist/structure-test',
|
|
229
|
-
version: '1.0.0',
|
|
230
|
-
install: {},
|
|
231
|
-
};
|
|
232
|
-
fetchSnapshotFromRepo.mockResolvedValue(mockSnapshot);
|
|
233
|
-
const result = await resolveAllDependencies('@ist/structure-test', {
|
|
234
|
-
resolveTransitive: false,
|
|
235
|
-
});
|
|
236
|
-
expect(result).toHaveProperty('npm');
|
|
237
|
-
expect(result).toHaveProperty('skit');
|
|
238
|
-
expect(result).toHaveProperty('errors');
|
|
239
|
-
expect(result).toHaveProperty('scopeGroups');
|
|
240
|
-
expect(Array.isArray(result.npm)).toBe(true);
|
|
241
|
-
expect(Array.isArray(result.skit)).toBe(true);
|
|
242
|
-
expect(Array.isArray(result.errors)).toBe(true);
|
|
243
|
-
expect(typeof result.scopeGroups).toBe('object');
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
describe('resolveDepsFromLicenseAPI', () => {
|
|
248
|
-
let resolveDepsFromLicenseAPI;
|
|
249
|
-
beforeEach(async () => {
|
|
250
|
-
vi.resetModules();
|
|
251
|
-
const transitiveResolver = await import('./transitive-resolver.js');
|
|
252
|
-
resolveDepsFromLicenseAPI = transitiveResolver.resolveDepsFromLicenseAPI;
|
|
253
|
-
});
|
|
254
|
-
afterEach(() => {
|
|
255
|
-
vi.clearAllMocks();
|
|
256
|
-
});
|
|
257
|
-
it('should throw if packages array is empty', async () => {
|
|
258
|
-
await expect(resolveDepsFromLicenseAPI({
|
|
259
|
-
packages: [],
|
|
260
|
-
groupId: '12345',
|
|
261
|
-
scopes: ['@ist'],
|
|
262
|
-
})).rejects.toThrow('packages array is required');
|
|
263
|
-
});
|
|
264
|
-
it('should throw if groupId is missing', async () => {
|
|
265
|
-
await expect(resolveDepsFromLicenseAPI({
|
|
266
|
-
packages: ['@ist/pkg@1.0.0'],
|
|
267
|
-
groupId: '',
|
|
268
|
-
scopes: ['@ist'],
|
|
269
|
-
})).rejects.toThrow('groupId is required');
|
|
270
|
-
});
|
|
271
|
-
it('should throw if scopes array is empty', async () => {
|
|
272
|
-
await expect(resolveDepsFromLicenseAPI({
|
|
273
|
-
packages: ['@ist/pkg@1.0.0'],
|
|
274
|
-
groupId: '12345',
|
|
275
|
-
scopes: [],
|
|
276
|
-
})).rejects.toThrow('scopes array is required');
|
|
277
|
-
});
|
|
278
|
-
});
|
|
279
|
-
//# sourceMappingURL=transitive-resolver.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transitive-resolver.test.js","sourceRoot":"","sources":["../../src/lib/transitive-resolver.test.ts"],"names":[],"mappings":"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"}
|