pnpm-catalog-updates 0.5.6 → 0.6.5

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 (220) hide show
  1. package/bin/pcu.js +1 -1
  2. package/dist/index.js +9559 -32
  3. package/dist/index.js.map +1 -1
  4. package/package.json +61 -103
  5. package/src/cli/commands/checkCommand.ts +227 -0
  6. package/src/cli/commands/initCommand.ts +394 -0
  7. package/src/cli/commands/securityCommand.ts +569 -0
  8. package/src/cli/commands/updateCommand.ts +245 -0
  9. package/src/cli/formatters/outputFormatter.ts +830 -0
  10. package/src/cli/formatters/progressBar.ts +700 -0
  11. package/src/cli/index.ts +565 -0
  12. package/src/cli/interactive/interactivePrompts.ts +517 -0
  13. package/src/cli/options/globalOptions.ts +380 -0
  14. package/src/cli/options/index.ts +5 -0
  15. package/src/cli/themes/colorTheme.ts +379 -0
  16. package/src/cli/validators/commandValidator.ts +395 -0
  17. package/src/cli/validators/index.ts +5 -0
  18. package/src/index.ts +4 -0
  19. package/LICENSE +0 -21
  20. package/README.ja.md +0 -582
  21. package/README.md +0 -690
  22. package/README.zh-CN.md +0 -630
  23. package/dist/application/services/CatalogUpdateService.d.ts +0 -209
  24. package/dist/application/services/CatalogUpdateService.d.ts.map +0 -1
  25. package/dist/application/services/CatalogUpdateService.js +0 -836
  26. package/dist/application/services/CatalogUpdateService.js.map +0 -1
  27. package/dist/application/services/WorkspaceService.d.ts +0 -139
  28. package/dist/application/services/WorkspaceService.d.ts.map +0 -1
  29. package/dist/application/services/WorkspaceService.js +0 -340
  30. package/dist/application/services/WorkspaceService.js.map +0 -1
  31. package/dist/cli/commands/CheckCommand.d.ts +0 -40
  32. package/dist/cli/commands/CheckCommand.d.ts.map +0 -1
  33. package/dist/cli/commands/CheckCommand.js +0 -177
  34. package/dist/cli/commands/CheckCommand.js.map +0 -1
  35. package/dist/cli/commands/InitCommand.d.ts +0 -53
  36. package/dist/cli/commands/InitCommand.d.ts.map +0 -1
  37. package/dist/cli/commands/InitCommand.js +0 -338
  38. package/dist/cli/commands/InitCommand.js.map +0 -1
  39. package/dist/cli/commands/SecurityCommand.d.ts +0 -113
  40. package/dist/cli/commands/SecurityCommand.d.ts.map +0 -1
  41. package/dist/cli/commands/SecurityCommand.js +0 -410
  42. package/dist/cli/commands/SecurityCommand.js.map +0 -1
  43. package/dist/cli/commands/UpdateCommand.d.ts +0 -44
  44. package/dist/cli/commands/UpdateCommand.d.ts.map +0 -1
  45. package/dist/cli/commands/UpdateCommand.js +0 -189
  46. package/dist/cli/commands/UpdateCommand.js.map +0 -1
  47. package/dist/cli/formatters/OutputFormatter.d.ts +0 -116
  48. package/dist/cli/formatters/OutputFormatter.d.ts.map +0 -1
  49. package/dist/cli/formatters/OutputFormatter.js +0 -664
  50. package/dist/cli/formatters/OutputFormatter.js.map +0 -1
  51. package/dist/cli/formatters/ProgressBar.d.ts +0 -195
  52. package/dist/cli/formatters/ProgressBar.d.ts.map +0 -1
  53. package/dist/cli/formatters/ProgressBar.js +0 -622
  54. package/dist/cli/formatters/ProgressBar.js.map +0 -1
  55. package/dist/cli/index.d.ts +0 -12
  56. package/dist/cli/index.d.ts.map +0 -1
  57. package/dist/cli/index.js +0 -492
  58. package/dist/cli/index.js.map +0 -1
  59. package/dist/cli/interactive/InteractivePrompts.d.ts +0 -85
  60. package/dist/cli/interactive/InteractivePrompts.d.ts.map +0 -1
  61. package/dist/cli/interactive/InteractivePrompts.js +0 -434
  62. package/dist/cli/interactive/InteractivePrompts.js.map +0 -1
  63. package/dist/cli/options/GlobalOptions.d.ts +0 -117
  64. package/dist/cli/options/GlobalOptions.d.ts.map +0 -1
  65. package/dist/cli/options/GlobalOptions.js +0 -278
  66. package/dist/cli/options/GlobalOptions.js.map +0 -1
  67. package/dist/cli/options/index.d.ts +0 -5
  68. package/dist/cli/options/index.d.ts.map +0 -1
  69. package/dist/cli/options/index.js +0 -5
  70. package/dist/cli/options/index.js.map +0 -1
  71. package/dist/cli/themes/ColorTheme.d.ts +0 -211
  72. package/dist/cli/themes/ColorTheme.d.ts.map +0 -1
  73. package/dist/cli/themes/ColorTheme.js +0 -267
  74. package/dist/cli/themes/ColorTheme.js.map +0 -1
  75. package/dist/cli/validators/CommandValidator.d.ts +0 -60
  76. package/dist/cli/validators/CommandValidator.d.ts.map +0 -1
  77. package/dist/cli/validators/CommandValidator.js +0 -319
  78. package/dist/cli/validators/CommandValidator.js.map +0 -1
  79. package/dist/cli/validators/index.d.ts +0 -5
  80. package/dist/cli/validators/index.d.ts.map +0 -1
  81. package/dist/cli/validators/index.js +0 -5
  82. package/dist/cli/validators/index.js.map +0 -1
  83. package/dist/common/config/Config.d.ts +0 -142
  84. package/dist/common/config/Config.d.ts.map +0 -1
  85. package/dist/common/config/Config.js +0 -382
  86. package/dist/common/config/Config.js.map +0 -1
  87. package/dist/common/config/ConfigLoader.d.ts +0 -49
  88. package/dist/common/config/ConfigLoader.d.ts.map +0 -1
  89. package/dist/common/config/ConfigLoader.js +0 -180
  90. package/dist/common/config/ConfigLoader.js.map +0 -1
  91. package/dist/common/config/PackageFilterConfig.d.ts +0 -56
  92. package/dist/common/config/PackageFilterConfig.d.ts.map +0 -1
  93. package/dist/common/config/PackageFilterConfig.js +0 -94
  94. package/dist/common/config/PackageFilterConfig.js.map +0 -1
  95. package/dist/common/config/index.d.ts +0 -8
  96. package/dist/common/config/index.d.ts.map +0 -1
  97. package/dist/common/config/index.js +0 -8
  98. package/dist/common/config/index.js.map +0 -1
  99. package/dist/common/error-handling/ErrorTracker.d.ts +0 -48
  100. package/dist/common/error-handling/ErrorTracker.d.ts.map +0 -1
  101. package/dist/common/error-handling/ErrorTracker.js +0 -93
  102. package/dist/common/error-handling/ErrorTracker.js.map +0 -1
  103. package/dist/common/error-handling/UserFriendlyErrorHandler.d.ts +0 -74
  104. package/dist/common/error-handling/UserFriendlyErrorHandler.d.ts.map +0 -1
  105. package/dist/common/error-handling/UserFriendlyErrorHandler.js +0 -703
  106. package/dist/common/error-handling/UserFriendlyErrorHandler.js.map +0 -1
  107. package/dist/common/error-handling/index.d.ts +0 -11
  108. package/dist/common/error-handling/index.d.ts.map +0 -1
  109. package/dist/common/error-handling/index.js +0 -9
  110. package/dist/common/error-handling/index.js.map +0 -1
  111. package/dist/common/logger/Logger.d.ts +0 -110
  112. package/dist/common/logger/Logger.d.ts.map +0 -1
  113. package/dist/common/logger/Logger.js +0 -289
  114. package/dist/common/logger/Logger.js.map +0 -1
  115. package/dist/common/logger/index.d.ts +0 -6
  116. package/dist/common/logger/index.d.ts.map +0 -1
  117. package/dist/common/logger/index.js +0 -6
  118. package/dist/common/logger/index.js.map +0 -1
  119. package/dist/common/types/cli.d.ts +0 -265
  120. package/dist/common/types/cli.d.ts.map +0 -1
  121. package/dist/common/types/cli.js +0 -5
  122. package/dist/common/types/cli.js.map +0 -1
  123. package/dist/common/types/core.d.ts +0 -270
  124. package/dist/common/types/core.d.ts.map +0 -1
  125. package/dist/common/types/core.js +0 -32
  126. package/dist/common/types/core.js.map +0 -1
  127. package/dist/common/types/index.d.ts +0 -8
  128. package/dist/common/types/index.d.ts.map +0 -1
  129. package/dist/common/types/index.js +0 -8
  130. package/dist/common/types/index.js.map +0 -1
  131. package/dist/common/utils/VersionChecker.d.ts +0 -54
  132. package/dist/common/utils/VersionChecker.d.ts.map +0 -1
  133. package/dist/common/utils/VersionChecker.js +0 -180
  134. package/dist/common/utils/VersionChecker.js.map +0 -1
  135. package/dist/common/utils/async.d.ts +0 -74
  136. package/dist/common/utils/async.d.ts.map +0 -1
  137. package/dist/common/utils/async.js +0 -228
  138. package/dist/common/utils/async.js.map +0 -1
  139. package/dist/common/utils/format.d.ts +0 -32
  140. package/dist/common/utils/format.d.ts.map +0 -1
  141. package/dist/common/utils/format.js +0 -121
  142. package/dist/common/utils/format.js.map +0 -1
  143. package/dist/common/utils/git.d.ts +0 -44
  144. package/dist/common/utils/git.d.ts.map +0 -1
  145. package/dist/common/utils/git.js +0 -147
  146. package/dist/common/utils/git.js.map +0 -1
  147. package/dist/common/utils/index.d.ts +0 -12
  148. package/dist/common/utils/index.d.ts.map +0 -1
  149. package/dist/common/utils/index.js +0 -12
  150. package/dist/common/utils/index.js.map +0 -1
  151. package/dist/common/utils/string.d.ts +0 -56
  152. package/dist/common/utils/string.d.ts.map +0 -1
  153. package/dist/common/utils/string.js +0 -134
  154. package/dist/common/utils/string.js.map +0 -1
  155. package/dist/common/utils/validation.d.ts +0 -88
  156. package/dist/common/utils/validation.d.ts.map +0 -1
  157. package/dist/common/utils/validation.js +0 -308
  158. package/dist/common/utils/validation.js.map +0 -1
  159. package/dist/domain/entities/Catalog.d.ts +0 -117
  160. package/dist/domain/entities/Catalog.d.ts.map +0 -1
  161. package/dist/domain/entities/Catalog.js +0 -240
  162. package/dist/domain/entities/Catalog.js.map +0 -1
  163. package/dist/domain/entities/Package.d.ts +0 -143
  164. package/dist/domain/entities/Package.d.ts.map +0 -1
  165. package/dist/domain/entities/Package.js +0 -272
  166. package/dist/domain/entities/Package.js.map +0 -1
  167. package/dist/domain/entities/Workspace.d.ts +0 -95
  168. package/dist/domain/entities/Workspace.d.ts.map +0 -1
  169. package/dist/domain/entities/Workspace.js +0 -173
  170. package/dist/domain/entities/Workspace.js.map +0 -1
  171. package/dist/domain/repositories/WorkspaceRepository.d.ts +0 -41
  172. package/dist/domain/repositories/WorkspaceRepository.d.ts.map +0 -1
  173. package/dist/domain/repositories/WorkspaceRepository.js +0 -8
  174. package/dist/domain/repositories/WorkspaceRepository.js.map +0 -1
  175. package/dist/domain/value-objects/CatalogCollection.d.ts +0 -106
  176. package/dist/domain/value-objects/CatalogCollection.d.ts.map +0 -1
  177. package/dist/domain/value-objects/CatalogCollection.js +0 -230
  178. package/dist/domain/value-objects/CatalogCollection.js.map +0 -1
  179. package/dist/domain/value-objects/PackageCollection.d.ts +0 -122
  180. package/dist/domain/value-objects/PackageCollection.d.ts.map +0 -1
  181. package/dist/domain/value-objects/PackageCollection.js +0 -263
  182. package/dist/domain/value-objects/PackageCollection.js.map +0 -1
  183. package/dist/domain/value-objects/Version.d.ts +0 -141
  184. package/dist/domain/value-objects/Version.d.ts.map +0 -1
  185. package/dist/domain/value-objects/Version.js +0 -268
  186. package/dist/domain/value-objects/Version.js.map +0 -1
  187. package/dist/domain/value-objects/WorkspaceConfig.d.ts +0 -144
  188. package/dist/domain/value-objects/WorkspaceConfig.d.ts.map +0 -1
  189. package/dist/domain/value-objects/WorkspaceConfig.js +0 -357
  190. package/dist/domain/value-objects/WorkspaceConfig.js.map +0 -1
  191. package/dist/domain/value-objects/WorkspaceId.d.ts +0 -51
  192. package/dist/domain/value-objects/WorkspaceId.d.ts.map +0 -1
  193. package/dist/domain/value-objects/WorkspaceId.js +0 -104
  194. package/dist/domain/value-objects/WorkspaceId.js.map +0 -1
  195. package/dist/domain/value-objects/WorkspacePath.d.ts +0 -75
  196. package/dist/domain/value-objects/WorkspacePath.d.ts.map +0 -1
  197. package/dist/domain/value-objects/WorkspacePath.js +0 -128
  198. package/dist/domain/value-objects/WorkspacePath.js.map +0 -1
  199. package/dist/index.d.ts +0 -25
  200. package/dist/index.d.ts.map +0 -1
  201. package/dist/infrastructure/cache/Cache.d.ts +0 -161
  202. package/dist/infrastructure/cache/Cache.d.ts.map +0 -1
  203. package/dist/infrastructure/cache/Cache.js +0 -398
  204. package/dist/infrastructure/cache/Cache.js.map +0 -1
  205. package/dist/infrastructure/cache/index.d.ts +0 -6
  206. package/dist/infrastructure/cache/index.d.ts.map +0 -1
  207. package/dist/infrastructure/cache/index.js +0 -6
  208. package/dist/infrastructure/cache/index.js.map +0 -1
  209. package/dist/infrastructure/external-services/NpmRegistryService.d.ts +0 -145
  210. package/dist/infrastructure/external-services/NpmRegistryService.d.ts.map +0 -1
  211. package/dist/infrastructure/external-services/NpmRegistryService.js +0 -466
  212. package/dist/infrastructure/external-services/NpmRegistryService.js.map +0 -1
  213. package/dist/infrastructure/file-system/FileSystemService.d.ts +0 -120
  214. package/dist/infrastructure/file-system/FileSystemService.d.ts.map +0 -1
  215. package/dist/infrastructure/file-system/FileSystemService.js +0 -663
  216. package/dist/infrastructure/file-system/FileSystemService.js.map +0 -1
  217. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts +0 -57
  218. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts.map +0 -1
  219. package/dist/infrastructure/repositories/FileWorkspaceRepository.js +0 -179
  220. package/dist/infrastructure/repositories/FileWorkspaceRepository.js.map +0 -1
