@kitsi/core 0.0.2
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/dist/check-results.d.ts +30 -0
- package/dist/check-results.d.ts.map +1 -0
- package/dist/check-results.js +34 -0
- package/dist/check-results.js.map +1 -0
- package/dist/dsl/analysis.d.ts +17 -0
- package/dist/dsl/analysis.d.ts.map +1 -0
- package/dist/dsl/analysis.js +186 -0
- package/dist/dsl/analysis.js.map +1 -0
- package/dist/dsl/image.d.ts +14 -0
- package/dist/dsl/image.d.ts.map +1 -0
- package/dist/dsl/image.js +14 -0
- package/dist/dsl/image.js.map +1 -0
- package/dist/dsl/index.d.ts +21 -0
- package/dist/dsl/index.d.ts.map +1 -0
- package/dist/dsl/index.js +12 -0
- package/dist/dsl/index.js.map +1 -0
- package/dist/dsl/kit.d.ts +20 -0
- package/dist/dsl/kit.d.ts.map +1 -0
- package/dist/dsl/kit.js +34 -0
- package/dist/dsl/kit.js.map +1 -0
- package/dist/dsl/module.d.ts +4 -0
- package/dist/dsl/module.d.ts.map +1 -0
- package/dist/dsl/module.js +4 -0
- package/dist/dsl/module.js.map +1 -0
- package/dist/dsl/plan-repository.d.ts +10 -0
- package/dist/dsl/plan-repository.d.ts.map +1 -0
- package/dist/dsl/plan-repository.js +24 -0
- package/dist/dsl/plan-repository.js.map +1 -0
- package/dist/dsl/plan.d.ts +46 -0
- package/dist/dsl/plan.d.ts.map +1 -0
- package/dist/dsl/plan.js +95 -0
- package/dist/dsl/plan.js.map +1 -0
- package/dist/dsl/registry.d.ts +6 -0
- package/dist/dsl/registry.d.ts.map +1 -0
- package/dist/dsl/registry.js +4 -0
- package/dist/dsl/registry.js.map +1 -0
- package/dist/dsl/service.d.ts +24 -0
- package/dist/dsl/service.d.ts.map +1 -0
- package/dist/dsl/service.js +20 -0
- package/dist/dsl/service.js.map +1 -0
- package/dist/dsl/step.d.ts +10 -0
- package/dist/dsl/step.d.ts.map +1 -0
- package/dist/dsl/step.js +17 -0
- package/dist/dsl/step.js.map +1 -0
- package/dist/dsl/task.d.ts +38 -0
- package/dist/dsl/task.d.ts.map +1 -0
- package/dist/dsl/task.js +66 -0
- package/dist/dsl/task.js.map +1 -0
- package/dist/dsl/types.d.ts +12 -0
- package/dist/dsl/types.d.ts.map +1 -0
- package/dist/dsl/types.js +2 -0
- package/dist/dsl/types.js.map +1 -0
- package/dist/dsl/utils.d.ts +2 -0
- package/dist/dsl/utils.d.ts.map +1 -0
- package/dist/dsl/utils.js +7 -0
- package/dist/dsl/utils.js.map +1 -0
- package/dist/engine/cache/analyze.d.ts +12 -0
- package/dist/engine/cache/analyze.d.ts.map +1 -0
- package/dist/engine/cache/analyze.js +103 -0
- package/dist/engine/cache/analyze.js.map +1 -0
- package/dist/engine/cache/coordinator.d.ts +99 -0
- package/dist/engine/cache/coordinator.d.ts.map +1 -0
- package/dist/engine/cache/coordinator.js +794 -0
- package/dist/engine/cache/coordinator.js.map +1 -0
- package/dist/engine/cache/hasher.d.ts +9 -0
- package/dist/engine/cache/hasher.d.ts.map +1 -0
- package/dist/engine/cache/hasher.js +50 -0
- package/dist/engine/cache/hasher.js.map +1 -0
- package/dist/engine/cache/inference.d.ts +3 -0
- package/dist/engine/cache/inference.d.ts.map +1 -0
- package/dist/engine/cache/inference.js +43 -0
- package/dist/engine/cache/inference.js.map +1 -0
- package/dist/engine/cache/serialize.d.ts +2 -0
- package/dist/engine/cache/serialize.d.ts.map +1 -0
- package/dist/engine/cache/serialize.js +21 -0
- package/dist/engine/cache/serialize.js.map +1 -0
- package/dist/engine/cache/store.d.ts +75 -0
- package/dist/engine/cache/store.d.ts.map +1 -0
- package/dist/engine/cache/store.js +208 -0
- package/dist/engine/cache/store.js.map +1 -0
- package/dist/engine/executor/command-runner.d.ts +26 -0
- package/dist/engine/executor/command-runner.d.ts.map +1 -0
- package/dist/engine/executor/command-runner.js +151 -0
- package/dist/engine/executor/command-runner.js.map +1 -0
- package/dist/engine/executor/executor.d.ts +6 -0
- package/dist/engine/executor/executor.d.ts.map +1 -0
- package/dist/engine/executor/executor.js +29 -0
- package/dist/engine/executor/executor.js.map +1 -0
- package/dist/engine/executor/file-system.d.ts +5 -0
- package/dist/engine/executor/file-system.d.ts.map +1 -0
- package/dist/engine/executor/file-system.js +50 -0
- package/dist/engine/executor/file-system.js.map +1 -0
- package/dist/engine/executor/index.d.ts +3 -0
- package/dist/engine/executor/index.d.ts.map +1 -0
- package/dist/engine/executor/index.js +2 -0
- package/dist/engine/executor/index.js.map +1 -0
- package/dist/engine/executor/plan-runner.d.ts +37 -0
- package/dist/engine/executor/plan-runner.d.ts.map +1 -0
- package/dist/engine/executor/plan-runner.js +427 -0
- package/dist/engine/executor/plan-runner.js.map +1 -0
- package/dist/engine/executor/types.d.ts +73 -0
- package/dist/engine/executor/types.d.ts.map +1 -0
- package/dist/engine/executor/types.js +2 -0
- package/dist/engine/executor/types.js.map +1 -0
- package/dist/engine/executor/value-resolver.d.ts +14 -0
- package/dist/engine/executor/value-resolver.d.ts.map +1 -0
- package/dist/engine/executor/value-resolver.js +63 -0
- package/dist/engine/executor/value-resolver.js.map +1 -0
- package/dist/engine/handlers/annotate-handler.d.ts +8 -0
- package/dist/engine/handlers/annotate-handler.d.ts.map +1 -0
- package/dist/engine/handlers/annotate-handler.js +8 -0
- package/dist/engine/handlers/annotate-handler.js.map +1 -0
- package/dist/engine/handlers/artifact-download-handler.d.ts +8 -0
- package/dist/engine/handlers/artifact-download-handler.d.ts.map +1 -0
- package/dist/engine/handlers/artifact-download-handler.js +38 -0
- package/dist/engine/handlers/artifact-download-handler.js.map +1 -0
- package/dist/engine/handlers/artifact-upload-handler.d.ts +8 -0
- package/dist/engine/handlers/artifact-upload-handler.d.ts.map +1 -0
- package/dist/engine/handlers/artifact-upload-handler.js +26 -0
- package/dist/engine/handlers/artifact-upload-handler.js.map +1 -0
- package/dist/engine/handlers/bind-service-handler.d.ts +8 -0
- package/dist/engine/handlers/bind-service-handler.d.ts.map +1 -0
- package/dist/engine/handlers/bind-service-handler.js +8 -0
- package/dist/engine/handlers/bind-service-handler.js.map +1 -0
- package/dist/engine/handlers/cache-mount-handler.d.ts +8 -0
- package/dist/engine/handlers/cache-mount-handler.d.ts.map +1 -0
- package/dist/engine/handlers/cache-mount-handler.js +16 -0
- package/dist/engine/handlers/cache-mount-handler.js.map +1 -0
- package/dist/engine/handlers/command-handler.d.ts +10 -0
- package/dist/engine/handlers/command-handler.d.ts.map +1 -0
- package/dist/engine/handlers/command-handler.js +11 -0
- package/dist/engine/handlers/command-handler.js.map +1 -0
- package/dist/engine/handlers/emit-handler.d.ts +8 -0
- package/dist/engine/handlers/emit-handler.d.ts.map +1 -0
- package/dist/engine/handlers/emit-handler.js +8 -0
- package/dist/engine/handlers/emit-handler.js.map +1 -0
- package/dist/engine/handlers/env-handler.d.ts +8 -0
- package/dist/engine/handlers/env-handler.d.ts.map +1 -0
- package/dist/engine/handlers/env-handler.js +9 -0
- package/dist/engine/handlers/env-handler.js.map +1 -0
- package/dist/engine/handlers/handler.d.ts +18 -0
- package/dist/engine/handlers/handler.d.ts.map +1 -0
- package/dist/engine/handlers/handler.js +2 -0
- package/dist/engine/handlers/handler.js.map +1 -0
- package/dist/engine/handlers/http-handler.d.ts +8 -0
- package/dist/engine/handlers/http-handler.d.ts.map +1 -0
- package/dist/engine/handlers/http-handler.js +77 -0
- package/dist/engine/handlers/http-handler.js.map +1 -0
- package/dist/engine/handlers/pack-handler.d.ts +8 -0
- package/dist/engine/handlers/pack-handler.d.ts.map +1 -0
- package/dist/engine/handlers/pack-handler.js +16 -0
- package/dist/engine/handlers/pack-handler.js.map +1 -0
- package/dist/engine/handlers/registry.d.ts +9 -0
- package/dist/engine/handlers/registry.d.ts.map +1 -0
- package/dist/engine/handlers/registry.js +14 -0
- package/dist/engine/handlers/registry.js.map +1 -0
- package/dist/engine/handlers/report-handler.d.ts +8 -0
- package/dist/engine/handlers/report-handler.d.ts.map +1 -0
- package/dist/engine/handlers/report-handler.js +13 -0
- package/dist/engine/handlers/report-handler.js.map +1 -0
- package/dist/engine/handlers/summary-handler.d.ts +8 -0
- package/dist/engine/handlers/summary-handler.d.ts.map +1 -0
- package/dist/engine/handlers/summary-handler.js +8 -0
- package/dist/engine/handlers/summary-handler.js.map +1 -0
- package/dist/engine/handlers/unpack-handler.d.ts +12 -0
- package/dist/engine/handlers/unpack-handler.d.ts.map +1 -0
- package/dist/engine/handlers/unpack-handler.js +31 -0
- package/dist/engine/handlers/unpack-handler.js.map +1 -0
- package/dist/engine/handlers/use-handler.d.ts +12 -0
- package/dist/engine/handlers/use-handler.d.ts.map +1 -0
- package/dist/engine/handlers/use-handler.js +29 -0
- package/dist/engine/handlers/use-handler.js.map +1 -0
- package/dist/engine/index.d.ts +11 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +7 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/providers/artifact.d.ts +5 -0
- package/dist/engine/providers/artifact.d.ts.map +1 -0
- package/dist/engine/providers/artifact.js +2 -0
- package/dist/engine/providers/artifact.js.map +1 -0
- package/dist/engine/providers/cache.d.ts +6 -0
- package/dist/engine/providers/cache.d.ts.map +1 -0
- package/dist/engine/providers/cache.js +2 -0
- package/dist/engine/providers/cache.js.map +1 -0
- package/dist/engine/providers/index.d.ts +5 -0
- package/dist/engine/providers/index.d.ts.map +1 -0
- package/dist/engine/providers/index.js +2 -0
- package/dist/engine/providers/index.js.map +1 -0
- package/dist/engine/providers/local.d.ts +16 -0
- package/dist/engine/providers/local.d.ts.map +1 -0
- package/dist/engine/providers/local.js +81 -0
- package/dist/engine/providers/local.js.map +1 -0
- package/dist/engine/providers/types.d.ts +20 -0
- package/dist/engine/providers/types.d.ts.map +1 -0
- package/dist/engine/providers/types.js +2 -0
- package/dist/engine/providers/types.js.map +1 -0
- package/dist/errors/index.d.ts +60 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +66 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/ops/annotate.d.ts +28 -0
- package/dist/ops/annotate.d.ts.map +1 -0
- package/dist/ops/annotate.js +34 -0
- package/dist/ops/annotate.js.map +1 -0
- package/dist/ops/artifact.d.ts +49 -0
- package/dist/ops/artifact.d.ts.map +1 -0
- package/dist/ops/artifact.js +77 -0
- package/dist/ops/artifact.js.map +1 -0
- package/dist/ops/base.d.ts +22 -0
- package/dist/ops/base.d.ts.map +1 -0
- package/dist/ops/base.js +2 -0
- package/dist/ops/base.js.map +1 -0
- package/dist/ops/bind.d.ts +18 -0
- package/dist/ops/bind.d.ts.map +1 -0
- package/dist/ops/bind.js +25 -0
- package/dist/ops/bind.js.map +1 -0
- package/dist/ops/bundle.d.ts +48 -0
- package/dist/ops/bundle.d.ts.map +1 -0
- package/dist/ops/bundle.js +70 -0
- package/dist/ops/bundle.js.map +1 -0
- package/dist/ops/cache.d.ts +74 -0
- package/dist/ops/cache.d.ts.map +1 -0
- package/dist/ops/cache.js +103 -0
- package/dist/ops/cache.js.map +1 -0
- package/dist/ops/env.d.ts +22 -0
- package/dist/ops/env.d.ts.map +1 -0
- package/dist/ops/env.js +63 -0
- package/dist/ops/env.js.map +1 -0
- package/dist/ops/errors.d.ts +36 -0
- package/dist/ops/errors.d.ts.map +1 -0
- package/dist/ops/errors.js +41 -0
- package/dist/ops/errors.js.map +1 -0
- package/dist/ops/http.d.ts +50 -0
- package/dist/ops/http.d.ts.map +1 -0
- package/dist/ops/http.js +108 -0
- package/dist/ops/http.js.map +1 -0
- package/dist/ops/index.d.ts +34 -0
- package/dist/ops/index.d.ts.map +1 -0
- package/dist/ops/index.js +17 -0
- package/dist/ops/index.js.map +1 -0
- package/dist/ops/operation-base.d.ts +14 -0
- package/dist/ops/operation-base.d.ts.map +1 -0
- package/dist/ops/operation-base.js +18 -0
- package/dist/ops/operation-base.js.map +1 -0
- package/dist/ops/operation.d.ts +40 -0
- package/dist/ops/operation.d.ts.map +1 -0
- package/dist/ops/operation.js +14 -0
- package/dist/ops/operation.js.map +1 -0
- package/dist/ops/output.d.ts +58 -0
- package/dist/ops/output.d.ts.map +1 -0
- package/dist/ops/output.js +74 -0
- package/dist/ops/output.js.map +1 -0
- package/dist/ops/param.d.ts +4 -0
- package/dist/ops/param.d.ts.map +1 -0
- package/dist/ops/param.js +3 -0
- package/dist/ops/param.js.map +1 -0
- package/dist/ops/ref.d.ts +21 -0
- package/dist/ops/ref.d.ts.map +1 -0
- package/dist/ops/ref.js +23 -0
- package/dist/ops/ref.js.map +1 -0
- package/dist/ops/report.d.ts +20 -0
- package/dist/ops/report.d.ts.map +1 -0
- package/dist/ops/report.js +24 -0
- package/dist/ops/report.js.map +1 -0
- package/dist/ops/secret.d.ts +4 -0
- package/dist/ops/secret.d.ts.map +1 -0
- package/dist/ops/secret.js +2 -0
- package/dist/ops/secret.js.map +1 -0
- package/dist/ops/shell.d.ts +42 -0
- package/dist/ops/shell.d.ts.map +1 -0
- package/dist/ops/shell.js +73 -0
- package/dist/ops/shell.js.map +1 -0
- package/dist/ops/summary.d.ts +19 -0
- package/dist/ops/summary.d.ts.map +1 -0
- package/dist/ops/summary.js +23 -0
- package/dist/ops/summary.js.map +1 -0
- package/dist/ops/template.d.ts +26 -0
- package/dist/ops/template.d.ts.map +1 -0
- package/dist/ops/template.js +83 -0
- package/dist/ops/template.js.map +1 -0
- package/dist/ops/types.d.ts +23 -0
- package/dist/ops/types.d.ts.map +1 -0
- package/dist/ops/types.js +5 -0
- package/dist/ops/types.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/package.json +54 -0
package/dist/dsl/plan.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
const clonePlan = (plan, patch) => new PlanBuilder((() => {
|
|
2
|
+
const next = {
|
|
3
|
+
name: patch.name ?? plan.config.name,
|
|
4
|
+
concurrency: patch.concurrency ?? plan.config.concurrency,
|
|
5
|
+
tasks: patch.tasks ?? plan.config.tasks,
|
|
6
|
+
};
|
|
7
|
+
const when = patch.when ?? plan.config.when;
|
|
8
|
+
if (when)
|
|
9
|
+
next.when = when;
|
|
10
|
+
const matrix = patch.matrix ?? plan.config.matrix;
|
|
11
|
+
if (matrix)
|
|
12
|
+
next.matrix = matrix;
|
|
13
|
+
const params = patch.params ?? plan.config.params;
|
|
14
|
+
if (params)
|
|
15
|
+
next.params = params;
|
|
16
|
+
const taskFactory = patch.taskFactory ?? plan.config.taskFactory;
|
|
17
|
+
if (taskFactory)
|
|
18
|
+
next.taskFactory = taskFactory;
|
|
19
|
+
return next;
|
|
20
|
+
})());
|
|
21
|
+
export class PlanBuilder {
|
|
22
|
+
config;
|
|
23
|
+
constructor(config) {
|
|
24
|
+
const next = {
|
|
25
|
+
name: config.name,
|
|
26
|
+
concurrency: config.concurrency ?? {},
|
|
27
|
+
tasks: config.tasks ?? [],
|
|
28
|
+
};
|
|
29
|
+
if (config.when)
|
|
30
|
+
next.when = config.when;
|
|
31
|
+
if (config.matrix)
|
|
32
|
+
next.matrix = config.matrix;
|
|
33
|
+
if (config.params)
|
|
34
|
+
next.params = config.params;
|
|
35
|
+
if (config.taskFactory)
|
|
36
|
+
next.taskFactory = config.taskFactory;
|
|
37
|
+
this.config = next;
|
|
38
|
+
}
|
|
39
|
+
when(predicate) {
|
|
40
|
+
return clonePlan(this, { when: predicate });
|
|
41
|
+
}
|
|
42
|
+
concurrency = {
|
|
43
|
+
group: (fn) => clonePlan(this, { concurrency: { ...this.config.concurrency, group: fn } }),
|
|
44
|
+
cancelInProgress: (value) => clonePlan(this, { concurrency: { ...this.config.concurrency, cancelInProgress: value } }),
|
|
45
|
+
};
|
|
46
|
+
matrix(values) {
|
|
47
|
+
return clonePlan(this, { matrix: values });
|
|
48
|
+
}
|
|
49
|
+
params(definitions) {
|
|
50
|
+
return clonePlan(this, { params: definitions });
|
|
51
|
+
}
|
|
52
|
+
tasks(...tasksOrFactory) {
|
|
53
|
+
if (typeof tasksOrFactory[0] === 'function') {
|
|
54
|
+
const [factory] = tasksOrFactory;
|
|
55
|
+
return clonePlan(this, { taskFactory: factory });
|
|
56
|
+
}
|
|
57
|
+
const tasksArray = (Array.isArray(tasksOrFactory[0])
|
|
58
|
+
? tasksOrFactory[0]
|
|
59
|
+
: tasksOrFactory);
|
|
60
|
+
return clonePlan(this, { tasks: tasksArray });
|
|
61
|
+
}
|
|
62
|
+
expand(matrixValues = {}) {
|
|
63
|
+
if (this.config.matrix && this.config.taskFactory) {
|
|
64
|
+
const matrix = this.config.matrix;
|
|
65
|
+
const taskFactory = this.config.taskFactory;
|
|
66
|
+
const keys = Object.keys(matrix);
|
|
67
|
+
const combos = [];
|
|
68
|
+
const buildCombos = (index, acc) => {
|
|
69
|
+
if (index >= keys.length) {
|
|
70
|
+
combos.push(acc);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const key = keys[index];
|
|
74
|
+
if (!key)
|
|
75
|
+
return;
|
|
76
|
+
const values = matrix[key] ?? [];
|
|
77
|
+
for (const value of values) {
|
|
78
|
+
buildCombos(index + 1, { ...acc, [key]: value });
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
buildCombos(0, {});
|
|
82
|
+
return combos.flatMap((combo) => taskFactory(combo));
|
|
83
|
+
}
|
|
84
|
+
if (this.config.taskFactory) {
|
|
85
|
+
return this.config.taskFactory(matrixValues);
|
|
86
|
+
}
|
|
87
|
+
return this.config.tasks;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export const plan = (name) => new PlanBuilder({
|
|
91
|
+
name,
|
|
92
|
+
concurrency: {},
|
|
93
|
+
tasks: [],
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/dsl/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/dsl/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,GAAI,GAAG,WAAW,WAAW,EAAE,KAAG,QAErD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/dsl/registry.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAwB,EAAY,EAAE,CAAC,CAAC;IAClE,KAAK,EAAE,SAAS;CACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { SecretRef } from '../ops/secret.js';
|
|
2
|
+
export interface ServiceHealthCheck {
|
|
3
|
+
type: 'tcp';
|
|
4
|
+
port: number;
|
|
5
|
+
}
|
|
6
|
+
export interface ServiceConfig {
|
|
7
|
+
image: string;
|
|
8
|
+
env: Record<string, string | SecretRef>;
|
|
9
|
+
ports: number[];
|
|
10
|
+
name?: string;
|
|
11
|
+
health?: ServiceHealthCheck;
|
|
12
|
+
}
|
|
13
|
+
export declare class ServiceBuilder {
|
|
14
|
+
readonly config: ServiceConfig;
|
|
15
|
+
constructor(config: ServiceConfig);
|
|
16
|
+
env(name: string, value: string | SecretRef): ServiceBuilder;
|
|
17
|
+
port(port: number): ServiceBuilder;
|
|
18
|
+
health: {
|
|
19
|
+
tcp: (port: number) => ServiceBuilder;
|
|
20
|
+
};
|
|
21
|
+
as(alias: string): ServiceBuilder;
|
|
22
|
+
}
|
|
23
|
+
export declare const service: (imageRef: string) => ServiceBuilder;
|
|
24
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/dsl/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;gBAEnB,MAAM,EAAE,aAAa;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc;IAI5D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAIlC,MAAM;oBACQ,MAAM,KAAG,cAAc;MAEnC;IAEF,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;CAGlC;AAED,eAAO,MAAM,OAAO,GAAI,UAAU,MAAM,KAAG,cACkB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export class ServiceBuilder {
|
|
2
|
+
config;
|
|
3
|
+
constructor(config) {
|
|
4
|
+
this.config = config;
|
|
5
|
+
}
|
|
6
|
+
env(name, value) {
|
|
7
|
+
return new ServiceBuilder({ ...this.config, env: { ...this.config.env, [name]: value } });
|
|
8
|
+
}
|
|
9
|
+
port(port) {
|
|
10
|
+
return new ServiceBuilder({ ...this.config, ports: [...this.config.ports, port] });
|
|
11
|
+
}
|
|
12
|
+
health = {
|
|
13
|
+
tcp: (port) => new ServiceBuilder({ ...this.config, health: { type: 'tcp', port } }),
|
|
14
|
+
};
|
|
15
|
+
as(alias) {
|
|
16
|
+
return new ServiceBuilder({ ...this.config, name: alias });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export const service = (imageRef) => new ServiceBuilder({ image: imageRef, env: {}, ports: [] });
|
|
20
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/dsl/service.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,cAAc;IAChB,MAAM,CAAgB;IAE/B,YAAY,MAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,KAAyB;QACzC,OAAO,IAAI,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,GAAG;QACP,GAAG,EAAE,CAAC,IAAY,EAAkB,EAAE,CACpC,IAAI,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;KACxE,CAAC;IAEF,EAAE,CAAC,KAAa;QACd,OAAO,IAAI,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAkB,EAAE,CAC1D,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { StepGenerator } from './types.js';
|
|
2
|
+
export declare class StepBuilder {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly run: StepGenerator;
|
|
5
|
+
readonly inputPatterns: string[];
|
|
6
|
+
constructor(name: string, run: StepGenerator, inputPatterns?: string[]);
|
|
7
|
+
inputs(...patterns: string[]): StepBuilder;
|
|
8
|
+
}
|
|
9
|
+
export declare const step: (name: string, run: StepGenerator) => StepBuilder;
|
|
10
|
+
//# sourceMappingURL=step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/dsl/step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,WAAW;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;gBAErB,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,aAAa,GAAE,MAAM,EAAO;IAM1E,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW;CAI3C;AAED,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,WAAyC,CAAC"}
|
package/dist/dsl/step.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class StepBuilder {
|
|
2
|
+
name;
|
|
3
|
+
run;
|
|
4
|
+
inputPatterns;
|
|
5
|
+
constructor(name, run, inputPatterns = []) {
|
|
6
|
+
this.name = name;
|
|
7
|
+
this.run = run;
|
|
8
|
+
this.inputPatterns = inputPatterns;
|
|
9
|
+
}
|
|
10
|
+
inputs(...patterns) {
|
|
11
|
+
if (patterns.length === 0)
|
|
12
|
+
return this;
|
|
13
|
+
return new StepBuilder(this.name, this.run, [...this.inputPatterns, ...patterns]);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export const step = (name, run) => new StepBuilder(name, run);
|
|
17
|
+
//# sourceMappingURL=step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../src/dsl/step.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACb,IAAI,CAAS;IACb,GAAG,CAAgB;IACnB,aAAa,CAAW;IAEjC,YAAY,IAAY,EAAE,GAAkB,EAAE,gBAA0B,EAAE;QACxE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,GAAG,QAAkB;QAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;IACpF,CAAC;CACF;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,GAAkB,EAAe,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ImageBuilder } from './image.js';
|
|
2
|
+
import type { StepBuilder } from './step.js';
|
|
3
|
+
import type { EnvValue } from './types.js';
|
|
4
|
+
export interface TaskCacheOptions {
|
|
5
|
+
enabled?: boolean;
|
|
6
|
+
inputs?: string[];
|
|
7
|
+
outputs?: string[];
|
|
8
|
+
env?: string[];
|
|
9
|
+
ttl?: string;
|
|
10
|
+
key?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface TaskConfig {
|
|
13
|
+
name: string;
|
|
14
|
+
image?: ImageBuilder;
|
|
15
|
+
env: Record<string, EnvValue>;
|
|
16
|
+
steps: StepBuilder[];
|
|
17
|
+
setupSteps: StepBuilder[];
|
|
18
|
+
kitName?: string;
|
|
19
|
+
needs: string[];
|
|
20
|
+
inputs: string[];
|
|
21
|
+
cacheEnv: string[];
|
|
22
|
+
cache?: TaskCacheOptions;
|
|
23
|
+
cacheBust?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class TaskBuilder {
|
|
26
|
+
readonly config: TaskConfig;
|
|
27
|
+
constructor(config: TaskConfig);
|
|
28
|
+
in(imageRef: ImageBuilder): TaskBuilder;
|
|
29
|
+
env(name: string, value: EnvValue): TaskBuilder;
|
|
30
|
+
steps(...stepsList: StepBuilder[]): TaskBuilder;
|
|
31
|
+
inputs(...patterns: string[]): TaskBuilder;
|
|
32
|
+
cacheEnv(...vars: string[]): TaskBuilder;
|
|
33
|
+
cache(options: TaskCacheOptions): TaskBuilder;
|
|
34
|
+
cacheBust(salt: string): TaskBuilder;
|
|
35
|
+
needs(...tasks: TaskBuilder[]): TaskBuilder;
|
|
36
|
+
}
|
|
37
|
+
export declare const task: (name: string) => TaskBuilder;
|
|
38
|
+
//# sourceMappingURL=task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/dsl/task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEhB,MAAM,EAAE,UAAU;IAY9B,EAAE,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW;IAIvC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,WAAW;IAI/C,KAAK,CAAC,GAAG,SAAS,EAAE,WAAW,EAAE,GAAG,WAAW;IAI/C,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW;IAK1C,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW;IAKxC,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,WAAW;IAI7C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAIpC,KAAK,CAAC,GAAG,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW;CAO5C;AAED,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,WAShC,CAAC"}
|
package/dist/dsl/task.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const cloneTask = (task, patch) => new TaskBuilder({
|
|
2
|
+
...task.config,
|
|
3
|
+
...patch,
|
|
4
|
+
env: patch.env ?? task.config.env,
|
|
5
|
+
steps: patch.steps ?? task.config.steps,
|
|
6
|
+
setupSteps: patch.setupSteps ?? task.config.setupSteps,
|
|
7
|
+
needs: patch.needs ?? task.config.needs,
|
|
8
|
+
inputs: patch.inputs ?? task.config.inputs,
|
|
9
|
+
cacheEnv: patch.cacheEnv ?? task.config.cacheEnv,
|
|
10
|
+
});
|
|
11
|
+
export class TaskBuilder {
|
|
12
|
+
config;
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.config = {
|
|
15
|
+
...config,
|
|
16
|
+
env: { ...config.env },
|
|
17
|
+
steps: [...config.steps],
|
|
18
|
+
setupSteps: [...config.setupSteps],
|
|
19
|
+
needs: [...config.needs],
|
|
20
|
+
inputs: [...config.inputs],
|
|
21
|
+
cacheEnv: [...config.cacheEnv],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
in(imageRef) {
|
|
25
|
+
return cloneTask(this, { image: imageRef });
|
|
26
|
+
}
|
|
27
|
+
env(name, value) {
|
|
28
|
+
return cloneTask(this, { env: { ...this.config.env, [name]: value } });
|
|
29
|
+
}
|
|
30
|
+
steps(...stepsList) {
|
|
31
|
+
return cloneTask(this, { steps: [...this.config.steps, ...stepsList] });
|
|
32
|
+
}
|
|
33
|
+
inputs(...patterns) {
|
|
34
|
+
if (patterns.length === 0)
|
|
35
|
+
return this;
|
|
36
|
+
return cloneTask(this, { inputs: [...this.config.inputs, ...patterns] });
|
|
37
|
+
}
|
|
38
|
+
cacheEnv(...vars) {
|
|
39
|
+
if (vars.length === 0)
|
|
40
|
+
return this;
|
|
41
|
+
return cloneTask(this, { cacheEnv: [...this.config.cacheEnv, ...vars] });
|
|
42
|
+
}
|
|
43
|
+
cache(options) {
|
|
44
|
+
return cloneTask(this, { cache: { ...options } });
|
|
45
|
+
}
|
|
46
|
+
cacheBust(salt) {
|
|
47
|
+
return cloneTask(this, { cacheBust: salt });
|
|
48
|
+
}
|
|
49
|
+
needs(...tasks) {
|
|
50
|
+
const ids = new Set(this.config.needs);
|
|
51
|
+
for (const task of tasks) {
|
|
52
|
+
ids.add(task.config.name);
|
|
53
|
+
}
|
|
54
|
+
return cloneTask(this, { needs: Array.from(ids) });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export const task = (name) => new TaskBuilder({
|
|
58
|
+
name,
|
|
59
|
+
env: {},
|
|
60
|
+
steps: [],
|
|
61
|
+
setupSteps: [],
|
|
62
|
+
needs: [],
|
|
63
|
+
inputs: [],
|
|
64
|
+
cacheEnv: [],
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/dsl/task.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Operation } from '../ops/operation.js';
|
|
2
|
+
import type { ValueRef } from '../ops/output.js';
|
|
3
|
+
import type { ParamRef } from '../ops/param.js';
|
|
4
|
+
import type { SecretRef } from '../ops/secret.js';
|
|
5
|
+
import type { TaskBuilder } from './task.js';
|
|
6
|
+
export type EnvValue = string | SecretRef | ValueRef<string | number | boolean> | ParamRef<string | number | boolean>;
|
|
7
|
+
export interface StepCtx {
|
|
8
|
+
task: TaskBuilder;
|
|
9
|
+
workspace: string;
|
|
10
|
+
}
|
|
11
|
+
export type StepGenerator = (ctx: StepCtx) => Generator<Operation, unknown, unknown>;
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dsl/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,SAAS,GACT,QAAQ,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACnC,QAAQ,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAExC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dsl/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/dsl/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,KAAG,MAGrD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { resolve as resolvePath } from 'node:path';
|
|
2
|
+
export const resolveWorkspace = (workspace) => {
|
|
3
|
+
if (!workspace)
|
|
4
|
+
return process.cwd();
|
|
5
|
+
return workspace.startsWith('.') ? resolvePath(process.cwd(), workspace) : workspace;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/dsl/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAkB,EAAU,EAAE;IAC7D,IAAI,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACrC,OAAO,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TaskBuilder } from '../../dsl/task.js';
|
|
2
|
+
export interface TaskAnalysis {
|
|
3
|
+
ops: unknown[];
|
|
4
|
+
inputs: Set<string>;
|
|
5
|
+
commandSignatures: string[];
|
|
6
|
+
dependencies: Set<string>;
|
|
7
|
+
secrets: Set<string>;
|
|
8
|
+
params: Set<string>;
|
|
9
|
+
dynamic: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const analyzeTaskSteps: (task: TaskBuilder, workspace: string) => TaskAnalysis;
|
|
12
|
+
//# sourceMappingURL=analyze.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/engine/cache/analyze.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,OAAO,EAAE,CAAC;IACf,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAmHD,eAAO,MAAM,gBAAgB,GAAI,MAAM,WAAW,EAAE,WAAW,MAAM,KAAG,YAWvE,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { isOperation } from '../../ops/operation.js';
|
|
2
|
+
import { stableStringify } from './serialize.js';
|
|
3
|
+
const createPlaceholderTracker = () => {
|
|
4
|
+
let touched = false;
|
|
5
|
+
const placeholder = new Proxy(() => undefined, {
|
|
6
|
+
get: () => mark(),
|
|
7
|
+
apply: () => mark(),
|
|
8
|
+
construct: () => mark(),
|
|
9
|
+
});
|
|
10
|
+
Object.defineProperty(placeholder, Symbol.toPrimitive, {
|
|
11
|
+
value: () => {
|
|
12
|
+
touched = true;
|
|
13
|
+
return '';
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
const mark = () => {
|
|
17
|
+
touched = true;
|
|
18
|
+
return placeholder;
|
|
19
|
+
};
|
|
20
|
+
return {
|
|
21
|
+
value: placeholder,
|
|
22
|
+
used: () => touched,
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
const toOperation = (value) => {
|
|
26
|
+
if (!isOperation(value)) {
|
|
27
|
+
throw new Error('Step yielded a non-operation value');
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
};
|
|
31
|
+
const createCacheContext = (ctx, analysis, tracker, resultValue) => ({
|
|
32
|
+
addCommandSignature: (signature) => {
|
|
33
|
+
analysis.commandSignatures.push(signature);
|
|
34
|
+
},
|
|
35
|
+
addDependency: (name) => {
|
|
36
|
+
analysis.dependencies.add(name);
|
|
37
|
+
},
|
|
38
|
+
addSecret: (name) => {
|
|
39
|
+
analysis.secrets.add(name);
|
|
40
|
+
},
|
|
41
|
+
addParam: (name) => {
|
|
42
|
+
analysis.params.add(name);
|
|
43
|
+
},
|
|
44
|
+
analyzeNested: (compute, nestedResultValue) => analyzeGenerator(compute(ctx), ctx, analysis, tracker, nestedResultValue),
|
|
45
|
+
resultValue,
|
|
46
|
+
placeholder: {
|
|
47
|
+
value: tracker.value,
|
|
48
|
+
isPrimary: tracker.value !== undefined,
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
const analyzeGenerator = (iterator, ctx, analysis, tracker, resultValue) => {
|
|
52
|
+
const ops = [];
|
|
53
|
+
let cursor = iterator.next();
|
|
54
|
+
while (!cursor.done) {
|
|
55
|
+
const operation = toOperation(cursor.value);
|
|
56
|
+
const cacheContext = createCacheContext(ctx, analysis, tracker, resultValue);
|
|
57
|
+
ops.push(operation.cacheNormalize(cacheContext));
|
|
58
|
+
const placeholder = operation.cachePlaceholder(cacheContext.placeholder);
|
|
59
|
+
cursor = iterator.next(placeholder);
|
|
60
|
+
}
|
|
61
|
+
return ops;
|
|
62
|
+
};
|
|
63
|
+
const runAnalysis = (task, workspace, tracker) => {
|
|
64
|
+
const analysis = {
|
|
65
|
+
ops: [],
|
|
66
|
+
inputs: new Set(),
|
|
67
|
+
commandSignatures: [],
|
|
68
|
+
dependencies: new Set(),
|
|
69
|
+
secrets: new Set(),
|
|
70
|
+
params: new Set(),
|
|
71
|
+
dynamic: false,
|
|
72
|
+
};
|
|
73
|
+
const ctx = { task, workspace };
|
|
74
|
+
const steps = [...task.config.setupSteps, ...task.config.steps];
|
|
75
|
+
for (const step of steps) {
|
|
76
|
+
for (const pattern of step.inputPatterns) {
|
|
77
|
+
analysis.inputs.add(pattern);
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const iterator = step.run(ctx);
|
|
81
|
+
analysis.ops.push(...analyzeGenerator(iterator, ctx, analysis, tracker, tracker.value));
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
analysis.dynamic = true;
|
|
85
|
+
return { analysis, failed: true };
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
analysis.dynamic = tracker.used();
|
|
89
|
+
return { analysis, failed: false };
|
|
90
|
+
};
|
|
91
|
+
export const analyzeTaskSteps = (task, workspace) => {
|
|
92
|
+
const primaryTracker = createPlaceholderTracker();
|
|
93
|
+
const primary = runAnalysis(task, workspace, primaryTracker);
|
|
94
|
+
if (primary.failed)
|
|
95
|
+
return primary.analysis;
|
|
96
|
+
const secondaryTracker = { value: undefined, used: () => false };
|
|
97
|
+
const secondary = runAnalysis(task, workspace, secondaryTracker);
|
|
98
|
+
const opsDiffer = secondary.failed ||
|
|
99
|
+
stableStringify(primary.analysis.ops) !== stableStringify(secondary.analysis.ops);
|
|
100
|
+
primary.analysis.dynamic = primary.analysis.dynamic || opsDiffer;
|
|
101
|
+
return primary.analysis;
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=analyze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/engine/cache/analyze.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { StepBuilder } from '../../dsl/step.js';
|
|
2
|
+
import type { TaskBuilder } from '../../dsl/task.js';
|
|
3
|
+
import type { Op } from '../../ops/base.js';
|
|
4
|
+
import type { CacheSettings, Logger, Reporter, TaskResult, TaskState } from '../executor/types.js';
|
|
5
|
+
import type { ValueResolver } from '../executor/value-resolver.js';
|
|
6
|
+
import type { ExecutionContext } from '../handlers/handler.js';
|
|
7
|
+
interface TaskCacheDecision {
|
|
8
|
+
key: string;
|
|
9
|
+
cacheable: boolean;
|
|
10
|
+
hit?: boolean;
|
|
11
|
+
reason?: string;
|
|
12
|
+
components: Record<string, string>;
|
|
13
|
+
inputs: {
|
|
14
|
+
patterns: string[];
|
|
15
|
+
files: Record<string, string>;
|
|
16
|
+
};
|
|
17
|
+
outputPatterns: string[];
|
|
18
|
+
ttlMs?: number | null;
|
|
19
|
+
}
|
|
20
|
+
interface CacheExecutionResult {
|
|
21
|
+
handled: true;
|
|
22
|
+
value: unknown;
|
|
23
|
+
}
|
|
24
|
+
type ExecuteOpFn = (op: Op, task: TaskBuilder, step: StepBuilder, env: Record<string, string>, state: TaskState) => Promise<unknown>;
|
|
25
|
+
export interface CacheCoordinatorOptions {
|
|
26
|
+
workspace: string;
|
|
27
|
+
settings?: CacheSettings;
|
|
28
|
+
logger: Logger;
|
|
29
|
+
reporter?: Reporter;
|
|
30
|
+
resolver: ValueResolver;
|
|
31
|
+
params: Record<string, unknown>;
|
|
32
|
+
getTaskState: (name: string) => TaskState | undefined;
|
|
33
|
+
findTask: (name: string) => TaskBuilder | undefined;
|
|
34
|
+
executeTask: (task: TaskBuilder) => Promise<TaskResult>;
|
|
35
|
+
}
|
|
36
|
+
export declare class CacheCoordinator {
|
|
37
|
+
private readonly workspace;
|
|
38
|
+
private readonly settings;
|
|
39
|
+
private readonly logger;
|
|
40
|
+
private readonly reporter;
|
|
41
|
+
private readonly resolver;
|
|
42
|
+
private readonly params;
|
|
43
|
+
private readonly getTaskState;
|
|
44
|
+
private readonly findTask;
|
|
45
|
+
private readonly executeTask;
|
|
46
|
+
private readonly cacheStore;
|
|
47
|
+
private readonly pendingOpSaves;
|
|
48
|
+
private readonly taskCacheState;
|
|
49
|
+
constructor(opts: CacheCoordinatorOptions);
|
|
50
|
+
beforeTask(task: TaskBuilder, env: Record<string, string>, state: TaskState): Promise<TaskCacheDecision | null>;
|
|
51
|
+
afterStep(task: TaskBuilder): Promise<void>;
|
|
52
|
+
afterTask(task: TaskBuilder, state: TaskState, decision: TaskCacheDecision | null): Promise<void>;
|
|
53
|
+
tryExecuteOp(op: Op, task: TaskBuilder, context: ExecutionContext, state: TaskState, executeBaseOp: (op: Op) => Promise<unknown>, executeOp: ExecuteOpFn): Promise<CacheExecutionResult | null>;
|
|
54
|
+
wasTaskCached(taskName: string): boolean;
|
|
55
|
+
private shouldAttemptTaskCache;
|
|
56
|
+
private cacheAllowedForTask;
|
|
57
|
+
private cacheExcludes;
|
|
58
|
+
private ensureCacheStore;
|
|
59
|
+
private handleCacheDisabled;
|
|
60
|
+
private handleUncacheableDecision;
|
|
61
|
+
private tryRestoreTaskCache;
|
|
62
|
+
private restoreTaskCacheEntry;
|
|
63
|
+
private flushPendingOpSaves;
|
|
64
|
+
private recordTaskCacheState;
|
|
65
|
+
private computeTaskCacheDecision;
|
|
66
|
+
private collectTaskInputPatterns;
|
|
67
|
+
private resolveTaskInputs;
|
|
68
|
+
private hashCacheEnv;
|
|
69
|
+
private buildCacheBust;
|
|
70
|
+
private collectTaskRefs;
|
|
71
|
+
private collectSecretEnvNames;
|
|
72
|
+
private hashParams;
|
|
73
|
+
private hashEnvConfig;
|
|
74
|
+
private hashDependencies;
|
|
75
|
+
private collectDependencyNames;
|
|
76
|
+
private resolveDependencyFingerprint;
|
|
77
|
+
private computeStateFingerprint;
|
|
78
|
+
private cacheVersion;
|
|
79
|
+
private resolveTtl;
|
|
80
|
+
private parseDuration;
|
|
81
|
+
private executeCacheOp;
|
|
82
|
+
private executeCacheOrOp;
|
|
83
|
+
private executeCachedCommand;
|
|
84
|
+
private executeInline;
|
|
85
|
+
private toOp;
|
|
86
|
+
private computeCacheOpDecision;
|
|
87
|
+
private saveCacheOpSnapshot;
|
|
88
|
+
private computeCommandCacheDecision;
|
|
89
|
+
private normalizeCommandTemplate;
|
|
90
|
+
private resolveCommandOutputs;
|
|
91
|
+
private resolveCommandInputs;
|
|
92
|
+
private hashCommandEnv;
|
|
93
|
+
private shouldCacheCommandResult;
|
|
94
|
+
private emitCacheDebug;
|
|
95
|
+
private diffInputFiles;
|
|
96
|
+
private enqueuePendingSave;
|
|
97
|
+
}
|
|
98
|
+
export {};
|
|
99
|
+
//# sourceMappingURL=coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../../src/engine/cache/coordinator.ts"],"names":[],"mappings":"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"}
|