binja 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,47 @@
1
+ /**
2
+ * Jinja2/DTL Lexer - Tokenizes template source into tokens
3
+ * Compatible with both Jinja2 and Django Template Language
4
+ */
5
+ import { Token } from './tokens';
6
+ export declare class Lexer {
7
+ private state;
8
+ private variableStart;
9
+ private variableEnd;
10
+ private blockStart;
11
+ private blockEnd;
12
+ private commentStart;
13
+ private commentEnd;
14
+ constructor(source: string, options?: {
15
+ variableStart?: string;
16
+ variableEnd?: string;
17
+ blockStart?: string;
18
+ blockEnd?: string;
19
+ commentStart?: string;
20
+ commentEnd?: string;
21
+ });
22
+ tokenize(): Token[];
23
+ private scanToken;
24
+ private scanText;
25
+ private scanExpression;
26
+ private scanExpressionToken;
27
+ private scanString;
28
+ private scanNumber;
29
+ private scanIdentifier;
30
+ private scanOperator;
31
+ private scanComment;
32
+ private isAtEnd;
33
+ private peek;
34
+ private peekNext;
35
+ private advance;
36
+ private match;
37
+ private check;
38
+ private skipWhitespace;
39
+ private isWhitespace;
40
+ private isDigit;
41
+ private isAlpha;
42
+ private isAlphaNumeric;
43
+ private addToken;
44
+ }
45
+ export { TokenType, KEYWORDS } from './tokens';
46
+ export type { Token, LexerState } from './tokens';
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lexer/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,EAAmC,MAAM,UAAU,CAAA;AAEjE,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAQ;gBAGxB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,UAAU,CAAC,EAAE,MAAM,CAAA;KACf;IAmBR,QAAQ,IAAI,KAAK,EAAE;IASnB,OAAO,CAAC,SAAS;IA2BjB,OAAO,CAAC,QAAQ;IAmChB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,YAAY;IAuDpB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,QAAQ;CAQjB;AAED,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC9C,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Token types for Jinja2/DTL template lexer
3
+ */
4
+ export declare enum TokenType {
5
+ TEXT = "TEXT",
6
+ EOF = "EOF",
7
+ VARIABLE_START = "VARIABLE_START",// {{
8
+ VARIABLE_END = "VARIABLE_END",// }}
9
+ BLOCK_START = "BLOCK_START",// {%
10
+ BLOCK_END = "BLOCK_END",// %}
11
+ COMMENT_START = "COMMENT_START",// {#
12
+ COMMENT_END = "COMMENT_END",// #}
13
+ NAME = "NAME",// identifiers
14
+ STRING = "STRING",// "string" or 'string'
15
+ NUMBER = "NUMBER",// 123, 123.45
16
+ DOT = "DOT",// .
17
+ COMMA = "COMMA",// ,
18
+ COLON = "COLON",// :
19
+ PIPE = "PIPE",// |
20
+ LPAREN = "LPAREN",// (
21
+ RPAREN = "RPAREN",// )
22
+ LBRACKET = "LBRACKET",// [
23
+ RBRACKET = "RBRACKET",// ]
24
+ LBRACE = "LBRACE",// {
25
+ RBRACE = "RBRACE",// }
26
+ EQ = "EQ",// ==
27
+ NE = "NE",// !=
28
+ LT = "LT",// <
29
+ GT = "GT",// >
30
+ LE = "LE",// <=
31
+ GE = "GE",// >=
32
+ ADD = "ADD",// +
33
+ SUB = "SUB",// -
34
+ MUL = "MUL",// *
35
+ DIV = "DIV",// /
36
+ MOD = "MOD",// %
37
+ AND = "AND",// and
38
+ OR = "OR",// or
39
+ NOT = "NOT",// not
40
+ ASSIGN = "ASSIGN",// =
41
+ TILDE = "TILDE"
42
+ }
43
+ export interface Token {
44
+ type: TokenType;
45
+ value: string;
46
+ line: number;
47
+ column: number;
48
+ }
49
+ export interface LexerState {
50
+ source: string;
51
+ pos: number;
52
+ line: number;
53
+ column: number;
54
+ tokens: Token[];
55
+ }
56
+ export declare const KEYWORDS: Record<string, TokenType>;
57
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/lexer/tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,SAAS;IAEnB,IAAI,SAAS;IACb,GAAG,QAAQ;IAGX,cAAc,mBAAmB,CAAM,KAAK;IAC5C,YAAY,iBAAiB,CAAU,KAAK;IAC5C,WAAW,gBAAgB,CAAY,KAAK;IAC5C,SAAS,cAAc,CAAgB,KAAK;IAC5C,aAAa,kBAAkB,CAAQ,KAAK;IAC5C,WAAW,gBAAgB,CAAY,KAAK;IAG5C,IAAI,SAAS,CAA0B,cAAc;IACrD,MAAM,WAAW,CAAsB,uBAAuB;IAC9D,MAAM,WAAW,CAAsB,cAAc;IAGrD,GAAG,QAAQ,CAA4B,IAAI;IAC3C,KAAK,UAAU,CAAwB,IAAI;IAC3C,KAAK,UAAU,CAAwB,IAAI;IAC3C,IAAI,SAAS,CAA0B,IAAI;IAC3C,MAAM,WAAW,CAAsB,IAAI;IAC3C,MAAM,WAAW,CAAsB,IAAI;IAC3C,QAAQ,aAAa,CAAkB,IAAI;IAC3C,QAAQ,aAAa,CAAkB,IAAI;IAC3C,MAAM,WAAW,CAAsB,IAAI;IAC3C,MAAM,WAAW,CAAsB,IAAI;IAG3C,EAAE,OAAO,CAA8B,KAAK;IAC5C,EAAE,OAAO,CAA8B,KAAK;IAC5C,EAAE,OAAO,CAA8B,IAAI;IAC3C,EAAE,OAAO,CAA8B,IAAI;IAC3C,EAAE,OAAO,CAA8B,KAAK;IAC5C,EAAE,OAAO,CAA8B,KAAK;IAG5C,GAAG,QAAQ,CAA4B,IAAI;IAC3C,GAAG,QAAQ,CAA4B,IAAI;IAC3C,GAAG,QAAQ,CAA4B,IAAI;IAC3C,GAAG,QAAQ,CAA4B,IAAI;IAC3C,GAAG,QAAQ,CAA4B,IAAI;IAG3C,GAAG,QAAQ,CAA4B,MAAM;IAC7C,EAAE,OAAO,CAA8B,KAAK;IAC5C,GAAG,QAAQ,CAA4B,MAAM;IAG7C,MAAM,WAAW,CAAsB,IAAI;IAC3C,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB;AAGD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAY9C,CAAA"}
@@ -0,0 +1,51 @@
1
+ import type { Token } from '../lexer';
2
+ import type { TemplateNode } from './nodes';
3
+ export declare class Parser {
4
+ private tokens;
5
+ private current;
6
+ constructor(tokens: Token[]);
7
+ parse(): TemplateNode;
8
+ private parseStatement;
9
+ private parseText;
10
+ private parseOutput;
11
+ private parseBlock;
12
+ private parseIf;
13
+ private parseFor;
14
+ private parseBlockTag;
15
+ private parseExtends;
16
+ private parseInclude;
17
+ private parseSet;
18
+ private parseWith;
19
+ private parseLoad;
20
+ private parseUrl;
21
+ private parseStatic;
22
+ private parseComment;
23
+ private parseSimpleBlock;
24
+ private parseExpression;
25
+ private parseConditional;
26
+ private parseOr;
27
+ private parseAnd;
28
+ private parseNot;
29
+ private parseCompare;
30
+ private parseAddSub;
31
+ private parseMulDiv;
32
+ private parseUnary;
33
+ private parseFilter;
34
+ private parsePostfix;
35
+ private parsePrimary;
36
+ private parseKeywordArgs;
37
+ private checkBlockTag;
38
+ private expectBlockTag;
39
+ private expectName;
40
+ private skipToBlockEnd;
41
+ private isAtEnd;
42
+ private peek;
43
+ private peekNext;
44
+ private advance;
45
+ private check;
46
+ private match;
47
+ private expect;
48
+ private error;
49
+ }
50
+ export * from './nodes';
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,KAAK,EAEV,YAAY,EA2Bb,MAAM,SAAS,CAAA;AAEhB,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAY;gBAEf,MAAM,EAAE,KAAK,EAAE;IAI3B,KAAK,IAAI,YAAY;IAgBrB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,UAAU;IAwClB,OAAO,CAAC,OAAO;IA+Df,OAAO,CAAC,QAAQ;IAuEhB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,YAAY;IA8CpB,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,SAAS;IAiCjB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,QAAQ;IAqChB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,YAAY;IAgFpB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,WAAW;IA2DnB,OAAO,CAAC,YAAY;IAiEpB,OAAO,CAAC,YAAY;IAkFpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,KAAK;CAId;AAED,cAAc,SAAS,CAAA"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * AST Node definitions for Jinja2/DTL templates
3
+ */
4
+ export type NodeType = 'Template' | 'Text' | 'Output' | 'If' | 'For' | 'Block' | 'Extends' | 'Include' | 'Set' | 'With' | 'Macro' | 'Call' | 'Filter' | 'Comment' | 'Load' | 'Url' | 'Static' | 'Cache' | 'Name' | 'Literal' | 'Array' | 'Object' | 'BinaryOp' | 'UnaryOp' | 'Compare' | 'GetAttr' | 'GetItem' | 'FilterExpr' | 'TestExpr' | 'Conditional' | 'FunctionCall';
5
+ export interface BaseNode {
6
+ type: NodeType;
7
+ line: number;
8
+ column: number;
9
+ }
10
+ export interface TemplateNode extends BaseNode {
11
+ type: 'Template';
12
+ body: ASTNode[];
13
+ }
14
+ export interface TextNode extends BaseNode {
15
+ type: 'Text';
16
+ value: string;
17
+ }
18
+ export interface OutputNode extends BaseNode {
19
+ type: 'Output';
20
+ expression: ExpressionNode;
21
+ }
22
+ export interface IfNode extends BaseNode {
23
+ type: 'If';
24
+ test: ExpressionNode;
25
+ body: ASTNode[];
26
+ elifs: Array<{
27
+ test: ExpressionNode;
28
+ body: ASTNode[];
29
+ }>;
30
+ else_: ASTNode[];
31
+ }
32
+ export interface ForNode extends BaseNode {
33
+ type: 'For';
34
+ target: string | string[];
35
+ iter: ExpressionNode;
36
+ body: ASTNode[];
37
+ else_: ASTNode[];
38
+ recursive: boolean;
39
+ }
40
+ export interface BlockNode extends BaseNode {
41
+ type: 'Block';
42
+ name: string;
43
+ body: ASTNode[];
44
+ scoped: boolean;
45
+ }
46
+ export interface ExtendsNode extends BaseNode {
47
+ type: 'Extends';
48
+ template: ExpressionNode;
49
+ }
50
+ export interface IncludeNode extends BaseNode {
51
+ type: 'Include';
52
+ template: ExpressionNode;
53
+ context: Record<string, ExpressionNode> | null;
54
+ only: boolean;
55
+ ignoreMissing: boolean;
56
+ }
57
+ export interface SetNode extends BaseNode {
58
+ type: 'Set';
59
+ target: string;
60
+ value: ExpressionNode;
61
+ }
62
+ export interface WithNode extends BaseNode {
63
+ type: 'With';
64
+ assignments: Array<{
65
+ target: string;
66
+ value: ExpressionNode;
67
+ }>;
68
+ body: ASTNode[];
69
+ }
70
+ export interface LoadNode extends BaseNode {
71
+ type: 'Load';
72
+ names: string[];
73
+ }
74
+ export interface UrlNode extends BaseNode {
75
+ type: 'Url';
76
+ name: ExpressionNode;
77
+ args: ExpressionNode[];
78
+ kwargs: Record<string, ExpressionNode>;
79
+ asVar: string | null;
80
+ }
81
+ export interface StaticNode extends BaseNode {
82
+ type: 'Static';
83
+ path: ExpressionNode;
84
+ asVar: string | null;
85
+ }
86
+ export interface CacheNode extends BaseNode {
87
+ type: 'Cache';
88
+ timeout: ExpressionNode;
89
+ fragment: ExpressionNode;
90
+ varyOn: ExpressionNode[];
91
+ body: ASTNode[];
92
+ }
93
+ export interface NameNode extends BaseNode {
94
+ type: 'Name';
95
+ name: string;
96
+ }
97
+ export interface LiteralNode extends BaseNode {
98
+ type: 'Literal';
99
+ value: string | number | boolean | null;
100
+ }
101
+ export interface ArrayNode extends BaseNode {
102
+ type: 'Array';
103
+ elements: ExpressionNode[];
104
+ }
105
+ export interface ObjectNode extends BaseNode {
106
+ type: 'Object';
107
+ pairs: Array<{
108
+ key: ExpressionNode;
109
+ value: ExpressionNode;
110
+ }>;
111
+ }
112
+ export interface BinaryOpNode extends BaseNode {
113
+ type: 'BinaryOp';
114
+ operator: string;
115
+ left: ExpressionNode;
116
+ right: ExpressionNode;
117
+ }
118
+ export interface UnaryOpNode extends BaseNode {
119
+ type: 'UnaryOp';
120
+ operator: string;
121
+ operand: ExpressionNode;
122
+ }
123
+ export interface CompareNode extends BaseNode {
124
+ type: 'Compare';
125
+ left: ExpressionNode;
126
+ ops: Array<{
127
+ operator: string;
128
+ right: ExpressionNode;
129
+ }>;
130
+ }
131
+ export interface GetAttrNode extends BaseNode {
132
+ type: 'GetAttr';
133
+ object: ExpressionNode;
134
+ attribute: string;
135
+ }
136
+ export interface GetItemNode extends BaseNode {
137
+ type: 'GetItem';
138
+ object: ExpressionNode;
139
+ index: ExpressionNode;
140
+ }
141
+ export interface FilterExprNode extends BaseNode {
142
+ type: 'FilterExpr';
143
+ node: ExpressionNode;
144
+ filter: string;
145
+ args: ExpressionNode[];
146
+ kwargs: Record<string, ExpressionNode>;
147
+ }
148
+ export interface TestExprNode extends BaseNode {
149
+ type: 'TestExpr';
150
+ node: ExpressionNode;
151
+ test: string;
152
+ args: ExpressionNode[];
153
+ negated: boolean;
154
+ }
155
+ export interface ConditionalNode extends BaseNode {
156
+ type: 'Conditional';
157
+ test: ExpressionNode;
158
+ trueExpr: ExpressionNode;
159
+ falseExpr: ExpressionNode;
160
+ }
161
+ export interface FunctionCallNode extends BaseNode {
162
+ type: 'FunctionCall';
163
+ callee: ExpressionNode;
164
+ args: ExpressionNode[];
165
+ kwargs: Record<string, ExpressionNode>;
166
+ }
167
+ export interface CommentNode extends BaseNode {
168
+ type: 'Comment';
169
+ value: string;
170
+ }
171
+ export interface MacroNode extends BaseNode {
172
+ type: 'Macro';
173
+ name: string;
174
+ args: string[];
175
+ defaults: Record<string, ExpressionNode>;
176
+ body: ASTNode[];
177
+ }
178
+ export interface CallNode extends BaseNode {
179
+ type: 'Call';
180
+ call: ExpressionNode;
181
+ args: ExpressionNode[];
182
+ kwargs: Record<string, ExpressionNode>;
183
+ body: ASTNode[];
184
+ }
185
+ export interface FilterNode extends BaseNode {
186
+ type: 'Filter';
187
+ filter: string;
188
+ body: ASTNode[];
189
+ }
190
+ export type ExpressionNode = NameNode | LiteralNode | ArrayNode | ObjectNode | BinaryOpNode | UnaryOpNode | CompareNode | GetAttrNode | GetItemNode | FilterExprNode | TestExprNode | ConditionalNode | FunctionCallNode;
191
+ export type StatementNode = TextNode | OutputNode | IfNode | ForNode | BlockNode | ExtendsNode | IncludeNode | SetNode | WithNode | LoadNode | UrlNode | StaticNode | CacheNode | CommentNode | MacroNode | CallNode | FilterNode;
192
+ export type ASTNode = StatementNode | ExpressionNode | TemplateNode;
193
+ //# sourceMappingURL=nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/parser/nodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Template execution context
3
+ * Manages variable scope and provides DTL-compatible forloop object
4
+ */
5
+ export interface ForLoop {
6
+ counter: number;
7
+ counter0: number;
8
+ revcounter: number;
9
+ revcounter0: number;
10
+ first: boolean;
11
+ last: boolean;
12
+ length: number;
13
+ index: number;
14
+ index0: number;
15
+ revindex: number;
16
+ revindex0: number;
17
+ depth: number;
18
+ depth0: number;
19
+ cycle: (...args: any[]) => any;
20
+ changed: (value: any) => boolean;
21
+ previtem?: any;
22
+ nextitem?: any;
23
+ }
24
+ export declare class Context {
25
+ private scopes;
26
+ private parent;
27
+ private _forloopStack;
28
+ private _lastCycleValue;
29
+ constructor(data?: Record<string, any>, parent?: Context | null);
30
+ get(name: string): any;
31
+ set(name: string, value: any): void;
32
+ has(name: string): boolean;
33
+ push(data?: Record<string, any>): void;
34
+ pop(): void;
35
+ derived(data?: Record<string, any>): Context;
36
+ pushForLoop(items: any[], index: number): ForLoop;
37
+ popForLoop(): void;
38
+ updateForLoop(index: number, items: any[]): void;
39
+ toObject(): Record<string, any>;
40
+ }
41
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/runtime/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IAEd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,QAAQ,CAAC,EAAE,GAAG,CAAA;CACf;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAY;gBAEvB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,MAAM,GAAE,OAAO,GAAG,IAAW;IAKzE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAqBtB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAInC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO1B,IAAI,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,IAAI;IAI1C,GAAG,IAAI,IAAI;IAMX,OAAO,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO;IAKhD,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAwCjD,UAAU,IAAI,IAAI;IAIlB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI;IAoBhD,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAiBhC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Jinja2/DTL Runtime - Executes AST and produces output
3
+ * Compatible with both Jinja2 and Django Template Language
4
+ */
5
+ import { Context } from './context';
6
+ import { FilterFunction } from '../filters';
7
+ import { TestFunction } from '../tests';
8
+ import type { TemplateNode, ExpressionNode } from '../parser/nodes';
9
+ export interface RuntimeOptions {
10
+ autoescape?: boolean;
11
+ filters?: Record<string, FilterFunction>;
12
+ tests?: Record<string, TestFunction>;
13
+ globals?: Record<string, any>;
14
+ urlResolver?: (name: string, args: any[], kwargs: Record<string, any>) => string;
15
+ staticResolver?: (path: string) => string;
16
+ templateLoader?: (name: string) => Promise<TemplateNode>;
17
+ }
18
+ export declare class Runtime {
19
+ private options;
20
+ private filters;
21
+ private tests;
22
+ private blocks;
23
+ private parentTemplate;
24
+ constructor(options?: RuntimeOptions);
25
+ render(ast: TemplateNode, context?: Record<string, any>): Promise<string>;
26
+ private collectBlocks;
27
+ private renderTemplate;
28
+ private renderNode;
29
+ private renderOutput;
30
+ private renderIf;
31
+ private renderFor;
32
+ private renderBlock;
33
+ private renderInclude;
34
+ private renderSet;
35
+ private renderWith;
36
+ private renderUrl;
37
+ private renderStatic;
38
+ private renderNodes;
39
+ evaluate(node: ExpressionNode, ctx: Context): Promise<any>;
40
+ private evaluateTest;
41
+ private evaluateGetAttr;
42
+ private evaluateGetItem;
43
+ private evaluateFilter;
44
+ private evaluateBinaryOp;
45
+ private evaluateUnaryOp;
46
+ private evaluateCompare;
47
+ private evaluateConditional;
48
+ private evaluateObjectLiteral;
49
+ private evaluateFunctionCall;
50
+ private evaluateObject;
51
+ private stringify;
52
+ private isTruthy;
53
+ private isIn;
54
+ private toIterable;
55
+ addFilter(name: string, fn: FilterFunction): void;
56
+ addTest(name: string, fn: TestFunction): void;
57
+ addGlobal(name: string, value: any): void;
58
+ }
59
+ export { Context } from './context';
60
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAkB,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAgB,YAAY,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,KAAK,EAEV,YAAY,EAaZ,cAAc,EAcf,MAAM,iBAAiB,CAAA;AAExB,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAA;IAChF,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;CACzD;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,cAAc,CAA4B;gBAEtC,OAAO,GAAE,cAAmB;IAoBlC,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAgBrE,aAAa;YAab,cAAc;YAWd,UAAU;YA6CV,YAAY;YAKZ,QAAQ;YAqBR,SAAS;YAiDT,WAAW;YAmBX,aAAa;YAuBb,SAAS;YAMT,UAAU;YAaV,SAAS;YAeT,YAAY;YAYZ,WAAW;IAWnB,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;YA8ClD,YAAY;YA8BZ,eAAe;YA4Bf,eAAe;YAQf,cAAc;YAcd,gBAAgB;YAmChB,eAAe;YAef,eAAe;YAiDf,mBAAmB;YAOnB,qBAAqB;YASrB,oBAAoB;YAYpB,cAAc;IAa5B,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,UAAU;IAelB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,IAAI;IAKjD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI;IAK7C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;CAG1C;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Built-in test functions for Jinja2 compatibility
3
+ * Tests are used with the "is" operator: {{ x is divisibleby(3) }}
4
+ */
5
+ export type TestFunction = (value: any, ...args: any[]) => boolean;
6
+ export declare const divisibleby: TestFunction;
7
+ export declare const even: TestFunction;
8
+ export declare const odd: TestFunction;
9
+ export declare const number: TestFunction;
10
+ export declare const integer: TestFunction;
11
+ export declare const float: TestFunction;
12
+ export declare const gt: TestFunction;
13
+ export declare const ge: TestFunction;
14
+ export declare const lt: TestFunction;
15
+ export declare const le: TestFunction;
16
+ export declare const greaterthan: TestFunction;
17
+ export declare const lessthan: TestFunction;
18
+ export declare const defined: TestFunction;
19
+ export declare const undefined: TestFunction;
20
+ export declare const none: TestFunction;
21
+ export declare const boolean: TestFunction;
22
+ export declare const string: TestFunction;
23
+ export declare const mapping: TestFunction;
24
+ export declare const iterable: TestFunction;
25
+ export declare const sequence: TestFunction;
26
+ export declare const callable: TestFunction;
27
+ export declare const lower: TestFunction;
28
+ export declare const upper: TestFunction;
29
+ export declare const empty: TestFunction;
30
+ export declare const in_: TestFunction;
31
+ export declare const eq: TestFunction;
32
+ export declare const ne: TestFunction;
33
+ export declare const sameas: TestFunction;
34
+ export declare const equalto: TestFunction;
35
+ export declare const truthy: TestFunction;
36
+ export declare const falsy: TestFunction;
37
+ export declare const true_: TestFunction;
38
+ export declare const false_: TestFunction;
39
+ export declare const builtinTests: Record<string, TestFunction>;
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tests/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAA;AAIlE,eAAO,MAAM,WAAW,EAAE,YAKzB,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,YAGlB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,YAGjB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,YAEpB,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,YAErB,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,YAEnB,CAAA;AAGD,eAAO,MAAM,EAAE,EAAE,YAA8D,CAAA;AAC/E,eAAO,MAAM,EAAE,EAAE,YAA+D,CAAA;AAChF,eAAO,MAAM,EAAE,EAAE,YAA8D,CAAA;AAC/E,eAAO,MAAM,EAAE,EAAE,YAA+D,CAAA;AAChF,eAAO,MAAM,WAAW,cAAK,CAAA;AAC7B,eAAO,MAAM,QAAQ,cAAK,CAAA;AAI1B,eAAO,MAAM,OAAO,EAAE,YAErB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,YAEvB,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,YAElB,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,YAErB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,YAEpB,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,YAOrB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,YAGtB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,YAEtB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,YAEtB,CAAA;AAID,eAAO,MAAM,KAAK,EAAE,YAGnB,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,YAGnB,CAAA;AAID,eAAO,MAAM,KAAK,EAAE,YAKnB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,YAKjB,CAAA;AAID,eAAO,MAAM,EAAE,EAAE,YAAgD,CAAA;AACjE,eAAO,MAAM,EAAE,EAAE,YAAgD,CAAA;AACjE,eAAO,MAAM,MAAM,EAAE,YAAgD,CAAA;AACrE,eAAO,MAAM,OAAO,cAAK,CAAA;AAIzB,eAAO,MAAM,MAAM,EAAE,YAQpB,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,YAAwC,CAAA;AAG5D,eAAO,MAAM,KAAK,EAAE,YAAwC,CAAA;AAC5D,eAAO,MAAM,MAAM,EAAE,YAAyC,CAAA;AAI9D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA6CrD,CAAA"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "binja",
3
+ "version": "0.1.0",
4
+ "description": "High-performance Jinja2/Django template engine for Bun",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.js",
12
+ "types": "./dist/index.d.ts",
13
+ "bun": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
21
+ "scripts": {
22
+ "build": "bun build ./src/index.ts --outdir ./dist --target bun && bun run build:types",
23
+ "build:types": "tsc --declaration --emitDeclarationOnly --outDir ./dist",
24
+ "test": "bun test",
25
+ "dev": "bun --watch src/index.ts",
26
+ "typecheck": "tsc --noEmit",
27
+ "prepublishOnly": "bun run build",
28
+ "version:patch": "npm version patch --no-git-tag-version",
29
+ "version:minor": "npm version minor --no-git-tag-version",
30
+ "version:major": "npm version major --no-git-tag-version",
31
+ "release:patch": "bun run version:patch && bun run build",
32
+ "release:minor": "bun run version:minor && bun run build",
33
+ "release:major": "bun run version:major && bun run build"
34
+ },
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "git+https://github.com/egeominotti/binja.git"
38
+ },
39
+ "homepage": "https://github.com/egeominotti/binja#readme",
40
+ "bugs": {
41
+ "url": "https://github.com/egeominotti/binja/issues"
42
+ },
43
+ "keywords": [
44
+ "jinja2",
45
+ "django",
46
+ "template",
47
+ "dtl",
48
+ "bun",
49
+ "ssr",
50
+ "template-engine",
51
+ "django-templates",
52
+ "typescript"
53
+ ],
54
+ "author": "egeominotti",
55
+ "license": "BSD-3-Clause",
56
+ "devDependencies": {
57
+ "@types/bun": "latest",
58
+ "typescript": "^5.0.0"
59
+ },
60
+ "engines": {
61
+ "bun": ">=1.0.0"
62
+ }
63
+ }