@chilts/weave 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.
@@ -0,0 +1,43 @@
1
+ import type { SourceLocation } from '../parser/types.js';
2
+ /** A single mapping segment: generated position → source position (all 0-based) */
3
+ export interface Mapping {
4
+ genLine: number;
5
+ genCol: number;
6
+ srcLine: number;
7
+ srcCol: number;
8
+ }
9
+ /** Code string with associated source mappings */
10
+ export interface CodeChunk {
11
+ code: string;
12
+ mappings: Mapping[];
13
+ }
14
+ /** Standard V3 source map */
15
+ export interface SourceMap {
16
+ version: 3;
17
+ file: string;
18
+ sourceRoot: string;
19
+ sources: string[];
20
+ names: string[];
21
+ mappings: string;
22
+ }
23
+ export declare function encodeVLQ(value: number): string;
24
+ /**
25
+ * Encode an array of mappings into the V3 source map `mappings` string.
26
+ * Mappings must be sorted by genLine, then genCol.
27
+ * All source indices are 0 (single source file), names array is empty.
28
+ */
29
+ export declare function encodeMappings(mappings: Mapping[]): string;
30
+ /** Create a CodeChunk with an optional mapping at position (0,0) tied to a source location. */
31
+ export declare function chunk(code: string, loc?: SourceLocation): CodeChunk;
32
+ /** Offset all mappings in an array by a line delta. */
33
+ export declare function offsetMappings(mappings: Mapping[], lineOffset: number): Mapping[];
34
+ /** Count newlines in a string. */
35
+ export declare function lineCount(code: string): number;
36
+ /**
37
+ * Join multiple CodeChunks with a separator string.
38
+ * Offsets each chunk's mappings by the accumulated line count.
39
+ */
40
+ export declare function joinChunks(chunks: CodeChunk[], separator: string): CodeChunk;
41
+ /** Build a complete V3 source map object. */
42
+ export declare function buildSourceMap(mappings: Mapping[], file: string, sourceFile: string): SourceMap;
43
+ //# sourceMappingURL=sourcemap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourcemap.d.ts","sourceRoot":"","sources":["../../src/codegen/sourcemap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAIxD,mFAAmF;AACnF,MAAM,WAAW,OAAO;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,kDAAkD;AAClD,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,EAAE,CAAA;CACtB;AAED,6BAA6B;AAC7B,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,CAAC,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACnB;AAMD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAU/C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAqC1D;AAID,+FAA+F;AAC/F,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,cAAc,GAAG,SAAS,CAWnE;AAED,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,EAAE,CAGjF;AAED,kCAAkC;AAClC,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAiB5E;AAID,6CAA6C;AAC7C,wBAAgB,cAAc,CAC1B,QAAQ,EAAE,OAAO,EAAE,EACnB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACnB,SAAS,CASX"}
@@ -0,0 +1,113 @@
1
+ // --- VLQ encoding ---
2
+ const BASE64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
3
+ export function encodeVLQ(value) {
4
+ let vlq = value < 0 ? ((-value) << 1) | 1 : value << 1;
5
+ let result = '';
6
+ do {
7
+ let digit = vlq & 0b11111;
8
+ vlq >>>= 5;
9
+ if (vlq > 0)
10
+ digit |= 0b100000;
11
+ result += BASE64[digit];
12
+ } while (vlq > 0);
13
+ return result;
14
+ }
15
+ /**
16
+ * Encode an array of mappings into the V3 source map `mappings` string.
17
+ * Mappings must be sorted by genLine, then genCol.
18
+ * All source indices are 0 (single source file), names array is empty.
19
+ */
20
+ export function encodeMappings(mappings) {
21
+ // Sort by genLine, then genCol
22
+ const sorted = [...mappings].sort((a, b) => a.genLine - b.genLine || a.genCol - b.genCol);
23
+ if (sorted.length === 0)
24
+ return '';
25
+ // Find max generated line
26
+ const maxLine = sorted[sorted.length - 1].genLine;
27
+ let prevGenCol = 0;
28
+ let prevSrcLine = 0;
29
+ let prevSrcCol = 0;
30
+ let idx = 0;
31
+ const lines = [];
32
+ for (let line = 0; line <= maxLine; line++) {
33
+ const segments = [];
34
+ prevGenCol = 0; // genCol resets per line
35
+ while (idx < sorted.length && sorted[idx].genLine === line) {
36
+ const m = sorted[idx];
37
+ let seg = encodeVLQ(m.genCol - prevGenCol);
38
+ seg += encodeVLQ(0); // source index (always 0)
39
+ seg += encodeVLQ(m.srcLine - prevSrcLine);
40
+ seg += encodeVLQ(m.srcCol - prevSrcCol);
41
+ prevGenCol = m.genCol;
42
+ prevSrcLine = m.srcLine;
43
+ prevSrcCol = m.srcCol;
44
+ segments.push(seg);
45
+ idx++;
46
+ }
47
+ lines.push(segments.join(','));
48
+ }
49
+ return lines.join(';');
50
+ }
51
+ // --- CodeChunk helpers ---
52
+ /** Create a CodeChunk with an optional mapping at position (0,0) tied to a source location. */
53
+ export function chunk(code, loc) {
54
+ const mappings = [];
55
+ if (loc) {
56
+ mappings.push({
57
+ genLine: 0,
58
+ genCol: 0,
59
+ srcLine: loc.line - 1,
60
+ srcCol: loc.col - 1,
61
+ });
62
+ }
63
+ return { code, mappings };
64
+ }
65
+ /** Offset all mappings in an array by a line delta. */
66
+ export function offsetMappings(mappings, lineOffset) {
67
+ if (lineOffset === 0)
68
+ return mappings;
69
+ return mappings.map(m => ({ ...m, genLine: m.genLine + lineOffset }));
70
+ }
71
+ /** Count newlines in a string. */
72
+ export function lineCount(code) {
73
+ let count = 0;
74
+ for (let i = 0; i < code.length; i++) {
75
+ if (code[i] === '\n')
76
+ count++;
77
+ }
78
+ return count;
79
+ }
80
+ /**
81
+ * Join multiple CodeChunks with a separator string.
82
+ * Offsets each chunk's mappings by the accumulated line count.
83
+ */
84
+ export function joinChunks(chunks, separator) {
85
+ if (chunks.length === 0)
86
+ return { code: '', mappings: [] };
87
+ if (chunks.length === 1)
88
+ return chunks[0];
89
+ const sepLines = lineCount(separator);
90
+ const allMappings = [];
91
+ const codeParts = [];
92
+ let currentLine = 0;
93
+ for (let i = 0; i < chunks.length; i++) {
94
+ const c = chunks[i];
95
+ allMappings.push(...offsetMappings(c.mappings, currentLine));
96
+ codeParts.push(c.code);
97
+ currentLine += lineCount(c.code) + sepLines;
98
+ }
99
+ return { code: codeParts.join(separator), mappings: allMappings };
100
+ }
101
+ // --- Source map builder ---
102
+ /** Build a complete V3 source map object. */
103
+ export function buildSourceMap(mappings, file, sourceFile) {
104
+ return {
105
+ version: 3,
106
+ file,
107
+ sourceRoot: '',
108
+ sources: [sourceFile],
109
+ names: [],
110
+ mappings: encodeMappings(mappings),
111
+ };
112
+ }
113
+ //# sourceMappingURL=sourcemap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourcemap.js","sourceRoot":"","sources":["../../src/codegen/sourcemap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export { h, doctype, Fragment, raw, escape, SafeHtml } from './runtime/index.js';
2
+ export type { Attrs } from './runtime/index.js';
3
+ export { compile, compileWithSourceMap, generate, generateExpr, CodegenError } from './codegen/index.js';
4
+ export type { GenerateResult, CodeChunk, Mapping, SourceMap } from './codegen/index.js';
5
+ export { lex, LexerError } from './lexer/index.js';
6
+ export type { Token, TokenType } from './lexer/index.js';
7
+ export { parse, ParserError } from './parser/index.js';
8
+ export type { AstNode, SourceLocation, TextSegment, AttributeNode, ConditionalBranch, DocumentNode, TemplateNode, MixinDefinitionNode, MixinCallNode, ElementNode, TextNode, BufferedCodeNode, ConditionalNode, IterationNode, BlockNode, ExtendsNode, IncludeNode, ImportNode, DoctypeNode, CommentNode, PipeNode, } from './parser/index.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAChF,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACxG,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACvF,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtD,YAAY,EACR,OAAO,EACP,cAAc,EACd,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,QAAQ,GACX,MAAM,mBAAmB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ // Runtime
2
+ export { h, doctype, Fragment, raw, escape, SafeHtml } from './runtime/index.js';
3
+ // Compiler
4
+ export { compile, compileWithSourceMap, generate, generateExpr, CodegenError } from './codegen/index.js';
5
+ export { lex, LexerError } from './lexer/index.js';
6
+ export { parse, ParserError } from './parser/index.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGhF,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAExG,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,14 @@
1
+ export type TokenType = 'NEWLINE' | 'INDENT' | 'DEDENT' | 'EOF' | 'IMPORT' | 'TEMPLATE' | 'MIXIN' | 'EXTENDS' | 'BLOCK' | 'INCLUDE' | 'DOCTYPE' | 'IF' | 'ELSE_IF' | 'ELSE' | 'FOR' | 'TAG' | 'CLASS' | 'ID' | 'ATTR_START' | 'ATTR_END' | 'ATTR_NAME' | 'ATTR_VALUE' | 'SPREAD' | 'BUFFERED_CODE' | 'TEXT' | 'INTERPOLATION' | 'PIPE' | 'MIXIN_CALL' | 'COMMENT' | 'PASSTHROUGH_COMMENT' | 'PARAMS' | 'IDENTIFIER' | 'PATH';
2
+ export interface Token {
3
+ type: TokenType;
4
+ value: string;
5
+ line: number;
6
+ col: number;
7
+ }
8
+ export declare class LexerError extends Error {
9
+ readonly line: number;
10
+ readonly col: number;
11
+ constructor(message: string, line: number, col: number);
12
+ }
13
+ export declare function lex(source: string): Token[];
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lexer/index.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,SAAS,GAEf,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,KAAK,GAEL,QAAQ,GACR,UAAU,GACV,OAAO,GACP,SAAS,GACT,OAAO,GACP,SAAS,GACT,SAAS,GAET,IAAI,GACJ,SAAS,GACT,MAAM,GACN,KAAK,GAEL,KAAK,GACL,OAAO,GACP,IAAI,GACJ,YAAY,GACZ,UAAU,GACV,WAAW,GACX,YAAY,GACZ,QAAQ,GAER,eAAe,GACf,MAAM,GACN,eAAe,GACf,MAAM,GAEN,YAAY,GAEZ,SAAS,GACT,qBAAqB,GACrB,QAAQ,GACR,YAAY,GACZ,MAAM,CAAA;AAEZ,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACd;AAED,qBAAa,UAAW,SAAQ,KAAK;IACjC,SAAgB,IAAI,EAAE,MAAM,CAAA;IAC5B,SAAgB,GAAG,EAAE,MAAM,CAAA;gBAEf,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAMzD;AAwuBD,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAE3C"}