@elaraai/e3-cli 0.0.2-beta.3 → 0.0.2-beta.30

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 (64) hide show
  1. package/README.md +30 -9
  2. package/dist/src/cli.js +44 -15
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/commands/auth.d.ts +21 -0
  5. package/dist/src/commands/auth.d.ts.map +1 -0
  6. package/dist/src/commands/auth.js +204 -0
  7. package/dist/src/commands/auth.js.map +1 -0
  8. package/dist/src/commands/get.d.ts.map +1 -1
  9. package/dist/src/commands/get.js +32 -14
  10. package/dist/src/commands/get.js.map +1 -1
  11. package/dist/src/commands/list.d.ts.map +1 -1
  12. package/dist/src/commands/list.js +47 -14
  13. package/dist/src/commands/list.js.map +1 -1
  14. package/dist/src/commands/logs.d.ts.map +1 -1
  15. package/dist/src/commands/logs.js +105 -69
  16. package/dist/src/commands/logs.js.map +1 -1
  17. package/dist/src/commands/package.d.ts.map +1 -1
  18. package/dist/src/commands/package.js +55 -18
  19. package/dist/src/commands/package.js.map +1 -1
  20. package/dist/src/commands/repo.d.ts +35 -0
  21. package/dist/src/commands/repo.d.ts.map +1 -0
  22. package/dist/src/commands/repo.js +243 -0
  23. package/dist/src/commands/repo.js.map +1 -0
  24. package/dist/src/commands/run.d.ts.map +1 -1
  25. package/dist/src/commands/run.js +4 -3
  26. package/dist/src/commands/run.js.map +1 -1
  27. package/dist/src/commands/set.d.ts.map +1 -1
  28. package/dist/src/commands/set.js +16 -5
  29. package/dist/src/commands/set.js.map +1 -1
  30. package/dist/src/commands/start.d.ts.map +1 -1
  31. package/dist/src/commands/start.js +188 -47
  32. package/dist/src/commands/start.js.map +1 -1
  33. package/dist/src/commands/tree.d.ts +14 -0
  34. package/dist/src/commands/tree.d.ts.map +1 -0
  35. package/dist/src/commands/tree.js +171 -0
  36. package/dist/src/commands/tree.js.map +1 -0
  37. package/dist/src/commands/watch.d.ts.map +1 -1
  38. package/dist/src/commands/watch.js +131 -91
  39. package/dist/src/commands/watch.js.map +1 -1
  40. package/dist/src/commands/workspace.d.ts +4 -0
  41. package/dist/src/commands/workspace.d.ts.map +1 -1
  42. package/dist/src/commands/workspace.js +269 -29
  43. package/dist/src/commands/workspace.js.map +1 -1
  44. package/dist/src/credentials.d.ts +123 -0
  45. package/dist/src/credentials.d.ts.map +1 -0
  46. package/dist/src/credentials.js +213 -0
  47. package/dist/src/credentials.js.map +1 -0
  48. package/dist/src/utils.d.ts +48 -0
  49. package/dist/src/utils.d.ts.map +1 -1
  50. package/dist/src/utils.js +64 -0
  51. package/dist/src/utils.js.map +1 -1
  52. package/package.json +7 -6
  53. package/dist/src/commands/gc.d.ts +0 -12
  54. package/dist/src/commands/gc.d.ts.map +0 -1
  55. package/dist/src/commands/gc.js +0 -44
  56. package/dist/src/commands/gc.js.map +0 -1
  57. package/dist/src/commands/init.d.ts +0 -9
  58. package/dist/src/commands/init.d.ts.map +0 -1
  59. package/dist/src/commands/init.js +0 -33
  60. package/dist/src/commands/init.js.map +0 -1
  61. package/dist/src/commands/status.d.ts +0 -9
  62. package/dist/src/commands/status.d.ts.map +0 -1
  63. package/dist/src/commands/status.js +0 -157
  64. package/dist/src/commands/status.js.map +0 -1
@@ -9,25 +9,32 @@
9
9
  * e3 start . my-workspace
10
10
  * e3 start . my-workspace --concurrency 2
