@elaraai/e3-core 0.0.2-beta.9 → 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.
- package/LICENSE.md +4 -0
- package/README.md +74 -35
- package/dist/src/dataflow/api-compat.d.ts +90 -0
- package/dist/src/dataflow/api-compat.d.ts.map +1 -0
- package/dist/src/dataflow/api-compat.js +139 -0
- package/dist/src/dataflow/api-compat.js.map +1 -0
- package/dist/src/dataflow/api-compat.spec.d.ts +6 -0
- package/dist/src/dataflow/api-compat.spec.d.ts.map +1 -0
- package/dist/src/dataflow/api-compat.spec.js +182 -0
- package/dist/src/dataflow/api-compat.spec.js.map +1 -0
- package/dist/src/dataflow/index.d.ts +18 -0
- package/dist/src/dataflow/index.d.ts.map +1 -0
- package/dist/src/dataflow/index.js +23 -0
- package/dist/src/dataflow/index.js.map +1 -0
- package/dist/src/dataflow/orchestrator/LocalOrchestrator.d.ts +76 -0
- package/dist/src/dataflow/orchestrator/LocalOrchestrator.d.ts.map +1 -0
- package/dist/src/dataflow/orchestrator/LocalOrchestrator.js +729 -0
- package/dist/src/dataflow/orchestrator/LocalOrchestrator.js.map +1 -0
- package/dist/src/dataflow/orchestrator/index.d.ts +12 -0
- package/dist/src/dataflow/orchestrator/index.d.ts.map +1 -0
- package/dist/src/dataflow/orchestrator/index.js +12 -0
- package/dist/src/dataflow/orchestrator/index.js.map +1 -0
- package/dist/src/dataflow/orchestrator/interfaces.d.ts +163 -0
- package/dist/src/dataflow/orchestrator/interfaces.d.ts.map +1 -0
- package/dist/src/dataflow/orchestrator/interfaces.js +52 -0
- package/dist/src/dataflow/orchestrator/interfaces.js.map +1 -0
- package/dist/src/dataflow/state-store/FileStateStore.d.ts +67 -0
- package/dist/src/dataflow/state-store/FileStateStore.d.ts.map +1 -0
- package/dist/src/dataflow/state-store/FileStateStore.js +300 -0
- package/dist/src/dataflow/state-store/FileStateStore.js.map +1 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.d.ts +42 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.d.ts.map +1 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.js +229 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.js.map +1 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.spec.d.ts +6 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.spec.d.ts.map +1 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.spec.js +114 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.spec.js.map +1 -0
- package/dist/src/dataflow/state-store/index.d.ts +13 -0
- package/dist/src/dataflow/state-store/index.d.ts.map +1 -0
- package/dist/src/dataflow/state-store/index.js +13 -0
- package/dist/src/dataflow/state-store/index.js.map +1 -0
- package/dist/src/dataflow/state-store/interfaces.d.ts +159 -0
- package/dist/src/dataflow/state-store/interfaces.d.ts.map +1 -0
- package/dist/src/dataflow/state-store/interfaces.js +6 -0
- package/dist/src/dataflow/state-store/interfaces.js.map +1 -0
- package/dist/src/dataflow/steps.d.ts +222 -0
- package/dist/src/dataflow/steps.d.ts.map +1 -0
- package/dist/src/dataflow/steps.js +707 -0
- package/dist/src/dataflow/steps.js.map +1 -0
- package/dist/src/dataflow/steps.spec.d.ts +6 -0
- package/dist/src/dataflow/steps.spec.d.ts.map +1 -0
- package/dist/src/dataflow/steps.spec.js +343 -0
- package/dist/src/dataflow/steps.spec.js.map +1 -0
- package/dist/src/dataflow/types.d.ts +127 -0
- package/dist/src/dataflow/types.d.ts.map +1 -0
- package/dist/src/dataflow/types.js +7 -0
- package/dist/src/dataflow/types.js.map +1 -0
- package/dist/src/dataflow-orchestration.spec.d.ts +6 -0
- package/dist/src/dataflow-orchestration.spec.d.ts.map +1 -0
- package/dist/src/dataflow-orchestration.spec.js +1025 -0
- package/dist/src/dataflow-orchestration.spec.js.map +1 -0
- package/dist/src/dataflow.d.ts +113 -38
- package/dist/src/dataflow.d.ts.map +1 -1
- package/dist/src/dataflow.js +269 -416
- package/dist/src/dataflow.js.map +1 -1
- package/dist/src/dataflow.spec.d.ts +6 -0
- package/dist/src/dataflow.spec.d.ts.map +1 -0
- package/dist/src/dataflow.spec.js +663 -0
- package/dist/src/dataflow.spec.js.map +1 -0
- package/dist/src/dataset-refs.d.ts +124 -0
- package/dist/src/dataset-refs.d.ts.map +1 -0
- package/dist/src/dataset-refs.js +319 -0
- package/dist/src/dataset-refs.js.map +1 -0
- package/dist/src/errors.d.ts +39 -9
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +51 -8
- package/dist/src/errors.js.map +1 -1
- package/dist/src/errors.spec.d.ts +6 -0
- package/dist/src/errors.spec.d.ts.map +1 -0
- package/dist/src/errors.spec.js +276 -0
- package/dist/src/errors.spec.js.map +1 -0
- package/dist/src/execution/LocalTaskRunner.d.ts +73 -0
- package/dist/src/execution/LocalTaskRunner.d.ts.map +1 -0
- package/dist/src/execution/LocalTaskRunner.js +399 -0
- package/dist/src/execution/LocalTaskRunner.js.map +1 -0
- package/dist/src/execution/MockTaskRunner.d.ts +49 -0
- package/dist/src/execution/MockTaskRunner.d.ts.map +1 -0
- package/dist/src/execution/MockTaskRunner.js +54 -0
- package/dist/src/execution/MockTaskRunner.js.map +1 -0
- package/dist/src/execution/index.d.ts +16 -0
- package/dist/src/execution/index.d.ts.map +1 -0
- package/dist/src/execution/index.js +8 -0
- package/dist/src/execution/index.js.map +1 -0
- package/dist/src/execution/interfaces.d.ts +246 -0
- package/dist/src/execution/interfaces.d.ts.map +1 -0
- package/dist/src/execution/interfaces.js +6 -0
- package/dist/src/execution/interfaces.js.map +1 -0
- package/dist/src/execution/processHelpers.d.ts +20 -0
- package/dist/src/execution/processHelpers.d.ts.map +1 -0
- package/dist/src/execution/processHelpers.js +62 -0
- package/dist/src/execution/processHelpers.js.map +1 -0
- package/dist/src/executions.d.ts +71 -104
- package/dist/src/executions.d.ts.map +1 -1
- package/dist/src/executions.js +113 -481
- package/dist/src/executions.js.map +1 -1
- package/dist/src/executions.spec.d.ts +6 -0
- package/dist/src/executions.spec.d.ts.map +1 -0
- package/dist/src/executions.spec.js +387 -0
- package/dist/src/executions.spec.js.map +1 -0
- package/dist/src/formats.d.ts +18 -2
- package/dist/src/formats.d.ts.map +1 -1
- package/dist/src/formats.js +34 -2
- package/dist/src/formats.js.map +1 -1
- package/dist/src/gc.spec.d.ts +6 -0
- package/dist/src/gc.spec.d.ts.map +1 -0
- package/dist/src/gc.spec.js +512 -0
- package/dist/src/gc.spec.js.map +1 -0
- package/dist/src/index.d.ts +20 -10
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +48 -18
- package/dist/src/index.js.map +1 -1
- package/dist/src/objects.d.ts +7 -53
- package/dist/src/objects.d.ts.map +1 -1
- package/dist/src/objects.js +13 -232
- package/dist/src/objects.js.map +1 -1
- package/dist/src/objects.spec.d.ts +6 -0
- package/dist/src/objects.spec.d.ts.map +1 -0
- package/dist/src/objects.spec.js +247 -0
- package/dist/src/objects.spec.js.map +1 -0
- package/dist/src/packages.d.ts +41 -14
- package/dist/src/packages.d.ts.map +1 -1
- package/dist/src/packages.js +151 -89
- package/dist/src/packages.js.map +1 -1
- package/dist/src/packages.spec.d.ts +6 -0
- package/dist/src/packages.spec.d.ts.map +1 -0
- package/dist/src/packages.spec.js +324 -0
- package/dist/src/packages.spec.js.map +1 -0
- package/dist/src/storage/in-memory/InMemoryRepoStore.d.ts +35 -0
- package/dist/src/storage/in-memory/InMemoryRepoStore.d.ts.map +1 -0
- package/dist/src/storage/in-memory/InMemoryRepoStore.js +107 -0
- package/dist/src/storage/in-memory/InMemoryRepoStore.js.map +1 -0
- package/dist/src/storage/in-memory/InMemoryRepoStore.spec.d.ts +6 -0
- package/dist/src/storage/in-memory/InMemoryRepoStore.spec.d.ts.map +1 -0
- package/dist/src/storage/in-memory/InMemoryRepoStore.spec.js +187 -0
- package/dist/src/storage/in-memory/InMemoryRepoStore.spec.js.map +1 -0
- package/dist/src/storage/in-memory/InMemoryStorage.d.ts +139 -0
- package/dist/src/storage/in-memory/InMemoryStorage.d.ts.map +1 -0
- package/dist/src/storage/in-memory/InMemoryStorage.js +439 -0
- package/dist/src/storage/in-memory/InMemoryStorage.js.map +1 -0
- package/dist/src/storage/in-memory/index.d.ts +12 -0
- package/dist/src/storage/in-memory/index.d.ts.map +1 -0
- package/dist/src/storage/in-memory/index.js +12 -0
- package/dist/src/storage/in-memory/index.js.map +1 -0
- package/dist/src/storage/index.d.ts +18 -0
- package/dist/src/storage/index.d.ts.map +1 -0
- package/dist/src/storage/index.js +10 -0
- package/dist/src/storage/index.js.map +1 -0
- package/dist/src/storage/interfaces.d.ts +581 -0
- package/dist/src/storage/interfaces.d.ts.map +1 -0
- package/dist/src/storage/interfaces.js +6 -0
- package/dist/src/storage/interfaces.js.map +1 -0
- package/dist/src/storage/local/LocalBackend.d.ts +56 -0
- package/dist/src/storage/local/LocalBackend.d.ts.map +1 -0
- package/dist/src/storage/local/LocalBackend.js +145 -0
- package/dist/src/storage/local/LocalBackend.js.map +1 -0
- package/dist/src/storage/local/LocalDatasetRefStore.d.ts +22 -0
- package/dist/src/storage/local/LocalDatasetRefStore.d.ts.map +1 -0
- package/dist/src/storage/local/LocalDatasetRefStore.js +118 -0
- package/dist/src/storage/local/LocalDatasetRefStore.js.map +1 -0
- package/dist/src/storage/local/LocalLockService.d.ts +111 -0
- package/dist/src/storage/local/LocalLockService.d.ts.map +1 -0
- package/dist/src/storage/local/LocalLockService.js +364 -0
- package/dist/src/storage/local/LocalLockService.js.map +1 -0
- package/dist/src/storage/local/LocalLockService.spec.d.ts +6 -0
- package/dist/src/storage/local/LocalLockService.spec.d.ts.map +1 -0
- package/dist/src/storage/local/LocalLockService.spec.js +148 -0
- package/dist/src/storage/local/LocalLockService.spec.js.map +1 -0
- package/dist/src/storage/local/LocalLogStore.d.ts +23 -0
- package/dist/src/storage/local/LocalLogStore.d.ts.map +1 -0
- package/dist/src/storage/local/LocalLogStore.js +66 -0
- package/dist/src/storage/local/LocalLogStore.js.map +1 -0
- package/dist/src/storage/local/LocalObjectStore.d.ts +55 -0
- package/dist/src/storage/local/LocalObjectStore.d.ts.map +1 -0
- package/dist/src/storage/local/LocalObjectStore.js +300 -0
- package/dist/src/storage/local/LocalObjectStore.js.map +1 -0
- package/dist/src/storage/local/LocalRefStore.d.ts +50 -0
- package/dist/src/storage/local/LocalRefStore.d.ts.map +1 -0
- package/dist/src/storage/local/LocalRefStore.js +337 -0
- package/dist/src/storage/local/LocalRefStore.js.map +1 -0
- package/dist/src/storage/local/LocalRepoStore.d.ts +55 -0
- package/dist/src/storage/local/LocalRepoStore.d.ts.map +1 -0
- package/dist/src/storage/local/LocalRepoStore.js +365 -0
- package/dist/src/storage/local/LocalRepoStore.js.map +1 -0
- package/dist/src/storage/local/LocalRepoStore.spec.d.ts +6 -0
- package/dist/src/storage/local/LocalRepoStore.spec.d.ts.map +1 -0
- package/dist/src/storage/local/LocalRepoStore.spec.js +255 -0
- package/dist/src/storage/local/LocalRepoStore.spec.js.map +1 -0
- package/dist/src/storage/local/gc.d.ts +92 -0
- package/dist/src/storage/local/gc.d.ts.map +1 -0
- package/dist/src/storage/local/gc.js +377 -0
- package/dist/src/storage/local/gc.js.map +1 -0
- package/dist/src/storage/local/index.d.ts +18 -0
- package/dist/src/storage/local/index.d.ts.map +1 -0
- package/dist/src/storage/local/index.js +18 -0
- package/dist/src/storage/local/index.js.map +1 -0
- package/dist/src/storage/local/localHelpers.d.ts +25 -0
- package/dist/src/storage/local/localHelpers.d.ts.map +1 -0
- package/dist/src/storage/local/localHelpers.js +69 -0
- package/dist/src/storage/local/localHelpers.js.map +1 -0
- package/dist/src/{repository.d.ts → storage/local/repository.d.ts} +8 -4
- package/dist/src/storage/local/repository.d.ts.map +1 -0
- package/dist/src/{repository.js → storage/local/repository.js} +31 -29
- package/dist/src/storage/local/repository.js.map +1 -0
- package/dist/src/storage/local/repository.spec.d.ts +6 -0
- package/dist/src/storage/local/repository.spec.d.ts.map +1 -0
- package/dist/src/storage/local/repository.spec.js +186 -0
- package/dist/src/storage/local/repository.spec.js.map +1 -0
- package/dist/src/tasks.d.ts +16 -10
- package/dist/src/tasks.d.ts.map +1 -1
- package/dist/src/tasks.js +35 -41
- package/dist/src/tasks.js.map +1 -1
- package/dist/src/tasks.spec.d.ts +6 -0
- package/dist/src/tasks.spec.d.ts.map +1 -0
- package/dist/src/tasks.spec.js +105 -0
- package/dist/src/tasks.spec.js.map +1 -0
- package/dist/src/test-helpers.d.ts +5 -4
- package/dist/src/test-helpers.d.ts.map +1 -1
- package/dist/src/test-helpers.js +9 -21
- package/dist/src/test-helpers.js.map +1 -1
- package/dist/src/transfer/InMemoryTransferBackend.d.ts +75 -0
- package/dist/src/transfer/InMemoryTransferBackend.d.ts.map +1 -0
- package/dist/src/transfer/InMemoryTransferBackend.js +211 -0
- package/dist/src/transfer/InMemoryTransferBackend.js.map +1 -0
- package/dist/src/transfer/index.d.ts +9 -0
- package/dist/src/transfer/index.d.ts.map +1 -0
- package/dist/src/transfer/index.js +11 -0
- package/dist/src/transfer/index.js.map +1 -0
- package/dist/src/transfer/interfaces.d.ts +103 -0
- package/dist/src/transfer/interfaces.d.ts.map +1 -0
- package/dist/src/transfer/interfaces.js +6 -0
- package/dist/src/transfer/interfaces.js.map +1 -0
- package/dist/src/transfer/process.d.ts +55 -0
- package/dist/src/transfer/process.d.ts.map +1 -0
- package/dist/src/transfer/process.js +144 -0
- package/dist/src/transfer/process.js.map +1 -0
- package/dist/src/transfer/types.d.ts +106 -0
- package/dist/src/transfer/types.d.ts.map +1 -0
- package/dist/src/transfer/types.js +61 -0
- package/dist/src/transfer/types.js.map +1 -0
- package/dist/src/trees.d.ts +102 -63
- package/dist/src/trees.d.ts.map +1 -1
- package/dist/src/trees.js +319 -479
- package/dist/src/trees.js.map +1 -1
- package/dist/src/trees.spec.d.ts +6 -0
- package/dist/src/trees.spec.d.ts.map +1 -0
- package/dist/src/trees.spec.js +635 -0
- package/dist/src/trees.spec.js.map +1 -0
- package/dist/src/uuid.d.ts +26 -0
- package/dist/src/uuid.d.ts.map +1 -0
- package/dist/src/uuid.js +80 -0
- package/dist/src/uuid.js.map +1 -0
- package/dist/src/workspaceStatus.d.ts +6 -4
- package/dist/src/workspaceStatus.d.ts.map +1 -1
- package/dist/src/workspaceStatus.js +46 -60
- package/dist/src/workspaceStatus.js.map +1 -1
- package/dist/src/workspaces.d.ts +46 -47
- package/dist/src/workspaces.d.ts.map +1 -1
- package/dist/src/workspaces.js +281 -221
- package/dist/src/workspaces.js.map +1 -1
- package/dist/src/workspaces.spec.d.ts +6 -0
- package/dist/src/workspaces.spec.d.ts.map +1 -0
- package/dist/src/workspaces.spec.js +273 -0
- package/dist/src/workspaces.spec.js.map +1 -0
- package/package.json +15 -15
- package/dist/src/gc.d.ts +0 -54
- package/dist/src/gc.d.ts.map +0 -1
- package/dist/src/gc.js +0 -233
- package/dist/src/gc.js.map +0 -1
- package/dist/src/repository.d.ts.map +0 -1
- package/dist/src/repository.js.map +0 -1
- package/dist/src/workspaceLock.d.ts +0 -67
- package/dist/src/workspaceLock.d.ts.map +0 -1
- package/dist/src/workspaceLock.js +0 -217
- package/dist/src/workspaceLock.js.map +0 -1
package/dist/src/errors.js
CHANGED
|
@@ -15,11 +15,40 @@ export class E3Error extends Error {
|
|
|
15
15
|
// =============================================================================
|
|
16
16
|
// Repository Errors
|
|
17
17
|
// =============================================================================
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Thrown when a repository is not found.
|
|
20
|
+
* Used by StorageBackend.validateRepository() and RepoStore operations.
|
|
21
|
+
*/
|
|
22
|
+
export class RepoNotFoundError extends E3Error {
|
|
23
|
+
repo;
|
|
24
|
+
constructor(repo) {
|
|
25
|
+
super(`Repository '${repo}' not found`);
|
|
26
|
+
this.repo = repo;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Thrown when attempting to create a repository that already exists.
|
|
31
|
+
*/
|
|
32
|
+
export class RepoAlreadyExistsError extends E3Error {
|
|
33
|
+
repo;
|
|
34
|
+
constructor(repo) {
|
|
35
|
+
super(`Repository '${repo}' already exists`);
|
|
36
|
+
this.repo = repo;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Thrown when a repository status doesn't match the expected value.
|
|
41
|
+
* Used for CAS (compare-and-swap) operations.
|
|
42
|
+
*/
|
|
43
|
+
export class RepoStatusConflictError extends E3Error {
|
|
44
|
+
repo;
|
|
45
|
+
expected;
|
|
46
|
+
actual;
|
|
47
|
+
constructor(repo, expected, actual) {
|
|
48
|
+
super(`Repository '${repo}' status: expected ${JSON.stringify(expected)}, got '${actual}'`);
|
|
49
|
+
this.repo = repo;
|
|
50
|
+
this.expected = expected;
|
|
51
|
+
this.actual = actual;
|
|
23
52
|
}
|
|
24
53
|
}
|
|
25
54
|
// =============================================================================
|
|
@@ -57,9 +86,16 @@ export class WorkspaceLockError extends E3Error {
|
|
|
57
86
|
workspace;
|
|
58
87
|
holder;
|
|
59
88
|
constructor(workspace, holder) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
89
|
+
let msg;
|
|
90
|
+
if (!holder) {
|
|
91
|
+
msg = `Workspace '${workspace}' is locked by another process`;
|
|
92
|
+
}
|
|
93
|
+
else if (holder.pid !== undefined) {
|
|
94
|
+
msg = `Workspace '${workspace}' is locked by process ${holder.pid} (since ${holder.acquiredAt})`;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
msg = `Workspace '${workspace}' is locked (since ${holder.acquiredAt})`;
|
|
98
|
+
}
|
|
63
99
|
super(msg);
|
|
64
100
|
this.workspace = workspace;
|
|
65
101
|
this.holder = holder;
|
|
@@ -150,6 +186,13 @@ export class ExecutionCorruptError extends E3Error {
|
|
|
150
186
|
this.cause = cause;
|
|
151
187
|
}
|
|
152
188
|
}
|
|
189
|
+
export class ExecutionNotFoundError extends E3Error {
|
|
190
|
+
task;
|
|
191
|
+
constructor(task) {
|
|
192
|
+
super(`No execution found for task '${task}'`);
|
|
193
|
+
this.task = task;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
153
196
|
// =============================================================================
|
|
154
197
|
// Dataflow Errors
|
|
155
198
|
// =============================================================================
|
package/dist/src/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF,mCAAmC;AACnC,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAChC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;CACF;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF,mCAAmC;AACnC,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAChC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;CACF;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,OAAO;IAChB;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,eAAe,IAAI,aAAa,CAAC,CAAC;QADd,SAAI,GAAJ,IAAI,CAAQ;IAExC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,OAAO;IACrB;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,eAAe,IAAI,kBAAkB,CAAC,CAAC;QADnB,SAAI,GAAJ,IAAI,CAAQ;IAExC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,uBAAwB,SAAQ,OAAO;IAEhC;IACA;IACA;IAHlB,YACkB,IAAY,EACZ,QAA2B,EAC3B,MAA4B;QAE5C,KAAK,CAAC,eAAe,IAAI,sBAAsB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,MAAM,GAAG,CAAC,CAAC;QAJ5E,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,WAAM,GAAN,MAAM,CAAsB;IAG9C,CAAC;CACF;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,MAAM,OAAO,sBAAuB,SAAQ,OAAO;IACrB;IAA5B,YAA4B,SAAiB;QAC3C,KAAK,CAAC,cAAc,SAAS,kBAAkB,CAAC,CAAC;QADvB,cAAS,GAAT,SAAS,CAAQ;IAE7C,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,OAAO;IACxB;IAA5B,YAA4B,SAAiB;QAC3C,KAAK,CAAC,cAAc,SAAS,2BAA2B,CAAC,CAAC;QADhC,cAAS,GAAT,SAAS,CAAQ;IAE7C,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,OAAO;IACnB;IAA5B,YAA4B,SAAiB;QAC3C,KAAK,CAAC,cAAc,SAAS,kBAAkB,CAAC,CAAC;QADvB,cAAS,GAAT,SAAS,CAAQ;IAE7C,CAAC;CACF;AAuBD;;;;;;GAMG;AACH,MAAM,OAAO,kBAAmB,SAAQ,OAAO;IAE3B;IACA;IAFlB,YACkB,SAAiB,EACjB,MAAuB;QAEvC,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,GAAG,GAAG,cAAc,SAAS,gCAAgC,CAAC;QAChE,CAAC;aAAM,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACpC,GAAG,GAAG,cAAc,SAAS,0BAA0B,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,UAAU,GAAG,CAAC;QACnG,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,cAAc,SAAS,sBAAsB,MAAM,CAAC,UAAU,GAAG,CAAC;QAC1E,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAC;QAXK,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAiB;IAWzC,CAAC;CACF;AAED,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,MAAM,OAAO,oBAAqB,SAAQ,OAAO;IAE7B;IACA;IAFlB,YACkB,WAAmB,EACnB,OAAgB;QAEhC,KAAK,CACH,OAAO;YACL,CAAC,CAAC,YAAY,WAAW,IAAI,OAAO,aAAa;YACjD,CAAC,CAAC,YAAY,WAAW,aAAa,CACzC,CAAC;QAPc,gBAAW,GAAX,WAAW,CAAQ;QACnB,YAAO,GAAP,OAAO,CAAS;IAOlC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,OAAO;IAClB;IAA5B,YAA4B,MAAc;QACxC,KAAK,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;QADV,WAAM,GAAN,MAAM,CAAQ;IAE1C,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,OAAO;IAE3B;IACA;IAFlB,YACkB,WAAmB,EACnB,OAAe;QAE/B,KAAK,CAAC,YAAY,WAAW,IAAI,OAAO,kBAAkB,CAAC,CAAC;QAH5C,gBAAW,GAAX,WAAW,CAAQ;QACnB,YAAO,GAAP,OAAO,CAAQ;IAGjC,CAAC;CACF;AAED,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,MAAM,OAAO,oBAAqB,SAAQ,OAAO;IAE7B;IACA;IAFlB,YACkB,SAAiB,EACjB,IAAY;QAE5B,KAAK,CAAC,YAAY,IAAI,6BAA6B,SAAS,GAAG,CAAC,CAAC;QAHjD,cAAS,GAAT,SAAS,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAAQ;IAG9B,CAAC;CACF;AAED,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,MAAM,OAAO,iBAAkB,SAAQ,OAAO;IAChB;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,SAAS,IAAI,aAAa,CAAC,CAAC;QADR,SAAI,GAAJ,IAAI,CAAQ;IAExC,CAAC;CACF;AAED,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,MAAM,OAAO,mBAAoB,SAAQ,OAAO;IAClB;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;QADzB,SAAI,GAAJ,IAAI,CAAQ;IAExC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,OAAO;IAE3B;IACA;IAFlB,YACkB,IAAY,EACZ,MAAc;QAE9B,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAH7C,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;IAGhC,CAAC;CACF;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,MAAM,OAAO,qBAAsB,SAAQ,OAAO;IAE9B;IACA;IACA;IAHlB,YACkB,QAAgB,EAChB,UAAkB,EAClB,KAAY;QAE5B,KAAK,CACH,aAAa,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,KAAK,CAAC,OAAO,EAAE,CACjG,CAAC;QANc,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QAClB,UAAK,GAAL,KAAK,CAAO;IAK9B,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,OAAO;IACrB;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,gCAAgC,IAAI,GAAG,CAAC,CAAC;QADrB,SAAI,GAAJ,IAAI,CAAQ;IAExC,CAAC;CACF;AAED,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,MAAM,OAAO,aAAc,SAAQ,OAAO;IAGtB;IACA;IAHlB,YACE,OAAe,EACC,WAAmC,EACnC,KAAa;QAE7B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAHxC,gBAAW,GAAX,WAAW,CAAwB;QACnC,UAAK,GAAL,KAAK,CAAQ;IAG/B,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,oBAAqB,SAAQ,OAAO;IACnB;IAA5B,YAA4B,cAAsC;QAChE,KAAK,CAAC,gCAAgC,CAAC,CAAC;QADd,mBAAc,GAAd,cAAc,CAAwB;IAElE,CAAC;CACF;AAED,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,MAAM,OAAO,qBAAsB,SAAQ,OAAO;IACpB;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;QADZ,SAAI,GAAJ,IAAI,CAAQ;IAExC,CAAC;CACF;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,gDAAgD;AAChD,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,CACL,GAAG,YAAY,KAAK,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,CACzE,CAAC;AACJ,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,OAAO,CACL,GAAG,YAAY,KAAK,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,CACzE,CAAC;AACJ,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,CACL,GAAG,YAAY,KAAK,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,CACzE,CAAC;AACJ,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,SAAS,CAAC,GAAY,EAAE,OAAe;IACrD,IAAI,GAAG,YAAY,OAAO;QAAE,OAAO,GAAG,CAAC;IACvC,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/D,OAAO,IAAI,OAAO,CAAC,GAAG,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.spec.d.ts","sourceRoot":"","sources":["../../src/errors.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Tests for errors.ts - error types and helper functions
|
|
7
|
+
*/
|
|
8
|
+
import { describe, it } from 'node:test';
|
|
9
|
+
import assert from 'node:assert';
|
|
10
|
+
import { E3Error, RepoNotFoundError, WorkspaceNotFoundError, WorkspaceNotDeployedError, WorkspaceExistsError, WorkspaceLockError, PackageNotFoundError, PackageInvalidError, PackageExistsError, DatasetNotFoundError, TaskNotFoundError, ObjectNotFoundError, ObjectCorruptError, ExecutionCorruptError, DataflowError, DataflowAbortedError, PermissionDeniedError, isNotFoundError, isPermissionError, isExistsError, wrapError, } from './errors.js';
|
|
11
|
+
describe('errors', () => {
|
|
12
|
+
describe('E3Error base class', () => {
|
|
13
|
+
it('sets name to constructor name', () => {
|
|
14
|
+
const err = new E3Error('test message');
|
|
15
|
+
assert.strictEqual(err.name, 'E3Error');
|
|
16
|
+
});
|
|
17
|
+
it('preserves message', () => {
|
|
18
|
+
const err = new E3Error('test message');
|
|
19
|
+
assert.strictEqual(err.message, 'test message');
|
|
20
|
+
});
|
|
21
|
+
it('is instanceof Error', () => {
|
|
22
|
+
const err = new E3Error('test');
|
|
23
|
+
assert.ok(err instanceof Error);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('RepoNotFoundError', () => {
|
|
27
|
+
it('includes repo name in message', () => {
|
|
28
|
+
const err = new RepoNotFoundError('my-repo');
|
|
29
|
+
assert.ok(err.message.includes('my-repo'));
|
|
30
|
+
assert.strictEqual(err.repo, 'my-repo');
|
|
31
|
+
});
|
|
32
|
+
it('is instanceof E3Error', () => {
|
|
33
|
+
const err = new RepoNotFoundError('my-repo');
|
|
34
|
+
assert.ok(err instanceof E3Error);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('WorkspaceNotFoundError', () => {
|
|
38
|
+
it('includes workspace name in message', () => {
|
|
39
|
+
const err = new WorkspaceNotFoundError('myws');
|
|
40
|
+
assert.ok(err.message.includes('myws'));
|
|
41
|
+
assert.strictEqual(err.workspace, 'myws');
|
|
42
|
+
});
|
|
43
|
+
it('sets correct name', () => {
|
|
44
|
+
const err = new WorkspaceNotFoundError('ws');
|
|
45
|
+
assert.strictEqual(err.name, 'WorkspaceNotFoundError');
|
|
46
|
+
});
|
|
47
|
+
it('is instanceof E3Error', () => {
|
|
48
|
+
const err = new WorkspaceNotFoundError('ws');
|
|
49
|
+
assert.ok(err instanceof E3Error);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('WorkspaceNotDeployedError', () => {
|
|
53
|
+
it('includes workspace name in message', () => {
|
|
54
|
+
const err = new WorkspaceNotDeployedError('myws');
|
|
55
|
+
assert.ok(err.message.includes('myws'));
|
|
56
|
+
assert.strictEqual(err.workspace, 'myws');
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe('WorkspaceExistsError', () => {
|
|
60
|
+
it('includes workspace name in message', () => {
|
|
61
|
+
const err = new WorkspaceExistsError('myws');
|
|
62
|
+
assert.ok(err.message.includes('myws'));
|
|
63
|
+
assert.strictEqual(err.workspace, 'myws');
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('WorkspaceLockError', () => {
|
|
67
|
+
it('includes workspace name in message without holder', () => {
|
|
68
|
+
const err = new WorkspaceLockError('myws');
|
|
69
|
+
assert.ok(err.message.includes('myws'));
|
|
70
|
+
assert.ok(err.message.includes('locked'));
|
|
71
|
+
assert.strictEqual(err.workspace, 'myws');
|
|
72
|
+
assert.strictEqual(err.holder, undefined);
|
|
73
|
+
});
|
|
74
|
+
it('includes holder info in message when provided', () => {
|
|
75
|
+
const holder = {
|
|
76
|
+
pid: 12345,
|
|
77
|
+
acquiredAt: '2025-01-15T10:30:00Z',
|
|
78
|
+
bootId: 'abc123',
|
|
79
|
+
command: 'e3 start',
|
|
80
|
+
};
|
|
81
|
+
const err = new WorkspaceLockError('myws', holder);
|
|
82
|
+
assert.ok(err.message.includes('myws'));
|
|
83
|
+
assert.ok(err.message.includes('12345'));
|
|
84
|
+
assert.ok(err.message.includes('2025-01-15T10:30:00Z'));
|
|
85
|
+
assert.strictEqual(err.workspace, 'myws');
|
|
86
|
+
assert.strictEqual(err.holder, holder);
|
|
87
|
+
});
|
|
88
|
+
it('is instanceof E3Error', () => {
|
|
89
|
+
const err = new WorkspaceLockError('ws');
|
|
90
|
+
assert.ok(err instanceof E3Error);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
describe('PackageNotFoundError', () => {
|
|
94
|
+
it('includes name and version in message', () => {
|
|
95
|
+
const err = new PackageNotFoundError('mypkg', '1.0.0');
|
|
96
|
+
assert.ok(err.message.includes('mypkg'));
|
|
97
|
+
assert.ok(err.message.includes('1.0.0'));
|
|
98
|
+
assert.strictEqual(err.packageName, 'mypkg');
|
|
99
|
+
assert.strictEqual(err.version, '1.0.0');
|
|
100
|
+
});
|
|
101
|
+
it('works without version', () => {
|
|
102
|
+
const err = new PackageNotFoundError('mypkg');
|
|
103
|
+
assert.ok(err.message.includes('mypkg'));
|
|
104
|
+
assert.strictEqual(err.version, undefined);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe('PackageInvalidError', () => {
|
|
108
|
+
it('includes reason in message', () => {
|
|
109
|
+
const err = new PackageInvalidError('missing manifest');
|
|
110
|
+
assert.ok(err.message.includes('missing manifest'));
|
|
111
|
+
assert.strictEqual(err.reason, 'missing manifest');
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
describe('PackageExistsError', () => {
|
|
115
|
+
it('includes name and version', () => {
|
|
116
|
+
const err = new PackageExistsError('pkg', '2.0.0');
|
|
117
|
+
assert.ok(err.message.includes('pkg'));
|
|
118
|
+
assert.ok(err.message.includes('2.0.0'));
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
describe('DatasetNotFoundError', () => {
|
|
122
|
+
it('includes workspace and path', () => {
|
|
123
|
+
const err = new DatasetNotFoundError('ws', 'inputs.sales');
|
|
124
|
+
assert.ok(err.message.includes('ws'));
|
|
125
|
+
assert.ok(err.message.includes('inputs.sales'));
|
|
126
|
+
assert.strictEqual(err.workspace, 'ws');
|
|
127
|
+
assert.strictEqual(err.path, 'inputs.sales');
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
describe('TaskNotFoundError', () => {
|
|
131
|
+
it('includes task name', () => {
|
|
132
|
+
const err = new TaskNotFoundError('mytask');
|
|
133
|
+
assert.ok(err.message.includes('mytask'));
|
|
134
|
+
assert.strictEqual(err.task, 'mytask');
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
describe('ObjectNotFoundError', () => {
|
|
138
|
+
it('shows abbreviated hash', () => {
|
|
139
|
+
const hash = 'abcdef1234567890'.padEnd(64, '0');
|
|
140
|
+
const err = new ObjectNotFoundError(hash);
|
|
141
|
+
assert.ok(err.message.includes('abcdef12'));
|
|
142
|
+
assert.strictEqual(err.hash, hash);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
describe('ObjectCorruptError', () => {
|
|
146
|
+
it('includes hash and reason', () => {
|
|
147
|
+
const hash = 'abcdef1234567890'.padEnd(64, '0');
|
|
148
|
+
const err = new ObjectCorruptError(hash, 'invalid beast2 header');
|
|
149
|
+
assert.ok(err.message.includes('abcdef12'));
|
|
150
|
+
assert.ok(err.message.includes('invalid beast2 header'));
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe('ExecutionCorruptError', () => {
|
|
154
|
+
it('includes task and inputs hashes', () => {
|
|
155
|
+
const taskHash = 'task'.padEnd(64, '0');
|
|
156
|
+
const inputsHash = 'inputs'.padEnd(64, '0');
|
|
157
|
+
const cause = new Error('decode failed');
|
|
158
|
+
const err = new ExecutionCorruptError(taskHash, inputsHash, cause);
|
|
159
|
+
assert.ok(err.message.includes('task0000'));
|
|
160
|
+
assert.ok(err.message.includes('inputs00'));
|
|
161
|
+
assert.ok(err.message.includes('decode failed'));
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe('DataflowError', () => {
|
|
165
|
+
it('preserves task results', () => {
|
|
166
|
+
const results = [{ name: 'task1', cached: false, state: 'failed', duration: 100 }];
|
|
167
|
+
const err = new DataflowError('execution failed', results);
|
|
168
|
+
assert.strictEqual(err.taskResults, results);
|
|
169
|
+
});
|
|
170
|
+
it('preserves cause and includes it in message', () => {
|
|
171
|
+
const cause = new Error('root cause');
|
|
172
|
+
const err = new DataflowError('wrapped', undefined, cause);
|
|
173
|
+
assert.strictEqual(err.cause, cause);
|
|
174
|
+
assert.ok(err.message.includes('wrapped'));
|
|
175
|
+
assert.ok(err.message.includes('root cause'));
|
|
176
|
+
});
|
|
177
|
+
it('works without cause', () => {
|
|
178
|
+
const err = new DataflowError('simple message');
|
|
179
|
+
assert.strictEqual(err.message, 'simple message');
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
describe('DataflowAbortedError', () => {
|
|
183
|
+
it('has descriptive message', () => {
|
|
184
|
+
const err = new DataflowAbortedError();
|
|
185
|
+
assert.ok(err.message.includes('aborted'));
|
|
186
|
+
});
|
|
187
|
+
it('preserves partial results', () => {
|
|
188
|
+
const results = [
|
|
189
|
+
{ name: 'task1', cached: false, state: 'success', duration: 100 },
|
|
190
|
+
{ name: 'task2', cached: true, state: 'success', duration: 0 },
|
|
191
|
+
];
|
|
192
|
+
const err = new DataflowAbortedError(results);
|
|
193
|
+
assert.strictEqual(err.partialResults, results);
|
|
194
|
+
});
|
|
195
|
+
it('works without partial results', () => {
|
|
196
|
+
const err = new DataflowAbortedError();
|
|
197
|
+
assert.strictEqual(err.partialResults, undefined);
|
|
198
|
+
});
|
|
199
|
+
it('is instanceof E3Error', () => {
|
|
200
|
+
const err = new DataflowAbortedError();
|
|
201
|
+
assert.ok(err instanceof E3Error);
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
describe('PermissionDeniedError', () => {
|
|
205
|
+
it('includes path', () => {
|
|
206
|
+
const err = new PermissionDeniedError('/protected/file');
|
|
207
|
+
assert.ok(err.message.includes('/protected/file'));
|
|
208
|
+
assert.strictEqual(err.path, '/protected/file');
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
describe('isNotFoundError', () => {
|
|
212
|
+
it('returns true for ENOENT', () => {
|
|
213
|
+
const err = new Error('not found');
|
|
214
|
+
err.code = 'ENOENT';
|
|
215
|
+
assert.strictEqual(isNotFoundError(err), true);
|
|
216
|
+
});
|
|
217
|
+
it('returns false for other error codes', () => {
|
|
218
|
+
const err = new Error('permission denied');
|
|
219
|
+
err.code = 'EACCES';
|
|
220
|
+
assert.strictEqual(isNotFoundError(err), false);
|
|
221
|
+
});
|
|
222
|
+
it('returns false for regular errors', () => {
|
|
223
|
+
assert.strictEqual(isNotFoundError(new Error('test')), false);
|
|
224
|
+
});
|
|
225
|
+
it('returns false for non-errors', () => {
|
|
226
|
+
assert.strictEqual(isNotFoundError('string'), false);
|
|
227
|
+
assert.strictEqual(isNotFoundError(null), false);
|
|
228
|
+
assert.strictEqual(isNotFoundError(undefined), false);
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
describe('isPermissionError', () => {
|
|
232
|
+
it('returns true for EACCES', () => {
|
|
233
|
+
const err = new Error('permission denied');
|
|
234
|
+
err.code = 'EACCES';
|
|
235
|
+
assert.strictEqual(isPermissionError(err), true);
|
|
236
|
+
});
|
|
237
|
+
it('returns false for other error codes', () => {
|
|
238
|
+
const err = new Error('not found');
|
|
239
|
+
err.code = 'ENOENT';
|
|
240
|
+
assert.strictEqual(isPermissionError(err), false);
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
describe('isExistsError', () => {
|
|
244
|
+
it('returns true for EEXIST', () => {
|
|
245
|
+
const err = new Error('already exists');
|
|
246
|
+
err.code = 'EEXIST';
|
|
247
|
+
assert.strictEqual(isExistsError(err), true);
|
|
248
|
+
});
|
|
249
|
+
it('returns false for other error codes', () => {
|
|
250
|
+
const err = new Error('not found');
|
|
251
|
+
err.code = 'ENOENT';
|
|
252
|
+
assert.strictEqual(isExistsError(err), false);
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
describe('wrapError', () => {
|
|
256
|
+
it('returns E3Errors unchanged', () => {
|
|
257
|
+
const original = new WorkspaceNotFoundError('ws');
|
|
258
|
+
const wrapped = wrapError(original, 'context');
|
|
259
|
+
assert.strictEqual(wrapped, original);
|
|
260
|
+
});
|
|
261
|
+
it('wraps regular errors with context', () => {
|
|
262
|
+
const original = new Error('something went wrong');
|
|
263
|
+
const wrapped = wrapError(original, 'failed to do thing');
|
|
264
|
+
assert.ok(wrapped instanceof E3Error);
|
|
265
|
+
assert.ok(wrapped.message.includes('failed to do thing'));
|
|
266
|
+
assert.ok(wrapped.message.includes('something went wrong'));
|
|
267
|
+
});
|
|
268
|
+
it('wraps non-errors', () => {
|
|
269
|
+
const wrapped = wrapError('string error', 'context');
|
|
270
|
+
assert.ok(wrapped instanceof E3Error);
|
|
271
|
+
assert.ok(wrapped.message.includes('context'));
|
|
272
|
+
assert.ok(wrapped.message.includes('string error'));
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
//# sourceMappingURL=errors.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.spec.js","sourceRoot":"","sources":["../../src/errors.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAElB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,SAAS,GACV,MAAM,aAAa,CAAC;AAErB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;YACxC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC3B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;YACxC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC3B,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,GAAG,GAAG,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC1C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,MAAM,GAAmB;gBAC7B,GAAG,EAAE,KAAK;gBACV,UAAU,EAAE,sBAAsB;gBAClC,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,UAAU;aACpB,CAAC;YACF,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC1C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;YACxD,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAC3D,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;YAClE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,IAAI,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACnE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAiB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5F,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACrC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,oBAAoB,EAAE,CAAC;YACvC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,OAAO,GAAG;gBACd,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAkB,EAAE,QAAQ,EAAE,GAAG,EAAE;gBAC1E,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAkB,EAAE,QAAQ,EAAE,CAAC,EAAE;aACxE,CAAC;YACF,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,oBAAoB,EAAE,CAAC;YACvC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,GAAG,GAAG,IAAI,oBAAoB,EAAE,CAAC;YACvC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;YACvB,MAAM,GAAG,GAAG,IAAI,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;YACzD,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,WAAW,CAA0B,CAAC;YAC5D,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;YACpB,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAA0B,CAAC;YACpE,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;YACpB,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAA0B,CAAC;YACpE,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;YACpB,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,WAAW,CAA0B,CAAC;YAC5D,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;YACpB,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAA0B,CAAC;YACjE,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;YACpB,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,WAAW,CAA0B,CAAC;YAC5D,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;YACpB,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/C,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAC1D,MAAM,CAAC,EAAE,CAAC,OAAO,YAAY,OAAO,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC1B,MAAM,OAAO,GAAG,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YACrD,MAAM,CAAC,EAAE,CAAC,OAAO,YAAY,OAAO,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import type { StorageBackend } from '../storage/interfaces.js';
|
|
6
|
+
import type { TaskRunner, TaskExecuteOptions, TaskResult } from './interfaces.js';
|
|
7
|
+
/**
|
|
8
|
+
* Options for task execution
|
|
9
|
+
*/
|
|
10
|
+
export interface ExecuteOptions {
|
|
11
|
+
/** Re-run even if cached (default: false) */
|
|
12
|
+
force?: boolean;
|
|
13
|
+
/** Timeout in milliseconds (default: none) */
|
|
14
|
+
timeout?: number;
|
|
15
|
+
/** AbortSignal for cancellation */
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
/** Stream stdout callback */
|
|
18
|
+
onStdout?: (data: string) => void;
|
|
19
|
+
/** Stream stderr callback */
|
|
20
|
+
onStderr?: (data: string) => void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Result of task execution
|
|
24
|
+
*/
|
|
25
|
+
export interface ExecutionResult {
|
|
26
|
+
/** Combined inputs hash (identifies this execution) */
|
|
27
|
+
inputsHash: string;
|
|
28
|
+
/** Execution ID (UUIDv7) */
|
|
29
|
+
executionId: string;
|
|
30
|
+
/** True if result was from cache */
|
|
31
|
+
cached: boolean;
|
|
32
|
+
/** Final state */
|
|
33
|
+
state: 'success' | 'failed' | 'error';
|
|
34
|
+
/** Output dataset hash (null on failure) */
|
|
35
|
+
outputHash: string | null;
|
|
36
|
+
/** Process exit code (null if not applicable) */
|
|
37
|
+
exitCode: number | null;
|
|
38
|
+
/** Execution time in ms (0 if cached) */
|
|
39
|
+
duration: number;
|
|
40
|
+
/** Error message on failure */
|
|
41
|
+
error: string | null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* TaskRunner implementation for local process execution.
|
|
45
|
+
*
|
|
46
|
+
* Spawns runner processes locally to execute tasks.
|
|
47
|
+
* Used by the local CLI and e3-api-server for task execution.
|
|
48
|
+
*/
|
|
49
|
+
export declare class LocalTaskRunner implements TaskRunner {
|
|
50
|
+
private readonly repo;
|
|
51
|
+
constructor(repo: string);
|
|
52
|
+
execute(storage: StorageBackend, taskHash: string, inputHashes: string[], options?: TaskExecuteOptions): Promise<TaskResult>;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Execute a single task.
|
|
56
|
+
*
|
|
57
|
+
* This is the core execution primitive. It:
|
|
58
|
+
* 1. Computes the execution identity from task + inputs
|
|
59
|
+
* 2. Checks cache (unless force=true)
|
|
60
|
+
* 3. Marshals inputs to a scratch directory
|
|
61
|
+
* 4. Evaluates command IR to get exec args
|
|
62
|
+
* 5. Runs the command
|
|
63
|
+
* 6. Stores the output and updates status
|
|
64
|
+
*
|
|
65
|
+
* @param storage - Storage backend
|
|
66
|
+
* @param repo - Repository identifier (for local storage, the path to e3 repository directory)
|
|
67
|
+
* @param taskHash - Hash of the task object
|
|
68
|
+
* @param inputHashes - Array of input dataset hashes
|
|
69
|
+
* @param options - Execution options
|
|
70
|
+
* @returns Execution result
|
|
71
|
+
*/
|
|
72
|
+
export declare function taskExecute(storage: StorageBackend, repo: string, taskHash: string, inputHashes: string[], options?: ExecuteOptions): Promise<ExecutionResult>;
|
|
73
|
+
//# sourceMappingURL=LocalTaskRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalTaskRunner.d.ts","sourceRoot":"","sources":["../../../src/execution/LocalTaskRunner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtC,4CAA4C;IAC5C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,UAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,MAAM;IAEnC,OAAO,CACX,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,UAAU,CAAC;CAyBvB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,CA2N1B"}
|