pcu 0.5.7 → 0.6.3

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 (223) 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 +36 -84
  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/README.ja.md +0 -587
  20. package/README.md +0 -694
  21. package/README.zh-CN.md +0 -634
  22. package/dist/application/services/CatalogUpdateService.d.ts +0 -209
  23. package/dist/application/services/CatalogUpdateService.d.ts.map +0 -1
  24. package/dist/application/services/CatalogUpdateService.js +0 -839
  25. package/dist/application/services/CatalogUpdateService.js.map +0 -1
  26. package/dist/application/services/WorkspaceService.d.ts +0 -139
  27. package/dist/application/services/WorkspaceService.d.ts.map +0 -1
  28. package/dist/application/services/WorkspaceService.js +0 -340
  29. package/dist/application/services/WorkspaceService.js.map +0 -1
  30. package/dist/cli/commands/CheckCommand.d.ts +0 -40
  31. package/dist/cli/commands/CheckCommand.d.ts.map +0 -1
  32. package/dist/cli/commands/CheckCommand.js +0 -177
  33. package/dist/cli/commands/CheckCommand.js.map +0 -1
  34. package/dist/cli/commands/InitCommand.d.ts +0 -53
  35. package/dist/cli/commands/InitCommand.d.ts.map +0 -1
  36. package/dist/cli/commands/InitCommand.js +0 -338
  37. package/dist/cli/commands/InitCommand.js.map +0 -1
  38. package/dist/cli/commands/SecurityCommand.d.ts +0 -113
  39. package/dist/cli/commands/SecurityCommand.d.ts.map +0 -1
  40. package/dist/cli/commands/SecurityCommand.js +0 -410
  41. package/dist/cli/commands/SecurityCommand.js.map +0 -1
  42. package/dist/cli/commands/UpdateCommand.d.ts +0 -44
  43. package/dist/cli/commands/UpdateCommand.d.ts.map +0 -1
  44. package/dist/cli/commands/UpdateCommand.js +0 -189
  45. package/dist/cli/commands/UpdateCommand.js.map +0 -1
  46. package/dist/cli/formatters/OutputFormatter.d.ts +0 -116
  47. package/dist/cli/formatters/OutputFormatter.d.ts.map +0 -1
  48. package/dist/cli/formatters/OutputFormatter.js +0 -664
  49. package/dist/cli/formatters/OutputFormatter.js.map +0 -1
  50. package/dist/cli/formatters/ProgressBar.d.ts +0 -195
  51. package/dist/cli/formatters/ProgressBar.d.ts.map +0 -1
  52. package/dist/cli/formatters/ProgressBar.js +0 -622
  53. package/dist/cli/formatters/ProgressBar.js.map +0 -1
  54. package/dist/cli/index.d.ts +0 -12
  55. package/dist/cli/index.d.ts.map +0 -1
  56. package/dist/cli/index.js +0 -492
  57. package/dist/cli/index.js.map +0 -1
  58. package/dist/cli/interactive/InteractivePrompts.d.ts +0 -85
  59. package/dist/cli/interactive/InteractivePrompts.d.ts.map +0 -1
  60. package/dist/cli/interactive/InteractivePrompts.js +0 -434
  61. package/dist/cli/interactive/InteractivePrompts.js.map +0 -1
  62. package/dist/cli/options/GlobalOptions.d.ts +0 -117
  63. package/dist/cli/options/GlobalOptions.d.ts.map +0 -1
  64. package/dist/cli/options/GlobalOptions.js +0 -278
  65. package/dist/cli/options/GlobalOptions.js.map +0 -1
  66. package/dist/cli/options/index.d.ts +0 -5
  67. package/dist/cli/options/index.d.ts.map +0 -1
  68. package/dist/cli/options/index.js +0 -5
  69. package/dist/cli/options/index.js.map +0 -1
  70. package/dist/cli/themes/ColorTheme.d.ts +0 -211
  71. package/dist/cli/themes/ColorTheme.d.ts.map +0 -1
  72. package/dist/cli/themes/ColorTheme.js +0 -267
  73. package/dist/cli/themes/ColorTheme.js.map +0 -1
  74. package/dist/cli/validators/CommandValidator.d.ts +0 -60
  75. package/dist/cli/validators/CommandValidator.d.ts.map +0 -1
  76. package/dist/cli/validators/CommandValidator.js +0 -319
  77. package/dist/cli/validators/CommandValidator.js.map +0 -1
  78. package/dist/cli/validators/index.d.ts +0 -5
  79. package/dist/cli/validators/index.d.ts.map +0 -1
  80. package/dist/cli/validators/index.js +0 -5
  81. package/dist/cli/validators/index.js.map +0 -1
  82. package/dist/common/config/Config.d.ts +0 -142
  83. package/dist/common/config/Config.d.ts.map +0 -1
  84. package/dist/common/config/Config.js +0 -382
  85. package/dist/common/config/Config.js.map +0 -1
  86. package/dist/common/config/ConfigLoader.d.ts +0 -49
  87. package/dist/common/config/ConfigLoader.d.ts.map +0 -1
  88. package/dist/common/config/ConfigLoader.js +0 -180
  89. package/dist/common/config/ConfigLoader.js.map +0 -1
  90. package/dist/common/config/PackageFilterConfig.d.ts +0 -56
  91. package/dist/common/config/PackageFilterConfig.d.ts.map +0 -1
  92. package/dist/common/config/PackageFilterConfig.js +0 -94
  93. package/dist/common/config/PackageFilterConfig.js.map +0 -1
  94. package/dist/common/config/index.d.ts +0 -8
  95. package/dist/common/config/index.d.ts.map +0 -1
  96. package/dist/common/config/index.js +0 -8
  97. package/dist/common/config/index.js.map +0 -1
  98. package/dist/common/error-handling/ErrorTracker.d.ts +0 -48
  99. package/dist/common/error-handling/ErrorTracker.d.ts.map +0 -1
  100. package/dist/common/error-handling/ErrorTracker.js +0 -93
  101. package/dist/common/error-handling/ErrorTracker.js.map +0 -1
  102. package/dist/common/error-handling/UserFriendlyErrorHandler.d.ts +0 -74
  103. package/dist/common/error-handling/UserFriendlyErrorHandler.d.ts.map +0 -1
  104. package/dist/common/error-handling/UserFriendlyErrorHandler.js +0 -703
  105. package/dist/common/error-handling/UserFriendlyErrorHandler.js.map +0 -1
  106. package/dist/common/error-handling/index.d.ts +0 -11
  107. package/dist/common/error-handling/index.d.ts.map +0 -1
  108. package/dist/common/error-handling/index.js +0 -9
  109. package/dist/common/error-handling/index.js.map +0 -1
  110. package/dist/common/logger/Logger.d.ts +0 -110
  111. package/dist/common/logger/Logger.d.ts.map +0 -1
  112. package/dist/common/logger/Logger.js +0 -289
  113. package/dist/common/logger/Logger.js.map +0 -1
  114. package/dist/common/logger/index.d.ts +0 -6
  115. package/dist/common/logger/index.d.ts.map +0 -1
  116. package/dist/common/logger/index.js +0 -6
  117. package/dist/common/logger/index.js.map +0 -1
  118. package/dist/common/types/cli.d.ts +0 -265
  119. package/dist/common/types/cli.d.ts.map +0 -1
  120. package/dist/common/types/cli.js +0 -5
  121. package/dist/common/types/cli.js.map +0 -1
  122. package/dist/common/types/core.d.ts +0 -270
  123. package/dist/common/types/core.d.ts.map +0 -1
  124. package/dist/common/types/core.js +0 -32
  125. package/dist/common/types/core.js.map +0 -1
  126. package/dist/common/types/index.d.ts +0 -8
  127. package/dist/common/types/index.d.ts.map +0 -1
  128. package/dist/common/types/index.js +0 -8
  129. package/dist/common/types/index.js.map +0 -1
  130. package/dist/common/utils/VersionChecker.d.ts +0 -54
  131. package/dist/common/utils/VersionChecker.d.ts.map +0 -1
  132. package/dist/common/utils/VersionChecker.js +0 -180
  133. package/dist/common/utils/VersionChecker.js.map +0 -1
  134. package/dist/common/utils/async.d.ts +0 -74
  135. package/dist/common/utils/async.d.ts.map +0 -1
  136. package/dist/common/utils/async.js +0 -228
  137. package/dist/common/utils/async.js.map +0 -1
  138. package/dist/common/utils/format.d.ts +0 -32
  139. package/dist/common/utils/format.d.ts.map +0 -1
  140. package/dist/common/utils/format.js +0 -121
  141. package/dist/common/utils/format.js.map +0 -1
  142. package/dist/common/utils/git.d.ts +0 -44
  143. package/dist/common/utils/git.d.ts.map +0 -1
  144. package/dist/common/utils/git.js +0 -147
  145. package/dist/common/utils/git.js.map +0 -1
  146. package/dist/common/utils/index.d.ts +0 -12
  147. package/dist/common/utils/index.d.ts.map +0 -1
  148. package/dist/common/utils/index.js +0 -12
  149. package/dist/common/utils/index.js.map +0 -1
  150. package/dist/common/utils/string.d.ts +0 -56
  151. package/dist/common/utils/string.d.ts.map +0 -1
  152. package/dist/common/utils/string.js +0 -134
  153. package/dist/common/utils/string.js.map +0 -1
  154. package/dist/common/utils/validation.d.ts +0 -88
  155. package/dist/common/utils/validation.d.ts.map +0 -1
  156. package/dist/common/utils/validation.js +0 -308
  157. package/dist/common/utils/validation.js.map +0 -1
  158. package/dist/domain/entities/Catalog.d.ts +0 -117
  159. package/dist/domain/entities/Catalog.d.ts.map +0 -1
  160. package/dist/domain/entities/Catalog.js +0 -240
  161. package/dist/domain/entities/Catalog.js.map +0 -1
  162. package/dist/domain/entities/Package.d.ts +0 -143
  163. package/dist/domain/entities/Package.d.ts.map +0 -1
  164. package/dist/domain/entities/Package.js +0 -272
  165. package/dist/domain/entities/Package.js.map +0 -1
  166. package/dist/domain/entities/Workspace.d.ts +0 -95
  167. package/dist/domain/entities/Workspace.d.ts.map +0 -1
  168. package/dist/domain/entities/Workspace.js +0 -173
  169. package/dist/domain/entities/Workspace.js.map +0 -1
  170. package/dist/domain/repositories/WorkspaceRepository.d.ts +0 -41
  171. package/dist/domain/repositories/WorkspaceRepository.d.ts.map +0 -1
  172. package/dist/domain/repositories/WorkspaceRepository.js +0 -8
  173. package/dist/domain/repositories/WorkspaceRepository.js.map +0 -1
  174. package/dist/domain/value-objects/CatalogCollection.d.ts +0 -106
  175. package/dist/domain/value-objects/CatalogCollection.d.ts.map +0 -1
  176. package/dist/domain/value-objects/CatalogCollection.js +0 -230
  177. package/dist/domain/value-objects/CatalogCollection.js.map +0 -1
  178. package/dist/domain/value-objects/PackageCollection.d.ts +0 -122
  179. package/dist/domain/value-objects/PackageCollection.d.ts.map +0 -1
  180. package/dist/domain/value-objects/PackageCollection.js +0 -263
  181. package/dist/domain/value-objects/PackageCollection.js.map +0 -1
  182. package/dist/domain/value-objects/Version.d.ts +0 -141
  183. package/dist/domain/value-objects/Version.d.ts.map +0 -1
  184. package/dist/domain/value-objects/Version.js +0 -268
  185. package/dist/domain/value-objects/Version.js.map +0 -1
  186. package/dist/domain/value-objects/WorkspaceConfig.d.ts +0 -144
  187. package/dist/domain/value-objects/WorkspaceConfig.d.ts.map +0 -1
  188. package/dist/domain/value-objects/WorkspaceConfig.js +0 -357
  189. package/dist/domain/value-objects/WorkspaceConfig.js.map +0 -1
  190. package/dist/domain/value-objects/WorkspaceId.d.ts +0 -51
  191. package/dist/domain/value-objects/WorkspaceId.d.ts.map +0 -1
  192. package/dist/domain/value-objects/WorkspaceId.js +0 -104
  193. package/dist/domain/value-objects/WorkspaceId.js.map +0 -1
  194. package/dist/domain/value-objects/WorkspacePath.d.ts +0 -75
  195. package/dist/domain/value-objects/WorkspacePath.d.ts.map +0 -1
  196. package/dist/domain/value-objects/WorkspacePath.js +0 -128
  197. package/dist/domain/value-objects/WorkspacePath.js.map +0 -1
  198. package/dist/index.d.ts +0 -25
  199. package/dist/index.d.ts.map +0 -1
  200. package/dist/infrastructure/cache/Cache.d.ts +0 -161
  201. package/dist/infrastructure/cache/Cache.d.ts.map +0 -1
  202. package/dist/infrastructure/cache/Cache.js +0 -398
  203. package/dist/infrastructure/cache/Cache.js.map +0 -1
  204. package/dist/infrastructure/cache/index.d.ts +0 -6
  205. package/dist/infrastructure/cache/index.d.ts.map +0 -1
  206. package/dist/infrastructure/cache/index.js +0 -6
  207. package/dist/infrastructure/cache/index.js.map +0 -1
  208. package/dist/infrastructure/external-services/NpmRegistryService.d.ts +0 -153
  209. package/dist/infrastructure/external-services/NpmRegistryService.d.ts.map +0 -1
  210. package/dist/infrastructure/external-services/NpmRegistryService.js +0 -511
  211. package/dist/infrastructure/external-services/NpmRegistryService.js.map +0 -1
  212. package/dist/infrastructure/file-system/FileSystemService.d.ts +0 -120
  213. package/dist/infrastructure/file-system/FileSystemService.d.ts.map +0 -1
  214. package/dist/infrastructure/file-system/FileSystemService.js +0 -663
  215. package/dist/infrastructure/file-system/FileSystemService.js.map +0 -1
  216. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts +0 -57
  217. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts.map +0 -1
  218. package/dist/infrastructure/repositories/FileWorkspaceRepository.js +0 -179
  219. package/dist/infrastructure/repositories/FileWorkspaceRepository.js.map +0 -1
  220. package/dist/infrastructure/utils/NpmrcParser.d.ts +0 -40
  221. package/dist/infrastructure/utils/NpmrcParser.d.ts.map +0 -1
  222. package/dist/infrastructure/utils/NpmrcParser.js +0 -157
  223. package/dist/infrastructure/utils/NpmrcParser.js.map +0 -1
