@acpus/workflow-compiler 0.1.0-alpha.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 +21 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/check/authoring-rules/index.d.ts +10 -0
- package/dist/check/authoring-rules/index.d.ts.map +1 -0
- package/dist/check/authoring-rules/index.js +222 -0
- package/dist/check/authoring-rules/index.js.map +1 -0
- package/dist/check/authoring-rules/output-admissibility.d.ts +4 -0
- package/dist/check/authoring-rules/output-admissibility.d.ts.map +1 -0
- package/dist/check/authoring-rules/output-admissibility.js +537 -0
- package/dist/check/authoring-rules/output-admissibility.js.map +1 -0
- package/dist/check/runner.d.ts +6 -0
- package/dist/check/runner.d.ts.map +1 -0
- package/dist/check/runner.js +35 -0
- package/dist/check/runner.js.map +1 -0
- package/dist/check/typescript.d.ts +9 -0
- package/dist/check/typescript.d.ts.map +1 -0
- package/dist/check/typescript.js +86 -0
- package/dist/check/typescript.js.map +1 -0
- package/dist/compiler/compile-worker.d.ts +2 -0
- package/dist/compiler/compile-worker.d.ts.map +1 -0
- package/dist/compiler/compile-worker.js +33 -0
- package/dist/compiler/compile-worker.js.map +1 -0
- package/dist/compiler/ir-walk.d.ts +3 -0
- package/dist/compiler/ir-walk.d.ts.map +1 -0
- package/dist/compiler/ir-walk.js +29 -0
- package/dist/compiler/ir-walk.js.map +1 -0
- package/dist/compiler/module.d.ts +35 -0
- package/dist/compiler/module.d.ts.map +1 -0
- package/dist/compiler/module.js +100 -0
- package/dist/compiler/module.js.map +1 -0
- package/dist/compiler/process.d.ts +9 -0
- package/dist/compiler/process.d.ts.map +1 -0
- package/dist/compiler/process.js +21 -0
- package/dist/compiler/process.js.map +1 -0
- package/dist/compiler/worker.d.ts +12 -0
- package/dist/compiler/worker.d.ts.map +1 -0
- package/dist/compiler/worker.js +35 -0
- package/dist/compiler/worker.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/eslint-plugin/index.d.ts +5 -0
- package/dist/internal/eslint-plugin/index.d.ts.map +1 -0
- package/dist/internal/eslint-plugin/index.js +71 -0
- package/dist/internal/eslint-plugin/index.js.map +1 -0
- package/dist/preflight/index.d.ts +53 -0
- package/dist/preflight/index.d.ts.map +1 -0
- package/dist/preflight/index.js +113 -0
- package/dist/preflight/index.js.map +1 -0
- package/dist/preflight/temp.d.ts +2 -0
- package/dist/preflight/temp.d.ts.map +1 -0
- package/dist/preflight/temp.js +7 -0
- package/dist/preflight/temp.js.map +1 -0
- package/dist/task-analysis/ast.d.ts +9 -0
- package/dist/task-analysis/ast.d.ts.map +1 -0
- package/dist/task-analysis/ast.js +61 -0
- package/dist/task-analysis/ast.js.map +1 -0
- package/dist/task-analysis/callsites.d.ts +6 -0
- package/dist/task-analysis/callsites.d.ts.map +1 -0
- package/dist/task-analysis/callsites.js +77 -0
- package/dist/task-analysis/callsites.js.map +1 -0
- package/dist/task-analysis/index.d.ts +8 -0
- package/dist/task-analysis/index.d.ts.map +1 -0
- package/dist/task-analysis/index.js +122 -0
- package/dist/task-analysis/index.js.map +1 -0
- package/dist/task-analysis/inline-capture.d.ts +3 -0
- package/dist/task-analysis/inline-capture.d.ts.map +1 -0
- package/dist/task-analysis/inline-capture.js +51 -0
- package/dist/task-analysis/inline-capture.js.map +1 -0
- package/dist/task-analysis/types.d.ts +58 -0
- package/dist/task-analysis/types.d.ts.map +1 -0
- package/dist/task-analysis/types.js +2 -0
- package/dist/task-analysis/types.js.map +1 -0
- package/dist/task-analysis/workflow-symbols.d.ts +8 -0
- package/dist/task-analysis/workflow-symbols.d.ts.map +1 -0
- package/dist/task-analysis/workflow-symbols.js +165 -0
- package/dist/task-analysis/workflow-symbols.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
const NON_JSON_GLOBALS = new Set(["Date", "Map", "ReadonlyMap", "Set", "ReadonlySet", "WeakMap", "WeakSet", "RegExp", "Promise", "Error"]);
|
|
3
|
+
const STEP_METHODS = new Set(["task", "if", "switch", "parallel", "fanout", "loop"]);
|
|
4
|
+
export function checkOutputAdmissibility(sourceFiles, checker) {
|
|
5
|
+
const context = { checker, diagnostics: [] };
|
|
6
|
+
const visit = (node) => {
|
|
7
|
+
if (ts.isCallExpression(node)) {
|
|
8
|
+
checkWorkflowBuild(node, context);
|
|
9
|
+
checkTaskDefine(node, context);
|
|
10
|
+
checkStepCall(node, context);
|
|
11
|
+
}
|
|
12
|
+
ts.forEachChild(node, visit);
|
|
13
|
+
};
|
|
14
|
+
for (const sourceFile of Array.isArray(sourceFiles) ? sourceFiles : [sourceFiles])
|
|
15
|
+
visit(sourceFile);
|
|
16
|
+
return context.diagnostics;
|
|
17
|
+
}
|
|
18
|
+
function checkWorkflowBuild(call, context) {
|
|
19
|
+
if (!isPropertyCall(call, "build"))
|
|
20
|
+
return;
|
|
21
|
+
if (!isAcpusCoreResolvedCall(call, context.checker, "/graph/builder."))
|
|
22
|
+
return;
|
|
23
|
+
const build = call.arguments[0];
|
|
24
|
+
if (!build || !isFunctionLike(build))
|
|
25
|
+
return;
|
|
26
|
+
const returns = returnExpressions(build);
|
|
27
|
+
if (returns.length === 0)
|
|
28
|
+
return;
|
|
29
|
+
const producers = [];
|
|
30
|
+
for (const expression of returns) {
|
|
31
|
+
const object = objectOutputLiteral(expression);
|
|
32
|
+
if (!object) {
|
|
33
|
+
context.diagnostics.push(hiddenProducerDiagnostic("workflow root output", expression));
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
producers.push({ label: "workflow root output", expression, type: context.checker.getTypeAtLocation(expression) });
|
|
37
|
+
}
|
|
38
|
+
checkProducers(producers, context);
|
|
39
|
+
checkConvergence("workflow root outputs", producers, context);
|
|
40
|
+
}
|
|
41
|
+
function checkTaskDefine(call, context) {
|
|
42
|
+
if (!isPropertyCall(call, "define"))
|
|
43
|
+
return;
|
|
44
|
+
if (!isAcpusCoreResolvedCall(call, context.checker, "/nodes/leaf/task."))
|
|
45
|
+
return;
|
|
46
|
+
const spec = objectArg(call, 0, "task.define spec", context);
|
|
47
|
+
if (!spec)
|
|
48
|
+
return;
|
|
49
|
+
const exec = propertyInitializer(spec, "exec");
|
|
50
|
+
if (!exec || !isFunctionLike(exec)) {
|
|
51
|
+
context.diagnostics.push(hiddenProducerDiagnostic("task.define exec", exec ?? spec));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
checkFunctionOutput("task.define exec output", exec, context);
|
|
55
|
+
}
|
|
56
|
+
function checkStepCall(call, context) {
|
|
57
|
+
if (!ts.isPropertyAccessExpression(call.expression))
|
|
58
|
+
return;
|
|
59
|
+
const method = call.expression.name.text;
|
|
60
|
+
if (!STEP_METHODS.has(method))
|
|
61
|
+
return;
|
|
62
|
+
if (!isAcpusStepCall(call, context.checker))
|
|
63
|
+
return;
|
|
64
|
+
const spec = objectArg(call, 0, `${method} spec`, context);
|
|
65
|
+
if (!spec)
|
|
66
|
+
return;
|
|
67
|
+
if (method === "task")
|
|
68
|
+
checkInlineTask(spec, context);
|
|
69
|
+
else if (method === "if")
|
|
70
|
+
checkIf(spec, context);
|
|
71
|
+
else if (method === "switch")
|
|
72
|
+
checkSwitch(spec, context);
|
|
73
|
+
else if (method === "parallel")
|
|
74
|
+
checkParallel(spec, context);
|
|
75
|
+
else if (method === "fanout")
|
|
76
|
+
checkCallbackProperty(spec, "do", "fanout body output", context);
|
|
77
|
+
else if (method === "loop")
|
|
78
|
+
checkLoop(spec, context);
|
|
79
|
+
}
|
|
80
|
+
function checkInlineTask(spec, context) {
|
|
81
|
+
const run = objectProperty(spec, "run", "task run", context);
|
|
82
|
+
if (!run)
|
|
83
|
+
return;
|
|
84
|
+
const exec = propertyInitializer(run, "exec");
|
|
85
|
+
if (exec !== undefined && !isFunctionLike(exec)) {
|
|
86
|
+
context.diagnostics.push(hiddenProducerDiagnostic("inline task exec", exec));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (exec)
|
|
90
|
+
checkFunctionOutput("inline task output", exec, context);
|
|
91
|
+
else
|
|
92
|
+
checkReusableTaskOutput(run, context);
|
|
93
|
+
}
|
|
94
|
+
function checkIf(spec, context) {
|
|
95
|
+
const producers = [
|
|
96
|
+
callbackProducer(spec, "then", "if then output", context),
|
|
97
|
+
callbackProducer(spec, "else", "if else output", context),
|
|
98
|
+
].filter((producer) => Boolean(producer));
|
|
99
|
+
checkProducers(producers, context);
|
|
100
|
+
checkConvergence("if branch outputs", producers, context);
|
|
101
|
+
}
|
|
102
|
+
function checkSwitch(spec, context) {
|
|
103
|
+
const cases = propertyInitializer(spec, "cases");
|
|
104
|
+
const producers = [];
|
|
105
|
+
if (!cases || !ts.isArrayLiteralExpression(cases)) {
|
|
106
|
+
context.diagnostics.push(hiddenProducerDiagnostic("switch cases", cases ?? spec));
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
cases.elements.forEach((element, index) => {
|
|
110
|
+
if (!ts.isObjectLiteralExpression(element)) {
|
|
111
|
+
context.diagnostics.push(hiddenProducerDiagnostic(`switch case ${index}`, element));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const producer = callbackProducer(element, "then", `switch case ${index} output`, context);
|
|
115
|
+
if (producer)
|
|
116
|
+
producers.push(producer);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
const defaultProducer = callbackProducer(spec, "default", "switch default output", context);
|
|
120
|
+
if (defaultProducer)
|
|
121
|
+
producers.push(defaultProducer);
|
|
122
|
+
checkProducers(producers, context);
|
|
123
|
+
checkConvergence("switch branch outputs", producers, context);
|
|
124
|
+
}
|
|
125
|
+
function checkParallel(spec, context) {
|
|
126
|
+
const branches = objectProperty(spec, "branches", "parallel branches", context);
|
|
127
|
+
if (!branches)
|
|
128
|
+
return;
|
|
129
|
+
const producers = [];
|
|
130
|
+
for (const branch of branches.properties) {
|
|
131
|
+
if (!ts.isPropertyAssignment(branch) || !ts.isObjectLiteralExpression(branch.initializer)) {
|
|
132
|
+
context.diagnostics.push(hiddenProducerDiagnostic("parallel branch", branch));
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const name = propertyName(branch.name) ?? "branch";
|
|
136
|
+
const producer = callbackProducer(branch.initializer, "do", `parallel branch '${name}' output`, context);
|
|
137
|
+
if (producer)
|
|
138
|
+
producers.push(producer);
|
|
139
|
+
}
|
|
140
|
+
checkProducers(producers, context);
|
|
141
|
+
if (literalStringProperty(spec, "strategy") === "race")
|
|
142
|
+
checkConvergence("parallel race branch outputs", producers, context);
|
|
143
|
+
}
|
|
144
|
+
function checkLoop(spec, context) {
|
|
145
|
+
const initial = propertyInitializer(spec, "initial");
|
|
146
|
+
const body = callbackProducer(spec, "do", "loop body output", context);
|
|
147
|
+
let initialProducer;
|
|
148
|
+
if (initial) {
|
|
149
|
+
const initialType = context.checker.getTypeAtLocation(initial);
|
|
150
|
+
initialProducer = { label: "loop initial output", expression: initial, type: initialType };
|
|
151
|
+
if (!objectOutputLiteral(initial)) {
|
|
152
|
+
context.diagnostics.push(hiddenProducerDiagnostic("loop initial output", initial));
|
|
153
|
+
}
|
|
154
|
+
checkProducer(initialProducer, context);
|
|
155
|
+
checkObjectOutputType("loop initial output", initialType, initial, context);
|
|
156
|
+
}
|
|
157
|
+
else
|
|
158
|
+
context.diagnostics.push(hiddenProducerDiagnostic("loop initial output", spec));
|
|
159
|
+
if (body) {
|
|
160
|
+
checkProducer(body, context);
|
|
161
|
+
if (initialProducer)
|
|
162
|
+
checkConvergence("loop initial and body outputs", [initialProducer, body], context);
|
|
163
|
+
}
|
|
164
|
+
const maxIterations = propertyInitializer(spec, "maxIterations");
|
|
165
|
+
if (maxIterations && numericLiteralValue(maxIterations) !== undefined && numericLiteralValue(maxIterations) < 0) {
|
|
166
|
+
context.diagnostics.push({
|
|
167
|
+
code: "OA004",
|
|
168
|
+
severity: "error",
|
|
169
|
+
message: "Loop maxIterations must be non-negative.",
|
|
170
|
+
path: "output.loop.maxIterations",
|
|
171
|
+
hint: "Use 0 or a positive integer. The initial value is checked before any loop body execution.",
|
|
172
|
+
source: sourceLocation(maxIterations),
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function checkCallbackProperty(spec, key, label, context) {
|
|
177
|
+
const producer = callbackProducer(spec, key, label, context);
|
|
178
|
+
if (producer)
|
|
179
|
+
checkProducer(producer, context);
|
|
180
|
+
}
|
|
181
|
+
function callbackProducer(spec, key, label, context) {
|
|
182
|
+
const value = propertyInitializer(spec, key);
|
|
183
|
+
if (!value || !isFunctionLike(value)) {
|
|
184
|
+
context.diagnostics.push(hiddenProducerDiagnostic(label, value ?? spec));
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
const returns = returnExpressions(value);
|
|
188
|
+
if (returns.length !== 1) {
|
|
189
|
+
context.diagnostics.push(hiddenProducerDiagnostic(label, value));
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
const expression = returns[0];
|
|
193
|
+
if (!objectOutputLiteral(expression)) {
|
|
194
|
+
context.diagnostics.push(hiddenProducerDiagnostic(label, expression));
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
return { label, expression, type: context.checker.getTypeAtLocation(expression) };
|
|
198
|
+
}
|
|
199
|
+
function checkFunctionOutput(label, fn, context) {
|
|
200
|
+
const signature = context.checker.getSignatureFromDeclaration(fn);
|
|
201
|
+
if (!signature)
|
|
202
|
+
return;
|
|
203
|
+
const returnType = context.checker.getReturnTypeOfSignature(signature);
|
|
204
|
+
const awaited = context.checker.getAwaitedType(returnType) ?? returnType;
|
|
205
|
+
checkProducer({ label, expression: fn, type: awaited }, context);
|
|
206
|
+
}
|
|
207
|
+
function checkReusableTaskOutput(run, context) {
|
|
208
|
+
const task = propertyInitializer(run, "task");
|
|
209
|
+
if (!task)
|
|
210
|
+
return;
|
|
211
|
+
const fn = context.checker.getTypeAtLocation(task).getProperty("fn");
|
|
212
|
+
if (!fn) {
|
|
213
|
+
context.diagnostics.push(hiddenProducerDiagnostic("reusable task output", task));
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const fnType = context.checker.getTypeOfSymbolAtLocation(fn, task);
|
|
217
|
+
const signature = fnType.getCallSignatures()[0];
|
|
218
|
+
if (!signature) {
|
|
219
|
+
context.diagnostics.push(hiddenProducerDiagnostic("reusable task output", task));
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
const returnType = context.checker.getReturnTypeOfSignature(signature);
|
|
223
|
+
const awaited = context.checker.getAwaitedType(returnType) ?? returnType;
|
|
224
|
+
checkProducer({ label: "reusable task output", expression: task, type: awaited }, context);
|
|
225
|
+
}
|
|
226
|
+
function checkProducers(producers, context) {
|
|
227
|
+
for (const producer of producers)
|
|
228
|
+
checkProducer(producer, context);
|
|
229
|
+
}
|
|
230
|
+
function checkProducer(producer, context) {
|
|
231
|
+
const issue = admissibilityIssue(producer.type, producer.expression, context.checker, new Set());
|
|
232
|
+
if (!issue)
|
|
233
|
+
return;
|
|
234
|
+
context.diagnostics.push({
|
|
235
|
+
code: "OA002",
|
|
236
|
+
severity: "error",
|
|
237
|
+
message: `${producer.label} contains non-admissible workflow data: ${issue}.`,
|
|
238
|
+
path: "output.admissibility",
|
|
239
|
+
hint: "Return JSON-compatible data, Expr<T> values whose T is JSON-compatible, undefined for local absence, or explicit JsonValue/JsonObject opaque values.",
|
|
240
|
+
source: sourceLocation(producer.expression),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
function checkConvergence(label, producers, context) {
|
|
244
|
+
if (producers.length < 2)
|
|
245
|
+
return;
|
|
246
|
+
const base = producers[0];
|
|
247
|
+
const baseShape = outputShape(base.type, base.expression, context.checker);
|
|
248
|
+
if (!baseShape)
|
|
249
|
+
return;
|
|
250
|
+
for (const producer of producers.slice(1)) {
|
|
251
|
+
const shape = outputShape(producer.type, producer.expression, context.checker);
|
|
252
|
+
if (!shape)
|
|
253
|
+
continue;
|
|
254
|
+
const baseKeys = [...baseShape.keys()].sort();
|
|
255
|
+
const keys = [...shape.keys()].sort();
|
|
256
|
+
if (baseKeys.join("\0") !== keys.join("\0")) {
|
|
257
|
+
context.diagnostics.push(convergenceDiagnostic(label, producer.expression, `branches must return the same keys; expected ${baseKeys.join(", ") || "(none)"}, got ${keys.join(", ") || "(none)"}`));
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
for (const key of baseKeys) {
|
|
261
|
+
const left = baseShape.get(key);
|
|
262
|
+
const right = shape.get(key);
|
|
263
|
+
if (!context.checker.isTypeAssignableTo(left, right) && !context.checker.isTypeAssignableTo(right, left)) {
|
|
264
|
+
context.diagnostics.push(convergenceDiagnostic(label, producer.expression, `field '${key}' does not converge`));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
function checkObjectOutputType(label, type, node, context) {
|
|
270
|
+
const unwrapped = unwrapExpr(type, node, context.checker);
|
|
271
|
+
if (isKnownJsonObjectAlias(unwrapped))
|
|
272
|
+
return;
|
|
273
|
+
if (unwrapped.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown))
|
|
274
|
+
return;
|
|
275
|
+
if (unwrapped.isUnionOrIntersection() || context.checker.isArrayType(unwrapped) || context.checker.isTupleType(unwrapped)) {
|
|
276
|
+
context.diagnostics.push(convergenceDiagnostic(label, node, "must be an object, not a union or array"));
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
if (unwrapped.flags & (ts.TypeFlags.StringLike | ts.TypeFlags.NumberLike | ts.TypeFlags.BooleanLike | ts.TypeFlags.Null | ts.TypeFlags.Undefined | ts.TypeFlags.BigIntLike | ts.TypeFlags.ESSymbolLike | ts.TypeFlags.Void)) {
|
|
280
|
+
context.diagnostics.push(convergenceDiagnostic(label, node, "must be an object"));
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
if (context.checker.typeToString(unwrapped) === "object") {
|
|
284
|
+
context.diagnostics.push(convergenceDiagnostic(label, node, "must be a statically known object"));
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
function outputShape(type, node, checker) {
|
|
288
|
+
const unwrapped = unwrapExpr(type, node, checker);
|
|
289
|
+
if (unwrapped.isUnion())
|
|
290
|
+
return undefined;
|
|
291
|
+
const properties = checker.getPropertiesOfType(unwrapped);
|
|
292
|
+
const shape = new Map();
|
|
293
|
+
for (const property of properties) {
|
|
294
|
+
if (property.name === "__ir" || property.name === "__type")
|
|
295
|
+
continue;
|
|
296
|
+
const declaration = property.valueDeclaration ?? property.declarations?.[0] ?? node;
|
|
297
|
+
shape.set(property.name, unwrapExpr(checker.getTypeOfSymbolAtLocation(property, declaration), declaration, checker));
|
|
298
|
+
}
|
|
299
|
+
return shape;
|
|
300
|
+
}
|
|
301
|
+
function admissibilityIssue(type, node, checker, seen) {
|
|
302
|
+
const unwrapped = unwrapExpr(type, node, checker);
|
|
303
|
+
if (seen.has(unwrapped))
|
|
304
|
+
return undefined;
|
|
305
|
+
seen.add(unwrapped);
|
|
306
|
+
if (isKnownJsonAlias(unwrapped))
|
|
307
|
+
return undefined;
|
|
308
|
+
if (unwrapped.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown))
|
|
309
|
+
return undefined;
|
|
310
|
+
if (unwrapped.flags & ts.TypeFlags.Never)
|
|
311
|
+
return undefined;
|
|
312
|
+
if (unwrapped.flags & (ts.TypeFlags.StringLike | ts.TypeFlags.NumberLike | ts.TypeFlags.BooleanLike | ts.TypeFlags.Null | ts.TypeFlags.Undefined | ts.TypeFlags.Void))
|
|
313
|
+
return undefined;
|
|
314
|
+
if (unwrapped.flags & ts.TypeFlags.BigIntLike)
|
|
315
|
+
return "bigint";
|
|
316
|
+
if (unwrapped.flags & ts.TypeFlags.ESSymbolLike)
|
|
317
|
+
return "symbol";
|
|
318
|
+
if (unwrapped.isUnionOrIntersection()) {
|
|
319
|
+
for (const part of unwrapped.types) {
|
|
320
|
+
const issue = admissibilityIssue(part, node, checker, seen);
|
|
321
|
+
if (issue)
|
|
322
|
+
return issue;
|
|
323
|
+
}
|
|
324
|
+
return undefined;
|
|
325
|
+
}
|
|
326
|
+
if (checker.isArrayType(unwrapped) || checker.isTupleType(unwrapped)) {
|
|
327
|
+
const item = checker.getIndexTypeOfType(unwrapped, ts.IndexKind.Number);
|
|
328
|
+
return item ? admissibilityIssue(item, node, checker, seen) : undefined;
|
|
329
|
+
}
|
|
330
|
+
if (unwrapped.getCallSignatures().length > 0)
|
|
331
|
+
return "function";
|
|
332
|
+
if (unwrapped.getConstructSignatures().length > 0)
|
|
333
|
+
return "class constructor";
|
|
334
|
+
const symbol = unwrapped.getSymbol() ?? unwrapped.aliasSymbol;
|
|
335
|
+
const symbolName = symbol?.getName();
|
|
336
|
+
if (symbolName && NON_JSON_GLOBALS.has(symbolName))
|
|
337
|
+
return symbolName;
|
|
338
|
+
if (symbol?.declarations?.some(declaration => ts.isClassDeclaration(declaration)))
|
|
339
|
+
return "class instance";
|
|
340
|
+
const typeText = checker.typeToString(unwrapped);
|
|
341
|
+
if (typeText === "object" || typeText === "Object" || (typeText === "{}" && !ts.isObjectLiteralExpression(node)))
|
|
342
|
+
return typeText;
|
|
343
|
+
const stringIndex = checker.getIndexTypeOfType(unwrapped, ts.IndexKind.String);
|
|
344
|
+
if (stringIndex) {
|
|
345
|
+
const issue = admissibilityIssue(stringIndex, node, checker, seen);
|
|
346
|
+
if (issue)
|
|
347
|
+
return issue;
|
|
348
|
+
}
|
|
349
|
+
const properties = checker.getPropertiesOfType(unwrapped);
|
|
350
|
+
for (const property of properties) {
|
|
351
|
+
if (property.name === "__ir" || property.name === "__type")
|
|
352
|
+
continue;
|
|
353
|
+
const declaration = property.valueDeclaration ?? property.declarations?.[0] ?? node;
|
|
354
|
+
if (property.flags & ts.SymbolFlags.Method)
|
|
355
|
+
return `method '${property.name}'`;
|
|
356
|
+
const issue = admissibilityIssue(checker.getTypeOfSymbolAtLocation(property, declaration), declaration, checker, seen);
|
|
357
|
+
if (issue)
|
|
358
|
+
return `${property.name}: ${issue}`;
|
|
359
|
+
}
|
|
360
|
+
return undefined;
|
|
361
|
+
}
|
|
362
|
+
function unwrapExpr(type, node, checker) {
|
|
363
|
+
const typeProperty = type.getProperty("__type");
|
|
364
|
+
return typeProperty && type.getProperty("__ir")
|
|
365
|
+
? checker.getTypeOfSymbolAtLocation(typeProperty, typeProperty.valueDeclaration ?? node)
|
|
366
|
+
: type;
|
|
367
|
+
}
|
|
368
|
+
function isKnownJsonAlias(type) {
|
|
369
|
+
const symbol = type.aliasSymbol ?? type.getSymbol();
|
|
370
|
+
if (!symbol || (symbol.getName() !== "JsonValue" && symbol.getName() !== "JsonObject"))
|
|
371
|
+
return false;
|
|
372
|
+
return isAcpusJsonDeclaration(symbol);
|
|
373
|
+
}
|
|
374
|
+
function isKnownJsonObjectAlias(type) {
|
|
375
|
+
const symbol = type.aliasSymbol ?? type.getSymbol();
|
|
376
|
+
return Boolean(symbol && symbol.getName() === "JsonObject" && isAcpusJsonDeclaration(symbol));
|
|
377
|
+
}
|
|
378
|
+
function isAcpusJsonDeclaration(symbol) {
|
|
379
|
+
return Boolean(symbol.declarations?.some(declaration => /packages\/(expression|core)\/(src|dist)\/(ir|ir\/types)(\.d)?\.ts$/.test(declaration.getSourceFile().fileName.replace(/\\/g, "/"))));
|
|
380
|
+
}
|
|
381
|
+
function returnExpressions(fn) {
|
|
382
|
+
if (ts.isArrowFunction(fn) && fn.body && !ts.isBlock(fn.body))
|
|
383
|
+
return [fn.body];
|
|
384
|
+
const returns = [];
|
|
385
|
+
if (!fn.body || !ts.isBlock(fn.body))
|
|
386
|
+
return returns;
|
|
387
|
+
const visit = (node) => {
|
|
388
|
+
if (node !== fn && isFunctionLike(node))
|
|
389
|
+
return;
|
|
390
|
+
if (ts.isReturnStatement(node)) {
|
|
391
|
+
if (node.expression)
|
|
392
|
+
returns.push(node.expression);
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
ts.forEachChild(node, visit);
|
|
396
|
+
};
|
|
397
|
+
visit(fn.body);
|
|
398
|
+
return returns;
|
|
399
|
+
}
|
|
400
|
+
function unwrapParentheses(expression) {
|
|
401
|
+
let current = expression;
|
|
402
|
+
while (ts.isParenthesizedExpression(current))
|
|
403
|
+
current = current.expression;
|
|
404
|
+
return current;
|
|
405
|
+
}
|
|
406
|
+
function objectOutputLiteral(expression) {
|
|
407
|
+
const object = unwrapParentheses(expression);
|
|
408
|
+
if (!ts.isObjectLiteralExpression(object))
|
|
409
|
+
return undefined;
|
|
410
|
+
for (const property of object.properties) {
|
|
411
|
+
if (ts.isSpreadAssignment(property) || ts.isPropertyAssignment(property) && propertyName(property.name) === undefined)
|
|
412
|
+
return undefined;
|
|
413
|
+
}
|
|
414
|
+
return object;
|
|
415
|
+
}
|
|
416
|
+
function objectArg(call, index, label, context) {
|
|
417
|
+
const arg = call.arguments[index];
|
|
418
|
+
if (!arg || !ts.isObjectLiteralExpression(arg)) {
|
|
419
|
+
context.diagnostics.push(hiddenProducerDiagnostic(label, arg ?? call));
|
|
420
|
+
return undefined;
|
|
421
|
+
}
|
|
422
|
+
if (arg.properties.some(ts.isSpreadAssignment))
|
|
423
|
+
context.diagnostics.push(hiddenProducerDiagnostic(label, arg));
|
|
424
|
+
return arg;
|
|
425
|
+
}
|
|
426
|
+
function objectProperty(parent, key, label, context) {
|
|
427
|
+
const initializer = propertyInitializer(parent, key);
|
|
428
|
+
if (!initializer || !ts.isObjectLiteralExpression(initializer)) {
|
|
429
|
+
context.diagnostics.push(hiddenProducerDiagnostic(label, initializer ?? parent));
|
|
430
|
+
return undefined;
|
|
431
|
+
}
|
|
432
|
+
if (initializer.properties.some(ts.isSpreadAssignment))
|
|
433
|
+
context.diagnostics.push(hiddenProducerDiagnostic(label, initializer));
|
|
434
|
+
return initializer;
|
|
435
|
+
}
|
|
436
|
+
function propertyInitializer(parent, key) {
|
|
437
|
+
for (const property of parent.properties) {
|
|
438
|
+
if (!ts.isPropertyAssignment(property))
|
|
439
|
+
continue;
|
|
440
|
+
if (propertyName(property.name) === key)
|
|
441
|
+
return property.initializer;
|
|
442
|
+
}
|
|
443
|
+
return undefined;
|
|
444
|
+
}
|
|
445
|
+
function propertyName(name) {
|
|
446
|
+
if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name))
|
|
447
|
+
return name.text;
|
|
448
|
+
return undefined;
|
|
449
|
+
}
|
|
450
|
+
function literalStringProperty(parent, key) {
|
|
451
|
+
const initializer = propertyInitializer(parent, key);
|
|
452
|
+
return initializer && ts.isStringLiteral(initializer) ? initializer.text : undefined;
|
|
453
|
+
}
|
|
454
|
+
function numericLiteralValue(expression) {
|
|
455
|
+
if (ts.isNumericLiteral(expression))
|
|
456
|
+
return Number(expression.text);
|
|
457
|
+
if (ts.isPrefixUnaryExpression(expression) && ts.isNumericLiteral(expression.operand)) {
|
|
458
|
+
const value = Number(expression.operand.text);
|
|
459
|
+
if (expression.operator === ts.SyntaxKind.MinusToken)
|
|
460
|
+
return -value;
|
|
461
|
+
if (expression.operator === ts.SyntaxKind.PlusToken)
|
|
462
|
+
return value;
|
|
463
|
+
}
|
|
464
|
+
return undefined;
|
|
465
|
+
}
|
|
466
|
+
function isAcpusStepCall(call, checker) {
|
|
467
|
+
if (isAcpusCoreResolvedCall(call, checker, "/graph/builder."))
|
|
468
|
+
return true;
|
|
469
|
+
if (!ts.isPropertyAccessExpression(call.expression))
|
|
470
|
+
return false;
|
|
471
|
+
return hasStepDeclarationType(checker.getTypeAtLocation(call.expression.expression));
|
|
472
|
+
}
|
|
473
|
+
function hasStepDeclarationType(type) {
|
|
474
|
+
if (type.isUnionOrIntersection())
|
|
475
|
+
return type.types.some(hasStepDeclarationType);
|
|
476
|
+
const symbol = type.aliasSymbol ?? (typeof type.getSymbol === "function" ? type.getSymbol() : undefined);
|
|
477
|
+
return symbolName(symbol) === "StepDeclaration" && isAcpusCoreSymbol(symbol);
|
|
478
|
+
}
|
|
479
|
+
function symbolName(symbol) {
|
|
480
|
+
if (!symbol)
|
|
481
|
+
return undefined;
|
|
482
|
+
return typeof symbol.getName === "function" ? symbol.getName() : symbol.name;
|
|
483
|
+
}
|
|
484
|
+
function isPropertyCall(call, name) {
|
|
485
|
+
return ts.isPropertyAccessExpression(call.expression) && call.expression.name.text === name;
|
|
486
|
+
}
|
|
487
|
+
function isAcpusCoreResolvedCall(call, checker, filePattern) {
|
|
488
|
+
if (typeof checker.getResolvedSignature !== "function")
|
|
489
|
+
return false;
|
|
490
|
+
const declaration = checker.getResolvedSignature(call)?.declaration;
|
|
491
|
+
return Boolean(declaration && sourceFileName(declaration).includes(filePattern) && isAcpusCoreFile(sourceFileName(declaration)));
|
|
492
|
+
}
|
|
493
|
+
function isAcpusCoreSymbol(symbol) {
|
|
494
|
+
return Boolean(symbol?.declarations?.some(declaration => isAcpusCoreFile(sourceFileName(declaration))));
|
|
495
|
+
}
|
|
496
|
+
function sourceFileName(node) {
|
|
497
|
+
return node.getSourceFile().fileName.replace(/\\/g, "/");
|
|
498
|
+
}
|
|
499
|
+
function isAcpusCoreFile(fileName) {
|
|
500
|
+
return /(^|\/)(packages\/core\/(src|dist)|node_modules\/@acpus\/core)\//.test(fileName);
|
|
501
|
+
}
|
|
502
|
+
function isFunctionLike(node) {
|
|
503
|
+
return ts.isArrowFunction(node)
|
|
504
|
+
|| ts.isFunctionExpression(node)
|
|
505
|
+
|| ts.isFunctionDeclaration(node)
|
|
506
|
+
|| ts.isMethodDeclaration(node);
|
|
507
|
+
}
|
|
508
|
+
function hiddenProducerDiagnostic(label, node) {
|
|
509
|
+
return {
|
|
510
|
+
code: "OA001",
|
|
511
|
+
severity: "error",
|
|
512
|
+
message: `Cannot statically locate ${label}.`,
|
|
513
|
+
path: "output.source",
|
|
514
|
+
hint: "Inline the workflow spec and producer callback as object/function literals so Acpus can check inferred output before runtime.",
|
|
515
|
+
source: sourceLocation(node),
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
function convergenceDiagnostic(label, node, reason) {
|
|
519
|
+
return {
|
|
520
|
+
code: "OA003",
|
|
521
|
+
severity: "error",
|
|
522
|
+
message: `${label} do not converge: ${reason}.`,
|
|
523
|
+
path: "output.convergence",
|
|
524
|
+
hint: "Return the same object keys from every branch and make each field type share a common assignable type.",
|
|
525
|
+
source: sourceLocation(node),
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
function sourceLocation(node) {
|
|
529
|
+
const sourceFile = node.getSourceFile();
|
|
530
|
+
const position = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
|
|
531
|
+
return {
|
|
532
|
+
file: sourceFile.fileName,
|
|
533
|
+
line: position.line + 1,
|
|
534
|
+
column: position.character + 1,
|
|
535
|
+
};
|
|
536
|
+
}
|
|
537
|
+
//# sourceMappingURL=output-admissibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output-admissibility.js","sourceRoot":"","sources":["../../../src/check/authoring-rules/output-admissibility.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAa5B,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3I,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAErF,MAAM,UAAU,wBAAwB,CAAC,WAAqD,EAAE,OAAuB;IACrH,MAAM,OAAO,GAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC1D,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/B,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACrG,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAuB,EAAE,OAAoB;IACvE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC;QAAE,OAAO;IAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC;QAAE,OAAO;IAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAAE,OAAO;IAC7C,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC;YACvF,SAAS;QACX,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrH,CAAC;IACD,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnC,gBAAgB,CAAC,uBAAuB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,eAAe,CAAC,IAAuB,EAAE,OAAoB;IACpE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAE,OAAO;IAC5C,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC;QAAE,OAAO;IACjF,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IACD,mBAAmB,CAAC,yBAAyB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,aAAa,CAAC,IAAuB,EAAE,OAAoB;IAClE,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IACzC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO;IACtC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO;IACpD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,MAAM,KAAK,MAAM;QAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACjD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC5C,IAAI,MAAM,KAAK,QAAQ;QAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACpD,IAAI,MAAM,KAAK,UAAU;QAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACxD,IAAI,MAAM,KAAK,QAAQ;QAAE,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;SAC1F,IAAI,MAAM,KAAK,MAAM;QAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,IAAgC,EAAE,OAAoB;IAC7E,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IACD,IAAI,IAAI;QAAE,mBAAmB,CAAC,oBAAoB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;;QAC9D,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,OAAO,CAAC,IAAgC,EAAE,OAAoB;IACrE,MAAM,SAAS,GAAG;QAChB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC;QACzD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC;KAC1D,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAwB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnC,gBAAgB,CAAC,mBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,WAAW,CAAC,IAAgC,EAAE,OAAoB;IACzE,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACxC,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,eAAe,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;gBACpF,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,KAAK,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3F,IAAI,QAAQ;gBAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;IAC5F,IAAI,eAAe;QAAE,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACrD,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnC,gBAAgB,CAAC,uBAAuB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,aAAa,CAAC,IAAgC,EAAE,OAAoB;IAC3E,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAChF,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1F,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;QACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,oBAAoB,IAAI,UAAU,EAAE,OAAO,CAAC,CAAC;QACzG,IAAI,QAAQ;YAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IACD,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnC,IAAI,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,MAAM;QAAE,gBAAgB,CAAC,8BAA8B,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/H,CAAC;AAED,SAAS,SAAS,CAAC,IAAgC,EAAE,OAAoB;IACvE,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACvE,IAAI,eAAqC,CAAC;IAC1C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/D,eAAe,GAAG,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC3F,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACxC,qBAAqB,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;;QACI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;IACrF,IAAI,IAAI,EAAE,CAAC;QACT,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,eAAe;YAAE,gBAAgB,CAAC,+BAA+B,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3G,CAAC;IACD,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACjE,IAAI,aAAa,IAAI,mBAAmB,CAAC,aAAa,CAAC,KAAK,SAAS,IAAI,mBAAmB,CAAC,aAAa,CAAE,GAAG,CAAC,EAAE,CAAC;QACjH,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,0CAA0C;YACnD,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,2FAA2F;YACjG,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAgC,EAAE,GAAW,EAAE,KAAa,EAAE,OAAoB;IAC/G,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,QAAQ;QAAE,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAgC,EAAE,GAAW,EAAE,KAAa,EAAE,OAAoB;IAC1G,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;IAC/B,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;AACpF,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,EAAiD,EAAE,OAAoB;IACjH,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;IACzE,aAAa,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAmB,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,uBAAuB,CAAC,GAA+B,EAAE,OAAoB;IACpF,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACrE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;IACzE,aAAa,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,cAAc,CAAC,SAAqB,EAAE,OAAoB;IACjE,KAAK,MAAM,QAAQ,IAAI,SAAS;QAAE,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,aAAa,CAAC,QAAkB,EAAE,OAAoB;IAC7D,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACjG,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QACvB,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,2CAA2C,KAAK,GAAG;QAC7E,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,sJAAsJ;QAC5J,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,SAAqB,EAAE,OAAoB;IAClF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO;IACjC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/E,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,gDAAgD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;YACnM,SAAS;QACX,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;gBACzG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,qBAAqB,CAAC,CAAC,CAAC;YAClH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa,EAAE,IAAa,EAAE,IAAa,EAAE,OAAoB;IAC9F,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,sBAAsB,CAAC,SAAS,CAAC;QAAE,OAAO;IAC9C,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;QAAE,OAAO;IACxE,IAAI,SAAS,CAAC,qBAAqB,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1H,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,yCAAyC,CAAC,CAAC,CAAC;QACxG,OAAO;IACT,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5N,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAClF,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,mCAAmC,CAAC,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAa,EAAE,IAAa,EAAE,OAAuB;IACxE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,SAAS,CAAC,OAAO,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACzC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QACrE,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACpF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,yBAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACvH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAa,EAAE,IAAa,EAAE,OAAuB,EAAE,IAAkB;IACnG,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpB,IAAI,gBAAgB,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAClF,IAAI,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC3D,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxL,IAAI,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU;QAAE,OAAO,QAAQ,CAAC;IAC/D,IAAI,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY;QAAE,OAAO,QAAQ,CAAC;IACjE,IAAI,SAAS,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5D,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,CAAC;IACD,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IAChE,IAAI,SAAS,CAAC,sBAAsB,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,mBAAmB,CAAC;IAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,SAAS,CAAC,WAAW,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC;IACrC,IAAI,UAAU,IAAI,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IACtE,IAAI,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC3G,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClI,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/E,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC1D,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QACrE,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACpF,IAAI,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM;YAAE,OAAO,WAAW,QAAQ,CAAC,IAAI,GAAG,CAAC;QAC/E,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,yBAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACvH,IAAI,KAAK;YAAE,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,IAAa,EAAE,IAAa,EAAE,OAAuB;IACvE,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC7C,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,EAAE,YAAY,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACxF,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IACpD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IACrG,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAa;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IACpD,OAAO,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,YAAY,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAiB;IAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,oEAAoE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChM,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAiD;IAC1E,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAChF,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IACrD,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,IAAI,KAAK,EAAE,IAAI,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO;QAChD,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACf,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAyB;IAClD,IAAI,OAAO,GAAG,UAAU,CAAC;IACzB,OAAO,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC;QAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAC3E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAyB;IACpD,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5D,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;IAC1I,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,IAAuB,EAAE,KAAa,EAAE,KAAa,EAAE,OAAoB;IAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC;QAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/G,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,MAAkC,EAAE,GAAW,EAAE,KAAa,EAAE,OAAoB;IAC1G,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/D,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC;QACjF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC;QAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/H,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAkC,EAAE,GAAW;IAC1E,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YAAE,SAAS;QACjD,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,WAAW,CAAC;IACvE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,IAAqB;IACzC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IACrG,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAkC,EAAE,GAAW;IAC5E,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrD,OAAO,WAAW,IAAI,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAyB;IACpD,IAAI,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC;QAAE,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACtF,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,UAAU,CAAC,QAAQ,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU;YAAE,OAAO,CAAC,KAAK,CAAC;QACpE,IAAI,UAAU,CAAC,QAAQ,KAAK,EAAE,CAAC,UAAU,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,IAAuB,EAAE,OAAuB;IACvE,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3E,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,sBAAsB,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAa;IAC3C,IAAI,IAAI,CAAC,qBAAqB,EAAE;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzG,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,UAAU,CAAC,MAA6B;IAC/C,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAE,MAA4B,CAAC,IAAI,CAAC;AACtG,CAAC;AAED,SAAS,cAAc,CAAC,IAAuB,EAAE,IAAY;IAC3D,OAAO,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAC9F,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAuB,EAAE,OAAuB,EAAE,WAAmB;IACpG,IAAI,OAAO,OAAO,CAAC,oBAAoB,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACrE,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IACpE,OAAO,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACnI,CAAC;AAED,SAAS,iBAAiB,CAAC,MAA6B;IACtD,OAAO,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1G,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACnC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,OAAO,iEAAiE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACnC,OAAO,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;WAC1B,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;WAC7B,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;WAC9B,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa,EAAE,IAAa;IAC5D,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,4BAA4B,KAAK,GAAG;QAC7C,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,+HAA+H;QACrI,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa,EAAE,IAAa,EAAE,MAAc;IACzE,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,GAAG,KAAK,qBAAqB,MAAM,GAAG;QAC/C,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,wGAAwG;QAC9G,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACrF,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC;QACvB,MAAM,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DiagnosticIR } from "@acpus/core/ir";
|
|
2
|
+
export type WorkflowCheckResult = {
|
|
3
|
+
diagnostics: DiagnosticIR[];
|
|
4
|
+
};
|
|
5
|
+
export declare function checkWorkflow(entry: string, cwd: string, scratchDir: string): Promise<WorkflowCheckResult>;
|
|
6
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/check/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,YAAY,EAAE,CAAC;CAC7B,CAAC;AAEF,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgBhH"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { analyzeWorkflowTasks } from "../task-analysis/index.js";
|
|
3
|
+
import { checkWorkflowAuthoring } from "./authoring-rules/index.js";
|
|
4
|
+
import { checkTypeScript } from "./typescript.js";
|
|
5
|
+
export async function checkWorkflow(entry, cwd, scratchDir) {
|
|
6
|
+
let source;
|
|
7
|
+
try {
|
|
8
|
+
source = await readFile(entry, "utf8");
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
return { diagnostics: [workflowReadDiagnostic(entry, error)] };
|
|
12
|
+
}
|
|
13
|
+
const tsCheck = await checkTypeScript(entry, cwd, scratchDir);
|
|
14
|
+
const taskAnalysis = await analyzeWorkflowTasks(entry, source);
|
|
15
|
+
// The check phase aggregates TypeScript compiler diagnostics with Acpus
|
|
16
|
+
// authoring-rule diagnostics. ESLint is not part of this runtime path.
|
|
17
|
+
const authoringDiagnostics = tsCheck.program && tsCheck.sourceFile
|
|
18
|
+
? checkWorkflowAuthoring({ program: tsCheck.program, sourceFile: tsCheck.sourceFile, taskAnalysis })
|
|
19
|
+
: [];
|
|
20
|
+
return { diagnostics: [...tsCheck.diagnostics, ...authoringDiagnostics] };
|
|
21
|
+
}
|
|
22
|
+
function workflowReadDiagnostic(entry, error) {
|
|
23
|
+
return {
|
|
24
|
+
code: "WF001",
|
|
25
|
+
severity: "error",
|
|
26
|
+
message: `Workflow source could not be read: ${error instanceof Error ? error.message : String(error)}`,
|
|
27
|
+
path: "workflow",
|
|
28
|
+
source: {
|
|
29
|
+
file: entry,
|
|
30
|
+
line: 1,
|
|
31
|
+
column: 1,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/check/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMlD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,GAAW,EAAE,UAAkB;IAChF,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,WAAW,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/D,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU;QAChE,CAAC,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC;QACpG,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,EAAE,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,oBAAoB,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa,EAAE,KAAc;IAC3D,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACvG,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE;YACN,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;SACV;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DiagnosticIR } from "@acpus/core/ir";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
export type TypeScriptCheck = {
|
|
4
|
+
diagnostics: DiagnosticIR[];
|
|
5
|
+
program?: ts.Program;
|
|
6
|
+
sourceFile?: ts.SourceFile;
|
|
7
|
+
};
|
|
8
|
+
export declare function checkTypeScript(entry: string, cwd: string, scratchDir: string): Promise<TypeScriptCheck>;
|
|
9
|
+
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/check/typescript.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC;CAC5B,CAAC;AAEF,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAyB9G"}
|