@grepr/cli 1.1.0

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 (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +71 -0
  3. package/build/dist/commands/base-command.d.ts +13 -0
  4. package/build/dist/commands/base-command.d.ts.map +1 -0
  5. package/build/dist/commands/base-command.js +28 -0
  6. package/build/dist/commands/base-command.js.map +1 -0
  7. package/build/dist/commands/config-command.d.ts +19 -0
  8. package/build/dist/commands/config-command.d.ts.map +1 -0
  9. package/build/dist/commands/config-command.js +108 -0
  10. package/build/dist/commands/config-command.js.map +1 -0
  11. package/build/dist/commands/crud-command.d.ts +117 -0
  12. package/build/dist/commands/crud-command.d.ts.map +1 -0
  13. package/build/dist/commands/crud-command.js +264 -0
  14. package/build/dist/commands/crud-command.js.map +1 -0
  15. package/build/dist/commands/dataset-command.d.ts +45 -0
  16. package/build/dist/commands/dataset-command.d.ts.map +1 -0
  17. package/build/dist/commands/dataset-command.js +139 -0
  18. package/build/dist/commands/dataset-command.js.map +1 -0
  19. package/build/dist/commands/integration-command.d.ts +30 -0
  20. package/build/dist/commands/integration-command.d.ts.map +1 -0
  21. package/build/dist/commands/integration-command.js +80 -0
  22. package/build/dist/commands/integration-command.js.map +1 -0
  23. package/build/dist/commands/job-command.d.ts +92 -0
  24. package/build/dist/commands/job-command.d.ts.map +1 -0
  25. package/build/dist/commands/job-command.js +294 -0
  26. package/build/dist/commands/job-command.js.map +1 -0
  27. package/build/dist/commands/list-command.d.ts +69 -0
  28. package/build/dist/commands/list-command.d.ts.map +1 -0
  29. package/build/dist/commands/list-command.js +130 -0
  30. package/build/dist/commands/list-command.js.map +1 -0
  31. package/build/dist/commands/query-command.d.ts +20 -0
  32. package/build/dist/commands/query-command.d.ts.map +1 -0
  33. package/build/dist/commands/query-command.js +167 -0
  34. package/build/dist/commands/query-command.js.map +1 -0
  35. package/build/dist/grepr.d.ts +3 -0
  36. package/build/dist/grepr.d.ts.map +1 -0
  37. package/build/dist/grepr.js +155 -0
  38. package/build/dist/grepr.js.map +1 -0
  39. package/build/dist/lib/api-client-factory.d.ts +21 -0
  40. package/build/dist/lib/api-client-factory.d.ts.map +1 -0
  41. package/build/dist/lib/api-client-factory.js +23 -0
  42. package/build/dist/lib/api-client-factory.js.map +1 -0
  43. package/build/dist/lib/api-client.d.ts +2 -0
  44. package/build/dist/lib/api-client.d.ts.map +1 -0
  45. package/build/dist/lib/api-client.js +3 -0
  46. package/build/dist/lib/api-client.js.map +1 -0
  47. package/build/dist/lib/auth.d.ts +104 -0
  48. package/build/dist/lib/auth.d.ts.map +1 -0
  49. package/build/dist/lib/auth.js +312 -0
  50. package/build/dist/lib/auth.js.map +1 -0
  51. package/build/dist/lib/command-registry.d.ts +35 -0
  52. package/build/dist/lib/command-registry.d.ts.map +1 -0
  53. package/build/dist/lib/command-registry.js +33 -0
  54. package/build/dist/lib/command-registry.js.map +1 -0
  55. package/build/dist/lib/config.d.ts +40 -0
  56. package/build/dist/lib/config.d.ts.map +1 -0
  57. package/build/dist/lib/config.js +114 -0
  58. package/build/dist/lib/config.js.map +1 -0
  59. package/build/dist/lib/grepr-api-client.d.ts +216 -0
  60. package/build/dist/lib/grepr-api-client.d.ts.map +1 -0
  61. package/build/dist/lib/grepr-api-client.js +424 -0
  62. package/build/dist/lib/grepr-api-client.js.map +1 -0
  63. package/build/dist/lib/heartbeat.d.ts +17 -0
  64. package/build/dist/lib/heartbeat.d.ts.map +1 -0
  65. package/build/dist/lib/heartbeat.js +56 -0
  66. package/build/dist/lib/heartbeat.js.map +1 -0
  67. package/build/dist/lib/json-formatter.d.ts +135 -0
  68. package/build/dist/lib/json-formatter.d.ts.map +1 -0
  69. package/build/dist/lib/json-formatter.js +658 -0
  70. package/build/dist/lib/json-formatter.js.map +1 -0
  71. package/build/dist/lib/parser.d.ts +26 -0
  72. package/build/dist/lib/parser.d.ts.map +1 -0
  73. package/build/dist/lib/parser.js +95 -0
  74. package/build/dist/lib/parser.js.map +1 -0
  75. package/build/dist/lib/streaming-job-executor.d.ts +31 -0
  76. package/build/dist/lib/streaming-job-executor.d.ts.map +1 -0
  77. package/build/dist/lib/streaming-job-executor.js +281 -0
  78. package/build/dist/lib/streaming-job-executor.js.map +1 -0
  79. package/build/dist/lib/time-utils.d.ts +28 -0
  80. package/build/dist/lib/time-utils.d.ts.map +1 -0
  81. package/build/dist/lib/time-utils.js +87 -0
  82. package/build/dist/lib/time-utils.js.map +1 -0
  83. package/build/dist/openapi/openApiTypes.d.ts +10430 -0
  84. package/build/dist/openapi/openApiTypes.d.ts.map +1 -0
  85. package/build/dist/openapi/openApiTypes.js +571 -0
  86. package/build/dist/openapi/openApiTypes.js.map +1 -0
  87. package/build/dist/types.d.ts +168 -0
  88. package/build/dist/types.d.ts.map +1 -0
  89. package/build/dist/types.js +20 -0
  90. package/build/dist/types.js.map +1 -0
  91. package/package.json +68 -0
@@ -0,0 +1,294 @@
1
+ import { ListCommand } from './list-command.js';
2
+ import { CrudCommand } from './crud-command.js';
3
+ import { parseSinceOption } from '../lib/time-utils.js';
4
+ import { StreamingJobExecutor } from '../lib/streaming-job-executor.js';
5
+ import fs from 'fs-extra';
6
+ import { PathsV1JobsGetParametersQueryExecution } from '../openapi/openApiTypes.js';
7
+ /**
8
+ * Job list command implementation using the new architecture
9
+ * Shows smart defaults: PENDING + RUNNING + FINISHED jobs since 6 hours ago
10
+ */
11
+ export class JobListCommand extends ListCommand {
12
+ getCommandName() {
13
+ return 'job:list';
14
+ }
15
+ getCommandDescription() {
16
+ return 'List jobs with optional filtering (defaults: PENDING + RUNNING + FINISHED since 6h ago)';
17
+ }
18
+ getCommandOptions() {
19
+ return [
20
+ {
21
+ flags: '--since <time>',
22
+ description: 'Filter jobs created since time (ISO 8601 timestamp or duration like PT5H, PT1D)',
23
+ defaultValue: 'PT6H' // Default to 6 hours ago
24
+ },
25
+ {
26
+ flags: '--processing <type>',
27
+ description: 'Filter by processing type (BATCH, STREAMING)'
28
+ },
29
+ {
30
+ flags: '--all-versions',
31
+ description: 'Show all versions instead of only latest',
32
+ defaultValue: false
33
+ },
34
+ {
35
+ flags: '--state <states...>',
36
+ description: 'Filter by job states (CREATED, PENDING, RUNNING, etc.)',
37
+ defaultValue: ['PENDING', 'RUNNING', 'FINISHED'] // Smart defaults
38
+ },
39
+ {
40
+ flags: '--name <names...>',
41
+ description: 'Filter by job names'
42
+ },
43
+ {
44
+ flags: '--id <ids...>',
45
+ description: 'Filter by job IDs'
46
+ },
47
+ {
48
+ flags: '--version <number>',
49
+ description: 'Filter by version number',
50
+ parser: parseInt
51
+ },
52
+ {
53
+ flags: '--resolved',
54
+ description: 'Include resolved job definitions'
55
+ },
56
+ {
57
+ flags: '--all',
58
+ description: 'Show all jobs (overrides default state and time filtering)'
59
+ }
60
+ ];
61
+ }
62
+ async executeList(options) {
63
+ try {
64
+ this.apiClient = this.createApiClient(options);
65
+ // Apply smart defaults unless --all is specified
66
+ const params = this.buildJobListParams(options);
67
+ const jobs = await this.apiClient.listJobs(Object.keys(params).length > 0 ? params : undefined);
68
+ const jobList = jobs?.items || [];
69
+ await this.formatAndOutput(jobList, options, 'jobs');
70
+ this.showQuerySummary(options, jobList.length);
71
+ }
72
+ catch (error) {
73
+ console.error('Error listing jobs:', error.message);
74
+ process.exit(1);
75
+ }
76
+ }
77
+ buildJobListParams(options) {
78
+ const params = {};
79
+ // If --all is not specified, apply smart defaults
80
+ if (!options.all) {
81
+ // Default: show RUNNING + FINISHED jobs since 6 hours ago
82
+ if (!options.state) {
83
+ params.state = ['RUNNING', 'FINISHED', 'PENDING'];
84
+ }
85
+ if (!options.since) {
86
+ params.since = parseSinceOption('PT6H');
87
+ }
88
+ }
89
+ // Apply user-specified filters
90
+ if (options.since)
91
+ params.since = parseSinceOption(options.since);
92
+ if (options.processing)
93
+ params.processing = options.processing;
94
+ if (options.allVersions !== undefined)
95
+ params.latest = !options.allVersions;
96
+ if (options.state && options.state.length > 0)
97
+ params.state = options.state;
98
+ if (options.name && options.name.length > 0)
99
+ params.name = options.name;
100
+ if (options.id && options.id.length > 0)
101
+ params.id = options.id;
102
+ return params;
103
+ }
104
+ /**
105
+ * Override query summary to show job-specific filters
106
+ */
107
+ generateQuerySummary(options, resultCount) {
108
+ const filters = [];
109
+ if (options.state)
110
+ filters.push(`state=${options.state.join(',')}`);
111
+ if (options.since)
112
+ filters.push(`since=${options.since}`);
113
+ if (options.processing)
114
+ filters.push(`processing=${options.processing}`);
115
+ filters.push(`allVersions=${!!options.allVersions}`);
116
+ if (options.name)
117
+ filters.push(`name=${options.name.join(',')}`);
118
+ if (options.sort)
119
+ filters.push(`sort=${options.sort}`);
120
+ const filterStr = filters.length > 0 ? filters.join(', ') : 'defaults (RUNNING,FINISHED since 6h)';
121
+ const duration = '0.8s'; // TODO: Track actual duration
122
+ return `\nQuery Summary:
123
+ - Filters: ${filterStr}
124
+ - Results: ${resultCount} jobs found
125
+ - Duration: ${duration}`;
126
+ }
127
+ }
128
+ /**
129
+ * Job CRUD command implementation using the new architecture
130
+ */
131
+ export class JobCrudCommand extends CrudCommand {
132
+ streamingExecutor;
133
+ constructor() {
134
+ super();
135
+ this.streamingExecutor = new StreamingJobExecutor();
136
+ }
137
+ getCommandPrefix() {
138
+ return 'job';
139
+ }
140
+ getResourceName() {
141
+ return 'job';
142
+ }
143
+ getGetOptions() {
144
+ return [
145
+ {
146
+ flags: '--version <number>',
147
+ description: 'Get specific version',
148
+ parser: parseInt
149
+ },
150
+ {
151
+ flags: '--resolved',
152
+ description: 'Include resolved job definition'
153
+ }
154
+ ];
155
+ }
156
+ getUpdateOptions() {
157
+ return [
158
+ {
159
+ flags: '--rollback-enabled',
160
+ description: 'Enable rollback capability'
161
+ }
162
+ ];
163
+ }
164
+ async executeGet(jobId, options) {
165
+ try {
166
+ this.apiClient = this.createApiClient(options);
167
+ const job = await this.apiClient.getJob(jobId, options.version, options.resolved);
168
+ if (!job) {
169
+ console.error(`Job ${jobId} not found`);
170
+ process.exit(1);
171
+ }
172
+ await this.formatAndOutputSingle(job, options);
173
+ if (!options.quiet) {
174
+ console.log(`\nJob Details:
175
+ - ID: ${job.id}
176
+ - Name: ${job.name}
177
+ - State: ${job.state}
178
+ - Version: ${job.version || 'latest'}`);
179
+ }
180
+ }
181
+ catch (error) {
182
+ console.error(`Error getting job ${jobId}:`, error.message);
183
+ process.exit(1);
184
+ }
185
+ }
186
+ async executeCreate(options) {
187
+ try {
188
+ // Load job definition to determine execution type
189
+ const jobDefinition = await this.loadJobDefinition(options.resourceFile);
190
+ // Route based on execution type
191
+ if (jobDefinition.execution === PathsV1JobsGetParametersQueryExecution.SYNCHRONOUS) {
192
+ await this.executeSynchronousJobCreate(jobDefinition, options);
193
+ }
194
+ else {
195
+ await this.executeAsynchronousJobCreate(jobDefinition, options);
196
+ }
197
+ }
198
+ catch (error) {
199
+ console.error('Error creating job:', error.message);
200
+ process.exit(1);
201
+ }
202
+ }
203
+ async executeSynchronousJobCreate(jobDefinition, options) {
204
+ // Use the streaming job executor for synchronous jobs
205
+ await this.streamingExecutor.execute(jobDefinition, options);
206
+ }
207
+ async executeAsynchronousJobCreate(jobDefinition, options) {
208
+ this.apiClient = this.createApiClient(options);
209
+ const createdJob = await this.apiClient.createAsyncJob(jobDefinition);
210
+ if (createdJob) {
211
+ this.showCreateSuccess(createdJob, options);
212
+ await this.formatAndOutputSingle(createdJob, options);
213
+ }
214
+ }
215
+ async loadJobDefinition(jobFile) {
216
+ try {
217
+ if (!await fs.pathExists(jobFile)) {
218
+ throw new Error(`Job definition file not found: ${jobFile}`);
219
+ }
220
+ const jobDefinition = await fs.readJson(jobFile);
221
+ // Validate required fields
222
+ if (!jobDefinition.name || !jobDefinition.execution || !jobDefinition.processing) {
223
+ throw new Error('Invalid job definition: missing required fields (name, execution, processing)');
224
+ }
225
+ return jobDefinition;
226
+ }
227
+ catch (error) {
228
+ throw new Error(`Failed to load job definition: ${error.message}`);
229
+ }
230
+ }
231
+ async executeUpdate(jobId, options) {
232
+ try {
233
+ this.apiClient = this.createApiClient(options);
234
+ const jobData = await this.loadResourceFromFile(options.resourceFile);
235
+ const updatedJob = await this.apiClient.updateJob(jobId, jobData, options.rollbackEnabled);
236
+ if (!updatedJob) {
237
+ console.error(`Failed to update job ${jobId}`);
238
+ process.exit(1);
239
+ }
240
+ this.showUpdateSuccess(jobId, options);
241
+ await this.formatAndOutputSingle(updatedJob, options);
242
+ }
243
+ catch (error) {
244
+ console.error(`Error updating job ${jobId}:`, error.message);
245
+ process.exit(1);
246
+ }
247
+ }
248
+ async executeDelete(jobId, options) {
249
+ try {
250
+ this.apiClient = this.createApiClient(options);
251
+ await this.apiClient.deleteJob(jobId);
252
+ this.showDeleteSuccess(jobId, options);
253
+ }
254
+ catch (error) {
255
+ console.error(`Error deleting job ${jobId}:`, error.message);
256
+ process.exit(1);
257
+ }
258
+ }
259
+ addToProgram(program, mergeConfiguration) {
260
+ const prefix = this.getCommandPrefix();
261
+ const resourceName = this.getResourceName();
262
+ // Create command with sync-specific formatting options (matching original sync command)
263
+ if (this.supportsCreate()) {
264
+ program
265
+ .command(`${prefix}:create <${resourceName}-file>`)
266
+ .description(`Create a new ${resourceName} from file`)
267
+ .option('-f, --format <format>', 'Output format (table, csv, pretty, raw, compact)', 'table')
268
+ .option('-s, --sort <column:order>', 'Sort table by column (e.g., "eventTimestamp:asc")', 'eventTimestamp:asc')
269
+ .option('--no-color', 'Disable colored output')
270
+ .option('--no-timestamps', 'Hide timestamps')
271
+ .option('--no-job-state', 'Hide job state messages')
272
+ .action(async (resourceFile, options, command) => {
273
+ try {
274
+ const globalOptions = command.parent?.opts();
275
+ const mergedGlobalOptions = await mergeConfiguration(globalOptions);
276
+ const mergedOptions = {
277
+ ...mergedGlobalOptions,
278
+ ...options,
279
+ resourceFile
280
+ };
281
+ await this.executeCreate(mergedOptions);
282
+ }
283
+ catch (error) {
284
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
285
+ console.error(`Error creating ${resourceName}:`, errorMessage);
286
+ process.exit(1);
287
+ }
288
+ });
289
+ }
290
+ // Use parent's implementation for other CRUD operations (get, update, delete)
291
+ super.addToProgram(program, mergeConfiguration);
292
+ }
293
+ }
294
+ //# sourceMappingURL=job-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-command.js","sourceRoot":"","sources":["../../../src/main/typescript/commands/job-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { Command } from 'commander';
2
+ import { JsonFormatter } from '../lib/json-formatter.js';
3
+ import { ICommand } from '../lib/command-registry.js';
4
+ import { GreprApiClient } from '../lib/api-client.js';
5
+ import { ApiClientFactoryOptions } from '../lib/api-client-factory.js';
6
+ export interface ListCommandOptions extends ApiClientFactoryOptions {
7
+ quiet?: boolean;
8
+ timezone?: string;
9
+ output?: string;
10
+ format?: 'table' | 'csv' | 'pretty' | 'raw' | 'compact';
11
+ sort?: string;
12
+ color?: boolean;
13
+ timestamps?: boolean;
14
+ jobState?: boolean;
15
+ }
16
+ /**
17
+ * Base class for list commands (job:list, integration:list, dataset:list)
18
+ * Provides common functionality for filtering, formatting, and output
19
+ */
20
+ export declare abstract class ListCommand<T extends ListCommandOptions> implements ICommand {
21
+ protected formatter: JsonFormatter | null;
22
+ protected apiClient: GreprApiClient | null;
23
+ /**
24
+ * Get the command name (e.g., 'job:list', 'integration:list')
25
+ */
26
+ abstract getCommandName(): string;
27
+ /**
28
+ * Get the command description
29
+ */
30
+ abstract getCommandDescription(): string;
31
+ /**
32
+ * Get command-specific options
33
+ */
34
+ abstract getCommandOptions(): Array<{
35
+ flags: string;
36
+ description: string;
37
+ defaultValue?: any;
38
+ parser?: (value: string) => any;
39
+ }>;
40
+ /**
41
+ * Execute the list operation
42
+ */
43
+ abstract executeList(options: T): Promise<void>;
44
+ /**
45
+ * Add this command to the program
46
+ */
47
+ addToProgram(program: Command, mergeConfiguration: (options: any) => Promise<any>): void;
48
+ /**
49
+ * Setup formatter for output
50
+ */
51
+ protected setupFormatter(options: T): void;
52
+ /**
53
+ * Create API client using shared factory
54
+ */
55
+ protected createApiClient(options: T): GreprApiClient;
56
+ /**
57
+ * Format and output data
58
+ */
59
+ protected formatAndOutput(data: Record<string, unknown>[], options: T, dataType: string): Promise<void>;
60
+ /**
61
+ * Generate query summary showing applied filters and results
62
+ */
63
+ protected generateQuerySummary(options: T, resultCount: number): string;
64
+ /**
65
+ * Show query summary if not in quiet mode
66
+ */
67
+ protected showQuerySummary(options: T, resultCount: number): void;
68
+ }
69
+ //# sourceMappingURL=list-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-command.d.ts","sourceRoot":"","sources":["../../../src/main/typescript/commands/list-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAwB,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAmB,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAExF,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IACjE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,8BAAsB,WAAW,CAAC,CAAC,SAAS,kBAAkB,CAAE,YAAW,QAAQ;IACjF,SAAS,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAQ;IACjD,SAAS,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAQ;IAElD;;OAEG;IACH,QAAQ,CAAC,cAAc,IAAI,MAAM;IAEjC;;OAEG;IACH,QAAQ,CAAC,qBAAqB,IAAI,MAAM;IAExC;;OAEG;IACH,QAAQ,CAAC,iBAAiB,IAAI,KAAK,CAAC;QAClC,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,GAAG,CAAC;QACnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;KACjC,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C;;OAEG;IACH,YAAY,CACV,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GACjD,IAAI;IA8CP;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;IAgB1C;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,GAAG,cAAc;IAIrD;;OAEG;cACa,eAAe,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IA2BhB;;OAEG;IACH,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAiBvE;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;CAKlE"}
@@ -0,0 +1,130 @@
1
+ import { JsonFormatter } from '../lib/json-formatter.js';
2
+ import { createApiClient } from '../lib/api-client-factory.js';
3
+ /**
4
+ * Base class for list commands (job:list, integration:list, dataset:list)
5
+ * Provides common functionality for filtering, formatting, and output
6
+ */
7
+ export class ListCommand {
8
+ formatter = null;
9
+ apiClient = null;
10
+ /**
11
+ * Add this command to the program
12
+ */
13
+ addToProgram(program, mergeConfiguration) {
14
+ let command = program.command(this.getCommandName());
15
+ // Set aliases for common commands
16
+ if (this.getCommandName() === 'job:list') {
17
+ command = command.alias('jobs');
18
+ }
19
+ else if (this.getCommandName() === 'dataset:list') {
20
+ command = command.alias('datasets');
21
+ }
22
+ command = command.description(this.getCommandDescription());
23
+ // Add command-specific options
24
+ this.getCommandOptions().forEach(option => {
25
+ if (option.parser) {
26
+ command = command.option(option.flags, option.description, option.parser, option.defaultValue);
27
+ }
28
+ else {
29
+ command = command.option(option.flags, option.description, option.defaultValue);
30
+ }
31
+ });
32
+ // Add common formatting options
33
+ command
34
+ .option('-f, --format <format>', 'Output format (table, csv, pretty, raw, compact)', 'table')
35
+ .option('-s, --sort <column:order>', 'Sort by column (e.g., "name:asc")', 'id:asc')
36
+ .option('--no-color', 'Disable colored output')
37
+ .option('--no-timestamps', 'Hide timestamps')
38
+ .option('--no-job-state', 'Hide job state messages')
39
+ .action(async (options, command) => {
40
+ try {
41
+ const globalOptions = command.parent?.opts();
42
+ const mergedGlobalOptions = await mergeConfiguration(globalOptions);
43
+ const mergedOptions = {
44
+ ...mergedGlobalOptions,
45
+ ...options
46
+ };
47
+ await this.executeList(mergedOptions);
48
+ }
49
+ catch (error) {
50
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
51
+ console.error(`Error executing ${this.getCommandName()}:`, errorMessage);
52
+ process.exit(1);
53
+ }
54
+ });
55
+ }
56
+ /**
57
+ * Setup formatter for output
58
+ */
59
+ setupFormatter(options) {
60
+ const formatterOptions = {
61
+ format: options.format || 'table',
62
+ showTimestamps: options.timestamps !== false,
63
+ colorize: options.color !== false && process.stdout.isTTY && !options.output,
64
+ sortBy: options.sort || 'id:asc'
65
+ };
66
+ // Only add timezone if it's defined
67
+ if (options.timezone) {
68
+ formatterOptions.timezone = options.timezone;
69
+ }
70
+ this.formatter = new JsonFormatter(formatterOptions);
71
+ }
72
+ /**
73
+ * Create API client using shared factory
74
+ */
75
+ createApiClient(options) {
76
+ return createApiClient(options);
77
+ }
78
+ /**
79
+ * Format and output data
80
+ */
81
+ async formatAndOutput(data, options, dataType) {
82
+ if (!data || data.length === 0) {
83
+ if (!options.quiet) {
84
+ console.log(`No ${dataType} found.`);
85
+ }
86
+ return;
87
+ }
88
+ // Setup formatter
89
+ this.setupFormatter(options);
90
+ // Handle output
91
+ if (options.output) {
92
+ // Write to file
93
+ const formattedData = this.formatter.formatObjects(data);
94
+ const fs = await import('fs-extra');
95
+ await fs.writeFile(options.output, formattedData);
96
+ if (!options.quiet) {
97
+ console.log(`✓ Output written to ${options.output}`);
98
+ }
99
+ }
100
+ else {
101
+ // Write to stdout
102
+ console.log(this.formatter.formatObjects(data));
103
+ }
104
+ }
105
+ /**
106
+ * Generate query summary showing applied filters and results
107
+ */
108
+ generateQuerySummary(options, resultCount) {
109
+ const filters = [];
110
+ const duration = '0.5s'; // TODO: Track actual duration
111
+ // Add filters based on options (subclasses can override)
112
+ if (options.sort) {
113
+ filters.push(`sort=${options.sort}`);
114
+ }
115
+ const filterStr = filters.length > 0 ? filters.join(', ') : 'none';
116
+ return `\nQuery Summary:
117
+ - Filters: ${filterStr}
118
+ - Results: ${resultCount} ${this.getCommandName().split(':')[0]}s found
119
+ - Duration: ${duration}`;
120
+ }
121
+ /**
122
+ * Show query summary if not in quiet mode
123
+ */
124
+ showQuerySummary(options, resultCount) {
125
+ if (!options.quiet) {
126
+ console.log(this.generateQuerySummary(options, resultCount));
127
+ }
128
+ }
129
+ }
130
+ //# sourceMappingURL=list-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-command.js","sourceRoot":"","sources":["../../../src/main/typescript/commands/list-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Command } from 'commander';
2
+ import { BaseCommand } from './base-command.js';
3
+ import { ICommand } from '../lib/command-registry.js';
4
+ import { QueryCommandOptions } from '../types.js';
5
+ export declare class QueryCommand extends BaseCommand<QueryCommandOptions> implements ICommand {
6
+ getCommandName(): string;
7
+ getCommandDescription(): string;
8
+ getCommandOptions(): Array<{
9
+ flags: string;
10
+ description: string;
11
+ defaultValue?: any;
12
+ parser?: (value: string) => any;
13
+ }>;
14
+ addToProgram(program: Command, mergeConfiguration: (options: any) => Promise<any>): void;
15
+ execute(options: QueryCommandOptions): Promise<void>;
16
+ private validateQueryOptions;
17
+ private resolveDatasetId;
18
+ private createJobDefinition;
19
+ }
20
+ //# sourceMappingURL=query-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-command.d.ts","sourceRoot":"","sources":["../../../src/main/typescript/commands/query-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAiB,MAAM,aAAa,CAAC;AAEjE,qBAAa,YAAa,SAAQ,WAAW,CAAC,mBAAmB,CAAE,YAAW,QAAQ;IAEpF,cAAc,IAAI,MAAM;IAIxB,qBAAqB,IAAI,MAAM;IAI/B,iBAAiB,IAAI,KAAK,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,GAAG,CAAC;QACnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;KACjC,CAAC;IA8CF,YAAY,CACV,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GACjD,IAAI;IAsCD,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1D,OAAO,CAAC,oBAAoB;YAYd,gBAAgB;YAkBhB,mBAAmB;CAqClC"}