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.
- package/LICENSE +21 -0
- package/README.md +335 -0
- package/bin/pcu.js +15 -0
- package/dist/application/services/CatalogUpdateService.d.ts +190 -0
- package/dist/application/services/CatalogUpdateService.d.ts.map +1 -0
- package/dist/application/services/CatalogUpdateService.js +521 -0
- package/dist/application/services/CatalogUpdateService.js.map +1 -0
- package/dist/application/services/WorkspaceService.d.ts +139 -0
- package/dist/application/services/WorkspaceService.d.ts.map +1 -0
- package/dist/application/services/WorkspaceService.js +340 -0
- package/dist/application/services/WorkspaceService.js.map +1 -0
- package/dist/cli/commands/CheckCommand.d.ts +41 -0
- package/dist/cli/commands/CheckCommand.d.ts.map +1 -0
- package/dist/cli/commands/CheckCommand.js +168 -0
- package/dist/cli/commands/CheckCommand.js.map +1 -0
- package/dist/cli/commands/UpdateCommand.d.ts +69 -0
- package/dist/cli/commands/UpdateCommand.d.ts.map +1 -0
- package/dist/cli/commands/UpdateCommand.js +361 -0
- package/dist/cli/commands/UpdateCommand.js.map +1 -0
- package/dist/cli/formatters/OutputFormatter.d.ts +95 -0
- package/dist/cli/formatters/OutputFormatter.d.ts.map +1 -0
- package/dist/cli/formatters/OutputFormatter.js +437 -0
- package/dist/cli/formatters/OutputFormatter.js.map +1 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +244 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/options/GlobalOptions.d.ts +117 -0
- package/dist/cli/options/GlobalOptions.d.ts.map +1 -0
- package/dist/cli/options/GlobalOptions.js +278 -0
- package/dist/cli/options/GlobalOptions.js.map +1 -0
- package/dist/cli/options/index.d.ts +5 -0
- package/dist/cli/options/index.d.ts.map +1 -0
- package/dist/cli/options/index.js +5 -0
- package/dist/cli/options/index.js.map +1 -0
- package/dist/cli/validators/CommandValidator.d.ts +60 -0
- package/dist/cli/validators/CommandValidator.d.ts.map +1 -0
- package/dist/cli/validators/CommandValidator.js +319 -0
- package/dist/cli/validators/CommandValidator.js.map +1 -0
- package/dist/cli/validators/index.d.ts +5 -0
- package/dist/cli/validators/index.d.ts.map +1 -0
- package/dist/cli/validators/index.js +5 -0
- package/dist/cli/validators/index.js.map +1 -0
- package/dist/common/config/Config.d.ts +142 -0
- package/dist/common/config/Config.d.ts.map +1 -0
- package/dist/common/config/Config.js +355 -0
- package/dist/common/config/Config.js.map +1 -0
- package/dist/common/config/index.d.ts +6 -0
- package/dist/common/config/index.d.ts.map +1 -0
- package/dist/common/config/index.js +6 -0
- package/dist/common/config/index.js.map +1 -0
- package/dist/common/logger/Logger.d.ts +110 -0
- package/dist/common/logger/Logger.d.ts.map +1 -0
- package/dist/common/logger/Logger.js +289 -0
- package/dist/common/logger/Logger.js.map +1 -0
- package/dist/common/logger/index.d.ts +6 -0
- package/dist/common/logger/index.d.ts.map +1 -0
- package/dist/common/logger/index.js +6 -0
- package/dist/common/logger/index.js.map +1 -0
- package/dist/common/types/cli.d.ts +265 -0
- package/dist/common/types/cli.d.ts.map +1 -0
- package/dist/common/types/cli.js +5 -0
- package/dist/common/types/cli.js.map +1 -0
- package/dist/common/types/core.d.ts +270 -0
- package/dist/common/types/core.d.ts.map +1 -0
- package/dist/common/types/core.js +32 -0
- package/dist/common/types/core.js.map +1 -0
- package/dist/common/types/index.d.ts +8 -0
- package/dist/common/types/index.d.ts.map +1 -0
- package/dist/common/types/index.js +8 -0
- package/dist/common/types/index.js.map +1 -0
- package/dist/common/utils/async.d.ts +74 -0
- package/dist/common/utils/async.d.ts.map +1 -0
- package/dist/common/utils/async.js +228 -0
- package/dist/common/utils/async.js.map +1 -0
- package/dist/common/utils/format.d.ts +32 -0
- package/dist/common/utils/format.d.ts.map +1 -0
- package/dist/common/utils/format.js +121 -0
- package/dist/common/utils/format.js.map +1 -0
- package/dist/common/utils/git.d.ts +44 -0
- package/dist/common/utils/git.d.ts.map +1 -0
- package/dist/common/utils/git.js +147 -0
- package/dist/common/utils/git.js.map +1 -0
- package/dist/common/utils/index.d.ts +11 -0
- package/dist/common/utils/index.d.ts.map +1 -0
- package/dist/common/utils/index.js +11 -0
- package/dist/common/utils/index.js.map +1 -0
- package/dist/common/utils/string.d.ts +56 -0
- package/dist/common/utils/string.d.ts.map +1 -0
- package/dist/common/utils/string.js +134 -0
- package/dist/common/utils/string.js.map +1 -0
- package/dist/common/utils/validation.d.ts +88 -0
- package/dist/common/utils/validation.d.ts.map +1 -0
- package/dist/common/utils/validation.js +281 -0
- package/dist/common/utils/validation.js.map +1 -0
- package/dist/domain/entities/Catalog.d.ts +117 -0
- package/dist/domain/entities/Catalog.d.ts.map +1 -0
- package/dist/domain/entities/Catalog.js +240 -0
- package/dist/domain/entities/Catalog.js.map +1 -0
- package/dist/domain/entities/Package.d.ts +142 -0
- package/dist/domain/entities/Package.d.ts.map +1 -0
- package/dist/domain/entities/Package.js +275 -0
- package/dist/domain/entities/Package.js.map +1 -0
- package/dist/domain/entities/Workspace.d.ts +95 -0
- package/dist/domain/entities/Workspace.d.ts.map +1 -0
- package/dist/domain/entities/Workspace.js +170 -0
- package/dist/domain/entities/Workspace.js.map +1 -0
- package/dist/domain/repositories/WorkspaceRepository.d.ts +41 -0
- package/dist/domain/repositories/WorkspaceRepository.d.ts.map +1 -0
- package/dist/domain/repositories/WorkspaceRepository.js +8 -0
- package/dist/domain/repositories/WorkspaceRepository.js.map +1 -0
- package/dist/domain/value-objects/CatalogCollection.d.ts +106 -0
- package/dist/domain/value-objects/CatalogCollection.d.ts.map +1 -0
- package/dist/domain/value-objects/CatalogCollection.js +230 -0
- package/dist/domain/value-objects/CatalogCollection.js.map +1 -0
- package/dist/domain/value-objects/PackageCollection.d.ts +122 -0
- package/dist/domain/value-objects/PackageCollection.d.ts.map +1 -0
- package/dist/domain/value-objects/PackageCollection.js +263 -0
- package/dist/domain/value-objects/PackageCollection.js.map +1 -0
- package/dist/domain/value-objects/Version.d.ts +141 -0
- package/dist/domain/value-objects/Version.d.ts.map +1 -0
- package/dist/domain/value-objects/Version.js +268 -0
- package/dist/domain/value-objects/Version.js.map +1 -0
- package/dist/domain/value-objects/WorkspaceConfig.d.ts +135 -0
- package/dist/domain/value-objects/WorkspaceConfig.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspaceConfig.js +307 -0
- package/dist/domain/value-objects/WorkspaceConfig.js.map +1 -0
- package/dist/domain/value-objects/WorkspaceId.d.ts +51 -0
- package/dist/domain/value-objects/WorkspaceId.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspaceId.js +104 -0
- package/dist/domain/value-objects/WorkspaceId.js.map +1 -0
- package/dist/domain/value-objects/WorkspacePath.d.ts +75 -0
- package/dist/domain/value-objects/WorkspacePath.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspacePath.js +128 -0
- package/dist/domain/value-objects/WorkspacePath.js.map +1 -0
- package/dist/infrastructure/cache/Cache.d.ts +161 -0
- package/dist/infrastructure/cache/Cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/Cache.js +398 -0
- package/dist/infrastructure/cache/Cache.js.map +1 -0
- package/dist/infrastructure/cache/index.d.ts +6 -0
- package/dist/infrastructure/cache/index.d.ts.map +1 -0
- package/dist/infrastructure/cache/index.js +6 -0
- package/dist/infrastructure/cache/index.js.map +1 -0
- package/dist/infrastructure/external-services/NpmRegistryService.d.ts +106 -0
- package/dist/infrastructure/external-services/NpmRegistryService.d.ts.map +1 -0
- package/dist/infrastructure/external-services/NpmRegistryService.js +303 -0
- package/dist/infrastructure/external-services/NpmRegistryService.js.map +1 -0
- package/dist/infrastructure/file-system/FileSystemService.d.ts +100 -0
- package/dist/infrastructure/file-system/FileSystemService.d.ts.map +1 -0
- package/dist/infrastructure/file-system/FileSystemService.js +284 -0
- package/dist/infrastructure/file-system/FileSystemService.js.map +1 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts +57 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.js +179 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.js.map +1 -0
- 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
|