@@ -1,466 +0,0 @@
1
- /**
2
- * NPM Registry Service
3
- *
4
- * Provides access to NPM registry for package version information.
5
- * Handles API calls, caching, and version resolution.
6
- */
7
- import npmRegistryFetch from 'npm-registry-fetch';
8
- import pacote from 'pacote';
9
- import semver from 'semver';
10
- import { Version } from '../../domain/value-objects/Version.js';
11
- import { UserFriendlyErrorHandler } from '../../common/error-handling/UserFriendlyErrorHandler.js';
12
- export class NpmRegistryService {
13
- registryUrl;
14
- cache = new Map();
15
- // Differentiated cache timeouts for different data types
16
- versionCacheTimeout;
17
- packageInfoCacheTimeout;
18
- securityCacheTimeout;
19
- // Advanced configuration with defaults
20
- concurrency;
21
- timeout;
22
- retries;
23
- cachingEnabled;
24
- constructor(registryUrl = 'https://registry.npmjs.org/', options = {}) {
25
- this.registryUrl = registryUrl;
26
- this.concurrency = options.concurrency ?? 8; // Increased from 5 to match NCU performance
27
- this.timeout = options.timeout ?? 15000; // Reduced from 30s to 15s for faster failure detection
28
- this.retries = options.retries ?? 2; // Reduced from 3 to 2 for faster overall performance
29
- // Optimized cache timeouts for different data types
30
- const baseCacheMinutes = options.cacheValidityMinutes ?? 10; // Reduced from 60 to 10 minutes
31
- this.versionCacheTimeout = baseCacheMinutes * 60 * 1000; // Version info: 10 minutes (frequently checked)
32
- this.packageInfoCacheTimeout = baseCacheMinutes * 2 * 60 * 1000; // Package info: 20 minutes
33
- this.securityCacheTimeout = baseCacheMinutes * 6 * 60 * 1000; // Security info: 60 minutes (changes less frequently)
34
- this.cachingEnabled = baseCacheMinutes > 0; // Disable caching if set to 0
35
- }
36
- /**
37
- * Execute a function with retry logic
38
- */
39
- async executeWithRetry(fn, context = 'operation') {
40
- let lastError;
41
- for (let attempt = 1; attempt <= this.retries; attempt++) {
42
- try {
43
- return await fn();
44
- }
45
- catch (error) {
46
- lastError = error;
47
- if (attempt === this.retries) {
48
- throw new Error(`${context} failed after ${this.retries} attempts: ${lastError.message}`);
49
- }
50
- // Exponential backoff: wait 1s, 2s, 4s, etc.
51
- const delay = Math.min(1000 * Math.pow(2, attempt - 1), 10000);
52
- await new Promise((resolve) => setTimeout(resolve, delay));
53
- // Extract package name from context for better error handling
54
- const packageName = context.includes('for ')
55
- ? context.split('for ')[1] || 'unknown package'
56
- : 'unknown package';
57
- UserFriendlyErrorHandler.handleRetryAttempt(packageName, attempt, this.retries, lastError);
58
- }
59
- }
60
- throw lastError;
61
- }
62
- /**
63
- * Get lightweight package version information (optimized for performance)
64
- */
65
- async getPackageVersions(packageName) {
66
- const cacheKey = `package-versions:${packageName}`;
67
- // Check cache first if caching is enabled
68
- if (this.cachingEnabled) {
69
- const cached = this.getFromCache(cacheKey);
70
- if (cached) {
71
- return cached;
72
- }
73
- }
74
- const packageVersions = await this.executeWithRetry(async () => {
75
- // Use lightweight packument call without fullMetadata
76
- const packument = await pacote.packument(packageName, {
77
- registry: this.registryUrl,
78
- timeout: this.timeout,
79
- fullMetadata: false, // Key optimization: don't fetch full metadata
80
- });
81
- const versions = Object.keys(packument.versions || {}).sort(semver.rcompare);
82
- const latestVersion = packument['dist-tags']?.latest || versions[0];
83
- return {
84
- name: packument.name,
85
- versions,
86
- latestVersion,
87
- tags: packument['dist-tags'] || {},
88
- time: packument.time || {}, // Still include time for newest versions feature
89
- };
90
- }, `Fetching package versions for ${packageName}`);
91
- // Cache the result if caching is enabled
92
- if (this.cachingEnabled) {
93
- this.setCache(cacheKey, packageVersions);
94
- }
95
- return packageVersions;
96
- }
97
- /**
98
- * Get package information including all versions
99
- * @deprecated Use getPackageVersions() for better performance
100
- */
101
- async getPackageInfo(packageName) {
102
- const cacheKey = `package-info:${packageName}`;
103
- // Check cache first if caching is enabled
104
- if (this.cachingEnabled) {
105
- const cached = this.getFromCache(cacheKey);
106
- if (cached) {
107
- return cached;
108
- }
109
- }
110
- // Use lightweight version and extend with additional metadata only if needed
111
- const versionInfo = await this.getPackageVersions(packageName);
112
- const packageInfo = await this.executeWithRetry(async () => {
113
- // Only fetch full metadata if we actually need the extended info
114
- const packument = await pacote.packument(packageName, {
115
- registry: this.registryUrl,
116
- timeout: this.timeout,
117
- fullMetadata: true,
118
- });
119
- return {
120
- name: versionInfo.name,
121
- description: packument.description,
122
- homepage: packument.homepage,
123
- repository: packument.repository,
124
- license: packument.license,
125
- author: packument.author,
126
- maintainers: packument.maintainers,
127
- keywords: packument.keywords,
128
- versions: versionInfo.versions,
129
- latestVersion: versionInfo.latestVersion,
130
- tags: versionInfo.tags,
131
- time: versionInfo.time || {},
132
- };
133
- }, `Fetching package info for ${packageName}`);
134
- // Cache the result if caching is enabled
135
- if (this.cachingEnabled) {
136
- this.setCache(cacheKey, packageInfo);
137
- }
138
- return packageInfo;
139
- }
140
- /**
141
- * Get the latest version of a package
142
- */
143
- async getLatestVersion(packageName) {
144
- try {
145
- const versionInfo = await this.getPackageVersions(packageName);
146
- return Version.fromString(versionInfo.latestVersion);
147
- }
148
- catch (error) {
149
- throw new Error(`Failed to get latest version for ${packageName}: ${error}`);
150
- }
151
- }
152
- /**
153
- * Get the greatest version that satisfies a range
154
- */
155
- async getGreatestVersion(packageName, range) {
156
- try {
157
- const versionInfo = await this.getPackageVersions(packageName);
158
- if (!range) {
159
- return Version.fromString(versionInfo.latestVersion);
160
- }
161
- // Find the greatest version that satisfies the range
162
- const satisfyingVersions = versionInfo.versions.filter((v) => {
163
- try {
164
- const version = Version.fromString(v);
165
- return version.satisfies(range);
166
- }
167
- catch {
168
- return false;
169
- }
170
- });
171
- if (satisfyingVersions.length === 0) {
172
- throw new Error(`No versions satisfy range ${range.toString()}`);
173
- }
174
- // Return the first (greatest) version
175
- if (!satisfyingVersions[0]) {
176
- throw new Error(`No satisfying versions found for ${packageName}`);
177
- }
178
- return Version.fromString(satisfyingVersions[0]);
179
- }
180
- catch (error) {
181
- throw new Error(`Failed to get greatest version for ${packageName}: ${error}`);
182
- }
183
- }
184
- /**
185
- * Get versions by date (newest versions published)
186
- */
187
- async getNewestVersions(packageName, count = 10) {
188
- try {
189
- const versionInfo = await this.getPackageVersions(packageName);
190
- // Sort versions by publication time
191
- const versionsWithTime = versionInfo.versions
192
- .map((version) => ({
193
- version,
194
- time: versionInfo.time?.[version] ? new Date(versionInfo.time[version]) : new Date(0),
195
- }))
196
- .sort((a, b) => b.time.getTime() - a.time.getTime())
197
- .slice(0, count);
198
- return versionsWithTime.map((item) => Version.fromString(item.version));
199
- }
200
- catch (error) {
201
- throw new Error(`Failed to get newest versions for ${packageName}: ${error}`);
202
- }
203
- }
204
- /**
205
- * Check for security vulnerabilities
206
- */
207
- async checkSecurityVulnerabilities(packageName, version) {
208
- const cacheKey = `security:${packageName}@${version}`;
209
- // Check cache first
210
- const cached = this.getFromCache(cacheKey);
211
- if (cached) {
212
- return cached;
213
- }
214
- try {
215
- // Use npm audit API
216
- const auditData = {
217
- name: packageName,
218
- version: version,
219
- requires: {},
220
- dependencies: {},
221
- };
222
- const response = await npmRegistryFetch('/-/npm/v1/security/audits', {
223
- method: 'POST',
224
- body: JSON.stringify(auditData),
225
- headers: {
226
- 'Content-Type': 'application/json',
227
- },
228
- registry: this.registryUrl,
229
- timeout: this.timeout,
230
- });
231
- const auditResult = await response.json();
232
- const vulnerabilities = [];
233
- // Parse audit results
234
- if (auditResult.advisories) {
235
- for (const advisory of Object.values(auditResult.advisories)) {
236
- vulnerabilities.push({
237
- id: advisory.id.toString(),
238
- title: advisory.title,
239
- severity: advisory.severity,
240
- description: advisory.overview,
241
- reference: advisory.url,
242
- vulnerable_versions: advisory.vulnerable_versions,
243
- patched_versions: advisory.patched_versions,
244
- recommendation: advisory.recommendation,
245
- });
246
- }
247
- }
248
- const securityReport = {
249
- package: packageName,
250
- version: version,
251
- vulnerabilities,
252
- hasVulnerabilities: vulnerabilities.length > 0,
253
- };
254
- // Cache the result
255
- this.setCache(cacheKey, securityReport);
256
- return securityReport;
257
- }
258
- catch (error) {
259
- // If security check fails, return empty report
260
- UserFriendlyErrorHandler.handleSecurityCheckFailure(packageName, error);
261
- const emptyReport = {
262
- package: packageName,
263
- version: version,
264
- vulnerabilities: [],
265
- hasVulnerabilities: false,
266
- };
267
- return emptyReport;
268
- }
269
- }
270
- /**
271
- * Batch query multiple packages with progress tracking
272
- */
273
- async batchQueryVersions(packages, progressCallback) {
274
- const results = new Map();
275
- let completed = 0;
276
- const total = packages.length;
277
- // Process packages in parallel with configurable concurrency
278
- const chunks = this.chunkArray(packages, this.concurrency);
279
- for (const chunk of chunks) {
280
- const promises = chunk.map(async (packageName) => {
281
- try {
282
- const info = await this.getPackageInfo(packageName);
283
- results.set(packageName, info);
284
- // Update progress
285
- completed++;
286
- if (progressCallback) {
287
- progressCallback(completed, total, packageName);
288
- }
289
- }
290
- catch (error) {
291
- // Still count failed packages in progress
292
- completed++;
293
- if (progressCallback) {
294
- progressCallback(completed, total, packageName);
295
- }
296
- UserFriendlyErrorHandler.handlePackageQueryFailure(packageName, error);
297
- }
298
- });
299
- await Promise.all(promises);
300
- }
301
- return results;
302
- }
303
- /**
304
- * Check if package author has changed
305
- */
306
- async hasPackageAuthorChanged(packageName, fromVersion, toVersion) {
307
- try {
308
- // const packageInfo = await this.getPackageInfo(packageName);
309
- const fromVersionData = await pacote.manifest(`${packageName}@${fromVersion}`, {
310
- registry: this.registryUrl,
311
- timeout: this.timeout,
312
- });
313
- const toVersionData = await pacote.manifest(`${packageName}@${toVersion}`, {
314
- registry: this.registryUrl,
315
- timeout: this.timeout,
316
- });
317
- // Compare authors/maintainers
318
- const fromAuthor = this.normalizeAuthor(fromVersionData.author);
319
- const toAuthor = this.normalizeAuthor(toVersionData.author);
320
- return fromAuthor !== toAuthor;
321
- }
322
- catch (error) {
323
- // Log for debugging, don't show to user as this is not critical
324
- UserFriendlyErrorHandler.handlePackageQueryFailure(packageName, error, {
325
- operation: 'author-check',
326
- });
327
- return false;
328
- }
329
- }
330
- /**
331
- * Get package download statistics
332
- */
333
- async getDownloadStats(packageName, period = 'last-week') {
334
- try {
335
- const response = await fetch(`https://api.npmjs.org/downloads/point/${period}/${packageName}`);
336
- if (!response.ok) {
337
- throw new Error(`HTTP error! status: ${response.status}`);
338
- }
339
- const data = (await response.json());
340
- return data.downloads || 0;
341
- }
342
- catch (error) {
343
- // Log for debugging, don't show to user as this is not critical
344
- UserFriendlyErrorHandler.handlePackageQueryFailure(packageName, error, {
345
- operation: 'download-stats',
346
- });
347
- return 0;
348
- }
349
- }
350
- /**
351
- * Clear all cache
352
- */
353
- clearCache() {
354
- this.cache.clear();
355
- }
356
- /**
357
- * Clear cache by type
358
- */
359
- clearCacheByType(type = 'all') {
360
- if (type === 'all') {
361
- this.clearCache();
362
- return;
363
- }
364
- const prefix = type === 'versions'
365
- ? 'package-versions:'
366
- : type === 'package-info'
367
- ? 'package-info:'
368
- : 'security:';
369
- const keysToDelete = [];
370
- for (const key of this.cache.keys()) {
371
- if (key.startsWith(prefix)) {
372
- keysToDelete.push(key);
373
- }
374
- }
375
- keysToDelete.forEach((key) => this.cache.delete(key));
376
- }
377
- /**
378
- * Get cache statistics
379
- */
380
- getCacheStats() {
381
- const stats = { total: 0, versions: 0, packageInfo: 0, security: 0, expired: 0 };
382
- const now = Date.now();
383
- for (const [key, cached] of this.cache.entries()) {
384
- stats.total++;
385
- const timeout = this.getCacheTimeout(key);
386
- if (now - cached.timestamp > timeout) {
387
- stats.expired++;
388
- continue;
389
- }
390
- if (key.startsWith('package-versions:')) {
391
- stats.versions++;
392
- }
393
- else if (key.startsWith('package-info:')) {
394
- stats.packageInfo++;
395
- }
396
- else if (key.startsWith('security:')) {
397
- stats.security++;
398
- }
399
- }
400
- return stats;
401
- }
402
- /**
403
- * Get item from cache if not expired
404
- */
405
- getFromCache(key) {
406
- const cached = this.cache.get(key);
407
- if (!cached) {
408
- return null;
409
- }
410
- // Determine timeout based on cache key type
411
- const timeout = this.getCacheTimeout(key);
412
- if (Date.now() - cached.timestamp > timeout) {
413
- this.cache.delete(key);
414
- return null;
415
- }
416
- return cached.data;
417
- }
418
- /**
419
- * Get appropriate cache timeout based on key type
420
- */
421
- getCacheTimeout(key) {
422
- if (key.startsWith('package-versions:')) {
423
- return this.versionCacheTimeout;
424
- }
425
- else if (key.startsWith('security:')) {
426
- return this.securityCacheTimeout;
427
- }
428
- else if (key.startsWith('package-info:')) {
429
- return this.packageInfoCacheTimeout;
430
- }
431
- // Default to version cache timeout for unknown keys
432
- return this.versionCacheTimeout;
433
- }
434
- /**
435
- * Set item in cache
436
- */
437
- setCache(key, data) {
438
- this.cache.set(key, {
439
- data,
440
- timestamp: Date.now(),
441
- });
442
- }
443
- /**
444
- * Split array into chunks
445
- */
446
- chunkArray(array, size) {
447
- const chunks = [];
448
- for (let i = 0; i < array.length; i += size) {
449
- chunks.push(array.slice(i, i + size));
450
- }
451
- return chunks;
452
- }
453
- /**
454
- * Normalize author for comparison
455
- */
456
- normalizeAuthor(author) {
457
- if (typeof author === 'string') {
458
- return author.toLowerCase().trim();
459
- }
460
- if (typeof author === 'object' && author?.name) {
461
- return author.name.toLowerCase().trim();
462
- }
463
- return '';
464
- }
465
- }
466
- //# sourceMappingURL=NpmRegistryService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NpmRegistryService.js","sourceRoot":"","sources":["../../../src/infrastructure/external-services/NpmRegistryService.ts"],"names":[],"mappings":"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"}
@@ -1,120 +0,0 @@
1
- /**
2
- * File System Service
3
- *
4
- * Provides abstracted file system operations for the application.
5
- * Handles reading/writing workspace files, package.json, and pnpm-workspace.yaml.
6
- */
7
- import { PackageJsonData } from '../../domain/entities/Package.js';
8
- import { PnpmWorkspaceData } from '../../domain/value-objects/WorkspaceConfig.js';
9
- import { WorkspacePath } from '../../domain/value-objects/WorkspacePath.js';
10
- export declare class FileSystemService {
11
- /**
12
- * Check if a file exists
13
- */
14
- exists(filePath: string): Promise<boolean>;
15
- /**
16
- * Check if a path is a directory
17
- */
18
- isDirectory(dirPath: string): Promise<boolean>;
19
- /**
20
- * Read a text file
21
- */
22
- readTextFile(filePath: string): Promise<string>;
23
- /**
24
- * Write a text file
25
- */
26
- writeTextFile(filePath: string, content: string): Promise<void>;
27
- /**
28
- * Read and parse a JSON file
29
- */
30
- readJsonFile<T = any>(filePath: string): Promise<T>;
31
- /**
32
- * Write a JSON file
33
- */
34
- writeJsonFile(filePath: string, data: any, indent?: number): Promise<void>;
35
- /**
36
- * Read and parse a YAML file
37
- */
38
- readYamlFile<T = any>(filePath: string): Promise<T>;
39
- /**
40
- * Write a YAML file
41
- */
42
- writeYamlFile(filePath: string, data: any): Promise<void>;
43
- /**
44
- * Write a YAML file while preserving comments and formatting
45
- */
46
- writeYamlFilePreservingFormat(filePath: string, data: any): Promise<void>;
47
- /**
48
- * Update YAML content while preserving comments and formatting
49
- */
50
- private updateYamlPreservingFormat;
51
- /**
52
- * Format a YAML section with proper indentation while preserving internal structure
53
- */
54
- private formatYamlSection;
55
- /**
56
- * Format catalogs section while preserving structure and comments
57
- */
58
- private formatCatalogsSection;
59
- /**
60
- * Check if a package exists in a catalog section
61
- */
62
- private packageExistsInCatalogSection;
63
- /**
64
- * Read pnpm-workspace.yaml configuration
65
- */
66
- readPnpmWorkspaceConfig(workspacePath: WorkspacePath): Promise<PnpmWorkspaceData>;
67
- /**
68
- * Write pnpm-workspace.yaml configuration
69
- */
70
- writePnpmWorkspaceConfig(workspacePath: WorkspacePath, config: PnpmWorkspaceData): Promise<void>;
71
- /**
72
- * Read package.json file
73
- */
74
- readPackageJson(packagePath: WorkspacePath): Promise<PackageJsonData>;
75
- /**
76
- * Write package.json file
77
- */
78
- writePackageJson(packagePath: WorkspacePath, packageData: PackageJsonData): Promise<void>;
79
- /**
80
- * Find package.json files using glob patterns
81
- */
82
- findPackageJsonFiles(workspacePath: WorkspacePath, patterns: string[]): Promise<string[]>;
83
- /**
84
- * Find directories matching patterns
85
- */
86
- findDirectories(workspacePath: WorkspacePath, patterns: string[]): Promise<string[]>;
87
- /**
88
- * Check if a directory contains a pnpm workspace
89
- */
90
- isPnpmWorkspace(dirPath: string): Promise<boolean>;
91
- /**
92
- * Find the nearest pnpm workspace by traversing up the directory tree
93
- */
94
- findNearestWorkspace(startPath: string): Promise<string | null>;
95
- /**
96
- * Get file modification time
97
- */
98
- getModificationTime(filePath: string): Promise<Date>;
99
- /**
100
- * Create a backup of a file
101
- */
102
- createBackup(filePath: string): Promise<string>;
103
- /**
104
- * Restore a file from backup
105
- */
106
- restoreFromBackup(originalPath: string, backupPath: string): Promise<void>;
107
- /**
108
- * Remove a file
109
- */
110
- removeFile(filePath: string): Promise<void>;
111
- /**
112
- * List files in a directory
113
- */
114
- listFiles(dirPath: string): Promise<string[]>;
115
- /**
116
- * List directories in a directory
117
- */
118
- listDirectories(dirPath: string): Promise<string[]>;
119
- }
120
- //# sourceMappingURL=FileSystemService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileSystemService.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/file-system/FileSystemService.ts"],"names":[],"mappings":"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"}