illimi-core 1.0.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.
Files changed (41) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +135 -0
  3. package/dist/ast/nodes.d.ts +91 -0
  4. package/dist/ast/nodes.d.ts.map +1 -0
  5. package/dist/ast/nodes.js +8 -0
  6. package/dist/ast/nodes.js.map +1 -0
  7. package/dist/compiler/mergeSlots.d.ts +31 -0
  8. package/dist/compiler/mergeSlots.d.ts.map +1 -0
  9. package/dist/compiler/mergeSlots.js +85 -0
  10. package/dist/compiler/mergeSlots.js.map +1 -0
  11. package/dist/compiler/resolveLayout.d.ts +22 -0
  12. package/dist/compiler/resolveLayout.d.ts.map +1 -0
  13. package/dist/compiler/resolveLayout.js +212 -0
  14. package/dist/compiler/resolveLayout.js.map +1 -0
  15. package/dist/index.d.ts +8 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +14 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/ir/transform.d.ts +50 -0
  20. package/dist/ir/transform.d.ts.map +1 -0
  21. package/dist/ir/transform.js +128 -0
  22. package/dist/ir/transform.js.map +1 -0
  23. package/dist/parser/directiveParser.d.ts +34 -0
  24. package/dist/parser/directiveParser.d.ts.map +1 -0
  25. package/dist/parser/directiveParser.js +131 -0
  26. package/dist/parser/directiveParser.js.map +1 -0
  27. package/dist/parser/htmlParser.d.ts +13 -0
  28. package/dist/parser/htmlParser.d.ts.map +1 -0
  29. package/dist/parser/htmlParser.js +350 -0
  30. package/dist/parser/htmlParser.js.map +1 -0
  31. package/dist/vdom/diff.d.ts +33 -0
  32. package/dist/vdom/diff.d.ts.map +1 -0
  33. package/dist/vdom/diff.js +259 -0
  34. package/dist/vdom/diff.js.map +1 -0
  35. package/dist/vdom/vnode.d.ts +52 -0
  36. package/dist/vdom/vnode.d.ts.map +1 -0
  37. package/dist/vdom/vnode.js +206 -0
  38. package/dist/vdom/vnode.js.map +1 -0
  39. package/package.json +38 -0
  40. package/tsconfig.base.json +28 -0
  41. package/tsconfig.json +8 -0
