@microwiseai/snapshot 0.7.0 → 0.9.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.
Files changed (116) hide show
  1. package/dist/build-info.json +1 -0
  2. package/dist/commands/access.d.ts +25 -9
  3. package/dist/commands/access.d.ts.map +1 -1
  4. package/dist/commands/access.js +101 -47
  5. package/dist/commands/access.js.map +1 -1
  6. package/dist/commands/config.d.ts +3 -0
  7. package/dist/commands/config.d.ts.map +1 -0
  8. package/dist/commands/config.js +37 -0
  9. package/dist/commands/config.js.map +1 -0
  10. package/dist/commands/install.d.ts +54 -0
  11. package/dist/commands/install.d.ts.map +1 -1
  12. package/dist/commands/install.js +480 -65
  13. package/dist/commands/install.js.map +1 -1
  14. package/dist/commands/publish.d.ts +10 -0
  15. package/dist/commands/publish.d.ts.map +1 -1
  16. package/dist/commands/publish.js +94 -12
  17. package/dist/commands/publish.js.map +1 -1
  18. package/dist/index.js +45 -8
  19. package/dist/index.js.map +1 -1
  20. package/dist/lib/access-index.d.ts +81 -0
  21. package/dist/lib/access-index.d.ts.map +1 -0
  22. package/dist/lib/access-index.js +175 -0
  23. package/dist/lib/access-index.js.map +1 -0
  24. package/dist/lib/access-sync.d.ts +66 -17
  25. package/dist/lib/access-sync.d.ts.map +1 -1
  26. package/dist/lib/access-sync.js +391 -213
  27. package/dist/lib/access-sync.js.map +1 -1
  28. package/dist/lib/config.d.ts +12 -0
  29. package/dist/lib/config.d.ts.map +1 -1
  30. package/dist/lib/config.js +38 -5
  31. package/dist/lib/config.js.map +1 -1
  32. package/dist/lib/extends-access.d.ts +34 -0
  33. package/dist/lib/extends-access.d.ts.map +1 -0
  34. package/dist/lib/extends-access.js +82 -0
  35. package/dist/lib/extends-access.js.map +1 -0
  36. package/dist/lib/gitlab-publisher.d.ts +70 -0
  37. package/dist/lib/gitlab-publisher.d.ts.map +1 -0
  38. package/dist/lib/gitlab-publisher.js +165 -0
  39. package/dist/lib/gitlab-publisher.js.map +1 -0
  40. package/dist/lib/gitlab.d.ts +4 -0
  41. package/dist/lib/gitlab.d.ts.map +1 -1
  42. package/dist/lib/gitlab.js +1 -1
  43. package/dist/lib/gitlab.js.map +1 -1
  44. package/dist/lib/grant.d.ts +157 -0
  45. package/dist/lib/grant.d.ts.map +1 -0
  46. package/dist/lib/grant.js +352 -0
  47. package/dist/lib/grant.js.map +1 -0
  48. package/dist/lib/install-verify.d.ts +16 -2
  49. package/dist/lib/install-verify.d.ts.map +1 -1
  50. package/dist/lib/install-verify.js +24 -3
  51. package/dist/lib/install-verify.js.map +1 -1
  52. package/dist/lib/ledger.d.ts +13 -0
  53. package/dist/lib/ledger.d.ts.map +1 -1
  54. package/dist/lib/ledger.js.map +1 -1
  55. package/dist/lib/prerequisites.d.ts.map +1 -1
  56. package/dist/lib/prerequisites.js +4 -1
  57. package/dist/lib/prerequisites.js.map +1 -1
  58. package/dist/lib/proxy-auth-globalconfig.d.ts +55 -0
  59. package/dist/lib/proxy-auth-globalconfig.d.ts.map +1 -0
  60. package/dist/lib/proxy-auth-globalconfig.js +110 -0
  61. package/dist/lib/proxy-auth-globalconfig.js.map +1 -0
  62. package/dist/lib/semver-range.d.ts +32 -0
  63. package/dist/lib/semver-range.d.ts.map +1 -0
  64. package/dist/lib/semver-range.js +243 -0
  65. package/dist/lib/semver-range.js.map +1 -0
  66. package/dist/lib/session.d.ts +5 -0
  67. package/dist/lib/session.d.ts.map +1 -1
  68. package/dist/lib/session.js +9 -0
  69. package/dist/lib/session.js.map +1 -1
  70. package/dist/lib/skit-adapter.d.ts.map +1 -1
  71. package/dist/lib/skit-adapter.js +80 -23
  72. package/dist/lib/skit-adapter.js.map +1 -1
  73. package/dist/lib/timing.d.ts +7 -0
  74. package/dist/lib/timing.d.ts.map +1 -0
  75. package/dist/lib/timing.js +14 -0
  76. package/dist/lib/timing.js.map +1 -0
  77. package/dist/lib/types.d.ts +3 -0
  78. package/dist/lib/types.d.ts.map +1 -1
  79. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.d.ts +25 -0
  80. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.d.ts.map +1 -0
  81. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.js +55 -0
  82. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.js.map +1 -0
  83. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.d.ts +52 -0
  84. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.d.ts.map +1 -0
  85. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.js +62 -0
  86. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.js.map +1 -0
  87. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.d.ts +30 -0
  88. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.d.ts.map +1 -0
  89. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.js +39 -0
  90. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.js.map +1 -0
  91. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.d.ts +35 -0
  92. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.d.ts.map +1 -0
  93. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.js +31 -0
  94. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.js.map +1 -0
  95. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.d.ts +42 -0
  96. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.d.ts.map +1 -0
  97. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.js +36 -0
  98. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.js.map +1 -0
  99. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.d.ts +11 -0
  100. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.d.ts.map +1 -0
  101. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.js +46 -0
  102. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.js.map +1 -0
  103. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.d.ts +11 -0
  104. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.d.ts.map +1 -0
  105. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.js +81 -0
  106. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.js.map +1 -0
  107. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.d.ts +29 -0
  108. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.d.ts.map +1 -0
  109. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.js +6 -0
  110. package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.js.map +1 -0
  111. package/node_modules/@microwiseai/snapshot-downgrade-guard/package.json +55 -0
  112. package/package.json +9 -2
  113. package/dist/lib/transitive-resolver.d.ts +0 -89
  114. package/dist/lib/transitive-resolver.d.ts.map +0 -1
  115. package/dist/lib/transitive-resolver.js +0 -436
  116. package/dist/lib/transitive-resolver.js.map +0 -1
