@observeone/cli 1.0.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 (84) hide show
  1. package/README.md +214 -0
  2. package/dist/README.md +214 -0
  3. package/dist/commands/ai-check.d.ts +9 -0
  4. package/dist/commands/ai-check.d.ts.map +1 -0
  5. package/dist/commands/ai-check.js +492 -0
  6. package/dist/commands/ai-check.js.map +1 -0
  7. package/dist/commands/apply.d.ts +6 -0
  8. package/dist/commands/apply.d.ts.map +1 -0
  9. package/dist/commands/apply.js +290 -0
  10. package/dist/commands/apply.js.map +1 -0
  11. package/dist/commands/check.d.ts +9 -0
  12. package/dist/commands/check.d.ts.map +1 -0
  13. package/dist/commands/check.js +267 -0
  14. package/dist/commands/check.js.map +1 -0
  15. package/dist/commands/export.d.ts +6 -0
  16. package/dist/commands/export.d.ts.map +1 -0
  17. package/dist/commands/export.js +95 -0
  18. package/dist/commands/export.js.map +1 -0
  19. package/dist/commands/heartbeat.d.ts +9 -0
  20. package/dist/commands/heartbeat.d.ts.map +1 -0
  21. package/dist/commands/heartbeat.js +264 -0
  22. package/dist/commands/heartbeat.js.map +1 -0
  23. package/dist/commands/list.d.ts +9 -0
  24. package/dist/commands/list.d.ts.map +1 -0
  25. package/dist/commands/list.js +42 -0
  26. package/dist/commands/list.js.map +1 -0
  27. package/dist/commands/login.d.ts +9 -0
  28. package/dist/commands/login.d.ts.map +1 -0
  29. package/dist/commands/login.js +192 -0
  30. package/dist/commands/login.js.map +1 -0
  31. package/dist/commands/monitor.d.ts +9 -0
  32. package/dist/commands/monitor.d.ts.map +1 -0
  33. package/dist/commands/monitor.js +292 -0
  34. package/dist/commands/monitor.js.map +1 -0
  35. package/dist/index.d.ts +5 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +125 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/interfaces/api-client.interface.d.ts +76 -0
  40. package/dist/interfaces/api-client.interface.d.ts.map +1 -0
  41. package/dist/interfaces/api-client.interface.js +2 -0
  42. package/dist/interfaces/api-client.interface.js.map +1 -0
  43. package/dist/interfaces/config.interface.d.ts +26 -0
  44. package/dist/interfaces/config.interface.d.ts.map +1 -0
  45. package/dist/interfaces/config.interface.js +2 -0
  46. package/dist/interfaces/config.interface.js.map +1 -0
  47. package/dist/interfaces/output.interface.d.ts +22 -0
  48. package/dist/interfaces/output.interface.d.ts.map +1 -0
  49. package/dist/interfaces/output.interface.js +2 -0
  50. package/dist/interfaces/output.interface.js.map +1 -0
  51. package/dist/interfaces/sse-client.interface.d.ts +18 -0
  52. package/dist/interfaces/sse-client.interface.d.ts.map +1 -0
  53. package/dist/interfaces/sse-client.interface.js +6 -0
  54. package/dist/interfaces/sse-client.interface.js.map +1 -0
  55. package/dist/package.json +42 -0
  56. package/dist/services/api-client.service.d.ts +82 -0
  57. package/dist/services/api-client.service.d.ts.map +1 -0
  58. package/dist/services/api-client.service.js +262 -0
  59. package/dist/services/api-client.service.js.map +1 -0
  60. package/dist/services/config.service.d.ts +32 -0
  61. package/dist/services/config.service.d.ts.map +1 -0
  62. package/dist/services/config.service.js +104 -0
  63. package/dist/services/config.service.js.map +1 -0
  64. package/dist/services/output.service.d.ts +28 -0
  65. package/dist/services/output.service.d.ts.map +1 -0
  66. package/dist/services/output.service.js +258 -0
  67. package/dist/services/output.service.js.map +1 -0
  68. package/dist/services/sse-client.service.d.ts +16 -0
  69. package/dist/services/sse-client.service.d.ts.map +1 -0
  70. package/dist/services/sse-client.service.js +80 -0
  71. package/dist/services/sse-client.service.js.map +1 -0
  72. package/dist/types/index.d.ts +106 -0
  73. package/dist/types/index.d.ts.map +1 -0
  74. package/dist/types/index.js +2 -0
  75. package/dist/types/index.js.map +1 -0
  76. package/dist/utils/live-progress.d.ts +23 -0
  77. package/dist/utils/live-progress.d.ts.map +1 -0
  78. package/dist/utils/live-progress.js +116 -0
  79. package/dist/utils/live-progress.js.map +1 -0
  80. package/dist/utils/log-writer.d.ts +13 -0
  81. package/dist/utils/log-writer.d.ts.map +1 -0
  82. package/dist/utils/log-writer.js +97 -0
  83. package/dist/utils/log-writer.js.map +1 -0
  84. package/package.json +66 -0
