@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,86 @@
|
|
|
1
|
+
import { writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { officialAuthoringTypeScriptPaths } from "@acpus/loader";
|
|
5
|
+
import ts from "typescript";
|
|
6
|
+
export async function checkTypeScript(entry, cwd, scratchDir) {
|
|
7
|
+
const tsconfig = await writeTypecheckConfig(entry, cwd, scratchDir);
|
|
8
|
+
const config = ts.readConfigFile(tsconfig, ts.sys.readFile);
|
|
9
|
+
if (config.error)
|
|
10
|
+
return { diagnostics: [toDiagnosticIR(config.error)] };
|
|
11
|
+
const parsed = ts.parseJsonConfigFileContent(config.config, ts.sys, dirname(tsconfig), undefined, tsconfig);
|
|
12
|
+
const programOptions = {
|
|
13
|
+
rootNames: parsed.fileNames,
|
|
14
|
+
options: parsed.options,
|
|
15
|
+
};
|
|
16
|
+
if (parsed.projectReferences)
|
|
17
|
+
programOptions.projectReferences = parsed.projectReferences;
|
|
18
|
+
const program = ts.createProgram(programOptions);
|
|
19
|
+
const diagnostics = [
|
|
20
|
+
...parsed.errors,
|
|
21
|
+
...program.getConfigFileParsingDiagnostics(),
|
|
22
|
+
...program.getOptionsDiagnostics(),
|
|
23
|
+
...program.getGlobalDiagnostics(),
|
|
24
|
+
...program.getSyntacticDiagnostics(),
|
|
25
|
+
...program.getSemanticDiagnostics(),
|
|
26
|
+
].map(toDiagnosticIR);
|
|
27
|
+
const result = { diagnostics, program };
|
|
28
|
+
const sourceFile = program.getSourceFile(entry);
|
|
29
|
+
if (sourceFile)
|
|
30
|
+
result.sourceFile = sourceFile;
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
function toDiagnosticIR(diagnostic) {
|
|
34
|
+
const result = {
|
|
35
|
+
code: `TS${diagnostic.code}`,
|
|
36
|
+
severity: diagnostic.category === ts.DiagnosticCategory.Warning ? "warning" : "error",
|
|
37
|
+
message: ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"),
|
|
38
|
+
};
|
|
39
|
+
if (diagnostic.file && diagnostic.start !== undefined)
|
|
40
|
+
result.source = sourceLocation(diagnostic.file, diagnostic.start);
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
function sourceLocation(file, start) {
|
|
44
|
+
const position = file.getLineAndCharacterOfPosition(start);
|
|
45
|
+
return {
|
|
46
|
+
file: file.fileName,
|
|
47
|
+
line: position.line + 1,
|
|
48
|
+
column: position.character + 1,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
async function writeTypecheckConfig(entry, cwd, scratchDir) {
|
|
52
|
+
const configPath = join(scratchDir, "tsconfig.acpus-run.json");
|
|
53
|
+
const compilerOptions = {
|
|
54
|
+
target: "ES2022",
|
|
55
|
+
lib: ["ES2022"],
|
|
56
|
+
module: "NodeNext",
|
|
57
|
+
moduleResolution: "NodeNext",
|
|
58
|
+
strict: true,
|
|
59
|
+
esModuleInterop: true,
|
|
60
|
+
noImplicitAny: true,
|
|
61
|
+
forceConsistentCasingInFileNames: true,
|
|
62
|
+
skipLibCheck: true,
|
|
63
|
+
noEmit: true,
|
|
64
|
+
types: ["node"],
|
|
65
|
+
typeRoots: typeRoots(cwd),
|
|
66
|
+
tsBuildInfoFile: join(scratchDir, ".tsbuildinfo"),
|
|
67
|
+
};
|
|
68
|
+
const officialImports = officialAuthoringTypeScriptPaths(scratchDir);
|
|
69
|
+
compilerOptions.paths = officialImports.paths;
|
|
70
|
+
if (officialImports.usesSource)
|
|
71
|
+
compilerOptions.customConditions = ["development"];
|
|
72
|
+
const config = { compilerOptions, files: [entry] };
|
|
73
|
+
await writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`);
|
|
74
|
+
return configPath;
|
|
75
|
+
}
|
|
76
|
+
function typeRoots(cwd) {
|
|
77
|
+
const roots = [join(cwd, "node_modules/@types")];
|
|
78
|
+
try {
|
|
79
|
+
roots.push(dirname(dirname(fileURLToPath(import.meta.resolve("@types/node/package.json")))));
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// If node types are unavailable, let TypeScript report its normal diagnostic.
|
|
83
|
+
}
|
|
84
|
+
return [...new Set(roots)];
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=typescript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/check/typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-worker.d.ts","sourceRoot":"","sources":["../../src/compiler/compile-worker.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { writeFile } from "node:fs/promises";
|
|
2
|
+
import { tryCompileWorkflowModule } from "./module.js";
|
|
3
|
+
const [entry, sourcePath, out, cwd] = process.argv.slice(2);
|
|
4
|
+
if (!entry || !sourcePath || !out || !cwd) {
|
|
5
|
+
console.error("Usage: compile-worker <entry> <sourcePath> <out> <cwd>");
|
|
6
|
+
process.exit(2);
|
|
7
|
+
}
|
|
8
|
+
try {
|
|
9
|
+
const result = await tryCompileWorkflowModule(entry, {
|
|
10
|
+
sourcePath,
|
|
11
|
+
cwd,
|
|
12
|
+
});
|
|
13
|
+
if (result.isErr()) {
|
|
14
|
+
await writeFile(out, `${JSON.stringify({
|
|
15
|
+
ok: false,
|
|
16
|
+
type: result.error.type,
|
|
17
|
+
message: result.error.message,
|
|
18
|
+
}, null, 2)}\n`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const ir = result.value;
|
|
22
|
+
await writeFile(out, `${JSON.stringify(ir, null, 2)}\n`);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
await writeFile(out, `${JSON.stringify({
|
|
26
|
+
ok: false,
|
|
27
|
+
type: "worker-system-failed",
|
|
28
|
+
message: error instanceof Error ? error.message : String(error),
|
|
29
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
30
|
+
}, null, 2)}\n`);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=compile-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-worker.js","sourceRoot":"","sources":["../../src/compiler/compile-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE5D,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;IACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,KAAK,EAAE;QACnD,UAAU;QACV,GAAG;KACJ,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YACrC,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;YACvB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;SAC9B,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IACxB,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KACxD,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir-walk.d.ts","sourceRoot":"","sources":["../../src/compiler/ir-walk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1D,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAuBvF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function forEachTaskNode(scope, visit) {
|
|
2
|
+
for (const node of scope.nodes) {
|
|
3
|
+
switch (node.kind) {
|
|
4
|
+
case "task":
|
|
5
|
+
visit(node);
|
|
6
|
+
break;
|
|
7
|
+
case "if":
|
|
8
|
+
forEachTaskNode(node.then, visit);
|
|
9
|
+
if (node.else)
|
|
10
|
+
forEachTaskNode(node.else, visit);
|
|
11
|
+
break;
|
|
12
|
+
case "switch":
|
|
13
|
+
for (const c of node.cases)
|
|
14
|
+
forEachTaskNode(c.then, visit);
|
|
15
|
+
if (node.default)
|
|
16
|
+
forEachTaskNode(node.default, visit);
|
|
17
|
+
break;
|
|
18
|
+
case "parallel":
|
|
19
|
+
for (const branch of Object.values(node.branches))
|
|
20
|
+
forEachTaskNode(branch.scope, visit);
|
|
21
|
+
break;
|
|
22
|
+
case "fanout":
|
|
23
|
+
case "loop":
|
|
24
|
+
forEachTaskNode(node.do, visit);
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=ir-walk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir-walk.js","sourceRoot":"","sources":["../../src/compiler/ir-walk.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,KAAiC;IAC/E,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,KAAK,CAAC,IAAI,CAAC,CAAC;gBACZ,MAAM;YACR,KAAK,IAAI;gBACP,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAClC,IAAI,IAAI,CAAC,IAAI;oBAAE,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,QAAQ;gBACX,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK;oBAAE,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC3D,IAAI,IAAI,CAAC,OAAO;oBAAE,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACvD,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAAE,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACxF,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM;gBACT,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAChC,MAAM;QACV,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type WorkflowIR } from "@acpus/core/ir";
|
|
2
|
+
import { ResultAsync } from "neverthrow";
|
|
3
|
+
export type CompileOptions = {
|
|
4
|
+
sourcePath?: string;
|
|
5
|
+
cwd?: string;
|
|
6
|
+
};
|
|
7
|
+
export type CompileWorkflowModuleError = {
|
|
8
|
+
type: "workflow-source-read-failed";
|
|
9
|
+
entry: string;
|
|
10
|
+
message: string;
|
|
11
|
+
} | {
|
|
12
|
+
type: "module-import-failed";
|
|
13
|
+
entry: string;
|
|
14
|
+
message: string;
|
|
15
|
+
} | {
|
|
16
|
+
type: "invalid-default-export";
|
|
17
|
+
entry: string;
|
|
18
|
+
message: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: "workflow-build-failed";
|
|
21
|
+
entry: string;
|
|
22
|
+
message: string;
|
|
23
|
+
} | {
|
|
24
|
+
type: "task-analysis-failed";
|
|
25
|
+
entry: string;
|
|
26
|
+
message: string;
|
|
27
|
+
} | {
|
|
28
|
+
type: "workflow-outside-workspace";
|
|
29
|
+
workflowFile: string;
|
|
30
|
+
cwd: string;
|
|
31
|
+
message: string;
|
|
32
|
+
};
|
|
33
|
+
export declare function compileWorkflowModule(entry: string, options?: CompileOptions): Promise<WorkflowIR>;
|
|
34
|
+
export declare function tryCompileWorkflowModule(entry: string, options?: CompileOptions): ResultAsync<WorkflowIR, CompileWorkflowModuleError>;
|
|
35
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/compiler/module.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAmB,WAAW,EAAmC,MAAM,YAAY,CAAC;AAG3F,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAClC;IAAE,IAAI,EAAE,6BAA6B,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,4BAA4B,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/F,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAQ5G;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,WAAW,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAqDzI"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { resolve, relative } from "node:path";
|
|
4
|
+
import { pathToFileURL } from "node:url";
|
|
5
|
+
import { importAuthoringModule } from "@acpus/loader";
|
|
6
|
+
import { compileWorkflowDefinition, isWorkflowDefinition } from "@acpus/core/workflow";
|
|
7
|
+
import { validateWorkflowIR } from "@acpus/core/ir";
|
|
8
|
+
import { analyzeWorkflowTasks, resolveTaskReferenceMetadata } from "../task-analysis/index.js";
|
|
9
|
+
import { err, ok, Result, ResultAsync } from "neverthrow";
|
|
10
|
+
import { forEachTaskNode } from "./ir-walk.js";
|
|
11
|
+
export async function compileWorkflowModule(entry, options = {}) {
|
|
12
|
+
const result = await tryCompileWorkflowModule(entry, options);
|
|
13
|
+
return result.match(ir => ir, error => {
|
|
14
|
+
throw new Error(error.message);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export function tryCompileWorkflowModule(entry, options = {}) {
|
|
18
|
+
const absolute = resolve(entry);
|
|
19
|
+
return ResultAsync.fromPromise(readFile(absolute, "utf8"), cause => ({
|
|
20
|
+
type: "workflow-source-read-failed",
|
|
21
|
+
entry,
|
|
22
|
+
message: `Workflow source '${entry}' could not be read: ${causeMessage(cause)}`,
|
|
23
|
+
})).andThen(source => ResultAsync.fromPromise(importWorkflowModule(absolute), cause => ({
|
|
24
|
+
type: "module-import-failed",
|
|
25
|
+
entry,
|
|
26
|
+
message: `Workflow module '${entry}' could not be imported: ${causeMessage(cause)}`,
|
|
27
|
+
})).andThen(mod => {
|
|
28
|
+
const def = mod.default;
|
|
29
|
+
if (!isWorkflowDefinition(def)) {
|
|
30
|
+
return err({
|
|
31
|
+
type: "invalid-default-export",
|
|
32
|
+
entry,
|
|
33
|
+
message: `Default export of ${entry} is not an Acpus workflow definition.`,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const built = Result.fromThrowable(() => {
|
|
37
|
+
const ir = compileWorkflowDefinition(def, { source: options.sourcePath ?? entry, validate: false });
|
|
38
|
+
ir.lock.workflowSourceDigest = `sha256:${createHash("sha256").update(source).digest("hex")}`;
|
|
39
|
+
return ir;
|
|
40
|
+
}, cause => ({
|
|
41
|
+
type: "workflow-build-failed",
|
|
42
|
+
entry,
|
|
43
|
+
message: `Workflow '${entry}' could not be lowered: ${causeMessage(cause)}`,
|
|
44
|
+
}))();
|
|
45
|
+
if (built.isErr())
|
|
46
|
+
return err(built.error);
|
|
47
|
+
const ir = built.value;
|
|
48
|
+
return ResultAsync.fromPromise(analyzeWorkflowTasks(absolute, source), cause => ({
|
|
49
|
+
type: "task-analysis-failed",
|
|
50
|
+
entry,
|
|
51
|
+
message: `Workflow task analysis failed for '${entry}': ${causeMessage(cause)}`,
|
|
52
|
+
})).andThen(analysis => {
|
|
53
|
+
const referrerPath = toContainedWorkspacePath(options.cwd ?? process.cwd(), absolute);
|
|
54
|
+
if (referrerPath.isErr())
|
|
55
|
+
return err(referrerPath.error);
|
|
56
|
+
applyTaskReferenceMetadata(ir, resolveTaskReferenceMetadata(analysis), referrerPath.value);
|
|
57
|
+
ir.diagnostics.push(...validateWorkflowIR(ir));
|
|
58
|
+
return ok(ir);
|
|
59
|
+
});
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
function importWorkflowModule(absolute) {
|
|
63
|
+
const url = pathToFileURL(absolute).href;
|
|
64
|
+
return importAuthoringModule(url, { parentURL: url });
|
|
65
|
+
}
|
|
66
|
+
function applyTaskReferenceMetadata(ir, metadata, referrerPath) {
|
|
67
|
+
forEachTaskNode(ir.root, node => {
|
|
68
|
+
if (node.run.target.kind !== "module")
|
|
69
|
+
return;
|
|
70
|
+
const task = metadata.get(node.id);
|
|
71
|
+
if (!task?.specifier || !task.exportName)
|
|
72
|
+
return;
|
|
73
|
+
node.run.target = {
|
|
74
|
+
kind: "module",
|
|
75
|
+
runtime: "node",
|
|
76
|
+
specifier: task.specifier,
|
|
77
|
+
exportName: task.exportName,
|
|
78
|
+
referrer: { kind: "workflow", path: referrerPath },
|
|
79
|
+
};
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function toContainedWorkspacePath(cwd, workflowFile) {
|
|
83
|
+
const path = relative(cwd, workflowFile);
|
|
84
|
+
if (path.startsWith("..") || path === "" || path.split(/[\\/]/).includes("..")) {
|
|
85
|
+
return err({
|
|
86
|
+
type: "workflow-outside-workspace",
|
|
87
|
+
workflowFile,
|
|
88
|
+
cwd,
|
|
89
|
+
message: `Workflow file '${workflowFile}' must be inside workspace '${cwd}'.`,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return ok(toWorkspacePath(path));
|
|
93
|
+
}
|
|
94
|
+
function toWorkspacePath(path) {
|
|
95
|
+
return path.split(/[\\/]/).join("/");
|
|
96
|
+
}
|
|
97
|
+
function causeMessage(cause) {
|
|
98
|
+
return cause instanceof Error ? cause.message : String(cause);
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/compiler/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ProcessResult = {
|
|
2
|
+
exitCode: number | null;
|
|
3
|
+
stdout: string;
|
|
4
|
+
stderr: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function runProcess(command: string, args: string[], options?: {
|
|
7
|
+
cwd?: string;
|
|
8
|
+
}): Promise<ProcessResult>;
|
|
9
|
+
//# sourceMappingURL=process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/compiler/process.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAkBxH"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
export async function runProcess(command, args, options = {}) {
|
|
3
|
+
return new Promise(resolveProcess => {
|
|
4
|
+
const child = spawn(command, args, { cwd: options.cwd, stdio: ["ignore", "pipe", "pipe"] });
|
|
5
|
+
const stdout = [];
|
|
6
|
+
const stderr = [];
|
|
7
|
+
child.stdout.on("data", chunk => stdout.push(Buffer.from(chunk)));
|
|
8
|
+
child.stderr.on("data", chunk => stderr.push(Buffer.from(chunk)));
|
|
9
|
+
child.on("close", exitCode => resolveProcess({
|
|
10
|
+
exitCode,
|
|
11
|
+
stdout: Buffer.concat(stdout).toString("utf8"),
|
|
12
|
+
stderr: Buffer.concat(stderr).toString("utf8"),
|
|
13
|
+
}));
|
|
14
|
+
child.on("error", error => resolveProcess({
|
|
15
|
+
exitCode: null,
|
|
16
|
+
stdout: "",
|
|
17
|
+
stderr: error.message,
|
|
18
|
+
}));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/compiler/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAQ3C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,IAAc,EAAE,UAA4B,EAAE;IAC9F,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC;YAC3C,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC/C,CAAC,CAAC,CAAC;QACJ,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC;YACxC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,KAAK,CAAC,OAAO;SACtB,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { WorkflowIR } from "@acpus/core/ir";
|
|
2
|
+
export type CompileWorkerResult = {
|
|
3
|
+
ok: true;
|
|
4
|
+
ir: WorkflowIR;
|
|
5
|
+
} | {
|
|
6
|
+
ok: false;
|
|
7
|
+
type: string;
|
|
8
|
+
message: string;
|
|
9
|
+
stack?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function compileWorkflow(entry: string, cwd: string, scratchDir: string): Promise<CompileWorkerResult>;
|
|
12
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/compiler/worker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,UAAU,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoBlH"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { runProcess } from "./process.js";
|
|
5
|
+
export async function compileWorkflow(entry, cwd, scratchDir) {
|
|
6
|
+
const out = join(scratchDir, "workflow-ir.json");
|
|
7
|
+
const isSourceWorker = import.meta.url.endsWith(".ts");
|
|
8
|
+
const worker = fileURLToPath(new URL(isSourceWorker ? "./compile-worker.ts" : "./compile-worker.js", import.meta.url));
|
|
9
|
+
const args = [worker, entry, entry, out, cwd];
|
|
10
|
+
if (isSourceWorker) {
|
|
11
|
+
args.unshift("--import", await import.meta.resolve("tsx"));
|
|
12
|
+
// Workspace development should compile workflows against live core source.
|
|
13
|
+
// Published installs must omit this condition and resolve normal package dist.
|
|
14
|
+
args.unshift("--conditions=development");
|
|
15
|
+
}
|
|
16
|
+
const result = await runProcess(process.execPath, args);
|
|
17
|
+
if (result.exitCode !== 0) {
|
|
18
|
+
const payload = await readWorkerResult(out);
|
|
19
|
+
if (payload && !payload.ok)
|
|
20
|
+
return payload;
|
|
21
|
+
const message = [result.stderr, result.stdout].filter(Boolean).join("\n").trim() || "Workflow compile failed.";
|
|
22
|
+
return { ok: false, type: "compile-worker-failed", message };
|
|
23
|
+
}
|
|
24
|
+
const raw = await readFile(out, "utf8");
|
|
25
|
+
return { ok: true, ir: JSON.parse(raw) };
|
|
26
|
+
}
|
|
27
|
+
async function readWorkerResult(path) {
|
|
28
|
+
try {
|
|
29
|
+
return JSON.parse(await readFile(path, "utf8"));
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/compiler/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAa,EAAE,GAAW,EAAE,UAAkB;IAClF,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvH,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,2EAA2E;QAC3E,+EAA+E;QAC/E,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,OAAO,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,0BAA0B,CAAC;QAC/G,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,CAAC;IAC/D,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,EAAE,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAwB,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { compileWorkflowModule, tryCompileWorkflowModule, type CompileOptions, type CompileWorkflowModuleError, } from "./compiler/module.js";
|
|
2
|
+
export { prepareWorkflow, tryPrepareWorkflow, type PreparedWorkflow, type WorkflowPreparationLock, type WorkflowPreparationOptions, WorkflowPreparationError, type WorkflowPreparationFailure, } from "./preflight/index.js";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,cAAc,EACnB,KAAK,0BAA0B,GAChC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,wBAAwB,EACxB,KAAK,0BAA0B,GAChC,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GAGzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,kBAAkB,EAIlB,wBAAwB,GAEzB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/internal/eslint-plugin/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAqD3C,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAEjD,CAAC;AAEF,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,MAKpB,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { checkWorkflowAuthoring } from "../../check/authoring-rules/index.js";
|
|
3
|
+
import { analyzeWorkflowTasksSync } from "../../task-analysis/index.js";
|
|
4
|
+
const checkRule = {
|
|
5
|
+
meta: {
|
|
6
|
+
type: "problem",
|
|
7
|
+
docs: {
|
|
8
|
+
description: "Run internal Acpus authoring checks for workflow fixtures.",
|
|
9
|
+
},
|
|
10
|
+
schema: [],
|
|
11
|
+
},
|
|
12
|
+
create(context) {
|
|
13
|
+
return {
|
|
14
|
+
"Program:exit"(node) {
|
|
15
|
+
const sourceCode = context.sourceCode;
|
|
16
|
+
const services = parserServices(context);
|
|
17
|
+
const program = services?.program;
|
|
18
|
+
const sourceFile = sourceFileForNode(node, services) ?? program?.getSourceFile(context.filename);
|
|
19
|
+
if (!program || !sourceFile) {
|
|
20
|
+
context.report({
|
|
21
|
+
loc: { line: 1, column: 0 },
|
|
22
|
+
message: "Acpus internal check requires @typescript-eslint/parser with typed parser services. Configure parserOptions.project for workflow fixtures.",
|
|
23
|
+
});
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const diagnostics = checkWorkflowAuthoring({
|
|
27
|
+
program,
|
|
28
|
+
sourceFile,
|
|
29
|
+
taskAnalysis: analyzeWorkflowTasksSync(sourceFile.fileName, sourceCode.text),
|
|
30
|
+
});
|
|
31
|
+
for (const diagnostic of diagnostics) {
|
|
32
|
+
context.report({
|
|
33
|
+
loc: reportLocation(diagnostic),
|
|
34
|
+
message: reportMessage(diagnostic),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
export const rules = {
|
|
42
|
+
check: checkRule,
|
|
43
|
+
};
|
|
44
|
+
const plugin = {
|
|
45
|
+
meta: {
|
|
46
|
+
name: "@acpus/workflow-compiler/internal/eslint-plugin",
|
|
47
|
+
},
|
|
48
|
+
rules,
|
|
49
|
+
};
|
|
50
|
+
export default plugin;
|
|
51
|
+
function parserServices(context) {
|
|
52
|
+
const sourceCode = context.sourceCode;
|
|
53
|
+
return sourceCode.parserServices
|
|
54
|
+
?? context.parserServices;
|
|
55
|
+
}
|
|
56
|
+
function sourceFileForNode(node, services) {
|
|
57
|
+
const tsNode = services?.esTreeNodeToTSNodeMap?.get(node);
|
|
58
|
+
return tsNode?.getSourceFile();
|
|
59
|
+
}
|
|
60
|
+
function reportMessage(diagnostic) {
|
|
61
|
+
return `${diagnostic.code}: ${diagnostic.message}${diagnostic.hint ? `\nHint: ${diagnostic.hint}` : ""}`;
|
|
62
|
+
}
|
|
63
|
+
function reportLocation(diagnostic) {
|
|
64
|
+
if (!diagnostic.source)
|
|
65
|
+
return { line: 1, column: 0 };
|
|
66
|
+
return {
|
|
67
|
+
line: diagnostic.source.line ?? 1,
|
|
68
|
+
column: Math.max(0, (diagnostic.source.column ?? 1) - 1),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/eslint-plugin/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { WorkflowIR } from "@acpus/core/ir";
|
|
2
|
+
import { ResultAsync } from "neverthrow";
|
|
3
|
+
export type WorkflowPreparationOptions = {
|
|
4
|
+
workflow: string;
|
|
5
|
+
cwd: string;
|
|
6
|
+
};
|
|
7
|
+
export type WorkflowPreparationLock = {
|
|
8
|
+
kind: "acpus_workflow_preparation_lock";
|
|
9
|
+
version: 1;
|
|
10
|
+
workflow: {
|
|
11
|
+
entry: string;
|
|
12
|
+
sourceDigest?: string;
|
|
13
|
+
};
|
|
14
|
+
ir: {
|
|
15
|
+
path: "workflow.ir.json";
|
|
16
|
+
digest: string;
|
|
17
|
+
};
|
|
18
|
+
packageLockDigest?: string;
|
|
19
|
+
sourceGraphDigest: string;
|
|
20
|
+
generatedAt: string;
|
|
21
|
+
};
|
|
22
|
+
export type PreparedWorkflow = {
|
|
23
|
+
workflowPath: string;
|
|
24
|
+
ir: WorkflowIR;
|
|
25
|
+
irJson: string;
|
|
26
|
+
irDigest: string;
|
|
27
|
+
sourceGraphDigest: string;
|
|
28
|
+
packageLockDigest?: string;
|
|
29
|
+
lock: WorkflowPreparationLock;
|
|
30
|
+
};
|
|
31
|
+
export type WorkflowPreparationFailure = {
|
|
32
|
+
type: "check-failed";
|
|
33
|
+
phase: "check";
|
|
34
|
+
message: string;
|
|
35
|
+
diagnostics: WorkflowIR["diagnostics"];
|
|
36
|
+
} | {
|
|
37
|
+
type: "compile-failed";
|
|
38
|
+
phase: "compile";
|
|
39
|
+
message: string;
|
|
40
|
+
} | {
|
|
41
|
+
type: "validate-failed";
|
|
42
|
+
phase: "validate";
|
|
43
|
+
message: string;
|
|
44
|
+
diagnostics: WorkflowIR["diagnostics"];
|
|
45
|
+
ir: WorkflowIR;
|
|
46
|
+
};
|
|
47
|
+
export declare class WorkflowPreparationError extends Error {
|
|
48
|
+
readonly failure: WorkflowPreparationFailure;
|
|
49
|
+
constructor(failure: WorkflowPreparationFailure);
|
|
50
|
+
}
|
|
51
|
+
export declare function prepareWorkflow(options: WorkflowPreparationOptions): Promise<PreparedWorkflow>;
|
|
52
|
+
export declare function tryPrepareWorkflow(options: WorkflowPreparationOptions): ResultAsync<PreparedWorkflow, WorkflowPreparationFailure>;
|
|
53
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/preflight/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIjD,OAAO,EAAW,WAAW,EAAe,MAAM,YAAY,CAAC;AAE/D,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,iCAAiC,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,EAAE,EAAE;QACF,IAAI,EAAE,kBAAkB,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,uBAAuB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAClC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;CAAE,GACjG;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IAAC,EAAE,EAAE,UAAU,CAAA;CAAE,CAAC;AAE5H,qBAAa,wBAAyB,SAAQ,KAAK;IACrC,QAAQ,CAAC,OAAO,EAAE,0BAA0B;gBAAnC,OAAO,EAAE,0BAA0B;CAGzD;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAQpG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,0BAA0B,GAAG,WAAW,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAUjI"}
|