@flux-lang/core 0.1.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/dist/args.d.ts +18 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +60 -0
- package/dist/args.js.map +1 -0
- package/dist/ast.d.ts +194 -0
- package/dist/ast.d.ts.map +1 -0
- package/dist/ast.js +3 -0
- package/dist/ast.js.map +1 -0
- package/dist/bin/flux.d.ts +2 -0
- package/dist/bin/flux.d.ts.map +1 -0
- package/dist/bin/flux.js +157 -0
- package/dist/bin/flux.js.map +1 -0
- package/dist/checks.d.ts +12 -0
- package/dist/checks.d.ts.map +1 -0
- package/dist/checks.js +98 -0
- package/dist/checks.js.map +1 -0
- package/dist/commands/check.d.ts +2 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +118 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/repl.d.ts +2 -0
- package/dist/commands/repl.d.ts.map +1 -0
- package/dist/commands/repl.js +37 -0
- package/dist/commands/repl.js.map +1 -0
- package/dist/fs-utils.d.ts +4 -0
- package/dist/fs-utils.d.ts.map +1 -0
- package/dist/fs-utils.js +34 -0
- package/dist/fs-utils.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/parse.d.ts +2 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +107 -0
- package/dist/parse.js.map +1 -0
- package/dist/parser.d.ts +3 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +1452 -0
- package/dist/parser.js.map +1 -0
- package/dist/runtime/kernel.d.ts +20 -0
- package/dist/runtime/kernel.d.ts.map +1 -0
- package/dist/runtime/kernel.js +356 -0
- package/dist/runtime/kernel.js.map +1 -0
- package/dist/runtime/model.d.ts +146 -0
- package/dist/runtime/model.d.ts.map +1 -0
- package/dist/runtime/model.js +3 -0
- package/dist/runtime/model.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// packages/cli/src/commands/check.ts
|
|
2
|
+
import { parseArgs } from "../args.js";
|
|
3
|
+
import { collectFluxFiles, readFileText } from "../fs-utils.js";
|
|
4
|
+
import { parseDocument } from "@flux-lang/core"; // adjust path if needed
|
|
5
|
+
export async function runCheckCommand(argv) {
|
|
6
|
+
const { flags, positional } = parseArgs(argv);
|
|
7
|
+
const options = {
|
|
8
|
+
quiet: Boolean(flags.q || flags.quiet),
|
|
9
|
+
json: Boolean(flags.json),
|
|
10
|
+
maxErrors: typeof flags["max-errors"] === "number" ? flags["max-errors"] : undefined,
|
|
11
|
+
recursive: !Boolean(flags["no-recursive"]),
|
|
12
|
+
stdin: Boolean(flags.stdin),
|
|
13
|
+
};
|
|
14
|
+
const diags = [];
|
|
15
|
+
if (options.stdin) {
|
|
16
|
+
const src = await readAllStdin();
|
|
17
|
+
collectDiagnostics("<stdin>", src, diags, options);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const roots = positional.length > 0 ? positional : ["."];
|
|
21
|
+
for (const root of roots) {
|
|
22
|
+
const files = collectFluxFiles(root, options.recursive);
|
|
23
|
+
for (const file of files) {
|
|
24
|
+
const src = readFileText(file);
|
|
25
|
+
collectDiagnostics(file, src, diags, options);
|
|
26
|
+
if (options.maxErrors && diags.length >= options.maxErrors) {
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (options.maxErrors && diags.length >= options.maxErrors) {
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (options.json) {
|
|
36
|
+
process.stdout.write(JSON.stringify(diags, null, 2) + "\n");
|
|
37
|
+
}
|
|
38
|
+
else if (!options.quiet) {
|
|
39
|
+
for (const d of diags) {
|
|
40
|
+
const loc = d.line != null && d.column != null ? `${d.file}:${d.line}:${d.column}` : d.file;
|
|
41
|
+
console.error(`${loc} [${d.severity.toUpperCase()} ${d.code}] ${d.message}`);
|
|
42
|
+
}
|
|
43
|
+
if (diags.length === 0) {
|
|
44
|
+
console.log("flux check: no issues found.");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (diags.some((d) => d.severity === "error")) {
|
|
48
|
+
process.exitCode = 1;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function readAllStdin() {
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
let data = "";
|
|
54
|
+
process.stdin.setEncoding("utf8");
|
|
55
|
+
process.stdin.on("data", (chunk) => (data += chunk));
|
|
56
|
+
process.stdin.on("end", () => resolve(data));
|
|
57
|
+
process.stdin.on("error", (err) => reject(err));
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function collectDiagnostics(file, src, diags, opts) {
|
|
61
|
+
try {
|
|
62
|
+
const doc = parseDocument(src);
|
|
63
|
+
// Minimal static checks, "as robust as possible for this spec" without overreaching.
|
|
64
|
+
// 1. meta.version should be "0.1.0"
|
|
65
|
+
if (!doc.meta?.version) {
|
|
66
|
+
diags.push({
|
|
67
|
+
file,
|
|
68
|
+
severity: "warning",
|
|
69
|
+
code: "W_META_VERSION_MISSING",
|
|
70
|
+
message: "meta.version is missing; expected '0.1.0' for v0.1 documents.",
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
else if (doc.meta.version !== "0.1.0") {
|
|
74
|
+
diags.push({
|
|
75
|
+
file,
|
|
76
|
+
severity: "warning",
|
|
77
|
+
code: "W_META_VERSION_MISMATCH",
|
|
78
|
+
message: `meta.version is '${doc.meta.version}', expected '0.1.0' for v0.1 documents.`,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// 2. docstep rules should have a docstep param if you want to enforce that.
|
|
82
|
+
const hasDocstepParam = doc.state.params?.some((p) => p.name === "docstep" && p.type === "int") ?? false;
|
|
83
|
+
const hasDocstepRules = doc.rules?.some((r) => r.mode === "docstep") ?? false;
|
|
84
|
+
if (hasDocstepRules && !hasDocstepParam) {
|
|
85
|
+
diags.push({
|
|
86
|
+
file,
|
|
87
|
+
severity: "warning",
|
|
88
|
+
code: "W_DOCSTEP_PARAM_MISSING",
|
|
89
|
+
message: "Document defines docstep rules but no 'docstep : int [...]' param was found in state.",
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
// (Many of the other invariants are already enforced at parse-time.)
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
const e = err;
|
|
96
|
+
const { line, column } = extractLocationFromMessage(e.message);
|
|
97
|
+
diags.push({
|
|
98
|
+
file,
|
|
99
|
+
line,
|
|
100
|
+
column,
|
|
101
|
+
severity: "error",
|
|
102
|
+
code: "E_PARSE",
|
|
103
|
+
message: e.message,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function extractLocationFromMessage(message) {
|
|
108
|
+
// Parser error format:
|
|
109
|
+
// "Parse error at 33:40 near '{': Expected expression"
|
|
110
|
+
const match = /at\s+(\d+):(\d+)/.exec(message);
|
|
111
|
+
if (!match)
|
|
112
|
+
return {};
|
|
113
|
+
return {
|
|
114
|
+
line: Number(match[1]),
|
|
115
|
+
column: Number(match[2]),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC,CAAC,wBAAwB;AAqBzE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc;IAClD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAiB;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;QACtC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACzB,SAAS,EAAE,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,YAAY,CAAY,CAAC,CAAC,CAAC,SAAS;QAChG,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC1C,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;KAC5B,CAAC;IAEF,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,MAAM,YAAY,EAAE,CAAC;QACjC,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACxD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC/B,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC9C,IAAI,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC3D,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC3D,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,GACP,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClF,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAY,EACZ,GAAW,EACX,KAAmB,EACnB,IAAkB;IAElB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAE/B,qFAAqF;QAErF,oCAAoC;QACpC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI;gBACJ,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,+DAA+D;aACzE,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI;gBACJ,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,oBAAoB,GAAG,CAAC,IAAI,CAAC,OAAO,yCAAyC;aACvF,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,MAAM,eAAe,GACnB,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC;QACnF,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,KAAK,CAAC;QAE9E,IAAI,eAAe,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI;gBACJ,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EACL,uFAAuF;aAC1F,CAAC,CAAC;QACL,CAAC;QAED,qEAAqE;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAY,CAAC;QACvB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAE/D,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,IAAI;YACJ,MAAM;YACN,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAe;IACjD,uBAAuB;IACvB,yDAAyD;IACzD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACzB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/commands/repl.ts"],"names":[],"mappings":"AAGA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B7C"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// packages/cli/src/commands/repl.ts
|
|
2
|
+
import { parseDocument } from "@flux-lang/core";
|
|
3
|
+
export async function runRepl() {
|
|
4
|
+
// For v0.1, this is a single-shot "paste and parse" mode.
|
|
5
|
+
// Later you can make it interactive line-by-line if you want.
|
|
6
|
+
const src = await readAllStdin();
|
|
7
|
+
if (!src.trim()) {
|
|
8
|
+
console.error("flux repl: no input received on stdin.");
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
const doc = parseDocument(src);
|
|
13
|
+
console.log("Parse succeeded.");
|
|
14
|
+
const title = doc.meta?.title ?? "<unnamed>";
|
|
15
|
+
const rules = doc.rules?.length ?? 0;
|
|
16
|
+
const grids = doc.grids?.length ?? 0;
|
|
17
|
+
console.log(` title : ${JSON.stringify(title)}`);
|
|
18
|
+
console.log(` grids : ${grids}`);
|
|
19
|
+
console.log(` rules : ${rules}`);
|
|
20
|
+
// Optional: pretty-print IR
|
|
21
|
+
console.log("\nIR:");
|
|
22
|
+
console.log(JSON.stringify(doc, null, 2));
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
console.error(`flux repl: parse error: ${err.message}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function readAllStdin() {
|
|
29
|
+
return new Promise((resolve, reject) => {
|
|
30
|
+
let data = "";
|
|
31
|
+
process.stdin.setEncoding("utf8");
|
|
32
|
+
process.stdin.on("data", (chunk) => (data += chunk));
|
|
33
|
+
process.stdin.on("end", () => resolve(data));
|
|
34
|
+
process.stdin.on("error", (err) => reject(err));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=repl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/commands/repl.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,0DAA0D;IAC1D,8DAA8D;IAC9D,MAAM,GAAG,GAAG,MAAM,YAAY,EAAE,CAAC;IAEjC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,WAAW,CAAC;QAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;QAElC,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,2BAA4B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAElE;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,UAAO,GACf,MAAM,EAAE,CAuBV"}
|
package/dist/fs-utils.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// packages/cli/src/fs-utils.ts
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
export function readFileText(filePath) {
|
|
5
|
+
return fs.readFileSync(filePath, "utf8");
|
|
6
|
+
}
|
|
7
|
+
export function writeFileText(filePath, text) {
|
|
8
|
+
fs.writeFileSync(filePath, text, "utf8");
|
|
9
|
+
}
|
|
10
|
+
export function collectFluxFiles(root, recursive = true) {
|
|
11
|
+
const result = [];
|
|
12
|
+
function walk(dir) {
|
|
13
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
14
|
+
for (const entry of entries) {
|
|
15
|
+
const full = path.join(dir, entry.name);
|
|
16
|
+
if (entry.isDirectory()) {
|
|
17
|
+
if (recursive)
|
|
18
|
+
walk(full);
|
|
19
|
+
}
|
|
20
|
+
else if (entry.isFile() && full.endsWith(".flux")) {
|
|
21
|
+
result.push(full);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const stat = fs.statSync(root);
|
|
26
|
+
if (stat.isDirectory()) {
|
|
27
|
+
walk(root);
|
|
28
|
+
}
|
|
29
|
+
else if (stat.isFile() && root.endsWith(".flux")) {
|
|
30
|
+
result.push(root);
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=fs-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAY;IAC1D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,SAAS,GAAG,IAAI;IAEhB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,SAAS,IAAI,CAAC,GAAW;QACvB,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,SAAS;oBAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from "./ast.js";
|
|
2
|
+
export { parseDocument } from "./parser.js";
|
|
3
|
+
export type { RuntimeState, GridRuntimeState, RuntimeCellState, NeighborRef, NeighborsNamespace, } from "./runtime/model.js";
|
|
4
|
+
export { initRuntimeState, runDocstepOnce, handleEvent } from "./runtime/kernel.js";
|
|
5
|
+
export { checkDocument } from "./checks.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AAGzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,YAAY,EACR,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,kBAAkB,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGpF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// packages/core/src/index.ts
|
|
2
|
+
// Public surface for @flux-lang/core
|
|
3
|
+
// AST / IR types
|
|
4
|
+
export * from "./ast.js";
|
|
5
|
+
// Parser
|
|
6
|
+
export { parseDocument } from "./parser.js";
|
|
7
|
+
// Runtime kernel entry points
|
|
8
|
+
export { initRuntimeState, runDocstepOnce, handleEvent } from "./runtime/kernel.js";
|
|
9
|
+
// Static checks
|
|
10
|
+
export { checkDocument } from "./checks.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,qCAAqC;AAErC,iBAAiB;AACjB,cAAc,UAAU,CAAC;AAEzB,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAW5C,8BAA8B;AAC9B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEpF,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/parse.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAoBA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DnE"}
|
package/dist/parse.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { parseArgs } from "../args.js";
|
|
3
|
+
import { readFileText, writeFileText } from "../fs-utils.js";
|
|
4
|
+
import { parseDocument } from "@flux-lang/core"; // adjust path if needed
|
|
5
|
+
export async function runParseCommand(argv) {
|
|
6
|
+
const { flags, positional } = parseArgs(argv);
|
|
7
|
+
const options = {
|
|
8
|
+
outputPath: flags.o ?? flags.output ?? undefined,
|
|
9
|
+
compact: Boolean(flags.compact),
|
|
10
|
+
ndjson: Boolean(flags.ndjson),
|
|
11
|
+
summary: Boolean(flags.summary),
|
|
12
|
+
stdin: Boolean(flags.stdin),
|
|
13
|
+
};
|
|
14
|
+
const outputs = [];
|
|
15
|
+
let hadError = false;
|
|
16
|
+
if (options.stdin) {
|
|
17
|
+
const src = await readAllStdin();
|
|
18
|
+
try {
|
|
19
|
+
const doc = parseDocument(src);
|
|
20
|
+
outputs.push({ file: "<stdin>", doc });
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
hadError = true;
|
|
24
|
+
printParseError("<stdin>", err);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
if (positional.length === 0) {
|
|
29
|
+
console.error("flux parse: expected at least one <file> or --stdin");
|
|
30
|
+
process.exitCode = 1;
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
for (const file of positional) {
|
|
34
|
+
let src;
|
|
35
|
+
try {
|
|
36
|
+
src = readFileText(file);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
hadError = true;
|
|
40
|
+
console.error(`flux parse: failed to read ${file}: ${err.message}`);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const doc = parseDocument(src);
|
|
45
|
+
outputs.push({ file: path.resolve(file), doc });
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
hadError = true;
|
|
49
|
+
printParseError(file, err);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (outputs.length > 0) {
|
|
54
|
+
const json = formatOutput(outputs, options);
|
|
55
|
+
if (options.outputPath) {
|
|
56
|
+
writeFileText(options.outputPath, json);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
process.stdout.write(json + "\n");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (hadError) {
|
|
63
|
+
process.exitCode = 1;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async function readAllStdin() {
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
let data = "";
|
|
69
|
+
process.stdin.setEncoding("utf8");
|
|
70
|
+
process.stdin.on("data", (chunk) => (data += chunk));
|
|
71
|
+
process.stdin.on("end", () => resolve(data));
|
|
72
|
+
process.stdin.on("error", (err) => reject(err));
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function printParseError(file, err) {
|
|
76
|
+
// Your parser errors already include line/column info in the message string.
|
|
77
|
+
console.error(`flux parse: ${file}: ${err.message}`);
|
|
78
|
+
}
|
|
79
|
+
function formatOutput(files, opts) {
|
|
80
|
+
if (opts.summary) {
|
|
81
|
+
return files.map((f) => summarizeDoc(f.file, f.doc)).join("\n\n");
|
|
82
|
+
}
|
|
83
|
+
if (files.length === 1 && !opts.ndjson) {
|
|
84
|
+
const doc = files[0].doc;
|
|
85
|
+
return JSON.stringify(doc, null, opts.compact ? 0 : 2);
|
|
86
|
+
}
|
|
87
|
+
// NDJSON
|
|
88
|
+
return files
|
|
89
|
+
.map((f) => JSON.stringify({ file: f.file, doc: f.doc }))
|
|
90
|
+
.join("\n");
|
|
91
|
+
}
|
|
92
|
+
function summarizeDoc(file, doc) {
|
|
93
|
+
const title = doc?.meta?.title ?? "<unnamed>";
|
|
94
|
+
const version = doc?.meta?.version ?? "<unknown>";
|
|
95
|
+
const params = doc?.state?.params?.length ?? 0;
|
|
96
|
+
const grids = doc?.grids?.length ?? 0;
|
|
97
|
+
const rules = doc?.rules?.length ?? 0;
|
|
98
|
+
return [
|
|
99
|
+
file,
|
|
100
|
+
` title : ${JSON.stringify(title)}`,
|
|
101
|
+
` version : ${version}`,
|
|
102
|
+
` params : ${params}`,
|
|
103
|
+
` grids : ${grids}`,
|
|
104
|
+
` rules : ${rules}`,
|
|
105
|
+
].join("\n");
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EA2Bf,MAAM,UAAU,CAAC;AAykDlB,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAK1D"}
|