@@ -0,0 +1,52 @@
1
+ /**
2
+ * FeedJS Core - VDOM Node Types
3
+ *
4
+ * Defines the Virtual DOM (VDOM) node structure.
5
+ * VDOM is platform-agnostic and represents the renderable tree.
6
+ */
7
+ import type { IRNode } from '../ir/transform.js';
8
+ export declare const FragmentSymbol: unique symbol;
9
+ export declare const TextSymbol: unique symbol;
10
+ export interface VNode {
11
+ type: string | symbol;
12
+ props: VNodeProps | null;
13
+ children: VNodeChild;
14
+ key: string;
15
+ interpolation?: string;
16
+ directives?: Array<{
17
+ type: string;
18
+ name: string;
19
+ value: string;
20
+ expression: string;
21
+ modifiers?: string[];
22
+ }>;
23
+ }
24
+ export interface VNodeProps {
25
+ [key: string]: VNodePropValue;
26
+ }
27
+ export type VNodePropValue = string | number | boolean | null | undefined;
28
+ export type VNodeChild = VNode[] | string | null;
29
+ export interface VNodeState {
30
+ [key: string]: unknown;
31
+ }
32
+ /**
33
+ * Create a VDOM node from IR
34
+ *
35
+ * @param ir - The IR node(s) to convert
36
+ * @param state - The current state for evaluating expressions
37
+ * @returns VNode
38
+ */
39
+ export declare function createVDOM(ir: IRNode | IRNode[], state: VNodeState): VNode;
40
+ /**
41
+ * Check if VNode is a text node
42
+ */
43
+ export declare function isTextVNode(node: VNode): boolean;
44
+ /**
45
+ * Check if VNode is a fragment
46
+ */
47
+ export declare function isFragment(node: VNode): boolean;
48
+ /**
49
+ * Get the type name of a VNode
50
+ */
51
+ export declare function getVNodeType(node: VNode): string;
52
+ //# sourceMappingURL=vnode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vnode.d.ts","sourceRoot":"","sources":["../../src/vdom/vnode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,eAAO,MAAM,cAAc,eAAgC,CAAC;AAC5D,eAAO,MAAM,UAAU,eAA4B,CAAC;AAGpD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC,CAAC;CACJ;AAGD,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC/B;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAG1E,MAAM,MAAM,UAAU,GAAG,KAAK,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;AAGjD,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,KAAK,CAS1E;AAwLD;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAOhD"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * FeedJS Core - VDOM Node Types
3
+ *
4
+ * Defines the Virtual DOM (VDOM) node structure.
5
+ * VDOM is platform-agnostic and represents the renderable tree.
6
+ */
7
+ // Symbol for element type
8
+ export const FragmentSymbol = Symbol.for('feedjs.fragment');
9
+ export const TextSymbol = Symbol.for('feedjs.text');
10
+ /**
11
+ * Create a VDOM node from IR
12
+ *
13
+ * @param ir - The IR node(s) to convert
14
+ * @param state - The current state for evaluating expressions
15
+ * @returns VNode
16
+ */
17
+ export function createVDOM(ir, state) {
18
+ // Handle array of IR nodes
19
+ if (Array.isArray(ir)) {
20
+ // Create a fragment to hold multiple root nodes
21
+ const fragment = createFragmentVNode(ir, state);
22
+ return fragment;
23
+ }
24
+ return createVNodeFromIR(ir, state);
25
+ }
26
+ /**
27
+ * Create VNode from IR node
28
+ */
29
+ function createVNodeFromIR(ir, state) {
30
+ if (ir.kind === 'text') {
31
+ return createTextVNode(ir.value ?? '', state, ir);
32
+ }
33
+ if (ir.kind === 'fragment') {
34
+ return createFragmentVNode(ir.children ?? [], state);
35
+ }
36
+ return createElementVNode(ir, state);
37
+ }
38
+ /**
39
+ * Create an element VNode
40
+ */
41
+ function createElementVNode(ir, state) {
42
+ const props = {};
43
+ // Process static props
44
+ if (ir.props) {
45
+ for (const [key, value] of Object.entries(ir.props)) {
46
+ props[key] = value;
47
+ }
48
+ }
49
+ // Process directives
50
+ if (ir.directives) {
51
+ for (const directive of ir.directives) {
52
+ processDirective(directive, props, state);
53
+ }
54
+ }
55
+ // Process children
56
+ let children = null;
57
+ if (ir.children && ir.children.length > 0) {
58
+ const childNodes = [];
59
+ for (const childIR of ir.children) {
60
+ const childVNode = createVNodeFromIR(childIR, state);
61
+ childNodes.push(childVNode);
62
+ }
63
+ children = childNodes;
64
+ }
65
+ return {
66
+ type: ir.tag ?? 'div',
67
+ props,
68
+ children,
69
+ key: ir.key ?? '',
70
+ directives: ir.directives || [],
71
+ };
72
+ }
73
+ /**
74
+ * Create a text VNode
75
+ */
76
+ function createTextVNode(value, state, ir) {
77
+ // Check for interpolation
78
+ if (ir?.interpolation) {
79
+ const interpValue = evaluateExpression(ir.interpolation, state);
80
+ return {
81
+ type: TextSymbol,
82
+ props: null,
83
+ children: String(interpValue ?? ''),
84
+ key: '',
85
+ interpolation: ir.interpolation,
86
+ };
87
+ }
88
+ // Don't evaluate at compile time - the runtime will handle directives
89
+ // Just store the raw value
90
+ return {
91
+ type: TextSymbol,
92
+ props: null,
93
+ children: value,
94
+ key: '',
95
+ };
96
+ }
97
+ /**
98
+ * Create a fragment VNode
99
+ */
100
+ function createFragmentVNode(children, state) {
101
+ const childNodes = [];
102
+ for (const childIR of children) {
103
+ const childVNode = createVNodeFromIR(childIR, state);
104
+ childNodes.push(childVNode);
105
+ }
106
+ return {
107
+ type: FragmentSymbol,
108
+ props: null,
109
+ children: childNodes,
110
+ key: '',
111
+ };
112
+ }
113
+ /**
114
+ * Process a directive and update props
115
+ */
116
+ function processDirective(directive, props, state) {
117
+ switch (directive.type) {
118
+ case 'text': {
119
+ // x-text directive - set as text content
120
+ const value = evaluateExpression(directive.expression ?? '', state);
121
+ props['x-text'] = String(value ?? '');
122
+ break;
123
+ }
124
+ case 'html': {
125
+ // x-html directive - set as raw HTML
126
+ const value = evaluateExpression(directive.expression ?? '', state);
127
+ props['x-html'] = String(value ?? '');
128
+ break;
129
+ }
130
+ case 'bind': {
131
+ // x-bind:attribute - bind attribute to expression
132
+ const attrName = directive.name.replace(/^(?:x|f)-bind:/, '');
133
+ const value = evaluateExpression(directive.expression ?? '', state);
134
+ props[attrName] = value == null ? '' : String(value);
135
+ break;
136
+ }
137
+ case 'on': {
138
+ // x-on:event - declare event handler
139
+ const eventName = directive.name.replace(/^(?:x|f)-on:/, '');
140
+ props[`x-on:${eventName}`] = directive.expression ?? '';
141
+ break;
142
+ }
143
+ case 'show': {
144
+ const value = evaluateExpression(directive.expression ?? '', state);
145
+ props['x-show'] = Boolean(value);
146
+ break;
147
+ }
148
+ case 'model': {
149
+ props['x-model'] = directive.expression ?? '';
150
+ break;
151
+ }
152
+ case 'if':
153
+ case 'else-if':
154
+ case 'else':
155
+ case 'for':
156
+ case 'items':
157
+ case 'key':
158
+ // These are handled at a higher level
159
+ break;
160
+ }
161
+ }
162
+ /**
163
+ * Simple expression evaluator
164
+ * In a real implementation, this would use a proper expression parser
165
+ * For now, it supports simple property access and literals
166
+ */
167
+ function evaluateExpression(expr, state) {
168
+ if (!expr)
169
+ return undefined;
170
+ try {
171
+ const context = state;
172
+ const keys = Object.keys(context);
173
+ const values = Object.values(context);
174
+ const fn = new Function(...keys, `"use strict"; return (${expr});`);
175
+ return fn(...values);
176
+ }
177
+ catch {
178
+ return undefined;
179
+ }
180
+ }
181
+ /**
182
+ * Check if VNode is a text node
183
+ */
184
+ export function isTextVNode(node) {
185
+ return node.type === TextSymbol;
186
+ }
187
+ /**
188
+ * Check if VNode is a fragment
189
+ */
190
+ export function isFragment(node) {
191
+ return node.type === FragmentSymbol;
192
+ }
193
+ /**
194
+ * Get the type name of a VNode
195
+ */
196
+ export function getVNodeType(node) {
197
+ if (typeof node.type === 'symbol') {
198
+ if (node.type === TextSymbol)
199
+ return 'text';
200
+ if (node.type === FragmentSymbol)
201
+ return 'fragment';
202
+ return 'unknown';
203
+ }
204
+ return node.type;
205
+ }
206
+ //# sourceMappingURL=vnode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vnode.js","sourceRoot":"","sources":["../../src/vdom/vnode.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "illimi-core",
3
+ "version": "1.0.0",
4
+ "private": false,
5
+ "description": "Core library for illimi framework - Virtual DOM and Reactivity System",
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "exports": {
9
+ ".": "./dist/index.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc"
13
+ },
14
+ "keywords": [],
15
+ "authors": [
16
+ {
17
+ "name": "Rapha Panchi",
18
+ "email": "raphapanchi@gmail.com",
19
+ "url": "https://github.com/ralphxp"
20
+ },
21
+ {
22
+ "name": "Codizium Team",
23
+ "email": "hell.codizium@gmail.com",
24
+ "url": "https://github.com/codizium"
25
+ }
26
+ ],
27
+ "license": "MIT",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git@github.com:codizium/illimi-core.git"
31
+ },
32
+ "bugs": {
33
+ "url": "https://github.com/codizium/illimi-core/issues"
34
+ },
35
+ "homepage": "https://github.com/codizium/illimi-core#readme"
36
+
37
+
38
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "compilerOptions": {
3
+ /* === Module System === */
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+
7
+ /* === Output === */
8
+ "target": "ES2020",
9
+ "outDir": "./dist",
10
+ "declaration": true,
11
+ "declarationMap": true,
12
+ "sourceMap": true,
13
+
14
+ /* === Project Structure === */
15
+ /* rootDir is set per-package in package tsconfigs */
16
+ "rootDir": "./src",
17
+
18
+ /* === Type Safety === */
19
+ "strict": true,
20
+ "noUncheckedIndexedAccess": true,
21
+ "exactOptionalPropertyTypes": true,
22
+
23
+ /* === Interop & Stability === */
24
+ "esModuleInterop": true,
25
+ "forceConsistentCasingInFileNames": true,
26
+ "skipLibCheck": true
27
+ }
28
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "./tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "rootDir": "./src",
5
+ "outDir": "./dist"
6
+ },
7
+ "include": ["src"]
8
+ }