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
@@ -0,0 +1,244 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * pnpm-catalog-updater CLI Entry Point
4
+ *
5
+ * A CLI tool for checking and updating pnpm workspace catalog dependencies.
6
+ * This is the main entry point that handles command parsing and execution.
7
+ */
8
+ import chalk from 'chalk';
9
+ import { Command } from 'commander';
10
+ import { readFileSync } from 'fs';
11
+ import { dirname, join } from 'path';
12
+ import { fileURLToPath } from 'url';
13
+ // Services and Dependencies
14
+ import { CatalogUpdateService } from '../application/services/CatalogUpdateService.js';
15
+ import { WorkspaceService } from '../application/services/WorkspaceService.js';
16
+ import { NpmRegistryService } from '../infrastructure/external-services/NpmRegistryService.js';
17
+ import { FileSystemService } from '../infrastructure/file-system/FileSystemService.js';
18
+ import { FileWorkspaceRepository } from '../infrastructure/repositories/FileWorkspaceRepository.js';
19
+ // CLI Commands
20
+ import { CheckCommand } from './commands/CheckCommand.js';
21
+ import { UpdateCommand } from './commands/UpdateCommand.js';
22
+ import { OutputFormatter } from './formatters/OutputFormatter.js';
23
+ // Get package.json for version info
24
+ const __filename = fileURLToPath(import.meta.url);
25
+ const __dirname = dirname(__filename);
26
+ const packageJson = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
27
+ /**
28
+ * Create service dependencies
29
+ */
30
+ function createServices() {
31
+ const fileSystemService = new FileSystemService();
32
+ const workspaceRepository = new FileWorkspaceRepository(fileSystemService);
33
+ const registryService = new NpmRegistryService();
34
+ const catalogUpdateService = new CatalogUpdateService(workspaceRepository, registryService);
35
+ const workspaceService = new WorkspaceService(workspaceRepository);
36
+ return {
37
+ fileSystemService,
38
+ workspaceRepository,
39
+ registryService,
40
+ catalogUpdateService,
41
+ workspaceService,
42
+ };
43
+ }
44
+ /**
45
+ * Main CLI function
46
+ */
47
+ export async function main() {
48
+ const program = new Command();
49
+ // Create services
50
+ const services = createServices();
51
+ // Configure the main command
52
+ program
53
+ .name('pcu')
54
+ .description('A CLI tool to check and update pnpm workspace catalog dependencies')
55
+ .version(packageJson.version)
56
+ .option('-v, --verbose', 'enable verbose logging')
57
+ .option('--workspace <path>', 'workspace directory path')
58
+ .option('--no-color', 'disable colored output');
59
+ // Check command
60
+ program
61
+ .command('check')
62
+ .description('check for outdated catalog dependencies')
63
+ .option('--catalog <name>', 'check specific catalog only')
64
+ .option('--format <type>', 'output format: table, json, yaml, minimal', 'table')
65
+ .option('--target <type>', 'update target: latest, greatest, minor, patch, newest', 'latest')
66
+ .option('--prerelease', 'include prerelease versions')
67
+ .option('--include <pattern>', 'include packages matching pattern', [])
68
+ .option('--exclude <pattern>', 'exclude packages matching pattern', [])
69
+ .action(async (options, command) => {
70
+ try {
71
+ const globalOptions = command.parent.opts();
72
+ const formatter = new OutputFormatter(options.format, !globalOptions.noColor);
73
+ const checkCommand = new CheckCommand(services.catalogUpdateService, formatter);
74
+ await checkCommand.execute({
75
+ workspace: globalOptions.workspace,
76
+ catalog: options.catalog,
77
+ format: options.format,
78
+ target: options.target,
79
+ prerelease: options.prerelease,
80
+ include: Array.isArray(options.include)
81
+ ? options.include
82
+ : [options.include].filter(Boolean),
83
+ exclude: Array.isArray(options.exclude)
84
+ ? options.exclude
85
+ : [options.exclude].filter(Boolean),
86
+ verbose: globalOptions.verbose,
87
+ color: !globalOptions.noColor,
88
+ });
89
+ }
90
+ catch (error) {
91
+ console.error(chalk.red('❌ Error:'), error);
92
+ process.exit(1);
93
+ }
94
+ });
95
+ // Update command
96
+ program
97
+ .command('update')
98
+ .description('update catalog dependencies')
99
+ .option('-i, --interactive', 'interactive mode to choose updates')
100
+ .option('-d, --dry-run', 'preview changes without writing files')
101
+ .option('--target <type>', 'update target: latest, greatest, minor, patch, newest', 'latest')
102
+ .option('--catalog <name>', 'update specific catalog only')
103
+ .option('--include <pattern>', 'include packages matching pattern', [])
104
+ .option('--exclude <pattern>', 'exclude packages matching pattern', [])
105
+ .option('--force', 'force updates even if risky')
106
+ .option('--prerelease', 'include prerelease versions')
107
+ .option('--create-backup', 'create backup files before updating')
108
+ .option('--format <type>', 'output format: table, json, yaml, minimal', 'table')
109
+ .action(async (options, command) => {
110
+ try {
111
+ const globalOptions = command.parent.opts();
112
+ const formatter = new OutputFormatter(options.format, !globalOptions.noColor);
113
+ const updateCommand = new UpdateCommand(services.catalogUpdateService, formatter);
114
+ await updateCommand.execute({
115
+ workspace: globalOptions.workspace,
116
+ catalog: options.catalog,
117
+ format: options.format,
118
+ target: options.target,
119
+ interactive: options.interactive,
120
+ dryRun: options.dryRun,
121
+ force: options.force,
122
+ prerelease: options.prerelease,
123
+ include: Array.isArray(options.include)
124
+ ? options.include
125
+ : [options.include].filter(Boolean),
126
+ exclude: Array.isArray(options.exclude)
127
+ ? options.exclude
128
+ : [options.exclude].filter(Boolean),
129
+ createBackup: options.createBackup,
130
+ verbose: globalOptions.verbose,
131
+ color: !globalOptions.noColor,
132
+ });
133
+ }
134
+ catch (error) {
135
+ console.error(chalk.red('❌ Error:'), error);
136
+ process.exit(1);
137
+ }
138
+ });
139
+ // Analyze command
140
+ program
141
+ .command('analyze')
142
+ .description('analyze the impact of updating a specific dependency')
143
+ .argument('<catalog>', 'catalog name')
144
+ .argument('<package>', 'package name')
145
+ .argument('[version]', 'new version (default: latest)')
146
+ .option('--format <type>', 'output format: table, json, yaml, minimal', 'table')
147
+ .action(async (catalog, packageName, version, options, command) => {
148
+ try {
149
+ const globalOptions = command.parent.opts();
150
+ const formatter = new OutputFormatter(options.format, !globalOptions.noColor);
151
+ // Get latest version if not specified
152
+ const targetVersion = version || (await services.registryService.getLatestVersion(packageName)).toString();
153
+ const analysis = await services.catalogUpdateService.analyzeImpact(catalog, packageName, targetVersion, globalOptions.workspace);
154
+ const formattedOutput = formatter.formatImpactAnalysis(analysis);
155
+ console.log(formattedOutput);
156
+ }
157
+ catch (error) {
158
+ console.error(chalk.red('❌ Error:'), error);
159
+ process.exit(1);
160
+ }
161
+ });
162
+ // Workspace command
163
+ program
164
+ .command('workspace')
165
+ .description('workspace information and validation')
166
+ .option('--validate', 'validate workspace configuration')
167
+ .option('--stats', 'show workspace statistics')
168
+ .option('--format <type>', 'output format: table, json, yaml, minimal', 'table')
169
+ .action(async (options, command) => {
170
+ try {
171
+ const globalOptions = command.parent.opts();
172
+ const formatter = new OutputFormatter(options.format, !globalOptions.noColor);
173
+ if (options.validate) {
174
+ const report = await services.workspaceService.validateWorkspace(globalOptions.workspace);
175
+ const formattedOutput = formatter.formatValidationReport(report);
176
+ console.log(formattedOutput);
177
+ process.exit(report.isValid ? 0 : 1);
178
+ }
179
+ else if (options.stats) {
180
+ const stats = await services.workspaceService.getWorkspaceStats(globalOptions.workspace);
181
+ const formattedOutput = formatter.formatWorkspaceStats(stats);
182
+ console.log(formattedOutput);
183
+ }
184
+ else {
185
+ const info = await services.workspaceService.getWorkspaceInfo(globalOptions.workspace);
186
+ console.log(formatter.formatMessage(`Workspace: ${info.name}`, 'info'));
187
+ console.log(formatter.formatMessage(`Path: ${info.path}`, 'info'));
188
+ console.log(formatter.formatMessage(`Packages: ${info.packageCount}`, 'info'));
189
+ console.log(formatter.formatMessage(`Catalogs: ${info.catalogCount}`, 'info'));
190
+ if (info.catalogNames.length > 0) {
191
+ console.log(formatter.formatMessage(`Catalog names: ${info.catalogNames.join(', ')}`, 'info'));
192
+ }
193
+ }
194
+ }
195
+ catch (error) {
196
+ console.error(chalk.red('❌ Error:'), error);
197
+ process.exit(1);
198
+ }
199
+ });
200
+ // Add help command
201
+ program
202
+ .command('help')
203
+ .argument('[command]', 'command to get help for')
204
+ .description('display help for command')
205
+ .action((command) => {
206
+ if (command) {
207
+ const cmd = program.commands.find((c) => c.name() === command);
208
+ if (cmd) {
209
+ cmd.help();
210
+ }
211
+ else {
212
+ console.log(chalk.red(`Unknown command: ${command}`));
213
+ }
214
+ }
215
+ else {
216
+ program.help();
217
+ }
218
+ });
219
+ // Let commander handle help and version normally
220
+ // program.exitOverride() removed to fix help/version output
221
+ // Show help if no arguments provided
222
+ if (process.argv.length <= 2) {
223
+ program.help();
224
+ }
225
+ // Parse command line arguments
226
+ try {
227
+ await program.parseAsync(process.argv);
228
+ }
229
+ catch (error) {
230
+ console.error(chalk.red('❌ Unexpected error:'), error);
231
+ if (error instanceof Error && error.stack) {
232
+ console.error(chalk.gray(error.stack));
233
+ }
234
+ process.exit(1);
235
+ }
236
+ }
237
+ // Run the CLI if this file is executed directly
238
+ if (import.meta.url === `file://${process.argv[1]}`) {
239
+ main().catch((error) => {
240
+ console.error(chalk.red('❌ Fatal error:'), error);
241
+ process.exit(1);
242
+ });
243
+ }
244
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Global CLI Options
3
+ *
4
+ * Defines standardized option definitions for all CLI commands.
5
+ * Provides consistent option parsing and validation.
6
+ */
7
+ import { Option } from 'commander';
8
+ export interface GlobalCliOptions {
9
+ workspace?: string;
10
+ verbose?: boolean;
11
+ color?: boolean;
12
+ registry?: string;
13
+ timeout?: number;
14
+ config?: string;
15
+ }
16
+ export interface CheckCliOptions extends GlobalCliOptions {
17
+ catalog?: string;
18
+ format?: 'table' | 'json' | 'yaml' | 'minimal';
19
+ target?: 'latest' | 'greatest' | 'minor' | 'patch' | 'newest';
20
+ prerelease?: boolean;
21
+ include?: string[];
22
+ exclude?: string[];
23
+ }
24
+ export interface UpdateCliOptions extends CheckCliOptions {
25
+ interactive?: boolean;
26
+ dryRun?: boolean;
27
+ force?: boolean;
28
+ createBackup?: boolean;
29
+ }
30
+ export interface AnalyzeCliOptions extends GlobalCliOptions {
31
+ format?: 'table' | 'json' | 'yaml' | 'minimal';
32
+ }
33
+ export interface WorkspaceCliOptions extends GlobalCliOptions {
34
+ validate?: boolean;
35
+ stats?: boolean;
36
+ info?: boolean;
37
+ format?: 'table' | 'json' | 'yaml' | 'minimal';
38
+ }
39
+ /**
40
+ * Global options available to all commands
41
+ */
42
+ export declare const globalOptions: Option[];
43
+ /**
44
+ * Check command specific options
45
+ */
46
+ export declare const checkOptions: Option[];
47
+ /**
48
+ * Update command specific options
49
+ */
50
+ export declare const updateOptions: Option[];
51
+ /**
52
+ * Analyze command specific options
53
+ */
54
+ export declare const analyzeOptions: Option[];
55
+ /**
56
+ * Workspace command specific options
57
+ */
58
+ export declare const workspaceOptions: Option[];
59
+ /**
60
+ * Option groups for better help organization
61
+ */
62
+ export declare const optionGroups: {
63
+ global: {
64
+ title: string;
65
+ options: Option[];
66
+ };
67
+ output: {
68
+ title: string;
69
+ options: Option[];
70
+ };
71
+ filtering: {
72
+ title: string;
73
+ options: Option[];
74
+ };
75
+ update: {
76
+ title: string;
77
+ options: Option[];
78
+ };
79
+ registry: {
80
+ title: string;
81
+ options: Option[];
82
+ };
83
+ };
84
+ /**
85
+ * Utility functions for option handling
86
+ */
87
+ export declare class OptionUtils {
88
+ /**
89
+ * Parse and validate global options
90
+ */
91
+ static parseGlobalOptions(options: any): GlobalCliOptions;
92
+ /**
93
+ * Parse check command options
94
+ */
95
+ static parseCheckOptions(options: any): CheckCliOptions;
96
+ /**
97
+ * Parse update command options
98
+ */
99
+ static parseUpdateOptions(options: any): UpdateCliOptions;
100
+ /**
101
+ * Parse analyze command options
102
+ */
103
+ static parseAnalyzeOptions(options: any): AnalyzeCliOptions;
104
+ /**
105
+ * Parse workspace command options
106
+ */
107
+ static parseWorkspaceOptions(options: any): WorkspaceCliOptions;
108
+ /**
109
+ * Generate help text for option group
110
+ */
111
+ static generateHelpText(groupName: keyof typeof optionGroups): string;
112
+ /**
113
+ * Validate option combinations
114
+ */
115
+ static validateOptionCombinations(command: string, options: any): string[];
116
+ }
117
+ //# sourceMappingURL=GlobalOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalOptions.d.ts","sourceRoot":"","sources":["../../../src/cli/options/GlobalOptions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC/C,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAChD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,UAczB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,UAoBxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,UAUzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,UAO1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAa5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;CA2CxB,CAAC;AAEF;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB;IAiCzD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,eAAe;IAmCvD;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB;IAuBzD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,iBAAiB;IAW3D;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,GAAG,GAAG,mBAAmB;IAuB/D;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,OAAO,YAAY,GAAG,MAAM;IAkBrE;;OAEG;IACH,MAAM,CAAC,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM,EAAE;CA6B3E"}
@@ -0,0 +1,278 @@
1
+ /**
2
+ * Global CLI Options
3
+ *
4
+ * Defines standardized option definitions for all CLI commands.
5
+ * Provides consistent option parsing and validation.
6
+ */
7
+ import { Option } from 'commander';
8
+ /**
9
+ * Global options available to all commands
10
+ */
11
+ export const globalOptions = [
12
+ new Option('-w, --workspace <path>', 'workspace directory path').env('PCU_WORKSPACE'),
13
+ new Option('-v, --verbose', 'enable verbose logging').env('PCU_VERBOSE'),
14
+ new Option('--no-color', 'disable colored output').env('PCU_NO_COLOR'),
15
+ new Option('--registry <url>', 'NPM registry URL').env('PCU_REGISTRY'),
16
+ new Option('--timeout <ms>', 'request timeout in milliseconds')
17
+ .argParser(parseInt)
18
+ .env('PCU_TIMEOUT'),
19
+ new Option('--config <path>', 'path to configuration file').env('PCU_CONFIG'),
20
+ ];
21
+ /**
22
+ * Check command specific options
23
+ */
24
+ export const checkOptions = [
25
+ ...globalOptions,
26
+ new Option('--catalog <name>', 'check specific catalog only').env('PCU_CATALOG'),
27
+ new Option('-f, --format <type>', 'output format')
28
+ .choices(['table', 'json', 'yaml', 'minimal'])
29
+ .default('table')
30
+ .env('PCU_OUTPUT_FORMAT'),
31
+ new Option('-t, --target <type>', 'update target')
32
+ .choices(['latest', 'greatest', 'minor', 'patch', 'newest'])
33
+ .default('latest')
34
+ .env('PCU_UPDATE_TARGET'),
35
+ new Option('--prerelease', 'include prerelease versions').env('PCU_PRERELEASE'),
36
+ new Option('--include <pattern...>', 'include packages matching pattern').env('PCU_INCLUDE'),
37
+ new Option('--exclude <pattern...>', 'exclude packages matching pattern').env('PCU_EXCLUDE'),
38
+ ];
39
+ /**
40
+ * Update command specific options
41
+ */
42
+ export const updateOptions = [
43
+ ...checkOptions,
44
+ new Option('-i, --interactive', 'interactive mode to choose updates').env('PCU_INTERACTIVE'),
45
+ new Option('-d, --dry-run', 'preview changes without writing files').env('PCU_DRY_RUN'),
46
+ new Option('--force', 'force updates even if risky').env('PCU_FORCE'),
47
+ new Option('--create-backup', 'create backup files before updating').env('PCU_CREATE_BACKUP'),
48
+ ];
49
+ /**
50
+ * Analyze command specific options
51
+ */
52
+ export const analyzeOptions = [
53
+ ...globalOptions,
54
+ new Option('-f, --format <type>', 'output format')
55
+ .choices(['table', 'json', 'yaml', 'minimal'])
56
+ .default('table')
57
+ .env('PCU_OUTPUT_FORMAT'),
58
+ ];
59
+ /**
60
+ * Workspace command specific options
61
+ */
62
+ export const workspaceOptions = [
63
+ ...globalOptions,
64
+ new Option('--validate', 'validate workspace configuration'),
65
+ new Option('--stats', 'show workspace statistics'),
66
+ new Option('--info', 'show workspace information'),
67
+ new Option('-f, --format <type>', 'output format')
68
+ .choices(['table', 'json', 'yaml', 'minimal'])
69
+ .default('table')
70
+ .env('PCU_OUTPUT_FORMAT'),
71
+ ];
72
+ /**
73
+ * Option groups for better help organization
74
+ */
75
+ export const optionGroups = {
76
+ global: {
77
+ title: 'Global Options',
78
+ options: globalOptions,
79
+ },
80
+ output: {
81
+ title: 'Output Options',
82
+ options: [
83
+ new Option('-f, --format <type>', 'output format')
84
+ .choices(['table', 'json', 'yaml', 'minimal'])
85
+ .default('table'),
86
+ new Option('--no-color', 'disable colored output'),
87
+ new Option('-v, --verbose', 'enable verbose logging'),
88
+ ],
89
+ },
90
+ filtering: {
91
+ title: 'Filtering Options',
92
+ options: [
93
+ new Option('--catalog <name>', 'check specific catalog only'),
94
+ new Option('--include <pattern...>', 'include packages matching pattern'),
95
+ new Option('--exclude <pattern...>', 'exclude packages matching pattern'),
96
+ ],
97
+ },
98
+ update: {
99
+ title: 'Update Options',
100
+ options: [
101
+ new Option('-t, --target <type>', 'update target')
102
+ .choices(['latest', 'greatest', 'minor', 'patch', 'newest'])
103
+ .default('latest'),
104
+ new Option('--prerelease', 'include prerelease versions'),
105
+ new Option('-i, --interactive', 'interactive mode'),
106
+ new Option('-d, --dry-run', 'preview changes only'),
107
+ new Option('--force', 'force updates'),
108
+ new Option('--create-backup', 'create backup files'),
109
+ ],
110
+ },
111
+ registry: {
112
+ title: 'Registry Options',
113
+ options: [
114
+ new Option('--registry <url>', 'NPM registry URL'),
115
+ new Option('--timeout <ms>', 'request timeout').argParser(parseInt),
116
+ ],
117
+ },
118
+ };
119
+ /**
120
+ * Utility functions for option handling
121
+ */
122
+ export class OptionUtils {
123
+ /**
124
+ * Parse and validate global options
125
+ */
126
+ static parseGlobalOptions(options) {
127
+ const parsed = {};
128
+ if (options.workspace) {
129
+ parsed.workspace = String(options.workspace).trim();
130
+ }
131
+ if (options.verbose !== undefined) {
132
+ parsed.verbose = Boolean(options.verbose);
133
+ }
134
+ if (options.color !== undefined) {
135
+ parsed.color = Boolean(options.color);
136
+ }
137
+ if (options.registry) {
138
+ parsed.registry = String(options.registry).trim();
139
+ }
140
+ if (options.timeout) {
141
+ const timeout = parseInt(String(options.timeout), 10);
142
+ if (!isNaN(timeout) && timeout > 0) {
143
+ parsed.timeout = timeout;
144
+ }
145
+ }
146
+ if (options.config) {
147
+ parsed.config = String(options.config).trim();
148
+ }
149
+ return parsed;
150
+ }
151
+ /**
152
+ * Parse check command options
153
+ */
154
+ static parseCheckOptions(options) {
155
+ const global = this.parseGlobalOptions(options);
156
+ const check = { ...global };
157
+ if (options.catalog) {
158
+ check.catalog = String(options.catalog).trim();
159
+ }
160
+ if (options.format && typeof options.format === 'string') {
161
+ check.format = options.format;
162
+ }
163
+ if (options.target && typeof options.target === 'string') {
164
+ check.target = options.target;
165
+ }
166
+ if (options.prerelease !== undefined) {
167
+ check.prerelease = Boolean(options.prerelease);
168
+ }
169
+ if (options.include) {
170
+ check.include = Array.isArray(options.include)
171
+ ? options.include.map((p) => String(p).trim()).filter(Boolean)
172
+ : [String(options.include).trim()].filter(Boolean);
173
+ }
174
+ if (options.exclude) {
175
+ check.exclude = Array.isArray(options.exclude)
176
+ ? options.exclude.map((p) => String(p).trim()).filter(Boolean)
177
+ : [String(options.exclude).trim()].filter(Boolean);
178
+ }
179
+ return check;
180
+ }
181
+ /**
182
+ * Parse update command options
183
+ */
184
+ static parseUpdateOptions(options) {
185
+ const check = this.parseCheckOptions(options);
186
+ const update = { ...check };
187
+ if (options.interactive !== undefined) {
188
+ update.interactive = Boolean(options.interactive);
189
+ }
190
+ if (options.dryRun !== undefined) {
191
+ update.dryRun = Boolean(options.dryRun);
192
+ }
193
+ if (options.force !== undefined) {
194
+ update.force = Boolean(options.force);
195
+ }
196
+ if (options.createBackup !== undefined) {
197
+ update.createBackup = Boolean(options.createBackup);
198
+ }
199
+ return update;
200
+ }
201
+ /**
202
+ * Parse analyze command options
203
+ */
204
+ static parseAnalyzeOptions(options) {
205
+ const global = this.parseGlobalOptions(options);
206
+ const analyze = { ...global };
207
+ if (options.format && typeof options.format === 'string') {
208
+ analyze.format = options.format;
209
+ }
210
+ return analyze;
211
+ }
212
+ /**
213
+ * Parse workspace command options
214
+ */
215
+ static parseWorkspaceOptions(options) {
216
+ const global = this.parseGlobalOptions(options);
217
+ const workspace = { ...global };
218
+ if (options.validate !== undefined) {
219
+ workspace.validate = Boolean(options.validate);
220
+ }
221
+ if (options.stats !== undefined) {
222
+ workspace.stats = Boolean(options.stats);
223
+ }
224
+ if (options.info !== undefined) {
225
+ workspace.info = Boolean(options.info);
226
+ }
227
+ if (options.format && typeof options.format === 'string') {
228
+ workspace.format = options.format;
229
+ }
230
+ return workspace;
231
+ }
232
+ /**
233
+ * Generate help text for option group
234
+ */
235
+ static generateHelpText(groupName) {
236
+ const group = optionGroups[groupName];
237
+ if (!group)
238
+ return '';
239
+ const lines = [`${group.title}:`];
240
+ for (const option of group.options) {
241
+ const flags = option.flags;
242
+ const description = option.description || '';
243
+ const choices = option.argChoices ? ` (choices: ${option.argChoices.join(', ')})` : '';
244
+ const defaultValue = option.defaultValue ? ` (default: ${option.defaultValue})` : '';
245
+ lines.push(` ${flags.padEnd(30)} ${description}${choices}${defaultValue}`);
246
+ }
247
+ return lines.join('\n');
248
+ }
249
+ /**
250
+ * Validate option combinations
251
+ */
252
+ static validateOptionCombinations(command, options) {
253
+ const errors = [];
254
+ switch (command) {
255
+ case 'update':
256
+ if (options.interactive && options.dryRun) {
257
+ errors.push('Cannot use --interactive with --dry-run');
258
+ }
259
+ break;
260
+ case 'workspace':
261
+ const actionCount = [options.validate, options.stats, options.info].filter(Boolean).length;
262
+ if (actionCount > 1) {
263
+ errors.push('Cannot use multiple workspace actions simultaneously');
264
+ }
265
+ if (actionCount === 0) {
266
+ // Default to info
267
+ options.info = true;
268
+ }
269
+ break;
270
+ }
271
+ // Global validations
272
+ if (options.verbose && options.silent) {
273
+ errors.push('Cannot use both --verbose and --silent');
274
+ }
275
+ return errors;
276
+ }
277
+ }
278
+ //# sourceMappingURL=GlobalOptions.js.map