@@ -0,0 +1,492 @@
1
+ import { Command } from 'commander';
2
+ import inquirer from 'inquirer';
3
+ import chalk from 'chalk';
4
+ import ora from 'ora';
5
+ import { SSEClient } from '../services/sse-client.service.js';
6
+ import { writeFileSync } from 'fs';
7
+ /**
8
+ * Factory function to create ai-check command with direct service injection
9
+ */
10
+ export function createAiCheckCommand(configService, apiClient, outputService) {
11
+ const aiCheck = new Command('ai-check').description('Manage and run AI-powered tests');
12
+ // RUN (Default)
13
+ aiCheck
14
+ .command('run', { isDefault: true })
15
+ .description('Run AI-powered tests')
16
+ .argument('[test-names...]', 'Test names to run (by name or ID)')
17
+ .option('-u, --url <url>', 'URL to test')
18
+ .option('-p, --prompt <prompt>', 'Test prompt/instructions')
19
+ .option('-n, --name <name>', 'Test name')
20
+ .option('-d, --description <description>', 'Test description')
21
+ .option('-t, --timeout <timeout>', 'Timeout in milliseconds', '300000')
22
+ .option('-v, --verbose', 'Show detailed step information during execution')
23
+ .option('-w, --wait', 'Wait for test completion')
24
+ .option('--adhoc', "Run as ad-hoc test (don't save to database)")
25
+ .option('--reporter <reporter>', 'Output reporter (console, junit, json)', 'console')
26
+ .option('-o, --output <file>', 'Output file for reports')
27
+ .option('--api-url <url>', 'Override API URL')
28
+ .option('--api-key <key>', 'Override API key')
29
+ .option('-j, --json', 'Output in JSON format')
30
+ .action(async (testNames, options) => {
31
+ if (process.env.OBS_JSON_OUTPUT === 'true' || options.json) {
32
+ outputService.enableJsonMode();
33
+ }
34
+ try {
35
+ if (options.apiUrl)
36
+ configService.setCommandLineApiUrl(options.apiUrl);
37
+ if (options.apiKey)
38
+ configService.setApiKey(options.apiKey);
39
+ const apiKey = configService.getApiKey();
40
+ if (!apiKey) {
41
+ outputService.error('Not authenticated. Please run "obs login" first.');
42
+ process.exit(1);
43
+ }
44
+ const timeout = parseInt(options.timeout);
45
+ const results = [];
46
+ if (testNames.length === 0) {
47
+ if (!options.url || !options.prompt) {
48
+ outputService.error('Either provide test names or use --url and --prompt for ad-hoc testing');
49
+ process.exit(1);
50
+ }
51
+ await runAdhocTest(apiClient, outputService, configService, options, timeout, results);
52
+ }
53
+ else {
54
+ await runNamedTests(apiClient, outputService, configService, testNames, options, timeout, results);
55
+ }
56
+ await formatAndOutputResults(results, options, outputService);
57
+ }
58
+ catch (error) {
59
+ outputService.error(outputService.formatError(error));
60
+ process.exit(1);
61
+ }
62
+ });
63
+ // LIST
64
+ aiCheck
65
+ .command('list')
66
+ .description('List all AI browser checks')
67
+ .option('-f, --format <format>', 'Output format (table, json)', 'table')
68
+ .option('-j, --json', 'Output in JSON format')
69
+ .action(async (options) => {
70
+ if (process.env.OBS_JSON_OUTPUT === 'true' || options.format === 'json' || options.json) {
71
+ outputService.enableJsonMode();
72
+ }
73
+ try {
74
+ const apiKey = configService.getApiKey();
75
+ if (!apiKey) {
76
+ outputService.error('Not authenticated. Please run "obs login" first.');
77
+ process.exit(1);
78
+ }
79
+ outputService.progress('Fetching AI checks...');
80
+ const tests = await apiClient.getTests();
81
+ if (process.env.OBS_JSON_OUTPUT === 'true' || options.format === 'json' || options.json) {
82
+ outputService.formatJsonOutput(tests);
83
+ }
84
+ else {
85
+ outputService.formatTestList(tests, process.env.OBS_VERBOSE === 'true');
86
+ }
87
+ }
88
+ catch (error) {
89
+ outputService.error(outputService.formatError(error));
90
+ process.exit(1);
91
+ }
92
+ });
93
+ // GET
94
+ aiCheck
95
+ .command('get <id>')
96
+ .description('Get details of an AI browser check')
97
+ .option('-j, --json', 'Output in JSON format')
98
+ .action(async (id, options) => {
99
+ if (process.env.OBS_JSON_OUTPUT === 'true' || options.json) {
100
+ outputService.enableJsonMode();
101
+ }
102
+ try {
103
+ const apiKey = configService.getApiKey();
104
+ if (!apiKey) {
105
+ outputService.error('Not authenticated. Please run "obs login" first.');
106
+ process.exit(1);
107
+ }
108
+ const testId = parseInt(id);
109
+ if (isNaN(testId)) {
110
+ outputService.error('Invalid test ID.');
111
+ process.exit(1);
112
+ }
113
+ outputService.progress(`Fetching AI check ${testId}...`);
114
+ const testData = await apiClient.getTest(testId);
115
+ if (process.env.OBS_JSON_OUTPUT === 'true') {
116
+ outputService.formatJsonOutput(testData);
117
+ }
118
+ else {
119
+ outputService.formatTestList([testData], true);
120
+ }
121
+ }
122
+ catch (error) {
123
+ outputService.error(outputService.formatError(error));
124
+ process.exit(1);
125
+ }
126
+ });
127
+ // CREATE
128
+ aiCheck
129
+ .command('create')
130
+ .description('Create a new AI browser check')
131
+ .option('-n, --name <name>', 'Test name')
132
+ .option('-u, --url <url>', 'URL to test')
133
+ .option('-p, --prompt <prompt>', 'Test prompt')
134
+ .option('-j, --json', 'Output in JSON format')
135
+ .action(async (options) => {
136
+ if (process.env.OBS_JSON_OUTPUT === 'true' || options.json) {
137
+ outputService.enableJsonMode();
138
+ }
139
+ try {
140
+ const apiKey = configService.getApiKey();
141
+ if (!apiKey) {
142
+ outputService.error('Not authenticated. Please run "obs login" first.');
143
+ process.exit(1);
144
+ }
145
+ let { name, url, prompt } = options;
146
+ if (!name || !url || !prompt) {
147
+ const answers = await inquirer.prompt([
148
+ {
149
+ type: 'input',
150
+ name: 'name',
151
+ message: 'Check name:',
152
+ when: !name,
153
+ validate: (val) => (val.trim() ? true : 'Name is required'),
154
+ },
155
+ {
156
+ type: 'input',
157
+ name: 'url',
158
+ message: 'URL to test:',
159
+ when: !url,
160
+ validate: (val) => {
161
+ try {
162
+ new URL(val);
163
+ return true;
164
+ }
165
+ catch {
166
+ return 'Invalid URL';
167
+ }
168
+ },
169
+ },
170
+ {
171
+ type: 'input',
172
+ name: 'prompt',
173
+ message: 'What should the AI check? (prompt):',
174
+ when: !prompt,
175
+ validate: (val) => (val.trim() ? true : 'Prompt is required'),
176
+ },
177
+ ]);
178
+ name = name || answers.name;
179
+ url = url || answers.url;
180
+ prompt = prompt || answers.prompt;
181
+ }
182
+ outputService.progress('Creating AI browser check...');
183
+ const newTest = await apiClient.createTest({
184
+ name,
185
+ url,
186
+ prompt,
187
+ description: 'Created via CLI',
188
+ });
189
+ if (process.env.OBS_JSON_OUTPUT === 'true') {
190
+ outputService.formatJsonOutput(newTest);
191
+ }
192
+ else {
193
+ outputService.success(`AI browser check "${name}" created! (ID: ${newTest.id})`);
194
+ }
195
+ }
196
+ catch (error) {
197
+ outputService.error(outputService.formatError(error));
198
+ process.exit(1);
199
+ }
200
+ });
201
+ // DELETE
202
+ aiCheck
203
+ .command('delete <id>')
204
+ .description('Delete an AI browser check')
205
+ .option('-y, --yes', 'Skip confirmation prompt')
206
+ .option('-j, --json', 'Output in JSON format')
207
+ .action(async (id, options) => {
208
+ if (process.env.OBS_JSON_OUTPUT === 'true' || options.json) {
209
+ outputService.enableJsonMode();
210
+ }
211
+ try {
212
+ const apiKey = configService.getApiKey();
213
+ if (!apiKey) {
214
+ outputService.error('Not authenticated. Please run "obs login" first.');
215
+ process.exit(1);
216
+ }
217
+ const testId = parseInt(id);
218
+ if (isNaN(testId)) {
219
+ outputService.error('Invalid test ID.');
220
+ process.exit(1);
221
+ }
222
+ if (!options.yes) {
223
+ const { confirm } = await inquirer.prompt([
224
+ {
225
+ type: 'confirm',
226
+ name: 'confirm',
227
+ message: `Are you sure you want to delete AI check ${testId}?`,
228
+ default: false,
229
+ },
230
+ ]);
231
+ if (!confirm)
232
+ return;
233
+ }
234
+ outputService.progress(`Deleting AI check ${testId}...`);
235
+ await apiClient.deleteTest(testId);
236
+ if (process.env.OBS_JSON_OUTPUT === 'true') {
237
+ outputService.formatJsonOutput({ success: true, id: testId });
238
+ }
239
+ else {
240
+ outputService.success(`AI check ${testId} deleted successfully.`);
241
+ }
242
+ }
243
+ catch (error) {
244
+ outputService.error(outputService.formatError(error));
245
+ process.exit(1);
246
+ }
247
+ });
248
+ return aiCheck;
249
+ }
250
+ /**
251
+ * Run an ad-hoc test
252
+ */
253
+ async function runAdhocTest(apiClient, outputService, configService, options, timeout, results) {
254
+ const isJson = process.env.OBS_JSON_OUTPUT === 'true';
255
+ const spinner = isJson
256
+ ? { start: () => { }, succeed: () => { }, fail: () => { } }
257
+ : ora('Running ad-hoc test...').start();
258
+ try {
259
+ const result = await apiClient.executeAdhocTest({
260
+ name: options.name || 'Ad-hoc Test',
261
+ url: options.url,
262
+ prompt: options.prompt,
263
+ description: options.description,
264
+ });
265
+ results.push(result);
266
+ spinner.succeed('Ad-hoc test started');
267
+ // Use SSE streaming for live progress
268
+ if (result.task_id) {
269
+ await streamTestProgress(configService, result, options.name || 'Ad-hoc Test', options, timeout, results);
270
+ }
271
+ }
272
+ catch (error) {
273
+ spinner.fail('Ad-hoc test failed');
274
+ throw error;
275
+ }
276
+ }
277
+ /**
278
+ * Run named tests
279
+ */
280
+ async function runNamedTests(apiClient, outputService, configService, testNames, options, timeout, results) {
281
+ const isJson = process.env.OBS_JSON_OUTPUT === 'true';
282
+ const spinner = isJson
283
+ ? { start: () => { }, succeed: () => { }, fail: () => { } }
284
+ : ora('Fetching test details...').start();
285
+ try {
286
+ const tests = await apiClient.getTests();
287
+ const testsToRun = testNames
288
+ .filter((name) => !name.startsWith('-'))
289
+ .map((name) => {
290
+ // Try to find by name first, then by ID
291
+ let test = tests.find((t) => t.name === name);
292
+ if (!test) {
293
+ const id = parseInt(name);
294
+ if (!isNaN(id)) {
295
+ test = tests.find((t) => t.id === id);
296
+ }
297
+ }
298
+ if (!test) {
299
+ throw new Error(`Test "${name}" not found`);
300
+ }
301
+ return test;
302
+ });
303
+ spinner.succeed(`Found ${testsToRun.length} test(s) to run`);
304
+ // Execute each test
305
+ for (const test of testsToRun) {
306
+ const testSpinner = isJson
307
+ ? { start: () => { }, succeed: () => { }, fail: () => { } }
308
+ : ora(`Running test: ${test.name}`).start();
309
+ try {
310
+ const result = await apiClient.executeTest(test.id);
311
+ results.push(result);
312
+ testSpinner.succeed(`Test "${test.name}" started`);
313
+ // Use SSE streaming for live progress
314
+ if (result.task_id) {
315
+ await streamTestProgress(configService, result, test.name, options, timeout, results, testNames);
316
+ }
317
+ }
318
+ catch (error) {
319
+ testSpinner.fail(`Test "${test.name}" failed`);
320
+ throw error;
321
+ }
322
+ }
323
+ }
324
+ catch (error) {
325
+ spinner.fail('Failed to fetch tests');
326
+ throw error;
327
+ }
328
+ }
329
+ /**
330
+ * Stream test progress using SSE
331
+ */
332
+ async function streamTestProgress(configService, result, testName, options, timeout, results, testNames) {
333
+ const sseClient = new SSEClient(configService);
334
+ const { LiveProgressRenderer } = await import('../utils/live-progress.js');
335
+ const { LogWriter } = await import('../utils/log-writer.js');
336
+ // Check if verbose flag was passed
337
+ const isVerbose = options.verbose ||
338
+ (testNames && (testNames.includes('--verbose') || testNames.includes('-v'))) ||
339
+ process.env.OBS_VERBOSE === 'true';
340
+ const renderer = new LiveProgressRenderer({
341
+ verbose: isVerbose,
342
+ });
343
+ const logger = new LogWriter(result.task_id);
344
+ renderer.start(testName);
345
+ // Track completion
346
+ let completed = false;
347
+ let stepCounter = 0;
348
+ // Connect to SSE stream
349
+ sseClient.connect(result.task_id, (message) => {
350
+ if (message.type === 'step_update' && message.step) {
351
+ stepCounter++;
352
+ const step = message.step;
353
+ if (message.screenshot) {
354
+ renderer.addScreenshot();
355
+ logger.writeScreenshot(stepCounter);
356
+ }
357
+ renderer.updateStep(stepCounter, step.next_goal || 'Processing...', step);
358
+ logger.writeStep(step);
359
+ }
360
+ else if (message.type === 'screenshot') {
361
+ renderer.addScreenshot();
362
+ logger.writeScreenshot(stepCounter);
363
+ }
364
+ else if (message.type === 'complete' || message.type === 'task_completed') {
365
+ const status = message.status === 'failed' ? 'failed' : 'success';
366
+ renderer.complete(status, message.message);
367
+ logger.writeComplete(status, message.message);
368
+ // Calculate duration
369
+ const duration = Date.now() - renderer.getStartTime();
370
+ results[results.length - 1] = {
371
+ ...result,
372
+ status: (status === 'success' ? 'SUCCESS' : 'FAILED'),
373
+ message: message.message || result.message,
374
+ duration: duration,
375
+ };
376
+ completed = true;
377
+ sseClient.close();
378
+ logger.close();
379
+ console.log(chalk.gray(`\nDetailed logs: ${logger.getPath()}`));
380
+ }
381
+ else if (message.type === 'error') {
382
+ renderer.error(message.message || 'Test failed');
383
+ logger.writeComplete('failed', message.message);
384
+ results[results.length - 1] = {
385
+ ...result,
386
+ status: 'FAILED',
387
+ message: message.message || 'Test execution error',
388
+ };
389
+ completed = true;
390
+ sseClient.close();
391
+ logger.close();
392
+ }
393
+ }, (error) => {
394
+ if (!completed) {
395
+ renderer.error(`Connection error: ${error.message}`);
396
+ logger.writeComplete('failed', `Connection error: ${error.message}`);
397
+ sseClient.close();
398
+ logger.close();
399
+ completed = true;
400
+ }
401
+ });
402
+ // Wait for completion
403
+ await new Promise((resolve) => {
404
+ const checkInterval = setInterval(() => {
405
+ if (completed) {
406
+ clearInterval(checkInterval);
407
+ resolve();
408
+ }
409
+ }, 100);
410
+ setTimeout(() => {
411
+ if (!completed) {
412
+ clearInterval(checkInterval);
413
+ renderer.error('Test execution timed out');
414
+ sseClient.close();
415
+ logger.close();
416
+ resolve();
417
+ }
418
+ }, timeout);
419
+ });
420
+ }
421
+ /**
422
+ * Format and output test results
423
+ */
424
+ async function formatAndOutputResults(results, options, outputService) {
425
+ if (options.reporter === 'json' || process.env.OBS_JSON_OUTPUT === 'true') {
426
+ outputService.enableJsonMode();
427
+ outputService.formatJsonOutput(results);
428
+ }
429
+ else if (options.reporter === 'junit') {
430
+ const junitReport = generateJUnitReport(results, outputService);
431
+ if (options.output) {
432
+ writeFileSync(options.output, junitReport);
433
+ outputService.success(`JUnit report saved to ${options.output}`);
434
+ }
435
+ else {
436
+ console.log(junitReport);
437
+ }
438
+ }
439
+ else {
440
+ // Console output
441
+ results.forEach((result, index) => {
442
+ if (results.length > 1) {
443
+ console.log(chalk.bold(`\nšŸ“Š Test ${index + 1} Results:`));
444
+ }
445
+ outputService.formatTestResult(result);
446
+ });
447
+ // Summary
448
+ const successCount = results.filter((r) => r.status === 'SUCCESS').length;
449
+ const totalCount = results.length;
450
+ console.log(chalk.bold('\nšŸ“ˆ Summary:'));
451
+ console.log(chalk.gray('─'.repeat(30)));
452
+ console.log(`Total: ${totalCount}`);
453
+ console.log(chalk.green(`Passed: ${successCount}`));
454
+ console.log(chalk.red(`Failed: ${totalCount - successCount}`));
455
+ // Exit with appropriate code
456
+ if (successCount === totalCount) {
457
+ outputService.success('All tests passed!');
458
+ process.exit(0);
459
+ }
460
+ else {
461
+ outputService.error(`${totalCount - successCount} test(s) failed`);
462
+ process.exit(1);
463
+ }
464
+ }
465
+ }
466
+ /**
467
+ * Generate JUnit XML report
468
+ */
469
+ function generateJUnitReport(results, outputService) {
470
+ const testSuite = {
471
+ name: 'ObserveOne Tests',
472
+ tests: results.length,
473
+ failures: results.filter((r) => r.status === 'FAILED').length,
474
+ errors: 0,
475
+ time: results.reduce((total, r) => total + (r.duration || 0), 0) / 1000,
476
+ testCases: results.map((result, index) => ({
477
+ name: `Test ${index + 1}`,
478
+ classname: 'observeone.test',
479
+ time: (result.duration || 0) / 1000,
480
+ status: result.status === 'SUCCESS' ? 'passed' : 'failed',
481
+ failure: result.status === 'FAILED'
482
+ ? {
483
+ message: result.message,
484
+ type: 'TestFailure',
485
+ stackTrace: '',
486
+ }
487
+ : undefined,
488
+ })),
489
+ };
490
+ return outputService.formatJUnitReport(testSuite);
491
+ }
492
+ //# sourceMappingURL=ai-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-check.js","sourceRoot":"","sources":["../../src/commands/ai-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ import { IConfigService } from '../interfaces/config.interface.js';
3
+ import { IApiClient } from '../interfaces/api-client.interface.js';
4
+ import { IOutputService } from '../interfaces/output.interface.js';
5
+ export declare function createApplyCommand(configService: IConfigService, apiClient: IApiClient, outputService: IOutputService): Command;
6
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAenE,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,cAAc,EAC7B,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,cAAc,GAC5B,OAAO,CAkTT"}