11
11
  * e3 start . my-workspace --force
12
+ * e3 start https://server/repos/myrepo my-workspace
12
13
  */
13
- import { dataflowExecute, DataflowAbortedError, WorkspaceLockError } from '@elaraai/e3-core';
14
- import { resolveRepo, formatError, exitError } from '../utils.js';
14
+ import { join } from 'node:path';
15
+ import { DataflowAbortedError, LocalStorage, LocalOrchestrator, FileStateStore, WorkspaceLockError, } from '@elaraai/e3-core';
16
+ import { dataflowStart as dataflowStartRemote, dataflowExecution as dataflowExecutionRemote, } from '@elaraai/e3-api-client';
17
+ import { parseRepoLocation, formatError, exitError } from '../utils.js';
18
+ /** Polling interval for remote execution (ms) */
19
+ const POLL_INTERVAL = 500;
15
20
  /**
16
21
  * Execute tasks in a workspace.
17
22
  */
18
23
  export async function startCommand(repoArg, ws, options) {
19
24
  // Set up abort controller for signal handling
20
25
  const controller = new AbortController();
26
+ let aborted = false;
21
27
  // Handle SIGINT (Ctrl+C) and SIGTERM gracefully
22
28
  const signalHandler = (signal) => {
23
29
  console.log('');
24
30
  console.log(`Received ${signal}, aborting...`);
31
+ aborted = true;
25
32
  controller.abort();
26
33
  };
27
34
  process.on('SIGINT', () => signalHandler('SIGINT'));
28
35
  process.on('SIGTERM', () => signalHandler('SIGTERM'));
29
36
  try {
30
- const repoPath = resolveRepo(repoArg);
37
+ const location = await parseRepoLocation(repoArg);
31
38
  const concurrency = options.concurrency ? parseInt(options.concurrency, 10) : 4;
32
39
  console.log(`Starting tasks in workspace: ${ws}`);
33
40
  if (options.filter) {
@@ -38,42 +45,20 @@ export async function startCommand(repoArg, ws, options) {
38
45
  console.log('Force: re-executing all tasks');
39
46
  }
40
47
  console.log('');
41
- const result = await dataflowExecute(repoPath, ws, {
42
- concurrency,
43
- force: options.force,
44
- filter: options.filter,
45
- signal: controller.signal,
46
- onTaskStart: (name) => {
47
- console.log(` [START] ${name}`);
48
- },
49
- onTaskComplete: (taskResult) => {
50
- const status = formatTaskStatus(taskResult);
51
- const cached = taskResult.cached ? ' (cached)' : '';
52
- const duration = taskResult.duration > 0 ? ` [${taskResult.duration}ms]` : '';
53
- console.log(` [${status}] ${taskResult.name}${cached}${duration}`);
54
- },
55
- });
56
- console.log('');
57
- console.log('Summary:');
58
- console.log(` Executed: ${result.executed}`);
59
- console.log(` Cached: ${result.cached}`);
60
- console.log(` Failed: ${result.failed}`);
61
- console.log(` Skipped: ${result.skipped}`);
62
- console.log(` Duration: ${result.duration}ms`);
63
- if (!result.success) {
64
- console.log('');
65
- console.log('Failed tasks:');
66
- for (const task of result.tasks) {
67
- if (task.state === 'failed') {
68
- const exitInfo = task.exitCode != null ? `exit code ${task.exitCode}` : 'spawn failed';
69
- const errorInfo = task.error ? ` - ${task.error}` : '';
70
- console.log(` ${task.name}: ${exitInfo}${errorInfo}`);
71
- }
72
- else if (task.state === 'error') {
73
- console.log(` ${task.name}: ${task.error}`);
74
- }
75
- }
76
- process.exit(1);
48
+ if (location.type === 'local') {
49
+ await executeLocal(location.path, ws, {
50
+ concurrency,
51
+ force: options.force,
52
+ filter: options.filter,
53
+ signal: controller.signal,
54
+ });
55
+ }
56
+ else {
57
+ await executeRemote(location.baseUrl, location.repo, ws, {
58
+ concurrency,
59
+ force: options.force,
60
+ filter: options.filter,
61
+ }, location.token, () => aborted);
77
62
  }
78
63
  }
79
64
  catch (err) {
@@ -94,18 +79,174 @@ export async function startCommand(repoArg, ws, options) {
94
79
  exitError(formatError(err));
95
80
  }
96
81
  }
97
- function formatTaskStatus(result) {
82
+ async function executeLocal(repoPath, ws, options) {
83
+ const storage = new LocalStorage();
84
+ const workspacesDir = join(repoPath, 'workspaces');
85
+ const stateStore = new FileStateStore(workspacesDir);
86
+ const orchestrator = new LocalOrchestrator(stateStore);
87
+ const handle = await orchestrator.start(storage, repoPath, ws, {
88
+ concurrency: options.concurrency,
89
+ force: options.force,
90
+ filter: options.filter,
91
+ signal: options.signal,
92
+ onTaskStart: (name) => {
93
+ console.log(` [START] ${name}`);
94
+ },
95
+ onTaskComplete: (taskResult) => {
96
+ printTaskResult(taskResult);
97
+ },
98
+ });
99
+ const result = await orchestrator.wait(handle);
100
+ printSummary({
101
+ executed: result.executed,
102
+ cached: result.cached,
103
+ failed: result.failed,
104
+ skipped: result.skipped,
105
+ duration: result.duration,
106
+ });
107
+ if (!result.success) {
108
+ // Get failed task details from state store
109
+ const state = await stateStore.read(repoPath, ws, handle.id);
110
+ if (state) {
111
+ const failedTasks = [];
112
+ for (const [name, taskState] of state.tasks) {
113
+ if (taskState.status === 'failed') {
114
+ failedTasks.push({
115
+ name,
116
+ cached: false,
117
+ state: 'failed',
118
+ error: taskState.error.type === 'some' ? taskState.error.value : undefined,
119
+ exitCode: taskState.exitCode.type === 'some' ? Number(taskState.exitCode.value) : undefined,
120
+ duration: taskState.duration.type === 'some' ? Number(taskState.duration.value) : 0,
121
+ });
122
+ }
123
+ }
124
+ printFailedTasks(failedTasks);
125
+ }
126
+ process.exit(1);
127
+ }
128
+ }
129
+ async function executeRemote(baseUrl, repo, ws, options, token, isAborted) {
130
+ const requestOptions = { token };
131
+ // Start the dataflow execution
132
+ await dataflowStartRemote(baseUrl, repo, ws, {
133
+ concurrency: options.concurrency,
134
+ force: options.force,
135
+ filter: options.filter,
136
+ }, requestOptions);
137
+ // Poll for execution state
138
+ let eventOffset = 0;
139
+ let lastStatus = null;
140
+ while (!isAborted()) {
141
+ const state = await dataflowExecutionRemote(baseUrl, repo, ws, {
142
+ offset: eventOffset,
143
+ }, requestOptions);
144
+ // Print new events
145
+ for (const event of state.events) {
146
+ printEvent(event);
147
+ eventOffset++;
148
+ }
149
+ // Check if execution is done
150
+ if (state.status.type !== 'running') {
151
+ lastStatus = state.status.type;
152
+ // Print summary if available
153
+ if (state.summary.type === 'some') {
154
+ const summary = state.summary.value;
155
+ printSummary({
156
+ executed: Number(summary.executed),
157
+ cached: Number(summary.cached),
158
+ failed: Number(summary.failed),
159
+ skipped: Number(summary.skipped),
160
+ duration: summary.duration,
161
+ });
162
+ }
163
+ break;
164
+ }
165
+ // Wait before next poll
166
+ await sleep(POLL_INTERVAL);
167
+ }
168
+ // Handle abort
169
+ if (isAborted()) {
170
+ console.log('');
171
+ console.log('Aborted.');
172
+ process.exit(130);
173
+ }
174
+ // Exit with error if execution failed
175
+ if (lastStatus === 'failed') {
176
+ process.exit(1);
177
+ }
178
+ }
179
+ // =============================================================================
180
+ // Output Formatting
181
+ // =============================================================================
182
+ function printEvent(event) {
183
+ switch (event.type) {
184
+ case 'start':
185
+ console.log(` [START] ${event.value.task}`);
186
+ break;
187
+ case 'complete':
188
+ console.log(` [DONE] ${event.value.task} [${Math.round(event.value.duration)}ms]`);
189
+ break;
190
+ case 'cached':
191
+ console.log(` [CACHED] ${event.value.task}`);
192
+ break;
193
+ case 'failed':
194
+ console.log(` [FAIL] ${event.value.task} [${Math.round(event.value.duration)}ms] (exit code ${event.value.exitCode})`);
195
+ break;
196
+ case 'error':
197
+ console.log(` [ERR] ${event.value.task}: ${event.value.message}`);
198
+ break;
199
+ case 'input_unavailable':
200
+ console.log(` [SKIP] ${event.value.task}`);
201
+ break;
202
+ }
203
+ }
204
+ function printTaskResult(result) {
205
+ if (result.cached) {
206
+ console.log(` [CACHED] ${result.name}`);
207
+ return;
208
+ }
98
209
  switch (result.state) {
99
210
  case 'success':
100
- return 'DONE';
101
- case 'failed':
102
- return 'FAIL';
211
+ console.log(` [DONE] ${result.name} [${Math.round(result.duration)}ms]`);
212
+ break;
213
+ case 'failed': {
214
+ const exitCode = result.exitCode ?? -1;
215
+ console.log(` [FAIL] ${result.name} [${Math.round(result.duration)}ms] (exit code ${exitCode})`);
216
+ break;
217
+ }
103
218
  case 'error':
104
- return 'ERR';
219
+ console.log(` [ERR] ${result.name}: ${result.error ?? 'Unknown error'}`);
220
+ break;
105
221
  case 'skipped':
106
- return 'SKIP';
107
- default:
108
- return '???';
222
+ console.log(` [SKIP] ${result.name}`);
223
+ break;
224
+ }
225
+ }
226
+ function printSummary(summary) {
227
+ console.log('');
228
+ console.log('Summary:');
229
+ console.log(` Executed: ${summary.executed}`);
230
+ console.log(` Cached: ${summary.cached}`);
231
+ console.log(` Failed: ${summary.failed}`);
232
+ console.log(` Skipped: ${summary.skipped}`);
233
+ console.log(` Duration: ${Math.round(summary.duration)}ms`);
234
+ }
235
+ function printFailedTasks(tasks) {
236
+ console.log('');
237
+ console.log('Failed tasks:');
238
+ for (const task of tasks) {
239
+ if (task.state === 'failed') {
240
+ const exitInfo = task.exitCode != null ? `exit code ${task.exitCode}` : 'spawn failed';
241
+ const errorInfo = task.error ? ` - ${task.error}` : '';
242
+ console.log(` ${task.name}: ${exitInfo}${errorInfo}`);
243
+ }
244
+ else if (task.state === 'error') {
245
+ console.log(` ${task.name}: ${task.error}`);
246
+ }
109
247
  }
110
248
  }
249
+ function sleep(ms) {
250
+ return new Promise(resolve => setTimeout(resolve, ms));
251
+ }
111
252
  //# sourceMappingURL=start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ interface TreeOptions {
6
+ depth?: string;
7
+ types?: boolean;
8
+ }
9
+ /**
10
+ * Show full tree structure of a workspace.
11
+ */
12
+ export declare function treeCommand(repoArg: string, pathSpec: string, options: TreeOptions): Promise<void>;
13
+ export {};
14
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/commands/tree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAkHD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA2Ef"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * e3 tree command - Show full tree structure of a workspace
7
+ *
8
+ * Usage:
9
+ * e3 tree . dev # Full tree for workspace
10
+ * e3 tree . dev.tasks # Tree from subtree
11
+ * e3 tree . dev --depth 2 # Limit depth
12
+ * e3 tree . dev --types # Show dataset types
13
+ */
14
+ import { workspaceGetTree, LocalStorage } from '@elaraai/e3-core';
15
+ import { printFor, EastTypeType } from '@elaraai/east';
16
+ import { datasetListRecursive as datasetListRecursiveRemote } from '@elaraai/e3-api-client';
17
+ import { parseRepoLocation, parseDatasetPath, formatError, exitError } from '../utils.js';
18
+ // Printer for type values (decoded types are EastTypeValue, not EastType)
19
+ const printTypeValue = printFor(EastTypeType);
20
+ /**
21
+ * Render tree nodes with box-drawing characters.
22
+ */
23
+ function renderTree(nodes, prefix = '', showTypes = false) {
24
+ const lines = [];
25
+ for (let i = 0; i < nodes.length; i++) {
26
+ const node = nodes[i];
27
+ const isLast = i === nodes.length - 1;
28
+ const connector = isLast ? '└── ' : '├── ';
29
+ const childPrefix = isLast ? ' ' : '│ ';
30
+ // Format node name with optional type
31
+ let nodeName = node.name;
32
+ if (showTypes && node.kind === 'dataset' && node.datasetType) {
33
+ try {
34
+ nodeName += ` (${printTypeValue(node.datasetType)})`;
35
+ }
36
+ catch {
37
+ nodeName += ' (?)';
38
+ }
39
+ }
40
+ lines.push(prefix + connector + nodeName);
41
+ // Recurse into children (only tree nodes have children)
42
+ if (node.kind === 'tree' && node.children.length > 0) {
43
+ const childLines = renderTree(node.children, prefix + childPrefix, showTypes);
44
+ lines.push(...childLines);
45
+ }
46
+ }
47
+ return lines;
48
+ }
49
+ function buildTreeFromFlat(items, showTypes) {
50
+ const root = { name: '', children: new Map(), isDataset: false };
51
+ for (const item of items) {
52
+ // Path is like ".inputs.a.x" - split into segments
53
+ const segments = item.path.split('.').filter(s => s !== '');
54
+ let current = root;
55
+ for (let i = 0; i < segments.length; i++) {
56
+ const segment = segments[i];
57
+ const isLast = i === segments.length - 1;
58
+ if (!current.children.has(segment)) {
59
+ current.children.set(segment, {
60
+ name: segment,
61
+ children: new Map(),
62
+ isDataset: false,
63
+ });
64
+ }
65
+ const node = current.children.get(segment);
66
+ if (isLast) {
67
+ node.isDataset = true;
68
+ if (showTypes) {
69
+ try {
70
+ node.type = printTypeValue(item.type);
71
+ }
72
+ catch {
73
+ node.type = '?';
74
+ }
75
+ }
76
+ }
77
+ current = node;
78
+ }
79
+ }
80
+ return root;
81
+ }
82
+ /**
83
+ * Render flat tree structure with box-drawing characters.
84
+ */
85
+ function renderFlatTree(node, prefix = '', showTypes = false) {
86
+ const lines = [];
87
+ const children = Array.from(node.children.values());
88
+ for (let i = 0; i < children.length; i++) {
89
+ const child = children[i];
90
+ const isLast = i === children.length - 1;
91
+ const connector = isLast ? '└── ' : '├── ';
92
+ const childPrefix = isLast ? ' ' : '│ ';
93
+ let nodeName = child.name;
94
+ if (showTypes && child.isDataset && child.type) {
95
+ nodeName += ` (${child.type})`;
96
+ }
97
+ lines.push(prefix + connector + nodeName);
98
+ // Recurse into children
99
+ if (child.children.size > 0) {
100
+ const childLines = renderFlatTree(child, prefix + childPrefix, showTypes);
101
+ lines.push(...childLines);
102
+ }
103
+ }
104
+ return lines;
105
+ }
106
+ /**
107
+ * Show full tree structure of a workspace.
108
+ */
109
+ export async function treeCommand(repoArg, pathSpec, options) {
110
+ try {
111
+ const location = await parseRepoLocation(repoArg);
112
+ const { ws, path } = parseDatasetPath(pathSpec);
113
+ const maxDepth = options.depth !== undefined ? parseInt(options.depth, 10) : undefined;
114
+ const includeTypes = options.types ?? false;
115
+ if (location.type === 'local') {
116
+ const storage = new LocalStorage();
117
+ const nodes = await workspaceGetTree(storage, location.path, ws, path, {
118
+ maxDepth,
119
+ includeTypes,
120
+ });
121
+ if (nodes.length === 0) {
122
+ console.log('(empty)');
123
+ return;
124
+ }
125
+ // Print root path
126
+ console.log(pathSpec);
127
+ // Render and print tree
128
+ const lines = renderTree(nodes, '', includeTypes);
129
+ for (const line of lines) {
130
+ console.log(line);
131
+ }
132
+ }
133
+ else {
134
+ // Remote: use flat list and build tree
135
+ const items = await datasetListRecursiveRemote(location.baseUrl, location.repo, ws, path, { token: location.token });
136
+ if (items.length === 0) {
137
+ console.log('(empty)');
138
+ return;
139
+ }
140
+ // Print root path
141
+ console.log(pathSpec);
142
+ // Build tree from flat list and render
143
+ const tree = buildTreeFromFlat(items, includeTypes);
144
+ // Apply depth limit if specified
145
+ const lines = renderFlatTree(tree, '', includeTypes);
146
+ // Apply depth filter if needed
147
+ if (maxDepth !== undefined) {
148
+ const filteredLines = [];
149
+ for (const line of lines) {
150
+ // Count depth by counting connector patterns
151
+ const depth = (line.match(/[├└]/g) || []).length;
152
+ if (depth <= maxDepth) {
153
+ filteredLines.push(line);
154
+ }
155
+ }
156
+ for (const line of filteredLines) {
157
+ console.log(line);
158
+ }
159
+ }
160
+ else {
161
+ for (const line of lines) {
162
+ console.log(line);
163
+ }
164
+ }
165
+ }
166
+ }
167
+ catch (err) {
168
+ exitError(formatError(err));
169
+ }
170
+ }
171
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/commands/tree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,gBAAgB,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,oBAAoB,IAAI,0BAA0B,EAAwB,MAAM,wBAAwB,CAAC;AAClH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1F,0EAA0E;AAC1E,MAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAO9C;;GAEG;AACH,SAAS,UAAU,CAAC,KAAiB,EAAE,SAAiB,EAAE,EAAE,YAAqB,KAAK;IACpF,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAE7C,sCAAsC;QACtC,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7D,IAAI,CAAC;gBACH,QAAQ,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,IAAI,MAAM,CAAC;YACrB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;QAE1C,wDAAwD;QACxD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,SAAS,CAAC,CAAC;YAC9E,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAYD,SAAS,iBAAiB,CAAC,KAAwB,EAAE,SAAkB;IACrE,MAAM,IAAI,GAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAE/E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,mDAAmD;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAEzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE;oBAC5B,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,IAAI,GAAG,EAAE;oBACnB,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;YAC5C,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,CAAC;wBACH,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxC,CAAC;oBAAC,MAAM,CAAC;wBACP,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAkB,EAAE,SAAiB,EAAE,EAAE,YAAqB,KAAK;IACzF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAE7C,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;QAC1B,IAAI,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/C,QAAQ,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;QAE1C,wBAAwB;QACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,SAAS,CAAC,CAAC;YAC1E,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,QAAgB,EAChB,OAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;QAE5C,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;YAEnC,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE;gBACrE,QAAQ;gBACR,YAAY;aACb,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,kBAAkB;YAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEtB,wBAAwB;YACxB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;YAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,MAAM,KAAK,GAAG,MAAM,0BAA0B,CAC5C,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,IAAI,EACb,EAAE,EACF,IAAI,EACJ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAC1B,CAAC;YAEF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,kBAAkB;YAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEtB,uCAAuC;YACvC,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAEpD,iCAAiC;YACjC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;YAErD,+BAA+B;YAC/B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,aAAa,GAAa,EAAE,CAAC;gBACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,6CAA6C;oBAC7C,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBACjD,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;wBACtB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3B,CAAC;gBACH,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/commands/watch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAmGD;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAwNf"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/commands/watch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA6FD;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CA4Qf"}