@@ -1,436 +0,0 @@
1
- /**
2
- * Transitive Dependency Resolver
3
- *
4
- * snapshot과 skit을 재귀적으로 탐색하여 모든 npm 패키지를 수집하고
5
- * registry-proxy의 /resolve-deps API를 통해 transitive deps를 해석
6
- */
7
- import { getLicenseKey, REGISTRY_PROXY_URL, GITLAB_GROUP_ID } from './config.js';
8
- import { fetchSnapshotFromRepo } from './gitlab.js';
9
- // ============================================================
10
- // Skit Manifest Fetcher
11
- // ============================================================
12
- const skitManifestCache = new Map();
13
- /**
14
- * Skit 패키지의 skit.json을 가져옴
15
- */
16
- async function fetchSkitManifest(pkgName, _version) {
17
- const cacheKey = `${pkgName}@${_version}`;
18
- if (skitManifestCache.has(cacheKey)) {
19
- return skitManifestCache.get(cacheKey);
20
- }
21
- const sessionToken = getLicenseKey();
22
- const headers = {
23
- 'Accept': 'application/json',
24
- };
25
- if (sessionToken) {
26
- headers['Authorization'] = `Bearer ${sessionToken}`;
27
- }
28
- try {
29
- // registry-proxy를 통해 패키지 메타데이터 조회
30
- const url = `${REGISTRY_PROXY_URL}/${pkgName}`;
31
- const response = await fetch(url, { headers });
32
- if (!response.ok) {
33
- return null;
34
- }
35
- const data = await response.json();
36
- const distTags = data['dist-tags'];
37
- const versions = data['versions'];
38
- // 버전 확인 (latest 또는 지정된 버전)
39
- let targetVersion = _version;
40
- if (_version === 'latest' && distTags?.['latest']) {
41
- targetVersion = distTags['latest'];
42
- }
43
- const versionData = versions?.[targetVersion];
44
- if (!versionData) {
45
- return null;
46
- }
47
- // skit.json 데이터 추출 (패키지에 포함된 경우)
48
- const skitConfig = versionData['skit'];
49
- const manifest = {
50
- name: pkgName,
51
- version: targetVersion,
52
- dependencies: skitConfig ? { ...skitConfig } : undefined,
53
- };
54
- skitManifestCache.set(cacheKey, manifest);
55
- return manifest;
56
- }
57
- catch {
58
- return null;
59
- }
60
- }
61
- /**
62
- * Snapshot을 재귀적으로 탐색
63
- */
64
- async function traverseSnapshot(snapshotName, ctx) {
65
- if (ctx.visitedSnapshots.has(snapshotName)) {
66
- return;
67
- }
68
- ctx.visitedSnapshots.add(snapshotName);
69
- let snapshot;
70
- try {
71
- snapshot = await fetchSnapshotFromRepo(snapshotName);
72
- }
73
- catch (error) {
74
- ctx.errors.push({
75
- name: snapshotName,
76
- error: `Failed to fetch snapshot: ${error instanceof Error ? error.message : String(error)}`,
77
- });
78
- return;
79
- }
80
- // extends 처리 (먼저 base snapshot 탐색)
81
- if (snapshot.extends) {
82
- await traverseSnapshot(snapshot.extends, ctx);
83
- }
84
- // registry 정보 수집 (scope → group 매핑)
85
- if (snapshot.registry) {
86
- for (const [scope, config] of Object.entries(snapshot.registry)) {
87
- if (config.group && !ctx.scopeGroups.has(scope)) {
88
- ctx.scopeGroups.set(scope, config.group);
89
- }
90
- }
91
- }
92
- // skits 필드 처리
93
- if (snapshot.skits) {
94
- for (const [name, version] of Object.entries(snapshot.skits)) {
95
- if (!ctx.collectedSkit.has(name)) {
96
- ctx.collectedSkit.set(name, {
97
- name,
98
- version,
99
- isDirect: true,
100
- source: 'snapshot',
101
- });
102
- }
103
- await traverseSkit(name, version, ctx);
104
- }
105
- }
106
- // install 블록 처리
107
- if (snapshot.install) {
108
- for (const [installerName, packages] of Object.entries(snapshot.install)) {
109
- for (const [name, version] of Object.entries(packages)) {
110
- if (installerName === 'skit') {
111
- if (!ctx.collectedSkit.has(name)) {
112
- ctx.collectedSkit.set(name, {
113
- name,
114
- version,
115
- isDirect: true,
116
- source: 'snapshot',
117
- });
118
- }
119
- await traverseSkit(name, version, ctx);
120
- }
121
- else {
122
- // npm 또는 glpkg 패키지
123
- if (!ctx.collectedNpm.has(name)) {
124
- ctx.collectedNpm.set(name, {
125
- name,
126
- version,
127
- isDirect: true,
128
- source: 'snapshot',
129
- });
130
- }
131
- }
132
- }
133
- }
134
- }
135
- // packages 필드 (legacy)
136
- if (snapshot.packages) {
137
- for (const [name, version] of Object.entries(snapshot.packages)) {
138
- // -kit로 끝나면 skit으로 간주
139
- if (name.endsWith('-kit') || name.endsWith('kit')) {
140
- if (!ctx.collectedSkit.has(name)) {
141
- ctx.collectedSkit.set(name, {
142
- name,
143
- version,
144
- isDirect: true,
145
- source: 'snapshot',
146
- });
147
- }
148
- await traverseSkit(name, version, ctx);
149
- }
150
- else {
151
- if (!ctx.collectedNpm.has(name)) {
152
- ctx.collectedNpm.set(name, {
153
- name,
154
- version,
155
- isDirect: true,
156
- source: 'snapshot',
157
- });
158
- }
159
- }
160
- }
161
- }
162
- }
163
- /**
164
- * Skit을 재귀적으로 탐색
165
- */
166
- async function traverseSkit(skitName, skitVersion, ctx) {
167
- const key = `${skitName}@${skitVersion}`;
168
- if (ctx.visitedSkits.has(key)) {
169
- return;
170
- }
171
- ctx.visitedSkits.add(key);
172
- const manifest = await fetchSkitManifest(skitName, skitVersion);
173
- if (!manifest) {
174
- // skit manifest 없으면 스킵 (콘텐츠 전용 skit일 수 있음)
175
- return;
176
- }
177
- const deps = manifest.dependencies;
178
- if (!deps) {
179
- return;
180
- }
181
- // npm 의존성 수집
182
- if (deps.npm) {
183
- for (const [name, version] of Object.entries(deps.npm)) {
184
- if (!ctx.collectedNpm.has(name)) {
185
- ctx.collectedNpm.set(name, {
186
- name,
187
- version,
188
- isDirect: false,
189
- source: 'skit',
190
- requestedBy: skitName,
191
- });
192
- }
193
- }
194
- }
195
- // skit 의존성 재귀 탐색
196
- if (deps.skit) {
197
- for (const [name, version] of Object.entries(deps.skit)) {
198
- if (!ctx.collectedSkit.has(name)) {
199
- ctx.collectedSkit.set(name, {
200
- name,
201
- version,
202
- isDirect: false,
203
- source: 'skit',
204
- requestedBy: skitName,
205
- });
206
- }
207
- await traverseSkit(name, version, ctx);
208
- }
209
- }
210
- // cli 의존성에서 npm 패키지 추출 시도 (deprecated, 하위호환)
211
- if (deps.cli) {
212
- for (const cli of deps.cli) {
213
- const npmMatch = cli.install.match(/npm\s+install\s+(?:-g\s+)?(@?[\w/-]+)(?:@(\S+))?/);
214
- if (npmMatch) {
215
- const pkgName = npmMatch[1];
216
- const pkgVersion = npmMatch[2] || 'latest';
217
- if (!ctx.collectedNpm.has(pkgName)) {
218
- ctx.collectedNpm.set(pkgName, {
219
- name: pkgName,
220
- version: pkgVersion,
221
- isDirect: false,
222
- source: 'skit',
223
- requestedBy: skitName,
224
- });
225
- }
226
- }
227
- }
228
- }
229
- }
230
- /**
231
- * Registry-proxy의 /resolve-deps API를 호출하여
232
- * npm 패키지의 transitive dependencies 해석
233
- */
234
- async function resolveNpmTransitiveDeps(packages, scopes, groupId) {
235
- if (packages.length === 0 || !groupId) {
236
- return packages.map(p => ({
237
- ...p,
238
- isDirect: true,
239
- source: 'snapshot',
240
- }));
241
- }
242
- const sessionToken = getLicenseKey();
243
- const headers = {
244
- 'Content-Type': 'application/json',
245
- 'Accept': 'application/json',
246
- };
247
- if (sessionToken) {
248
- headers['Authorization'] = `Bearer ${sessionToken}`;
249
- }
250
- try {
251
- const url = `${REGISTRY_PROXY_URL}/resolve-deps`;
252
- const body = {
253
- packages: packages.map(p => `${p.name}@${p.version}`),
254
- groupId,
255
- scopes,
256
- includePeer: true,
257
- };
258
- const response = await fetch(url, {
259
- method: 'POST',
260
- headers,
261
- body: JSON.stringify(body),
262
- });
263
- if (!response.ok) {
264
- console.warn(`[TransitiveResolver] Failed to resolve transitive deps: ${response.status}`);
265
- return packages.map(p => ({
266
- ...p,
267
- isDirect: true,
268
- source: 'snapshot',
269
- }));
270
- }
271
- const data = await response.json();
272
- return data.dependencies.map(d => ({
273
- name: d.name,
274
- version: d.version,
275
- isDirect: d.isDirect,
276
- source: 'transitive',
277
- requestedBy: d.requestedBy,
278
- }));
279
- }
280
- catch (error) {
281
- console.warn(`[TransitiveResolver] Error calling /resolve-deps: ${error}`);
282
- return packages.map(p => ({
283
- ...p,
284
- isDirect: true,
285
- source: 'snapshot',
286
- }));
287
- }
288
- }
289
- /**
290
- * Snapshot의 모든 의존성을 재귀적으로 탐색하고
291
- * npm transitive deps까지 해석
292
- *
293
- * NOTE: scopes는 snapshot.json의 registry 필드에서 동적으로 추출됨
294
- * options.scopes가 지정되면 해당 값 사용, 아니면 수집된 scopeGroups 사용
295
- */
296
- export async function resolveAllDependencies(snapshotName, options = {}) {
297
- const { resolveTransitive = true, scopes: providedScopes, groupId = GITLAB_GROUP_ID, } = options;
298
- const ctx = {
299
- visitedSnapshots: new Set(),
300
- visitedSkits: new Set(),
301
- collectedNpm: new Map(),
302
- collectedSkit: new Map(),
303
- errors: [],
304
- scopeGroups: new Map(),
305
- };
306
- // 1. Snapshot/Skit 재귀 탐색
307
- await traverseSnapshot(snapshotName, ctx);
308
- // 2. npm transitive deps 해석 (optional)
309
- let npmPackages = Array.from(ctx.collectedNpm.values());
310
- if (resolveTransitive && npmPackages.length > 0) {
311
- // scopes: 제공된 값 사용 또는 snapshot.registry에서 수집한 scopes 사용
312
- const effectiveScopes = providedScopes || Array.from(ctx.scopeGroups.keys());
313
- // 추적 대상 스코프의 패키지만 transitive 해석
314
- const trackedPackages = npmPackages.filter(p => effectiveScopes.some(scope => p.name.startsWith(scope)));
315
- // snapshot.registry에서 수집한 group 또는 옵션에서 제공된 groupId 사용
316
- const effectiveGroupId = groupId || Array.from(ctx.scopeGroups.values())[0] || '';
317
- if (trackedPackages.length > 0 && effectiveGroupId && effectiveScopes.length > 0) {
318
- const resolved = await resolveNpmTransitiveDeps(trackedPackages, effectiveScopes, effectiveGroupId);
319
- // 기존 수집된 것과 merge
320
- for (const pkg of resolved) {
321
- if (!ctx.collectedNpm.has(pkg.name)) {
322
- ctx.collectedNpm.set(pkg.name, pkg);
323
- }
324
- }
325
- npmPackages = Array.from(ctx.collectedNpm.values());
326
- }
327
- }
328
- return {
329
- npm: npmPackages,
330
- skit: Array.from(ctx.collectedSkit.values()),
331
- errors: ctx.errors,
332
- scopeGroups: Object.fromEntries(ctx.scopeGroups),
333
- };
334
- }
335
- /**
336
- * license-api의 /resolve-deps API를 호출하여 의존성 해석
337
- *
338
- * @example
339
- * const result = await resolveDepsFromLicenseAPI({
340
- * groupId: 12345,
341
- * scopes: ['@ist', '@microwiseai'],
342
- * includePeer: true,
343
- * });
344
- * // result.dependencies: { "@ist/tda-kit": "^1.0.0" }
345
- * // result.peerDependencies: { "typescript": "^5.0.0" }
346
- */
347
- export async function resolveDepsFromLicenseAPI(options) {
348
- const { packages, groupId, scopes, includePeer = true } = options;
349
- // Validate required params
350
- if (!packages || packages.length === 0) {
351
- throw new Error('[resolveDepsFromLicenseAPI] packages array is required');
352
- }
353
- if (!groupId) {
354
- throw new Error('[resolveDepsFromLicenseAPI] groupId is required');
355
- }
356
- if (!scopes || scopes.length === 0) {
357
- throw new Error('[resolveDepsFromLicenseAPI] scopes array is required');
358
- }
359
- const sessionToken = getLicenseKey();
360
- if (!sessionToken) {
361
- throw new Error('[resolveDepsFromLicenseAPI] No session token available. Please run "snapshot login" first.');
362
- }
363
- // Build URL: REGISTRY_PROXY_URL + /resolve-deps
364
- const url = `${REGISTRY_PROXY_URL}/resolve-deps`;
365
- const headers = {
366
- 'Content-Type': 'application/json',
367
- 'Accept': 'application/json',
368
- 'Authorization': `Bearer ${sessionToken}`,
369
- };
370
- const body = {
371
- packages,
372
- groupId,
373
- scopes,
374
- includePeer,
375
- };
376
- try {
377
- const response = await fetch(url, {
378
- method: 'POST',
379
- headers,
380
- body: JSON.stringify(body),
381
- });
382
- if (!response.ok) {
383
- // Handle specific error codes
384
- if (response.status === 401) {
385
- throw new Error('[resolveDepsFromLicenseAPI] Unauthorized. Session token may be expired. Please run "snapshot login" again.');
386
- }
387
- if (response.status === 403) {
388
- throw new Error('[resolveDepsFromLicenseAPI] Forbidden. You may not have access to this group.');
389
- }
390
- if (response.status === 404) {
391
- throw new Error('[resolveDepsFromLicenseAPI] API endpoint not found. License API may be unavailable.');
392
- }
393
- const errorText = await response.text().catch(() => '');
394
- throw new Error(`[resolveDepsFromLicenseAPI] HTTP ${response.status}: ${errorText || response.statusText}`);
395
- }
396
- const rawData = await response.json();
397
- // Validate response structure
398
- if (!rawData.dependencies || !Array.isArray(rawData.dependencies)) {
399
- throw new Error('[resolveDepsFromLicenseAPI] Invalid response: missing dependencies array');
400
- }
401
- // Convert array format to Record format
402
- const dependencies = {};
403
- for (const dep of rawData.dependencies) {
404
- if (dep.name && dep.version) {
405
- dependencies[dep.name] = dep.version;
406
- }
407
- }
408
- const peerDependencies = {};
409
- if (rawData.peerDependencies && Array.isArray(rawData.peerDependencies)) {
410
- for (const dep of rawData.peerDependencies) {
411
- if (dep.name && dep.version) {
412
- peerDependencies[dep.name] = dep.version;
413
- }
414
- }
415
- }
416
- return {
417
- dependencies,
418
- peerDependencies,
419
- };
420
- }
421
- catch (error) {
422
- // Re-throw our custom errors
423
- if (error instanceof Error && error.message.startsWith('[resolveDepsFromLicenseAPI]')) {
424
- throw error;
425
- }
426
- // Network or other errors
427
- throw new Error(`[resolveDepsFromLicenseAPI] Network error: ${error instanceof Error ? error.message : String(error)}`);
428
- }
429
- }
430
- /**
431
- * 캐시 클리어
432
- */
433
- export function clearTransitiveCache() {
434
- skitManifestCache.clear();
435
- }
436
- //# sourceMappingURL=transitive-resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transitive-resolver.js","sourceRoot":"","sources":["../../src/lib/transitive-resolver.ts"],"names":[],"mappings":"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"}