@flux-lang/core 0.1.4 → 0.1.6-canary.18d439adc
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/README.md +20 -9
- package/dist/ast.d.ts +149 -10
- package/dist/ast.d.ts.map +1 -1
- package/dist/checks.d.ts.map +1 -1
- package/dist/checks.js +184 -2
- package/dist/checks.js.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +28 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +40 -0
- package/dist/layout.js.map +1 -0
- package/dist/parser.d.ts +9 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +939 -29
- package/dist/parser.js.map +1 -1
- package/dist/render.d.ts +174 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +1968 -0
- package/dist/render.js.map +1 -0
- package/dist/runtime/kernel.js +2 -0
- package/dist/runtime/kernel.js.map +1 -1
- package/dist/runtime.d.ts +91 -59
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +103 -372
- package/dist/runtime.js.map +1 -1
- package/dist/transform.d.ts +22 -0
- package/dist/transform.d.ts.map +1 -0
- package/dist/transform.js +383 -0
- package/dist/transform.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
const INDENT = " ";
|
|
2
|
+
const DEFAULT_RESERVE = "fixed(240, 160, px)";
|
|
3
|
+
const DEFAULT_FIT = "scaleDown";
|
|
4
|
+
export function applyAddTransform(source, doc, options) {
|
|
5
|
+
const allIds = collectIds(doc.body?.nodes ?? []);
|
|
6
|
+
const makeId = (prefix) => nextId(prefix, allIds);
|
|
7
|
+
switch (options.kind) {
|
|
8
|
+
case "title":
|
|
9
|
+
return applyTitleUpdate(source, options.text ?? "Untitled Document");
|
|
10
|
+
case "page":
|
|
11
|
+
return insertIntoBody(source, buildPageSnippet(makeId("page"), options.heading));
|
|
12
|
+
case "section":
|
|
13
|
+
return insertIntoLastPage(source, doc, buildSectionSnippet(makeId("section"), options));
|
|
14
|
+
case "paragraph":
|
|
15
|
+
return insertIntoLastSection(source, doc, buildParagraphSnippet(makeId("paragraph"), options));
|
|
16
|
+
case "figure":
|
|
17
|
+
return insertIntoLastPage(source, doc, buildFigureSnippet(makeId("figure"), doc, options));
|
|
18
|
+
case "callout":
|
|
19
|
+
return insertIntoLastPage(source, doc, buildCalloutSnippet(makeId("callout"), options));
|
|
20
|
+
case "table":
|
|
21
|
+
return insertIntoLastPage(source, doc, buildTableSnippet(makeId("table")));
|
|
22
|
+
case "slot":
|
|
23
|
+
return insertIntoLastPage(source, doc, buildSlotSnippet(makeId("slot")));
|
|
24
|
+
case "inline-slot":
|
|
25
|
+
return insertIntoLastPage(source, doc, buildInlineSlotSnippet(makeId("inlineSlot")));
|
|
26
|
+
case "bibliography-stub":
|
|
27
|
+
return insertIntoBody(source, buildBibliographySnippet(makeId("bibliography")));
|
|
28
|
+
default:
|
|
29
|
+
throw new Error(`Unsupported add transform '${options.kind}'`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function formatFluxSource(source) {
|
|
33
|
+
const trimmed = source.replace(/[\t ]+\n/g, "\n");
|
|
34
|
+
return trimmed.endsWith("\n") ? trimmed : trimmed + "\n";
|
|
35
|
+
}
|
|
36
|
+
function collectIds(nodes) {
|
|
37
|
+
const ids = new Set();
|
|
38
|
+
const visit = (node) => {
|
|
39
|
+
ids.add(node.id);
|
|
40
|
+
node.children?.forEach(visit);
|
|
41
|
+
};
|
|
42
|
+
nodes.forEach(visit);
|
|
43
|
+
return ids;
|
|
44
|
+
}
|
|
45
|
+
function nextId(prefix, ids) {
|
|
46
|
+
let n = 1;
|
|
47
|
+
let candidate = `${prefix}${n}`;
|
|
48
|
+
while (ids.has(candidate)) {
|
|
49
|
+
n += 1;
|
|
50
|
+
candidate = `${prefix}${n}`;
|
|
51
|
+
}
|
|
52
|
+
ids.add(candidate);
|
|
53
|
+
return candidate;
|
|
54
|
+
}
|
|
55
|
+
function findBlockRange(source, blockName) {
|
|
56
|
+
const regex = new RegExp(`(^|\\n)([\\t ]*)${blockName}\\s*\\{`, "m");
|
|
57
|
+
const match = regex.exec(source);
|
|
58
|
+
if (!match || match.index == null)
|
|
59
|
+
return null;
|
|
60
|
+
const indent = match[2] ?? "";
|
|
61
|
+
const braceIndex = source.indexOf("{", match.index + match[0].length - 1);
|
|
62
|
+
if (braceIndex === -1)
|
|
63
|
+
return null;
|
|
64
|
+
const endIndex = findMatchingBrace(source, braceIndex);
|
|
65
|
+
if (endIndex === -1)
|
|
66
|
+
return null;
|
|
67
|
+
return { start: braceIndex + 1, end: endIndex, indent };
|
|
68
|
+
}
|
|
69
|
+
function findMatchingBrace(source, openIndex) {
|
|
70
|
+
let depth = 0;
|
|
71
|
+
let inString = null;
|
|
72
|
+
let inLineComment = false;
|
|
73
|
+
let inBlockComment = false;
|
|
74
|
+
for (let i = openIndex; i < source.length; i += 1) {
|
|
75
|
+
const ch = source[i];
|
|
76
|
+
const next = source[i + 1];
|
|
77
|
+
if (inLineComment) {
|
|
78
|
+
if (ch === "\n")
|
|
79
|
+
inLineComment = false;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (inBlockComment) {
|
|
83
|
+
if (ch === "*" && next === "/") {
|
|
84
|
+
inBlockComment = false;
|
|
85
|
+
i += 1;
|
|
86
|
+
}
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (inString) {
|
|
90
|
+
if (ch === "\\" && next) {
|
|
91
|
+
i += 1;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (ch === inString) {
|
|
95
|
+
inString = null;
|
|
96
|
+
}
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (ch === "/" && next === "/") {
|
|
100
|
+
inLineComment = true;
|
|
101
|
+
i += 1;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (ch === "/" && next === "*") {
|
|
105
|
+
inBlockComment = true;
|
|
106
|
+
i += 1;
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (ch === "\"" || ch === "'") {
|
|
110
|
+
inString = ch;
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (ch === "{")
|
|
114
|
+
depth += 1;
|
|
115
|
+
if (ch === "}") {
|
|
116
|
+
depth -= 1;
|
|
117
|
+
if (depth === 0)
|
|
118
|
+
return i;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return -1;
|
|
122
|
+
}
|
|
123
|
+
function insertIntoBody(source, snippet) {
|
|
124
|
+
const block = findBlockRange(source, "body");
|
|
125
|
+
if (!block) {
|
|
126
|
+
throw new Error("No body block found");
|
|
127
|
+
}
|
|
128
|
+
const childIndent = block.indent + INDENT;
|
|
129
|
+
return insertSnippet(source, block.end, childIndent, snippet);
|
|
130
|
+
}
|
|
131
|
+
function insertIntoLastPage(source, doc, snippet) {
|
|
132
|
+
const pages = doc.body?.nodes?.filter((node) => node.kind === "page") ?? [];
|
|
133
|
+
if (!pages.length) {
|
|
134
|
+
return insertIntoBody(source, snippet);
|
|
135
|
+
}
|
|
136
|
+
const last = pages[pages.length - 1];
|
|
137
|
+
const loc = last.loc;
|
|
138
|
+
if (!loc?.endLine || !loc?.endColumn) {
|
|
139
|
+
return insertIntoBody(source, snippet);
|
|
140
|
+
}
|
|
141
|
+
const index = lineColumnToIndex(source, loc.endLine, loc.endColumn);
|
|
142
|
+
const indent = getLineIndent(source, loc.endLine);
|
|
143
|
+
const childIndent = indent + INDENT;
|
|
144
|
+
return insertSnippet(source, index, childIndent, snippet);
|
|
145
|
+
}
|
|
146
|
+
function insertIntoLastSection(source, doc, snippet) {
|
|
147
|
+
const sections = [];
|
|
148
|
+
const visit = (node) => {
|
|
149
|
+
if (node.kind === "section")
|
|
150
|
+
sections.push(node);
|
|
151
|
+
for (const child of node.children ?? []) {
|
|
152
|
+
visit(child);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
for (const node of doc.body?.nodes ?? []) {
|
|
156
|
+
visit(node);
|
|
157
|
+
}
|
|
158
|
+
if (!sections.length) {
|
|
159
|
+
return insertIntoLastPage(source, doc, snippet);
|
|
160
|
+
}
|
|
161
|
+
const last = sections[sections.length - 1];
|
|
162
|
+
const loc = last.loc;
|
|
163
|
+
if (!loc?.endLine || !loc?.endColumn) {
|
|
164
|
+
return insertIntoLastPage(source, doc, snippet);
|
|
165
|
+
}
|
|
166
|
+
const index = lineColumnToIndex(source, loc.endLine, loc.endColumn);
|
|
167
|
+
const indent = getLineIndent(source, loc.endLine);
|
|
168
|
+
const childIndent = indent + INDENT;
|
|
169
|
+
return insertSnippet(source, index, childIndent, snippet);
|
|
170
|
+
}
|
|
171
|
+
function lineColumnToIndex(source, line, column) {
|
|
172
|
+
const lines = source.split("\n");
|
|
173
|
+
const clampedLine = Math.max(1, Math.min(line, lines.length));
|
|
174
|
+
let index = 0;
|
|
175
|
+
for (let i = 0; i < clampedLine - 1; i += 1) {
|
|
176
|
+
index += lines[i].length + 1;
|
|
177
|
+
}
|
|
178
|
+
const colIndex = Math.max(1, column) - 1;
|
|
179
|
+
return index + colIndex;
|
|
180
|
+
}
|
|
181
|
+
function getLineIndent(source, line) {
|
|
182
|
+
const lines = source.split("\n");
|
|
183
|
+
const text = lines[line - 1] ?? "";
|
|
184
|
+
const match = /^([\t ]*)/.exec(text);
|
|
185
|
+
return match ? match[1] : "";
|
|
186
|
+
}
|
|
187
|
+
function insertSnippet(source, index, indent, snippet) {
|
|
188
|
+
const prefix = source.slice(0, index);
|
|
189
|
+
const suffix = source.slice(index);
|
|
190
|
+
const needsLeadingNewline = !prefix.endsWith("\n");
|
|
191
|
+
const indented = snippet
|
|
192
|
+
.split("\n")
|
|
193
|
+
.map((line) => (line.length ? indent + line : ""))
|
|
194
|
+
.join("\n");
|
|
195
|
+
const insertion = `${needsLeadingNewline ? "\n" : ""}${indented}\n${indent.slice(0, Math.max(0, indent.length - INDENT.length))}`;
|
|
196
|
+
return prefix + insertion + suffix;
|
|
197
|
+
}
|
|
198
|
+
function escapeString(value) {
|
|
199
|
+
return value.replace(/\\/g, "\\\\").replace(/\"/g, "\\\"");
|
|
200
|
+
}
|
|
201
|
+
function applyTitleUpdate(source, title) {
|
|
202
|
+
const metaBlock = findBlockRange(source, "meta");
|
|
203
|
+
if (!metaBlock)
|
|
204
|
+
return source;
|
|
205
|
+
const indent = metaBlock.indent + INDENT;
|
|
206
|
+
const blockContent = source.slice(metaBlock.start, metaBlock.end);
|
|
207
|
+
const titleRegex = /title\s*=\s*"[^"]*"\s*;/;
|
|
208
|
+
let nextBlock = blockContent;
|
|
209
|
+
if (titleRegex.test(blockContent)) {
|
|
210
|
+
nextBlock = blockContent.replace(titleRegex, `title = "${escapeString(title)}";`);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
nextBlock = `\n${indent}title = "${escapeString(title)}";` + blockContent;
|
|
214
|
+
}
|
|
215
|
+
let updated = source.slice(0, metaBlock.start) + nextBlock + source.slice(metaBlock.end);
|
|
216
|
+
updated = updated.replace(/(text\s+\w+\s*\{[^}]*role\s*=\s*"title";[^}]*content\s*=\s*")([^"]*)("[^}]*\})/m, (_match, start, _content, end) => `${start}${escapeString(title)}${end}`);
|
|
217
|
+
return updated;
|
|
218
|
+
}
|
|
219
|
+
function buildPageSnippet(id, heading) {
|
|
220
|
+
const title = heading ?? "New Page";
|
|
221
|
+
return [
|
|
222
|
+
`page ${id} {`,
|
|
223
|
+
`${INDENT}section ${id}Section {`,
|
|
224
|
+
`${INDENT}${INDENT}text ${id}Heading { style = "H1"; content = "${escapeString(title)}"; }`,
|
|
225
|
+
`${INDENT}${INDENT}text ${id}Body { content = "Start writing here."; }`,
|
|
226
|
+
`${INDENT}}`,
|
|
227
|
+
`}`,
|
|
228
|
+
].join("\n");
|
|
229
|
+
}
|
|
230
|
+
function buildSectionSnippet(id, options) {
|
|
231
|
+
const heading = options.heading ?? "Section Heading";
|
|
232
|
+
const lines = [`section ${id} {`];
|
|
233
|
+
if (!options.noHeading) {
|
|
234
|
+
lines.push(`${INDENT}text ${id}Heading { style = "H2"; content = "${escapeString(heading)}"; }`);
|
|
235
|
+
}
|
|
236
|
+
lines.push(`${INDENT}text ${id}Body { content = "Start writing here."; }`);
|
|
237
|
+
lines.push(`}`);
|
|
238
|
+
return lines.join("\n");
|
|
239
|
+
}
|
|
240
|
+
function buildParagraphSnippet(id, options) {
|
|
241
|
+
const content = options.text ?? "New paragraph.";
|
|
242
|
+
return [`text ${id} { content = "${escapeString(content)}"; }`].join("\n");
|
|
243
|
+
}
|
|
244
|
+
function buildFigureSnippet(id, doc, options) {
|
|
245
|
+
const label = options.label ?? `${id}`;
|
|
246
|
+
const caption = options.caption ?? "Figure caption.";
|
|
247
|
+
const { assetExpr, reserveExpr, fitExpr } = resolveFigureOptions(doc, options);
|
|
248
|
+
if (!assetExpr) {
|
|
249
|
+
return [
|
|
250
|
+
`figure ${id} {`,
|
|
251
|
+
`${INDENT}label = "${escapeString(label)}";`,
|
|
252
|
+
`${INDENT}slot ${id}Slot {`,
|
|
253
|
+
`${INDENT}${INDENT}reserve = ${reserveExpr};`,
|
|
254
|
+
`${INDENT}${INDENT}fit = ${fitExpr};`,
|
|
255
|
+
`${INDENT}${INDENT}text ${id}Placeholder { content = "Figure placeholder"; }`,
|
|
256
|
+
`${INDENT}}`,
|
|
257
|
+
`${INDENT}text ${id}Caption { role = "caption"; content = "${escapeString(caption)}"; }`,
|
|
258
|
+
`}`,
|
|
259
|
+
].join("\n");
|
|
260
|
+
}
|
|
261
|
+
return [
|
|
262
|
+
`figure ${id} {`,
|
|
263
|
+
`${INDENT}label = "${escapeString(label)}";`,
|
|
264
|
+
`${INDENT}slot ${id}Slot {`,
|
|
265
|
+
`${INDENT}${INDENT}reserve = ${reserveExpr};`,
|
|
266
|
+
`${INDENT}${INDENT}fit = ${fitExpr};`,
|
|
267
|
+
`${INDENT}${INDENT}image ${id}Image { asset = ${assetExpr}; }`,
|
|
268
|
+
`${INDENT}}`,
|
|
269
|
+
`${INDENT}text ${id}Caption { role = "caption"; content = "${escapeString(caption)}"; }`,
|
|
270
|
+
`}`,
|
|
271
|
+
].join("\n");
|
|
272
|
+
}
|
|
273
|
+
function resolveFigureOptions(doc, options) {
|
|
274
|
+
let bankTags = [];
|
|
275
|
+
if (options.bankName) {
|
|
276
|
+
const bank = doc.assets?.banks?.find((entry) => entry.name === options.bankName);
|
|
277
|
+
if (!bank) {
|
|
278
|
+
throw new Error(`Unknown asset bank '${options.bankName}'`);
|
|
279
|
+
}
|
|
280
|
+
bankTags = [...(bank.tags ?? []), `bank:${bank.name}`];
|
|
281
|
+
}
|
|
282
|
+
const userTags = Array.isArray(options.tags) ? options.tags.map((tag) => String(tag)) : [];
|
|
283
|
+
const tags = dedupeTags([...bankTags, ...userTags]);
|
|
284
|
+
const assetExpr = tags.length
|
|
285
|
+
? `@assets.pick(tags=[${tags.map((tag) => `"${escapeString(tag)}"`).join(", ")}])`
|
|
286
|
+
: null;
|
|
287
|
+
return {
|
|
288
|
+
assetExpr,
|
|
289
|
+
reserveExpr: normalizeReserve(options.reserve),
|
|
290
|
+
fitExpr: normalizeFit(options.fit),
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
function dedupeTags(tags) {
|
|
294
|
+
const seen = new Set();
|
|
295
|
+
const result = [];
|
|
296
|
+
for (const tag of tags) {
|
|
297
|
+
const clean = tag.trim();
|
|
298
|
+
if (!clean || seen.has(clean))
|
|
299
|
+
continue;
|
|
300
|
+
seen.add(clean);
|
|
301
|
+
result.push(clean);
|
|
302
|
+
}
|
|
303
|
+
return result;
|
|
304
|
+
}
|
|
305
|
+
function normalizeReserve(reserve) {
|
|
306
|
+
if (!reserve)
|
|
307
|
+
return DEFAULT_RESERVE;
|
|
308
|
+
if (typeof reserve === "string") {
|
|
309
|
+
const trimmed = reserve.trim();
|
|
310
|
+
if (/^(fixed|fixedWidth)\(/.test(trimmed)) {
|
|
311
|
+
return trimmed;
|
|
312
|
+
}
|
|
313
|
+
return DEFAULT_RESERVE;
|
|
314
|
+
}
|
|
315
|
+
const width = typeof reserve.width === "number" && Number.isFinite(reserve.width) ? reserve.width : null;
|
|
316
|
+
const height = typeof reserve.height === "number" && Number.isFinite(reserve.height) ? reserve.height : null;
|
|
317
|
+
const units = reserve.units ?? "px";
|
|
318
|
+
if (!width)
|
|
319
|
+
return DEFAULT_RESERVE;
|
|
320
|
+
if (!height)
|
|
321
|
+
return `fixedWidth(${width}, ${units})`;
|
|
322
|
+
return `fixed(${width}, ${height}, ${units})`;
|
|
323
|
+
}
|
|
324
|
+
function normalizeFit(fit) {
|
|
325
|
+
const raw = typeof fit === "string" ? fit : fit ?? DEFAULT_FIT;
|
|
326
|
+
if (raw === "clip" || raw === "ellipsis" || raw === "shrink" || raw === "scaleDown") {
|
|
327
|
+
return raw;
|
|
328
|
+
}
|
|
329
|
+
return DEFAULT_FIT;
|
|
330
|
+
}
|
|
331
|
+
function buildCalloutSnippet(id, options) {
|
|
332
|
+
const tone = options.label ?? "info";
|
|
333
|
+
const content = options.text ?? "Callout text.";
|
|
334
|
+
return [
|
|
335
|
+
`callout ${id} {`,
|
|
336
|
+
`${INDENT}tone = "${escapeString(tone)}";`,
|
|
337
|
+
`${INDENT}text ${id}Body { content = "${escapeString(content)}"; }`,
|
|
338
|
+
`}`,
|
|
339
|
+
].join("\n");
|
|
340
|
+
}
|
|
341
|
+
function buildTableSnippet(id) {
|
|
342
|
+
return [
|
|
343
|
+
`table ${id} {`,
|
|
344
|
+
`${INDENT}rows = [`,
|
|
345
|
+
`${INDENT}${INDENT}["Column", "Value"],`,
|
|
346
|
+
`${INDENT}${INDENT}["Row 1", "Edit me"],`,
|
|
347
|
+
`${INDENT}];`,
|
|
348
|
+
`${INDENT}header = true;`,
|
|
349
|
+
`}`,
|
|
350
|
+
].join("\n");
|
|
351
|
+
}
|
|
352
|
+
function buildSlotSnippet(id) {
|
|
353
|
+
return [
|
|
354
|
+
`slot ${id} {`,
|
|
355
|
+
`${INDENT}reserve = fixed(200, 80, px);`,
|
|
356
|
+
`${INDENT}fit = shrink;`,
|
|
357
|
+
`${INDENT}refresh = docstep;`,
|
|
358
|
+
`${INDENT}text ${id}Text { content = @docstep; }`,
|
|
359
|
+
`}`,
|
|
360
|
+
].join("\n");
|
|
361
|
+
}
|
|
362
|
+
function buildInlineSlotSnippet(id) {
|
|
363
|
+
return [
|
|
364
|
+
`text ${id}Line {`,
|
|
365
|
+
`${INDENT}content = "Inline slot demo: ";`,
|
|
366
|
+
`${INDENT}inline_slot ${id} {`,
|
|
367
|
+
`${INDENT}${INDENT}reserve = fixedWidth(8, ch);`,
|
|
368
|
+
`${INDENT}${INDENT}fit = ellipsis;`,
|
|
369
|
+
`${INDENT}${INDENT}refresh = docstep;`,
|
|
370
|
+
`${INDENT}${INDENT}text ${id}Value { content = @docstep; }`,
|
|
371
|
+
`${INDENT}}`,
|
|
372
|
+
`}`,
|
|
373
|
+
].join("\n");
|
|
374
|
+
}
|
|
375
|
+
function buildBibliographySnippet(id) {
|
|
376
|
+
return [
|
|
377
|
+
`section ${id} {`,
|
|
378
|
+
`${INDENT}text ${id}Heading { style = "H2"; content = "References"; }`,
|
|
379
|
+
`${INDENT}// TODO: add bibliography entries or wire to a citation system.`,
|
|
380
|
+
`}`,
|
|
381
|
+
].join("\n");
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flux-lang/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6-canary.18d439adc",
|
|
4
4
|
"description": "Core AST, parser, and evaluator for the Flux score language.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Sebastian Suarez-Solis",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"prepublishOnly": "npm run build && npm test"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
+
"@types/node": "^22.0.0",
|
|
30
31
|
"typescript": "^5.6.0",
|
|
31
32
|
"vitest": "^2.0.0"
|
|
32
33
|
}
|