@@ -1,308 +0,0 @@
1
- /**
2
- * Validation Utilities
3
- */
4
- /**
5
- * Create validation result
6
- */
7
- export function createValidationResult(isValid = true, errors = [], warnings = []) {
8
- return { isValid, errors, warnings };
9
- }
10
- /**
11
- * Validate email address
12
- */
13
- export function isValidEmail(email) {
14
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
15
- return emailRegex.test(email);
16
- }
17
- /**
18
- * Validate URL
19
- */
20
- export function isValidUrl(url) {
21
- try {
22
- new URL(url);
23
- return true;
24
- }
25
- catch {
26
- return false;
27
- }
28
- }
29
- /**
30
- * Validate semver version
31
- */
32
- export function isValidSemver(version) {
33
- const semverRegex = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
34
- return semverRegex.test(version);
35
- }
36
- /**
37
- * Validate package name
38
- */
39
- export function isValidPackageName(name) {
40
- // NPM package name rules
41
- const packageNameRegex = /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
42
- return packageNameRegex.test(name) && name.length <= 214;
43
- }
44
- /**
45
- * Validate file path
46
- */
47
- export function isValidPath(path) {
48
- // Basic path validation (no null bytes, etc.)
49
- return !path.includes('\0') && path.length > 0 && path.length < 4096;
50
- }
51
- /**
52
- * Validate JSON string
53
- */
54
- export function isValidJson(jsonString) {
55
- try {
56
- JSON.parse(jsonString);
57
- return true;
58
- }
59
- catch {
60
- return false;
61
- }
62
- }
63
- /**
64
- * Validate YAML string
65
- */
66
- export function isValidYaml(yamlString) {
67
- try {
68
- // Simple YAML validation - check for basic structure
69
- const lines = yamlString.split('\n');
70
- // let indentLevel = 0; // Reserved for future use
71
- for (const line of lines) {
72
- const trimmed = line.trim();
73
- if (trimmed === '' || trimmed.startsWith('#')) {
74
- continue; // Skip empty lines and comments
75
- }
76
- const currentIndent = line.length - line.trimStart().length;
77
- if (currentIndent % 2 !== 0) {
78
- return false; // YAML uses 2-space indentation
79
- }
80
- if (trimmed.includes(':') && !trimmed.startsWith('-')) {
81
- // Key-value pair
82
- const [key] = trimmed.split(':');
83
- if (key?.trim() === '') {
84
- return false;
85
- }
86
- }
87
- }
88
- return true;
89
- }
90
- catch {
91
- return false;
92
- }
93
- }
94
- /**
95
- * Validate glob pattern
96
- */
97
- export function isValidGlob(pattern) {
98
- try {
99
- // Basic glob pattern validation
100
- if (pattern.includes('**/**/**')) {
101
- return false; // Too many recursive wildcards
102
- }
103
- if (pattern.includes('//')) {
104
- return false; // Double slashes
105
- }
106
- // Check for balanced brackets
107
- let bracketDepth = 0;
108
- let braceDepth = 0;
109
- for (const char of pattern) {
110
- if (char === '[')
111
- bracketDepth++;
112
- else if (char === ']')
113
- bracketDepth--;
114
- else if (char === '{')
115
- braceDepth++;
116
- else if (char === '}')
117
- braceDepth--;
118
- if (bracketDepth < 0 || braceDepth < 0) {
119
- return false;
120
- }
121
- }
122
- return bracketDepth === 0 && braceDepth === 0;
123
- }
124
- catch {
125
- return false;
126
- }
127
- }
128
- /**
129
- * Validate port number
130
- */
131
- export function isValidPort(port) {
132
- const portNum = typeof port === 'string' ? parseInt(port, 10) : port;
133
- return !isNaN(portNum) && portNum >= 1 && portNum <= 65535;
134
- }
135
- /**
136
- * Validate timeout value
137
- */
138
- export function isValidTimeout(timeout) {
139
- return timeout > 0 && timeout <= 300000; // Max 5 minutes
140
- }
141
- /**
142
- * Validate log level
143
- */
144
- export function isValidLogLevel(level) {
145
- return ['error', 'warn', 'info', 'debug'].includes(level.toLowerCase());
146
- }
147
- /**
148
- * Validate update target
149
- */
150
- export function isValidUpdateTarget(target) {
151
- return ['latest', 'greatest', 'minor', 'patch', 'newest'].includes(target.toLowerCase());
152
- }
153
- /**
154
- * Validate output format
155
- */
156
- export function isValidOutputFormat(format) {
157
- return ['table', 'json', 'yaml', 'minimal'].includes(format.toLowerCase());
158
- }
159
- /**
160
- * Validate CLI command options
161
- */
162
- export function validateCliOptions(options) {
163
- const errors = [];
164
- const warnings = [];
165
- // Validate workspace path
166
- if (options.workspace && !isValidPath(options.workspace)) {
167
- errors.push('Invalid workspace path');
168
- }
169
- // Validate registry URL
170
- if (options.registry && !isValidUrl(options.registry)) {
171
- errors.push('Invalid registry URL');
172
- }
173
- // Validate timeout
174
- if (options.timeout !== undefined && !isValidTimeout(options.timeout)) {
175
- errors.push('Invalid timeout value (must be between 1 and 300000ms)');
176
- }
177
- // Validate target
178
- if (options.target && !isValidUpdateTarget(options.target)) {
179
- errors.push('Invalid update target (must be: latest, greatest, minor, patch, newest)');
180
- }
181
- // Validate format
182
- if (options.format && !isValidOutputFormat(options.format)) {
183
- errors.push('Invalid output format (must be: table, json, yaml, minimal)');
184
- }
185
- // Validate include patterns
186
- if (options.include && Array.isArray(options.include)) {
187
- for (const pattern of options.include) {
188
- if (typeof pattern === 'string' && !isValidGlob(pattern)) {
189
- warnings.push(`Invalid include pattern: ${pattern}`);
190
- }
191
- }
192
- }
193
- // Validate exclude patterns
194
- if (options.exclude && Array.isArray(options.exclude)) {
195
- for (const pattern of options.exclude) {
196
- if (typeof pattern === 'string' && !isValidGlob(pattern)) {
197
- warnings.push(`Invalid exclude pattern: ${pattern}`);
198
- }
199
- }
200
- }
201
- // Validate catalog name
202
- if (options.catalog && typeof options.catalog === 'string') {
203
- if (options.catalog.trim() === '') {
204
- errors.push('Catalog name cannot be empty');
205
- }
206
- if (options.catalog.includes('/') || options.catalog.includes('\\')) {
207
- errors.push('Catalog name cannot contain path separators');
208
- }
209
- }
210
- return createValidationResult(errors.length === 0, errors, warnings);
211
- }
212
- /**
213
- * Validate configuration object
214
- */
215
- export function validateConfig(config) {
216
- const errors = [];
217
- const warnings = [];
218
- // Validate registry settings
219
- if (config.registry) {
220
- if (config.registry.url && !isValidUrl(config.registry.url)) {
221
- errors.push('Invalid registry URL in configuration');
222
- }
223
- if (config.registry.timeout && !isValidTimeout(config.registry.timeout)) {
224
- errors.push('Invalid registry timeout in configuration');
225
- }
226
- if (config.registry.retries && (config.registry.retries < 0 || config.registry.retries > 10)) {
227
- warnings.push('Registry retries should be between 0 and 10');
228
- }
229
- }
230
- // Validate update settings
231
- if (config.update) {
232
- if (config.update.target && !isValidUpdateTarget(config.update.target)) {
233
- errors.push('Invalid update target in configuration');
234
- }
235
- }
236
- // Validate output settings
237
- if (config.output) {
238
- if (config.output.format && !isValidOutputFormat(config.output.format)) {
239
- errors.push('Invalid output format in configuration');
240
- }
241
- }
242
- // Validate logging settings
243
- if (config.logging) {
244
- if (config.logging.level && !isValidLogLevel(config.logging.level)) {
245
- errors.push('Invalid log level in configuration');
246
- }
247
- if (config.logging.file && !isValidPath(config.logging.file)) {
248
- errors.push('Invalid log file path in configuration');
249
- }
250
- }
251
- return createValidationResult(errors.length === 0, errors, warnings);
252
- }
253
- /**
254
- * Sanitize string input
255
- */
256
- export function sanitizeString(input, options = {}) {
257
- let result = input;
258
- // Strip HTML tags if requested with comprehensive multi-pass sanitization
259
- if (options.stripHtml) {
260
- let previousLength;
261
- // Multi-pass sanitization to handle nested and complex patterns
262
- do {
263
- previousLength = result.length;
264
- // Remove HTML tags, including malformed ones
265
- result = result.replace(/<[^>]*>?/g, '');
266
- // Remove HTML entities
267
- result = result.replace(/&[a-zA-Z0-9#]+;/g, '');
268
- // Remove any remaining < or > characters that might be part of incomplete tags
269
- result = result.replace(/[<>]/g, '');
270
- // Remove potentially dangerous protocol schemes
271
- result = result.replace(/javascript:/gi, '');
272
- result = result.replace(/data:/gi, '');
273
- result = result.replace(/vbscript:/gi, '');
274
- result = result.replace(/file:/gi, '');
275
- result = result.replace(/ftp:/gi, '');
276
- // Remove event handlers
277
- result = result.replace(/on\w+\s*=/gi, '');
278
- // Remove script-related content
279
- result = result.replace(/script[\s\S]*?\/script/gi, '');
280
- result = result.replace(/style[\s\S]*?\/style/gi, '');
281
- // Remove control characters and non-printable characters
282
- // eslint-disable-next-line no-control-regex
283
- result = result.replace(/[\x00-\x1F\x7F-\x9F]/g, '');
284
- // Remove potentially dangerous CSS expressions
285
- result = result.replace(/expression\s*\(/gi, '');
286
- result = result.replace(/url\s*\(/gi, '');
287
- } while (result.length !== previousLength && result.length > 0);
288
- }
289
- // Filter allowed characters
290
- if (options.allowedChars) {
291
- result = result.replace(new RegExp(`[^${options.allowedChars.source}]`, 'g'), '');
292
- }
293
- // Truncate to max length
294
- if (options.maxLength && result.length > options.maxLength) {
295
- result = result.substring(0, options.maxLength);
296
- }
297
- return result.trim();
298
- }
299
- /**
300
- * Validate and sanitize package name
301
- */
302
- export function sanitizePackageName(name) {
303
- return sanitizeString(name, {
304
- maxLength: 214,
305
- allowedChars: /[a-z0-9@/._~*-]/,
306
- }).toLowerCase();
307
- }
308
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/common/utils/validation.ts"],"names":[],"mappings":"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"}
@@ -1,117 +0,0 @@
1
- /**
2
- * Catalog Entity
3
- *
4
- * Represents a pnpm catalog that manages dependency versions centrally.
5
- * A catalog contains a collection of dependencies with their version ranges.
6
- */
7
- import { VersionRange } from '../value-objects/Version.js';
8
- export type CatalogId = string;
9
- export type PackageName = string;
10
- export type CatalogName = string;
11
- export declare class Catalog {
12
- private readonly id;
13
- private readonly name;
14
- private readonly dependencies;
15
- private readonly mode;
16
- private constructor();
17
- /**
18
- * Create a new Catalog
19
- */
20
- static create(id: CatalogId, name: CatalogName, dependencies?: Record<string, string>, mode?: CatalogMode): Catalog;
21
- /**
22
- * Get catalog identifier
23
- */
24
- getId(): CatalogId;
25
- /**
26
- * Get catalog name
27
- */
28
- getName(): CatalogName;
29
- /**
30
- * Get catalog mode
31
- */
32
- getMode(): CatalogMode;
33
- /**
34
- * Get all dependencies in this catalog
35
- */
36
- getDependencies(): ReadonlyMap<PackageName, VersionRange>;
37
- /**
38
- * Get all package names in this catalog
39
- */
40
- getPackageNames(): PackageName[];
41
- /**
42
- * Check if catalog contains a specific package
43
- */
44
- hasDependency(packageName: PackageName): boolean;
45
- /**
46
- * Get version range for a specific package
47
- */
48
- getDependencyVersion(packageName: PackageName): VersionRange | null;
49
- /**
50
- * Add or update a dependency
51
- */
52
- updateDependencyVersion(packageName: PackageName, versionRange: string): void;
53
- /**
54
- * Remove a dependency from the catalog
55
- */
56
- removeDependency(packageName: PackageName): boolean;
57
- /**
58
- * Check version compatibility for a package
59
- */
60
- checkVersionCompatibility(packageName: PackageName, requestedVersion: string): boolean;
61
- /**
62
- * Get packages that would be affected by changing a dependency version
63
- */
64
- getAffectedPackagesByDependencyChange(packageName: PackageName, newVersionRange: string): PackageName[];
65
- /**
66
- * Validate catalog integrity
67
- */
68
- validate(): CatalogValidationResult;
69
- /**
70
- * Convert catalog to plain object for serialization
71
- */
72
- toPlainObject(): CatalogData;
73
- /**
74
- * Create catalog from plain object
75
- */
76
- static fromPlainObject(data: CatalogData): Catalog;
77
- /**
78
- * Check if a package name is valid
79
- */
80
- private isValidPackageName;
81
- /**
82
- * Check equality with another catalog
83
- */
84
- equals(other: Catalog): boolean;
85
- }
86
- /**
87
- * Catalog Mode Enum
88
- */
89
- export declare enum CatalogMode {
90
- MANUAL = "manual",
91
- STRICT = "strict",
92
- PREFER = "prefer"
93
- }
94
- /**
95
- * Catalog Data Interface for serialization
96
- */
97
- export interface CatalogData {
98
- id: CatalogId;
99
- name: CatalogName;
100
- dependencies: Record<string, string>;
101
- mode: CatalogMode;
102
- }
103
- /**
104
- * Catalog Validation Result
105
- */
106
- export declare class CatalogValidationResult {
107
- private readonly isValid;
108
- private readonly errors;
109
- private readonly warnings;
110
- constructor(isValid: boolean, errors: string[], warnings: string[]);
111
- getIsValid(): boolean;
112
- getErrors(): string[];
113
- getWarnings(): string[];
114
- hasErrors(): boolean;
115
- hasWarnings(): boolean;
116
- }
117
- //# sourceMappingURL=Catalog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AACjC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IAEnC,OAAO;IAYP;;OAEG;WACW,MAAM,CAClB,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,WAAW,EACjB,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACzC,IAAI,GAAE,WAAgC,GACrC,OAAO;IAgBV;;OAEG;IACI,KAAK,IAAI,SAAS;IAIzB;;OAEG;IACI,OAAO,IAAI,WAAW;IAI7B;;OAEG;IACI,OAAO,IAAI,WAAW;IAI7B;;OAEG;IACI,eAAe,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC;IAIhE;;OAEG;IACI,eAAe,IAAI,WAAW,EAAE;IAIvC;;OAEG;IACI,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAIvD;;OAEG;IACI,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI;IAI1E;;OAEG;IACI,uBAAuB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IASpF;;OAEG;IACI,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAI1D;;OAEG;IACI,yBAAyB,CAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO;IAc7F;;OAEG;IACI,qCAAqC,CAC1C,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,MAAM,GACtB,WAAW,EAAE;IAsBhB;;OAEG;IACI,QAAQ,IAAI,uBAAuB;IAyB1C;;OAEG;IACI,aAAa,IAAI,WAAW;IAenC;;OAEG;WACW,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAIzD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACI,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAkBvC;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFR,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,MAAM,EAAE;IAG9B,UAAU,IAAI,OAAO;IAIrB,SAAS,IAAI,MAAM,EAAE;IAIrB,WAAW,IAAI,MAAM,EAAE;IAIvB,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,OAAO;CAG9B"}
@@ -1,240 +0,0 @@
1
- /**
2
- * Catalog Entity
3
- *
4
- * Represents a pnpm catalog that manages dependency versions centrally.
5
- * A catalog contains a collection of dependencies with their version ranges.
6
- */
7
- import { VersionRange } from '../value-objects/Version.js';
8
- export class Catalog {
9
- id;
10
- name;
11
- dependencies;
12
- mode;
13
- constructor(id, name, dependencies, mode = CatalogMode.MANUAL) {
14
- this.id = id;
15
- this.name = name;
16
- this.dependencies = new Map(dependencies);
17
- this.mode = mode;
18
- }
19
- /**
20
- * Create a new Catalog
21
- */
22
- static create(id, name, dependencies = {}, mode = CatalogMode.MANUAL) {
23
- const dependencyMap = new Map();
24
- for (const [packageName, versionRange] of Object.entries(dependencies)) {
25
- try {
26
- dependencyMap.set(packageName, VersionRange.fromString(versionRange));
27
- }
28
- catch (error) {
29
- throw new Error(`Invalid version range for package "${packageName}" in catalog "${name}": ${versionRange}`);
30
- }
31
- }
32
- return new Catalog(id, name, dependencyMap, mode);
33
- }
34
- /**
35
- * Get catalog identifier
36
- */
37
- getId() {
38
- return this.id;
39
- }
40
- /**
41
- * Get catalog name
42
- */
43
- getName() {
44
- return this.name;
45
- }
46
- /**
47
- * Get catalog mode
48
- */
49
- getMode() {
50
- return this.mode;
51
- }
52
- /**
53
- * Get all dependencies in this catalog
54
- */
55
- getDependencies() {
56
- return this.dependencies;
57
- }
58
- /**
59
- * Get all package names in this catalog
60
- */
61
- getPackageNames() {
62
- return Array.from(this.dependencies.keys());
63
- }
64
- /**
65
- * Check if catalog contains a specific package
66
- */
67
- hasDependency(packageName) {
68
- return this.dependencies.has(packageName);
69
- }
70
- /**
71
- * Get version range for a specific package
72
- */
73
- getDependencyVersion(packageName) {
74
- return this.dependencies.get(packageName) || null;
75
- }
76
- /**
77
- * Add or update a dependency
78
- */
79
- updateDependencyVersion(packageName, versionRange) {
80
- try {
81
- const parsedRange = VersionRange.fromString(versionRange);
82
- this.dependencies.set(packageName, parsedRange);
83
- }
84
- catch (error) {
85
- throw new Error(`Invalid version range for package "${packageName}": ${versionRange}`);
86
- }
87
- }
88
- /**
89
- * Remove a dependency from the catalog
90
- */
91
- removeDependency(packageName) {
92
- return this.dependencies.delete(packageName);
93
- }
94
- /**
95
- * Check version compatibility for a package
96
- */
97
- checkVersionCompatibility(packageName, requestedVersion) {
98
- const catalogVersion = this.dependencies.get(packageName);
99
- if (!catalogVersion) {
100
- return false;
101
- }
102
- try {
103
- const requestedRange = VersionRange.fromString(requestedVersion);
104
- return catalogVersion.isCompatibleWith(requestedRange);
105
- }
106
- catch {
107
- return false;
108
- }
109
- }
110
- /**
111
- * Get packages that would be affected by changing a dependency version
112
- */
113
- getAffectedPackagesByDependencyChange(packageName, newVersionRange) {
114
- if (!this.hasDependency(packageName)) {
115
- return [];
116
- }
117
- try {
118
- const newRange = VersionRange.fromString(newVersionRange);
119
- const currentRange = this.dependencies.get(packageName);
120
- // If the ranges are compatible, no packages are affected
121
- if (currentRange.isCompatibleWith(newRange)) {
122
- return [];
123
- }
124
- // Return all packages that use this catalog (this would typically be resolved
125
- // at the aggregate level with workspace information)
126
- return [packageName];
127
- }
128
- catch {
129
- return [packageName];
130
- }
131
- }
132
- /**
133
- * Validate catalog integrity
134
- */
135
- validate() {
136
- const errors = [];
137
- const warnings = [];
138
- // Check for empty catalog
139
- if (this.dependencies.size === 0) {
140
- warnings.push(`Catalog "${this.name}" is empty`);
141
- }
142
- // Validate each dependency
143
- for (const [packageName, versionRange] of this.dependencies) {
144
- // Check package name format
145
- if (!this.isValidPackageName(packageName)) {
146
- errors.push(`Invalid package name: "${packageName}"`);
147
- }
148
- // Check for common issues
149
- if (versionRange.toString().includes('*')) {
150
- warnings.push(`Package "${packageName}" uses wildcard version which may be unstable`);
151
- }
152
- }
153
- return new CatalogValidationResult(errors.length === 0, errors, warnings);
154
- }
155
- /**
156
- * Convert catalog to plain object for serialization
157
- */
158
- toPlainObject() {
159
- const dependencies = {};
160
- for (const [packageName, versionRange] of this.dependencies) {
161
- dependencies[packageName] = versionRange.toString();
162
- }
163
- return {
164
- id: this.id,
165
- name: this.name,
166
- dependencies,
167
- mode: this.mode,
168
- };
169
- }
170
- /**
171
- * Create catalog from plain object
172
- */
173
- static fromPlainObject(data) {
174
- return Catalog.create(data.id, data.name, data.dependencies, data.mode);
175
- }
176
- /**
177
- * Check if a package name is valid
178
- */
179
- isValidPackageName(packageName) {
180
- // Basic npm package name validation
181
- const validPackageNameRegex = /^(@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
182
- return validPackageNameRegex.test(packageName);
183
- }
184
- /**
185
- * Check equality with another catalog
186
- */
187
- equals(other) {
188
- if (this.id !== other.id || this.name !== other.name || this.mode !== other.mode) {
189
- return false;
190
- }
191
- if (this.dependencies.size !== other.dependencies.size) {
192
- return false;
193
- }
194
- for (const [packageName, versionRange] of this.dependencies) {
195
- const otherRange = other.dependencies.get(packageName);
196
- if (!otherRange || !versionRange.equals(otherRange)) {
197
- return false;
198
- }
199
- }
200
- return true;
201
- }
202
- }
203
- /**
204
- * Catalog Mode Enum
205
- */
206
- export var CatalogMode;
207
- (function (CatalogMode) {
208
- CatalogMode["MANUAL"] = "manual";
209
- CatalogMode["STRICT"] = "strict";
210
- CatalogMode["PREFER"] = "prefer";
211
- })(CatalogMode || (CatalogMode = {}));
212
- /**
213
- * Catalog Validation Result
214
- */
215
- export class CatalogValidationResult {
216
- isValid;
217
- errors;
218
- warnings;
219
- constructor(isValid, errors, warnings) {
220
- this.isValid = isValid;
221
- this.errors = errors;
222
- this.warnings = warnings;
223
- }
224
- getIsValid() {
225
- return this.isValid;
226
- }
227
- getErrors() {
228
- return [...this.errors];
229
- }
230
- getWarnings() {
231
- return [...this.warnings];
232
- }
233
- hasErrors() {
234
- return this.errors.length > 0;
235
- }
236
- hasWarnings() {
237
- return this.warnings.length > 0;
238
- }
239
- }
240
- //# sourceMappingURL=Catalog.js.map