@nml-lang/compiler-ts 2.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * NML Renderer
3
+ * Ports generate_html from nml_parse.py to TypeScript.
4
+ * Walks the expanded AST and produces a formatted HTML string.
5
+ *
6
+ * generateHtml is async to support @include directives which may
7
+ * read files from the filesystem, Cloudflare R2, D1, or memory.
8
+ */
9
+ import { type ASTNode } from "./parser.js";
10
+ export interface RenderOptions {
11
+ /** Async function to read a file by absolute path. Required for @include. */
12
+ readFile?: (path: string) => Promise<string>;
13
+ /** Absolute path of the file being rendered — used to resolve relative @include paths. */
14
+ basePath?: string;
15
+ /** Internal: tracks seen file paths for circular include detection. */
16
+ _seenFiles?: Set<string>;
17
+ }
18
+ export declare function generateHtml(ast: ASTNode[], indentLevel?: number, context?: Record<string, unknown>, opts?: RenderOptions): Promise<string>;
19
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAuD,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAUhG,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,OAAO,EAAE,EACd,WAAW,SAAI,EACf,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,MAAM,CAAC,CAyHjB"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * NML Renderer
3
+ * Ports generate_html from nml_parse.py to TypeScript.
4
+ * Walks the expanded AST and produces a formatted HTML string.
5
+ *
6
+ * generateHtml is async to support @include directives which may
7
+ * read files from the filesystem, Cloudflare R2, D1, or memory.
8
+ */
9
+ import { buildAst, renderVariables, isTruthy, NMLParserError } from "./parser.js";
10
+ import { dirname, join, resolve } from "path";
11
+ const INDENT_WIDTH = 4;
12
+ const VOID_ELEMENTS = new Set([
13
+ "area", "base", "br", "col", "embed", "hr", "img", "input",
14
+ "link", "meta", "param", "source", "track", "wbr",
15
+ ]);
16
+ export async function generateHtml(ast, indentLevel = 0, context = {}, opts = {}) {
17
+ let html = "";
18
+ const indent = " ".repeat(indentLevel * INDENT_WIDTH);
19
+ for (const node of ast) {
20
+ // Merge node-level context (component props)
21
+ let nodeContext = context;
22
+ if (node.__context__) {
23
+ nodeContext = { ...context, ...node.__context__ };
24
+ }
25
+ // Plain text node
26
+ if (node.element === "__text__") {
27
+ html += `${indent}${renderVariables(node.content, nodeContext)}\n`;
28
+ continue;
29
+ }
30
+ // @include — render-time partial resolution
31
+ if (node.element === "@include") {
32
+ html += await resolveInclude(node, indentLevel, nodeContext, opts);
33
+ continue;
34
+ }
35
+ // @each — loop directive
36
+ if (node.element === "@each") {
37
+ const itemsPath = node.attributes["items"];
38
+ const asName = node.attributes["as"];
39
+ const arr = resolveContextPath(itemsPath, nodeContext);
40
+ if (Array.isArray(arr)) {
41
+ for (const item of arr) {
42
+ const childCtx = { ...nodeContext, [asName]: item };
43
+ html += await generateHtml(node.children, indentLevel, childCtx, opts);
44
+ }
45
+ }
46
+ continue;
47
+ }
48
+ // @if — conditional directive
49
+ if (node.element === "@if") {
50
+ const condition = node.attributes["condition"];
51
+ const condVal = resolveContextPath(condition, nodeContext);
52
+ if (isTruthy(condVal)) {
53
+ html += await generateHtml(node.children, indentLevel, nodeContext, opts);
54
+ }
55
+ else if (node.elseBranch && node.elseBranch.length > 0) {
56
+ html += await generateHtml(node.elseBranch, indentLevel, nodeContext, opts);
57
+ }
58
+ continue;
59
+ }
60
+ // Internal structural nodes — skip (defensive: @else/@endif/@endeach removed by pass)
61
+ if (["@define", "@slot", "@style", "__comment__", "__root__", "@else", "@endif", "@endeach"].includes(node.element)) {
62
+ continue;
63
+ }
64
+ const tag = node.element;
65
+ // Doctype
66
+ if (tag === "doctype") {
67
+ const cls = node.attributes["class"];
68
+ const clsStr = Array.isArray(cls) ? cls.join(" ") : cls ?? "";
69
+ if (clsStr === "html") {
70
+ html += `${indent}<!DOCTYPE html>\n`;
71
+ }
72
+ continue;
73
+ }
74
+ // Build attribute string
75
+ let attrString = "";
76
+ for (const [key, value] of Object.entries(node.attributes)) {
77
+ if (key.startsWith("__"))
78
+ continue; // skip internal keys
79
+ if (value === true) {
80
+ attrString += ` ${key}`;
81
+ }
82
+ else if (Array.isArray(value)) {
83
+ const rendered = renderVariables(value.join(" "), nodeContext);
84
+ attrString += ` ${key}="${rendered}"`;
85
+ }
86
+ else {
87
+ const rendered = renderVariables(String(value), nodeContext);
88
+ attrString += ` ${key}="${rendered}"`;
89
+ }
90
+ }
91
+ html += `${indent}<${tag}${attrString}`;
92
+ // Void elements self-close
93
+ if (VOID_ELEMENTS.has(tag)) {
94
+ html += ">\n";
95
+ continue;
96
+ }
97
+ html += ">";
98
+ const content = renderVariables(node.content, nodeContext);
99
+ const children = node.children;
100
+ const multiline = node.multiline_content;
101
+ if (content) {
102
+ html += content;
103
+ }
104
+ else if (children.length > 0) {
105
+ // Inline single text child
106
+ if (children.length === 1 &&
107
+ children[0].element === "__text__") {
108
+ html += renderVariables(children[0].content, nodeContext);
109
+ }
110
+ else {
111
+ html += "\n";
112
+ html += await generateHtml(children, indentLevel + 1, nodeContext, opts);
113
+ html += indent;
114
+ }
115
+ }
116
+ else if (multiline.length > 0) {
117
+ html += "\n";
118
+ for (const line of multiline) {
119
+ html += `${indent} ${renderVariables(line, nodeContext)}\n`;
120
+ }
121
+ html += indent;
122
+ }
123
+ html += `</${tag}>\n`;
124
+ }
125
+ return indentLevel === 0 ? html.trimEnd() : html;
126
+ }
127
+ // ---------------------------------------------------------------------------
128
+ // @include resolution
129
+ // ---------------------------------------------------------------------------
130
+ async function resolveInclude(node, indentLevel, parentContext, opts) {
131
+ const relativePath = node.attributes["file"];
132
+ const overridesRaw = node.attributes["overrides"];
133
+ if (!opts.readFile) {
134
+ throw new NMLParserError(`@include("${relativePath}") requires a readFile option — pass it via CompilerAdapter.render() or nmlCompiler.render()`, node.loc);
135
+ }
136
+ // Resolve to absolute path
137
+ const base = opts.basePath ? dirname(opts.basePath) : process.cwd();
138
+ const absolutePath = resolve(join(base, relativePath));
139
+ // Circular include detection
140
+ const seen = opts._seenFiles ?? new Set();
141
+ if (seen.has(absolutePath)) {
142
+ throw new NMLParserError(`Circular @include detected: "${relativePath}" is already in the include stack`, node.loc);
143
+ }
144
+ // Read the partial source
145
+ let src;
146
+ try {
147
+ src = await opts.readFile(absolutePath);
148
+ }
149
+ catch {
150
+ throw new NMLParserError(`@include: cannot read file "${relativePath}" (resolved to "${absolutePath}")`, node.loc);
151
+ }
152
+ // Parse overrides: { ...parentCtx, ...overrides }
153
+ let overrides = {};
154
+ if (overridesRaw) {
155
+ try {
156
+ overrides = JSON.parse(overridesRaw);
157
+ }
158
+ catch {
159
+ // Non-JSON override strings are silently ignored (may be complex expressions)
160
+ }
161
+ }
162
+ const partialContext = { ...parentContext, ...overrides };
163
+ // Parse and render the partial with child seen-set
164
+ const childSeen = new Set(seen);
165
+ childSeen.add(absolutePath);
166
+ const ast = buildAst(src);
167
+ return generateHtml(ast, indentLevel, partialContext, {
168
+ ...opts,
169
+ basePath: absolutePath,
170
+ _seenFiles: childSeen,
171
+ });
172
+ }
173
+ // ---------------------------------------------------------------------------
174
+ // Context path resolver (used by @each and @if)
175
+ // ---------------------------------------------------------------------------
176
+ function resolveContextPath(path, context) {
177
+ const parts = path.split(".");
178
+ let current = context;
179
+ for (const part of parts) {
180
+ if (current === null || current === undefined)
181
+ return undefined;
182
+ current = current[part];
183
+ }
184
+ return current;
185
+ }
186
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@nml-lang/compiler-ts",
3
+ "version": "2.2.0",
4
+ "description": "NML compiler — parse and render .nml templates to HTML",
5
+ "type": "module",
6
+ "main": "./src/index.ts",
7
+ "module": "./src/index.ts",
8
+ "types": "./src/index.ts",
9
+ "exports": {
10
+ ".": {
11
+ "bun": "./src/index.ts",
12
+ "source": "./src/index.ts",
13
+ "import": "./dist/index.js",
14
+ "types": "./dist/index.d.ts"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "src"
20
+ ],
21
+ "scripts": {
22
+ "build": "tsc -p tsconfig.build.json",
23
+ "test": "vitest run",
24
+ "test:watch": "vitest",
25
+ "test:coverage": "vitest run --coverage"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "https://github.com/Dw4pres/NML.git",
30
+ "directory": "packages/compiler-ts"
31
+ },
32
+ "license": "MIT",
33
+ "publishConfig": {
34
+ "access": "public",
35
+ "registry": "https://registry.npmjs.org"
36
+ },
37
+ "devDependencies": {
38
+ "@types/node": "^25.6.0",
39
+ "@vitest/coverage-v8": "^2.0.0",
40
+ "typescript": "^5.5.0",
41
+ "vitest": "^2.0.0"
42
+ }
43
+ }
package/src/index.ts ADDED
@@ -0,0 +1,116 @@
1
+ /**
2
+ * @nml/compiler-ts — public API
3
+ *
4
+ * Exports the CompilerAdapter interface so consumers (CLI, Vite plugin,
5
+ * Cloudflare Worker, MCP server) always program against the interface,
6
+ * never a concrete class. A future @nml/compiler-wasm package will export
7
+ * a WasmCompiler satisfying the same interface.
8
+ */
9
+
10
+ import { buildAst, renderVariables, NMLParserError, findComponentRootNode, parseLineRaw, isTruthy, postProcessConditionalsPass } from "./parser.js";
11
+ import { generateHtml, type RenderOptions } from "./renderer.js";
12
+ import type { ASTNode, ComponentMap, GlobalStyles } from "./parser.js";
13
+
14
+ // ---------------------------------------------------------------------------
15
+ // Public interface contract
16
+ // ---------------------------------------------------------------------------
17
+
18
+ export interface CompilerAdapter {
19
+ /**
20
+ * Compile a raw NML string to an HTML string.
21
+ * Returns a Promise — async to support @include directives that read
22
+ * files from the filesystem, Cloudflare R2, D1, or in-memory stores.
23
+ *
24
+ * @param input - Raw NML source
25
+ * @param context - Optional template variable context
26
+ * @param options - Optional components, global styles, readFile, basePath
27
+ */
28
+ render(
29
+ input: string,
30
+ context?: Record<string, unknown>,
31
+ options?: CompileOptions
32
+ ): Promise<string>;
33
+ }
34
+
35
+ export interface CompileOptions {
36
+ components?: ComponentMap;
37
+ globalStyles?: GlobalStyles;
38
+ /** Async function to read included files. Required when NML uses @include. */
39
+ readFile?: (path: string) => Promise<string>;
40
+ /** Absolute path of the NML file being rendered — resolves relative @include paths. */
41
+ basePath?: string;
42
+ }
43
+
44
+ // ---------------------------------------------------------------------------
45
+ // Default TypeScript engine
46
+ // ---------------------------------------------------------------------------
47
+
48
+ class TSCompiler implements CompilerAdapter {
49
+ async render(
50
+ input: string,
51
+ context: Record<string, unknown> = {},
52
+ options: CompileOptions = {}
53
+ ): Promise<string> {
54
+ const components: ComponentMap = options.components ?? {};
55
+ const globalStyles: GlobalStyles = options.globalStyles ?? {};
56
+
57
+ const renderOpts: RenderOptions = {
58
+ readFile: options.readFile,
59
+ basePath: options.basePath,
60
+ };
61
+
62
+ const ast = buildAst(input, { components, globalStyles });
63
+ let html = await generateHtml(ast, 0, context, renderOpts);
64
+
65
+ // Inject scoped styles if any are present
66
+ if (Object.keys(globalStyles).length > 0) {
67
+ const usedScopeIds = collectScopeIds(ast);
68
+ const usedStyles: string[] = [];
69
+ for (const sid of usedScopeIds) {
70
+ if (sid in globalStyles) {
71
+ usedStyles.push(globalStyles[sid]);
72
+ }
73
+ }
74
+ if (usedStyles.length > 0) {
75
+ const styleTag = `<style data-nml-scoped-styles>\n${usedStyles.join("\n")}\n</style>`;
76
+ if (html.includes("</head>")) {
77
+ html = html.replace("</head>", `${styleTag}\n</head>`);
78
+ } else {
79
+ html = styleTag + "\n" + html;
80
+ }
81
+ }
82
+ }
83
+
84
+ return html;
85
+ }
86
+ }
87
+
88
+ function collectScopeIds(nodes: ASTNode[]): Set<string> {
89
+ const ids = new Set<string>();
90
+ function walk(items: ASTNode[]) {
91
+ for (const n of items) {
92
+ for (const k of Object.keys(n.attributes)) {
93
+ if (k.startsWith("nml-c-")) ids.add(k);
94
+ }
95
+ if (n.children.length > 0) walk(n.children);
96
+ }
97
+ }
98
+ walk(nodes);
99
+ return ids;
100
+ }
101
+
102
+ // ---------------------------------------------------------------------------
103
+ // Singleton default export — V8-optimised TS engine
104
+ // ---------------------------------------------------------------------------
105
+
106
+ export const nmlCompiler: CompilerAdapter = new TSCompiler();
107
+
108
+ // ---------------------------------------------------------------------------
109
+ // Re-exports for advanced consumers
110
+ // ---------------------------------------------------------------------------
111
+
112
+ export { buildAst, generateHtml, renderVariables, NMLParserError, findComponentRootNode, parseLineRaw, isTruthy, postProcessConditionalsPass };
113
+ export type { RenderOptions };
114
+ export type { ASTNode, ComponentMap, GlobalStyles };
115
+ export { NMLLexerError } from "./lexer.js";
116
+ export type { SourceLocation, Token, TokenKind } from "./lexer.js";
package/src/lexer.ts ADDED
@@ -0,0 +1,186 @@
1
+ /**
2
+ * NML Lexer
3
+ * Tokenizes raw NML source text into a stream of typed tokens,
4
+ * each carrying precise source location (line, column) for error
5
+ * reporting and Vite overlay / MCP diagnostics.
6
+ */
7
+
8
+ export interface SourceLocation {
9
+ line: number; // 1-based
10
+ column: number; // 0-based
11
+ }
12
+
13
+ export type TokenKind =
14
+ | "INDENT" // significant leading whitespace level
15
+ | "ELEMENT" // tag name, @define, @slot, @style, @ComponentName, |
16
+ | "ATTR_CHAIN" // .attr("val") or .boolAttr raw segment
17
+ | "MULTILINE_START" // element ends with ':'
18
+ | "MULTILINE_LINE" // content line inside a multiline block
19
+ | "COMMENT" // // ...
20
+ | "BLANK" // empty line
21
+ | "EOF";
22
+
23
+ export interface Token {
24
+ kind: TokenKind;
25
+ value: string;
26
+ loc: SourceLocation;
27
+ /** For INDENT tokens: indentation level (0-based, each level = 4 spaces) */
28
+ level?: number;
29
+ }
30
+
31
+ const INDENT_WIDTH = 4;
32
+
33
+ /**
34
+ * Tokenize NML source into a flat array of line-level tokens.
35
+ * Each "line" of NML produces at most one primary token; multiline
36
+ * blocks consume multiple raw lines and emit MULTILINE_LINE tokens
37
+ * for each.
38
+ */
39
+ export function tokenize(source: string): Token[] {
40
+ const tokens: Token[] = [];
41
+ const rawLines = source.split("\n");
42
+ let lineIdx = 0; // 0-based index into rawLines
43
+
44
+ while (lineIdx < rawLines.length) {
45
+ const rawLine = rawLines[lineIdx];
46
+ const currentLine = lineIdx + 1; // 1-based
47
+ const stripped = rawLine.trimEnd();
48
+
49
+ // Blank line
50
+ if (stripped.trim() === "") {
51
+ tokens.push({ kind: "BLANK", value: "", loc: { line: currentLine, column: 0 } });
52
+ lineIdx++;
53
+ continue;
54
+ }
55
+
56
+ // Comment
57
+ if (stripped.trimStart().startsWith("//")) {
58
+ const col = stripped.length - stripped.trimStart().length;
59
+ tokens.push({ kind: "COMMENT", value: stripped.trimStart(), loc: { line: currentLine, column: col } });
60
+ lineIdx++;
61
+ continue;
62
+ }
63
+
64
+ // Validate and measure indentation
65
+ const leadingSpaces = stripped.length - stripped.trimStart().length;
66
+
67
+ if (stripped.startsWith("\t")) {
68
+ throw new NMLLexerError(
69
+ `Indentation error on line ${currentLine}: Please use 4 spaces for indentation, not tabs.`,
70
+ { line: currentLine, column: 0 }
71
+ );
72
+ }
73
+ if (leadingSpaces % INDENT_WIDTH !== 0) {
74
+ throw new NMLLexerError(
75
+ `Indentation error on line ${currentLine}: Non-standard indentation. Use 4 spaces per level.`,
76
+ { line: currentLine, column: 0 }
77
+ );
78
+ }
79
+
80
+ const level = leadingSpaces / INDENT_WIDTH;
81
+ const content = stripped.trimStart();
82
+
83
+ // Check if this line is a multiline trigger (ends with ':' outside quotes)
84
+ const isMultilineTrigger = isLineMultilineTrigger(content);
85
+
86
+ // Emit INDENT + ELEMENT token for this line
87
+ tokens.push({
88
+ kind: "INDENT",
89
+ value: "",
90
+ level,
91
+ loc: { line: currentLine, column: 0 },
92
+ });
93
+ tokens.push({
94
+ kind: isMultilineTrigger ? "MULTILINE_START" : "ELEMENT",
95
+ value: content,
96
+ loc: { line: currentLine, column: leadingSpaces },
97
+ });
98
+
99
+ lineIdx++;
100
+
101
+ // If multiline, consume subsequent indented lines
102
+ if (isMultilineTrigger) {
103
+ const blockStartLevel = level + 1;
104
+ const blockStartCol = blockStartLevel * INDENT_WIDTH;
105
+
106
+ while (lineIdx < rawLines.length) {
107
+ const mlRaw = rawLines[lineIdx];
108
+ const mlLine = lineIdx + 1;
109
+ const mlStripped = mlRaw.trimEnd();
110
+
111
+ // Blank lines are part of the block
112
+ if (mlStripped.trim() === "") {
113
+ tokens.push({ kind: "MULTILINE_LINE", value: "", loc: { line: mlLine, column: 0 } });
114
+ lineIdx++;
115
+ continue;
116
+ }
117
+
118
+ const mlSpaces = mlStripped.length - mlStripped.trimStart().length;
119
+
120
+ // Block ends when indentation returns to block level or less
121
+ if (mlSpaces < blockStartCol) {
122
+ break;
123
+ }
124
+
125
+ // Validate indentation within block
126
+ if (mlSpaces % INDENT_WIDTH !== 0) {
127
+ throw new NMLLexerError(
128
+ `Indentation error on line ${mlLine}: Non-standard indentation. Use 4 spaces per level.`,
129
+ { line: mlLine, column: 0 }
130
+ );
131
+ }
132
+
133
+ // Relative indent (strip the block-start indentation)
134
+ const relativeIndent = " ".repeat(mlSpaces - blockStartCol);
135
+ const mlContent = relativeIndent + mlStripped.trimStart();
136
+
137
+ tokens.push({
138
+ kind: "MULTILINE_LINE",
139
+ value: mlContent,
140
+ loc: { line: mlLine, column: mlSpaces },
141
+ });
142
+ lineIdx++;
143
+ }
144
+ }
145
+ }
146
+
147
+ tokens.push({ kind: "EOF", value: "", loc: { line: rawLines.length + 1, column: 0 } });
148
+ return tokens;
149
+ }
150
+
151
+ /**
152
+ * Returns true if the NML line (already stripped of indent) ends with ':'
153
+ * outside of any quoted string — indicating a multiline content block.
154
+ */
155
+ function isLineMultilineTrigger(content: string): boolean {
156
+ let inQuote = false;
157
+ let quoteChar = "";
158
+ let i = 0;
159
+
160
+ // Strip trailing whitespace before checking
161
+ const trimmed = content.trimEnd();
162
+
163
+ while (i < trimmed.length) {
164
+ const ch = trimmed[i];
165
+ if (inQuote) {
166
+ if (ch === quoteChar) inQuote = false;
167
+ } else {
168
+ if (ch === '"' || ch === "'") {
169
+ inQuote = true;
170
+ quoteChar = ch;
171
+ }
172
+ }
173
+ i++;
174
+ }
175
+
176
+ return !inQuote && trimmed.endsWith(":");
177
+ }
178
+
179
+ export class NMLLexerError extends Error {
180
+ loc: SourceLocation;
181
+ constructor(message: string, loc: SourceLocation) {
182
+ super(message);
183
+ this.name = "NMLLexerError";
184
+ this.loc = loc;
185
+ }
186
+ }