pnpm-catalog-updates 0.1.1

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 (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +335 -0
  3. package/bin/pcu.js +15 -0
  4. package/dist/application/services/CatalogUpdateService.d.ts +190 -0
  5. package/dist/application/services/CatalogUpdateService.d.ts.map +1 -0
  6. package/dist/application/services/CatalogUpdateService.js +521 -0
  7. package/dist/application/services/CatalogUpdateService.js.map +1 -0
  8. package/dist/application/services/WorkspaceService.d.ts +139 -0
  9. package/dist/application/services/WorkspaceService.d.ts.map +1 -0
  10. package/dist/application/services/WorkspaceService.js +340 -0
  11. package/dist/application/services/WorkspaceService.js.map +1 -0
  12. package/dist/cli/commands/CheckCommand.d.ts +41 -0
  13. package/dist/cli/commands/CheckCommand.d.ts.map +1 -0
  14. package/dist/cli/commands/CheckCommand.js +168 -0
  15. package/dist/cli/commands/CheckCommand.js.map +1 -0
  16. package/dist/cli/commands/UpdateCommand.d.ts +69 -0
  17. package/dist/cli/commands/UpdateCommand.d.ts.map +1 -0
  18. package/dist/cli/commands/UpdateCommand.js +361 -0
  19. package/dist/cli/commands/UpdateCommand.js.map +1 -0
  20. package/dist/cli/formatters/OutputFormatter.d.ts +95 -0
  21. package/dist/cli/formatters/OutputFormatter.d.ts.map +1 -0
  22. package/dist/cli/formatters/OutputFormatter.js +437 -0
  23. package/dist/cli/formatters/OutputFormatter.js.map +1 -0
  24. package/dist/cli/index.d.ts +12 -0
  25. package/dist/cli/index.d.ts.map +1 -0
  26. package/dist/cli/index.js +244 -0
  27. package/dist/cli/index.js.map +1 -0
  28. package/dist/cli/options/GlobalOptions.d.ts +117 -0
  29. package/dist/cli/options/GlobalOptions.d.ts.map +1 -0
  30. package/dist/cli/options/GlobalOptions.js +278 -0
  31. package/dist/cli/options/GlobalOptions.js.map +1 -0
  32. package/dist/cli/options/index.d.ts +5 -0
  33. package/dist/cli/options/index.d.ts.map +1 -0
  34. package/dist/cli/options/index.js +5 -0
  35. package/dist/cli/options/index.js.map +1 -0
  36. package/dist/cli/validators/CommandValidator.d.ts +60 -0
  37. package/dist/cli/validators/CommandValidator.d.ts.map +1 -0
  38. package/dist/cli/validators/CommandValidator.js +319 -0
  39. package/dist/cli/validators/CommandValidator.js.map +1 -0
  40. package/dist/cli/validators/index.d.ts +5 -0
  41. package/dist/cli/validators/index.d.ts.map +1 -0
  42. package/dist/cli/validators/index.js +5 -0
  43. package/dist/cli/validators/index.js.map +1 -0
  44. package/dist/common/config/Config.d.ts +142 -0
  45. package/dist/common/config/Config.d.ts.map +1 -0
  46. package/dist/common/config/Config.js +355 -0
  47. package/dist/common/config/Config.js.map +1 -0
  48. package/dist/common/config/index.d.ts +6 -0
  49. package/dist/common/config/index.d.ts.map +1 -0
  50. package/dist/common/config/index.js +6 -0
  51. package/dist/common/config/index.js.map +1 -0
  52. package/dist/common/logger/Logger.d.ts +110 -0
  53. package/dist/common/logger/Logger.d.ts.map +1 -0
  54. package/dist/common/logger/Logger.js +289 -0
  55. package/dist/common/logger/Logger.js.map +1 -0
  56. package/dist/common/logger/index.d.ts +6 -0
  57. package/dist/common/logger/index.d.ts.map +1 -0
  58. package/dist/common/logger/index.js +6 -0
  59. package/dist/common/logger/index.js.map +1 -0
  60. package/dist/common/types/cli.d.ts +265 -0
  61. package/dist/common/types/cli.d.ts.map +1 -0
  62. package/dist/common/types/cli.js +5 -0
  63. package/dist/common/types/cli.js.map +1 -0
  64. package/dist/common/types/core.d.ts +270 -0
  65. package/dist/common/types/core.d.ts.map +1 -0
  66. package/dist/common/types/core.js +32 -0
  67. package/dist/common/types/core.js.map +1 -0
  68. package/dist/common/types/index.d.ts +8 -0
  69. package/dist/common/types/index.d.ts.map +1 -0
  70. package/dist/common/types/index.js +8 -0
  71. package/dist/common/types/index.js.map +1 -0
  72. package/dist/common/utils/async.d.ts +74 -0
  73. package/dist/common/utils/async.d.ts.map +1 -0
  74. package/dist/common/utils/async.js +228 -0
  75. package/dist/common/utils/async.js.map +1 -0
  76. package/dist/common/utils/format.d.ts +32 -0
  77. package/dist/common/utils/format.d.ts.map +1 -0
  78. package/dist/common/utils/format.js +121 -0
  79. package/dist/common/utils/format.js.map +1 -0
  80. package/dist/common/utils/git.d.ts +44 -0
  81. package/dist/common/utils/git.d.ts.map +1 -0
  82. package/dist/common/utils/git.js +147 -0
  83. package/dist/common/utils/git.js.map +1 -0
  84. package/dist/common/utils/index.d.ts +11 -0
  85. package/dist/common/utils/index.d.ts.map +1 -0
  86. package/dist/common/utils/index.js +11 -0
  87. package/dist/common/utils/index.js.map +1 -0
  88. package/dist/common/utils/string.d.ts +56 -0
  89. package/dist/common/utils/string.d.ts.map +1 -0
  90. package/dist/common/utils/string.js +134 -0
  91. package/dist/common/utils/string.js.map +1 -0
  92. package/dist/common/utils/validation.d.ts +88 -0
  93. package/dist/common/utils/validation.d.ts.map +1 -0
  94. package/dist/common/utils/validation.js +281 -0
  95. package/dist/common/utils/validation.js.map +1 -0
  96. package/dist/domain/entities/Catalog.d.ts +117 -0
  97. package/dist/domain/entities/Catalog.d.ts.map +1 -0
  98. package/dist/domain/entities/Catalog.js +240 -0
  99. package/dist/domain/entities/Catalog.js.map +1 -0
  100. package/dist/domain/entities/Package.d.ts +142 -0
  101. package/dist/domain/entities/Package.d.ts.map +1 -0
  102. package/dist/domain/entities/Package.js +275 -0
  103. package/dist/domain/entities/Package.js.map +1 -0
  104. package/dist/domain/entities/Workspace.d.ts +95 -0
  105. package/dist/domain/entities/Workspace.d.ts.map +1 -0
  106. package/dist/domain/entities/Workspace.js +170 -0
  107. package/dist/domain/entities/Workspace.js.map +1 -0
  108. package/dist/domain/repositories/WorkspaceRepository.d.ts +41 -0
  109. package/dist/domain/repositories/WorkspaceRepository.d.ts.map +1 -0
  110. package/dist/domain/repositories/WorkspaceRepository.js +8 -0
  111. package/dist/domain/repositories/WorkspaceRepository.js.map +1 -0
  112. package/dist/domain/value-objects/CatalogCollection.d.ts +106 -0
  113. package/dist/domain/value-objects/CatalogCollection.d.ts.map +1 -0
  114. package/dist/domain/value-objects/CatalogCollection.js +230 -0
  115. package/dist/domain/value-objects/CatalogCollection.js.map +1 -0
  116. package/dist/domain/value-objects/PackageCollection.d.ts +122 -0
  117. package/dist/domain/value-objects/PackageCollection.d.ts.map +1 -0
  118. package/dist/domain/value-objects/PackageCollection.js +263 -0
  119. package/dist/domain/value-objects/PackageCollection.js.map +1 -0
  120. package/dist/domain/value-objects/Version.d.ts +141 -0
  121. package/dist/domain/value-objects/Version.d.ts.map +1 -0
  122. package/dist/domain/value-objects/Version.js +268 -0
  123. package/dist/domain/value-objects/Version.js.map +1 -0
  124. package/dist/domain/value-objects/WorkspaceConfig.d.ts +135 -0
  125. package/dist/domain/value-objects/WorkspaceConfig.d.ts.map +1 -0
  126. package/dist/domain/value-objects/WorkspaceConfig.js +307 -0
  127. package/dist/domain/value-objects/WorkspaceConfig.js.map +1 -0
  128. package/dist/domain/value-objects/WorkspaceId.d.ts +51 -0
  129. package/dist/domain/value-objects/WorkspaceId.d.ts.map +1 -0
  130. package/dist/domain/value-objects/WorkspaceId.js +104 -0
  131. package/dist/domain/value-objects/WorkspaceId.js.map +1 -0
  132. package/dist/domain/value-objects/WorkspacePath.d.ts +75 -0
  133. package/dist/domain/value-objects/WorkspacePath.d.ts.map +1 -0
  134. package/dist/domain/value-objects/WorkspacePath.js +128 -0
  135. package/dist/domain/value-objects/WorkspacePath.js.map +1 -0
  136. package/dist/infrastructure/cache/Cache.d.ts +161 -0
  137. package/dist/infrastructure/cache/Cache.d.ts.map +1 -0
  138. package/dist/infrastructure/cache/Cache.js +398 -0
  139. package/dist/infrastructure/cache/Cache.js.map +1 -0
  140. package/dist/infrastructure/cache/index.d.ts +6 -0
  141. package/dist/infrastructure/cache/index.d.ts.map +1 -0
  142. package/dist/infrastructure/cache/index.js +6 -0
  143. package/dist/infrastructure/cache/index.js.map +1 -0
  144. package/dist/infrastructure/external-services/NpmRegistryService.d.ts +106 -0
  145. package/dist/infrastructure/external-services/NpmRegistryService.d.ts.map +1 -0
  146. package/dist/infrastructure/external-services/NpmRegistryService.js +303 -0
  147. package/dist/infrastructure/external-services/NpmRegistryService.js.map +1 -0
  148. package/dist/infrastructure/file-system/FileSystemService.d.ts +100 -0
  149. package/dist/infrastructure/file-system/FileSystemService.d.ts.map +1 -0
  150. package/dist/infrastructure/file-system/FileSystemService.js +284 -0
  151. package/dist/infrastructure/file-system/FileSystemService.js.map +1 -0
  152. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts +57 -0
  153. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts.map +1 -0
  154. package/dist/infrastructure/repositories/FileWorkspaceRepository.js +179 -0
  155. package/dist/infrastructure/repositories/FileWorkspaceRepository.js.map +1 -0
  156. package/package.json +125 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 pnpm-catalog-updater
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,335 @@
1
+ # pnpm-catalog-updater
2
+
3
+ A powerful CLI tool to check and update pnpm workspace catalog dependencies, inspired by [npm-check-updates](https://github.com/raineorshine/npm-check-updates).
4
+
5
+ [![CI](https://github.com/houko/pnpm-catalog-updater/workflows/CI/badge.svg)](https://github.com/houko/pnpm-catalog-updater/actions)
6
+ [![npm version](https://badge.fury.io/js/pnpm-catalog-updater.svg)](https://badge.fury.io/js/pnpm-catalog-updater)
7
+ [![Coverage Status](https://coveralls.io/repos/github/houko/pnpm-catalog-updater/badge.svg?branch=main)](https://coveralls.io/github/houko/pnpm-catalog-updater?branch=main)
8
+
9
+ ## ✨ Features
10
+
11
+ - 🔍 **Smart Detection**: Automatically discovers pnpm workspaces and catalog configurations
12
+ - 🎯 **Catalog Focused**: Specialized for pnpm catalog dependency management
13
+ - 🚀 **Interactive Mode**: Choose which dependencies to update with an intuitive interface
14
+ - 📊 **Impact Analysis**: Understand which packages will be affected by catalog changes
15
+ - 🔒 **Safe Updates**: Dry-run mode and backup options for safe dependency updates
16
+ - ⚡ **High Performance**: Parallel API queries and intelligent caching
17
+ - 🛡️ **Security Aware**: Built-in security vulnerability scanning
18
+ - 🔧 **Configurable**: Flexible configuration options and update strategies
19
+
20
+ ## 🚀 Quick Start
21
+
22
+ ### Installation
23
+
24
+ ```bash
25
+ # Global installation
26
+ npm install -g pnpm-catalog-updater
27
+
28
+ # Or use with npx
29
+ npx pnpm-catalog-updater
30
+
31
+ # Or use the short alias
32
+ pcu
33
+ ```
34
+
35
+ ### Basic Usage
36
+
37
+ ```bash
38
+ # Check for outdated catalog dependencies
39
+ pcu check
40
+
41
+ # Update catalog dependencies interactively
42
+ pcu update --interactive
43
+
44
+ # Update to latest versions (dry run)
45
+ pcu update --dry-run
46
+
47
+ # Update specific catalog
48
+ pcu update --catalog react17
49
+
50
+ # Update with specific target
51
+ pcu update --target minor
52
+ ```
53
+
54
+ ## 📖 Usage
55
+
56
+ ### Commands
57
+
58
+ #### `pcu check`
59
+
60
+ Check for outdated dependencies in your pnpm workspace catalogs.
61
+
62
+ ```bash
63
+ pcu check [options]
64
+
65
+ Options:
66
+ --workspace <path> Workspace directory (default: current directory)
67
+ --catalog <name> Check specific catalog only
68
+ --format <type> Output format: table, json, yaml (default: table)
69
+ --verbose Show detailed information
70
+ ```
71
+
72
+ #### `pcu update`
73
+
74
+ Update catalog dependencies to newer versions.
75
+
76
+ ```bash
77
+ pcu update [options]
78
+
79
+ Options:
80
+ --interactive, -i Interactive mode to choose updates
81
+ --dry-run, -d Preview changes without writing files
82
+ --target <type> Update target: latest, greatest, minor, patch (default: latest)
83
+ --catalog <name> Update specific catalog only
84
+ --include <pattern> Include packages matching pattern
85
+ --exclude <pattern> Exclude packages matching pattern
86
+ --force Force updates even if risky
87
+ ```
88
+
89
+ #### `pcu analyze`
90
+
91
+ Analyze the impact of updating a specific dependency.
92
+
93
+ ```bash
94
+ pcu analyze <catalog> <package>
95
+
96
+ Example:
97
+ pcu analyze default react
98
+ pcu analyze react17 @types/react
99
+ ```
100
+
101
+ ### Configuration
102
+
103
+ Create a `.pcurc.json` file in your project root:
104
+
105
+ ```json
106
+ {
107
+ "defaults": {
108
+ "target": "latest",
109
+ "timeout": 30000,
110
+ "parallel": 5
111
+ },
112
+ "workspace": {
113
+ "autoDiscover": true,
114
+ "catalogMode": "strict"
115
+ },
116
+ "update": {
117
+ "interactive": true,
118
+ "dryRunFirst": true,
119
+ "skipPrereleases": false
120
+ },
121
+ "output": {
122
+ "format": "table",
123
+ "color": true,
124
+ "verbose": false
125
+ }
126
+ }
127
+ ```
128
+
129
+ ## 📁 Project Structure
130
+
131
+ This project follows Domain-Driven Design (DDD) principles:
132
+
133
+ ```
134
+ src/
135
+ ├── cli/ # CLI interface layer
136
+ │ ├── commands/ # Command handlers
137
+ │ ├── options/ # Option parsers
138
+ │ ├── formatters/ # Output formatters
139
+ │ └── validators/ # Input validation
140
+ ├── application/ # Application services
141
+ │ ├── services/ # Application services
142
+ │ ├── handlers/ # Command handlers
143
+ │ └── mappers/ # Data mappers
144
+ ├── domain/ # Domain model
145
+ │ ├── entities/ # Domain entities
146
+ │ ├── value-objects/ # Value objects
147
+ │ ├── aggregates/ # Aggregate roots
148
+ │ ├── services/ # Domain services
149
+ │ └── repositories/ # Repository interfaces
150
+ ├── infrastructure/ # Infrastructure layer
151
+ │ ├── repositories/ # Repository implementations
152
+ │ ├── external-services/ # External service clients
153
+ │ └── file-system/ # File system operations
154
+ ├── adapters/ # Adapter layer
155
+ │ ├── registry/ # Package registry adapters
156
+ │ └── package-managers/ # Package manager adapters
157
+ └── common/ # Common utilities
158
+ ├── types/ # Type definitions
159
+ ├── utils/ # Utility functions
160
+ ├── config/ # Configuration
161
+ └── logger/ # Logging
162
+ ```
163
+
164
+ ## 🧪 Development
165
+
166
+ ### Prerequisites
167
+
168
+ - Node.js >= 18.0.0
169
+ - pnpm >= 8.15.0
170
+
171
+ ### Setup
172
+
173
+ ```bash
174
+ # Clone the repository
175
+ git clone https://github.com/houko/pnpm-catalog-updater.git
176
+ cd pnpm-catalog-updater
177
+
178
+ # Install dependencies
179
+ pnpm install
180
+
181
+ # Build the project
182
+ pnpm build
183
+
184
+ # Run tests
185
+ pnpm test
186
+
187
+ # Run in development mode
188
+ pnpm dev --help
189
+ ```
190
+
191
+ ### Scripts
192
+
193
+ ```bash
194
+ # Development
195
+ pnpm dev # Run in development mode
196
+ pnpm build # Build the project
197
+ pnpm build:watch # Build in watch mode
198
+
199
+ # Testing
200
+ pnpm test # Run unit tests
201
+ pnpm test:watch # Run tests in watch mode
202
+ pnpm test:coverage # Run tests with coverage
203
+ pnpm test:e2e # Run E2E tests
204
+
205
+ # Code Quality
206
+ pnpm lint # Lint code
207
+ pnpm lint:fix # Fix linting issues
208
+ pnpm format # Format code
209
+ pnpm typecheck # Type checking
210
+
211
+ # Utilities
212
+ pnpm clean # Clean build artifacts
213
+ ```
214
+
215
+ ### Testing
216
+
217
+ The project uses a comprehensive testing strategy:
218
+
219
+ - **Unit Tests**: Test individual components in isolation
220
+ - **Integration Tests**: Test component interactions
221
+ - **E2E Tests**: Test the complete CLI workflow
222
+
223
+ ```bash
224
+ # Run all tests
225
+ pnpm test
226
+
227
+ # Run tests with coverage
228
+ pnpm test:coverage
229
+
230
+ # Run E2E tests
231
+ pnpm test:e2e
232
+
233
+ # Run tests in watch mode
234
+ pnpm test:watch
235
+ ```
236
+
237
+ ## 📊 Examples
238
+
239
+ ### Basic Workspace
240
+
241
+ ```yaml
242
+ # pnpm-workspace.yaml
243
+ packages:
244
+ - "packages/*"
245
+
246
+ catalog:
247
+ react: ^18.2.0
248
+ lodash: ^4.17.21
249
+ typescript: ^5.0.0
250
+ ```
251
+
252
+ ### Multi-Catalog Setup
253
+
254
+ ```yaml
255
+ # pnpm-workspace.yaml
256
+ packages:
257
+ - "apps/*"
258
+ - "packages/*"
259
+
260
+ catalog:
261
+ # Default catalog
262
+ react: ^18.2.0
263
+ typescript: ^5.0.0
264
+
265
+ catalogs:
266
+ # Legacy versions
267
+ react17:
268
+ react: ^17.0.2
269
+ @types/react: ^17.0.62
270
+
271
+ # Latest versions
272
+ latest:
273
+ react: ^18.2.0
274
+ typescript: ^5.2.0
275
+ ```
276
+
277
+ ### Usage in package.json
278
+
279
+ ```json
280
+ {
281
+ "dependencies": {
282
+ "react": "catalog:",
283
+ "lodash": "catalog:",
284
+ "legacy-lib": "catalog:react17"
285
+ }
286
+ }
287
+ ```
288
+
289
+ ## 🤝 Contributing
290
+
291
+ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
292
+
293
+ ### Development Workflow
294
+
295
+ 1. Fork the repository
296
+ 2. Create a feature branch: `git checkout -b feature/amazing-feature`
297
+ 3. Make your changes
298
+ 4. Add tests for your changes
299
+ 5. Ensure all tests pass: `pnpm test`
300
+ 6. Lint your code: `pnpm lint:fix`
301
+ 7. Commit your changes: `git commit -m 'feat: add amazing feature'`
302
+ 8. Push to the branch: `git push origin feature/amazing-feature`
303
+ 9. Open a Pull Request
304
+
305
+ ### Commit Message Convention
306
+
307
+ We use [Conventional Commits](https://conventionalcommits.org/):
308
+
309
+ - `feat`: A new feature
310
+ - `fix`: A bug fix
311
+ - `docs`: Documentation only changes
312
+ - `style`: Changes that do not affect the meaning of the code
313
+ - `refactor`: A code change that neither fixes a bug nor adds a feature
314
+ - `test`: Adding missing tests or correcting existing tests
315
+ - `chore`: Changes to the build process or auxiliary tools
316
+
317
+ ## 📄 License
318
+
319
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
320
+
321
+ ## 🙏 Acknowledgments
322
+
323
+ - Inspired by [npm-check-updates](https://github.com/raineorshine/npm-check-updates)
324
+ - Built with love for the pnpm community
325
+ - Thanks to all contributors and users
326
+
327
+ ## 📞 Support
328
+
329
+ - 📖 [Documentation](https://github.com/houko/pnpm-catalog-updater#readme)
330
+ - 🐛 [Issue Tracker](https://github.com/houko/pnpm-catalog-updater/issues)
331
+ - 💬 [Discussions](https://github.com/houko/pnpm-catalog-updater/discussions)
332
+
333
+ ---
334
+
335
+ Made with ❤️ for the pnpm community
package/bin/pcu.js ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { fileURLToPath } from 'url';
4
+ import path from 'path';
5
+
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = path.dirname(__filename);
8
+
9
+ // Import and run the CLI
10
+ const { main } = await import(path.join(__dirname, '..', 'dist', 'cli', 'index.js'));
11
+
12
+ main().catch((error) => {
13
+ console.error('❌ Error:', error.message);
14
+ process.exit(1);
15
+ });
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Catalog Update Service
3
+ *
4
+ * Core application service that handles catalog dependency updates.
5
+ * Orchestrates domain objects and infrastructure services to provide
6
+ * high-level use cases for checking and updating catalog dependencies.
7
+ */
8
+ import { WorkspaceRepository } from '../../domain/repositories/WorkspaceRepository.js';
9
+ import { NpmRegistryService } from '../../infrastructure/external-services/NpmRegistryService.js';
10
+ export interface CheckOptions {
11
+ workspacePath?: string | undefined;
12
+ catalogName?: string | undefined;
13
+ target?: UpdateTarget | undefined;
14
+ includePrerelease?: boolean | undefined;
15
+ exclude?: string[] | undefined;
16
+ include?: string[] | undefined;
17
+ }
18
+ export interface UpdateOptions extends CheckOptions {
19
+ interactive?: boolean;
20
+ dryRun?: boolean;
21
+ force?: boolean;
22
+ createBackup?: boolean;
23
+ }
24
+ export interface OutdatedReport {
25
+ workspace: {
26
+ path: string;
27
+ name: string;
28
+ };
29
+ catalogs: CatalogUpdateInfo[];
30
+ totalOutdated: number;
31
+ hasUpdates: boolean;
32
+ }
33
+ export interface CatalogUpdateInfo {
34
+ catalogName: string;
35
+ outdatedDependencies: OutdatedDependencyInfo[];
36
+ totalPackages: number;
37
+ outdatedCount: number;
38
+ }
39
+ export interface OutdatedDependencyInfo {
40
+ packageName: string;
41
+ currentVersion: string;
42
+ latestVersion: string;
43
+ wantedVersion: string;
44
+ updateType: 'major' | 'minor' | 'patch';
45
+ isSecurityUpdate: boolean;
46
+ affectedPackages: string[];
47
+ }
48
+ export interface UpdatePlan {
49
+ workspace: {
50
+ path: string;
51
+ name: string;
52
+ };
53
+ updates: PlannedUpdate[];
54
+ conflicts: VersionConflict[];
55
+ totalUpdates: number;
56
+ hasConflicts: boolean;
57
+ }
58
+ export interface PlannedUpdate {
59
+ catalogName: string;
60
+ packageName: string;
61
+ currentVersion: string;
62
+ newVersion: string;
63
+ updateType: 'major' | 'minor' | 'patch';
64
+ reason: string;
65
+ affectedPackages: string[];
66
+ }
67
+ export interface VersionConflict {
68
+ packageName: string;
69
+ catalogs: Array<{
70
+ catalogName: string;
71
+ currentVersion: string;
72
+ proposedVersion: string;
73
+ }>;
74
+ recommendation: string;
75
+ }
76
+ export interface UpdateResult {
77
+ success: boolean;
78
+ workspace: {
79
+ path: string;
80
+ name: string;
81
+ };
82
+ updatedDependencies: UpdatedDependency[];
83
+ skippedDependencies: SkippedDependency[];
84
+ errors: UpdateError[];
85
+ totalUpdated: number;
86
+ totalSkipped: number;
87
+ totalErrors: number;
88
+ }
89
+ export interface UpdatedDependency {
90
+ catalogName: string;
91
+ packageName: string;
92
+ fromVersion: string;
93
+ toVersion: string;
94
+ updateType: 'major' | 'minor' | 'patch';
95
+ }
96
+ export interface SkippedDependency {
97
+ catalogName: string;
98
+ packageName: string;
99
+ currentVersion: string;
100
+ reason: string;
101
+ }
102
+ export interface UpdateError {
103
+ catalogName: string;
104
+ packageName: string;
105
+ error: string;
106
+ fatal: boolean;
107
+ }
108
+ export interface ImpactAnalysis {
109
+ packageName: string;
110
+ catalogName: string;
111
+ currentVersion: string;
112
+ proposedVersion: string;
113
+ updateType: 'major' | 'minor' | 'patch';
114
+ affectedPackages: PackageImpact[];
115
+ riskLevel: 'low' | 'medium' | 'high';
116
+ securityImpact: SecurityImpact;
117
+ recommendations: string[];
118
+ }
119
+ export interface PackageImpact {
120
+ packageName: string;
121
+ packagePath: string;
122
+ dependencyType: 'dependencies' | 'devDependencies' | 'peerDependencies' | 'optionalDependencies';
123
+ isBreakingChange: boolean;
124
+ compatibilityRisk: 'low' | 'medium' | 'high';
125
+ }
126
+ export interface SecurityImpact {
127
+ hasVulnerabilities: boolean;
128
+ fixedVulnerabilities: number;
129
+ newVulnerabilities: number;
130
+ severityChange: 'better' | 'worse' | 'same';
131
+ }
132
+ export type UpdateTarget = 'latest' | 'greatest' | 'minor' | 'patch' | 'newest';
133
+ export declare class CatalogUpdateService {
134
+ private readonly workspaceRepository;
135
+ private readonly registryService;
136
+ constructor(workspaceRepository: WorkspaceRepository, registryService: NpmRegistryService);
137
+ /**
138
+ * Check for outdated catalog dependencies
139
+ */
140
+ checkOutdatedDependencies(options?: CheckOptions): Promise<OutdatedReport>;
141
+ /**
142
+ * Plan catalog dependency updates
143
+ */
144
+ planUpdates(options: UpdateOptions): Promise<UpdatePlan>;
145
+ /**
146
+ * Execute catalog dependency updates
147
+ */
148
+ executeUpdates(plan: UpdatePlan, options: UpdateOptions): Promise<UpdateResult>;
149
+ /**
150
+ * Analyze the impact of updating a specific dependency
151
+ */
152
+ analyzeImpact(catalogName: string, packageName: string, newVersion: string, workspacePath?: string): Promise<ImpactAnalysis>;
153
+ /**
154
+ * Check if a specific package should be updated based on filters
155
+ */
156
+ private shouldCheckPackage;
157
+ /**
158
+ * Check if package matches a pattern (simple glob-like matching)
159
+ */
160
+ private matchesPattern;
161
+ /**
162
+ * Check if a package needs updating
163
+ */
164
+ private checkPackageUpdate;
165
+ /**
166
+ * Get version constrained by update type
167
+ */
168
+ private getConstrainedVersion;
169
+ /**
170
+ * Generate update reason description
171
+ */
172
+ private getUpdateReason;
173
+ /**
174
+ * Analyze security impact of version change
175
+ */
176
+ private analyzeSecurityImpact;
177
+ /**
178
+ * Assess compatibility risk for update type
179
+ */
180
+ private assessCompatibilityRisk;
181
+ /**
182
+ * Assess overall risk level
183
+ */
184
+ private assessOverallRisk;
185
+ /**
186
+ * Generate recommendations based on analysis
187
+ */
188
+ private generateRecommendations;
189
+ }
190
+ //# sourceMappingURL=CatalogUpdateService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CatalogUpdateService.d.ts","sourceRoot":"","sources":["../../../src/application/services/CatalogUpdateService.ts"],"names":[],"mappings":"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"}