illimi-runtime 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.
- package/LICENSE +21 -0
- package/README.md +130 -0
- package/dist/directives/bind.d.ts +8 -0
- package/dist/directives/bind.d.ts.map +1 -0
- package/dist/directives/bind.js +69 -0
- package/dist/directives/bind.js.map +1 -0
- package/dist/directives/evaluator.d.ts +40 -0
- package/dist/directives/evaluator.d.ts.map +1 -0
- package/dist/directives/evaluator.js +125 -0
- package/dist/directives/evaluator.js.map +1 -0
- package/dist/directives/for.d.ts +9 -0
- package/dist/directives/for.d.ts.map +1 -0
- package/dist/directives/for.js +67 -0
- package/dist/directives/for.js.map +1 -0
- package/dist/directives/html.d.ts +8 -0
- package/dist/directives/html.d.ts.map +1 -0
- package/dist/directives/html.js +11 -0
- package/dist/directives/html.js.map +1 -0
- package/dist/directives/if.d.ts +12 -0
- package/dist/directives/if.d.ts.map +1 -0
- package/dist/directives/if.js +15 -0
- package/dist/directives/if.js.map +1 -0
- package/dist/directives/index.d.ts +16 -0
- package/dist/directives/index.d.ts.map +1 -0
- package/dist/directives/index.js +16 -0
- package/dist/directives/index.js.map +1 -0
- package/dist/directives/model.d.ts +8 -0
- package/dist/directives/model.d.ts.map +1 -0
- package/dist/directives/model.js +38 -0
- package/dist/directives/model.js.map +1 -0
- package/dist/directives/on.d.ts +8 -0
- package/dist/directives/on.d.ts.map +1 -0
- package/dist/directives/on.js +50 -0
- package/dist/directives/on.js.map +1 -0
- package/dist/directives/show.d.ts +8 -0
- package/dist/directives/show.d.ts.map +1 -0
- package/dist/directives/show.js +11 -0
- package/dist/directives/show.js.map +1 -0
- package/dist/directives/text.d.ts +12 -0
- package/dist/directives/text.d.ts.map +1 -0
- package/dist/directives/text.js +15 -0
- package/dist/directives/text.js.map +1 -0
- package/dist/directives/types.d.ts +27 -0
- package/dist/directives/types.d.ts.map +1 -0
- package/dist/directives/types.js +7 -0
- package/dist/directives/types.js.map +1 -0
- package/dist/dom/createNode.d.ts +14 -0
- package/dist/dom/createNode.d.ts.map +1 -0
- package/dist/dom/createNode.js +304 -0
- package/dist/dom/createNode.js.map +1 -0
- package/dist/dom/events.d.ts +22 -0
- package/dist/dom/events.d.ts.map +1 -0
- package/dist/dom/events.js +104 -0
- package/dist/dom/events.js.map +1 -0
- package/dist/dom/updateProps.d.ts +15 -0
- package/dist/dom/updateProps.d.ts.map +1 -0
- package/dist/dom/updateProps.js +51 -0
- package/dist/dom/updateProps.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/jquery/bridge.d.ts +39 -0
- package/dist/jquery/bridge.d.ts.map +1 -0
- package/dist/jquery/bridge.js +59 -0
- package/dist/jquery/bridge.js.map +1 -0
- package/dist/providers/storage.d.ts +24 -0
- package/dist/providers/storage.d.ts.map +1 -0
- package/dist/providers/storage.js +126 -0
- package/dist/providers/storage.js.map +1 -0
- package/dist/renderer/hydrate.d.ts +22 -0
- package/dist/renderer/hydrate.d.ts.map +1 -0
- package/dist/renderer/hydrate.js +105 -0
- package/dist/renderer/hydrate.js.map +1 -0
- package/dist/renderer/mount.d.ts +15 -0
- package/dist/renderer/mount.d.ts.map +1 -0
- package/dist/renderer/mount.js +70 -0
- package/dist/renderer/mount.js.map +1 -0
- package/dist/renderer/patch.d.ts +15 -0
- package/dist/renderer/patch.d.ts.map +1 -0
- package/dist/renderer/patch.js +147 -0
- package/dist/renderer/patch.js.map +1 -0
- package/dist/router/index.d.ts +15 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +263 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/types.d.ts +67 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +5 -0
- package/dist/router/types.js.map +1 -0
- package/dist/state/store.d.ts +15 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/store.js +36 -0
- package/dist/state/store.js.map +1 -0
- package/package.json +42 -0
- package/tsconfig.base.json +28 -0
- package/tsconfig.json +7 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeedJS Runtime - Mount
|
|
3
|
+
*
|
|
4
|
+
* Mounts VDOM to a real DOM container with directive execution.
|
|
5
|
+
*/
|
|
6
|
+
import type { VNode as FeedVNode } from '@illimi/core';
|
|
7
|
+
/**
|
|
8
|
+
* Mount a VNode to a container element
|
|
9
|
+
*/
|
|
10
|
+
export declare function mount(container: Element, vnode: FeedVNode, state?: any): void;
|
|
11
|
+
/**
|
|
12
|
+
* Unmount from a container
|
|
13
|
+
*/
|
|
14
|
+
export declare function unmount(container: Element): void;
|
|
15
|
+
//# sourceMappingURL=mount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/renderer/mount.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AAavD;;GAEG;AACH,wBAAgB,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,GAAE,GAAQ,GAAG,IAAI,CAmCjF;AAoBD;;GAEG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAShD"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeedJS Runtime - Mount
|
|
3
|
+
*
|
|
4
|
+
* Mounts VDOM to a real DOM container with directive execution.
|
|
5
|
+
*/
|
|
6
|
+
import { createNode } from '../dom/createNode.js';
|
|
7
|
+
import { bindEvents, unbindEvents } from '../dom/events.js';
|
|
8
|
+
import { triggerFeedEvent, hasJQuery } from '../jquery/bridge.js';
|
|
9
|
+
// Store mounted root nodes
|
|
10
|
+
const mountedRoots = new WeakMap();
|
|
11
|
+
/**
|
|
12
|
+
* Mount a VNode to a container element
|
|
13
|
+
*/
|
|
14
|
+
export function mount(container, vnode, state = {}) {
|
|
15
|
+
// Clear container
|
|
16
|
+
container.innerHTML = '';
|
|
17
|
+
console.log('[FeedJS Mount] Starting mount with state keys:', Object.keys(state));
|
|
18
|
+
console.log('[FeedJS Mount] VNode type:', vnode.type);
|
|
19
|
+
// Create scope with state
|
|
20
|
+
const scope = {
|
|
21
|
+
state,
|
|
22
|
+
locals: {}
|
|
23
|
+
};
|
|
24
|
+
// Create DOM from VNode
|
|
25
|
+
const domNode = createNode(vnode, scope);
|
|
26
|
+
if (domNode) {
|
|
27
|
+
// Mount and store reference
|
|
28
|
+
container.appendChild(domNode);
|
|
29
|
+
// Bind events if present
|
|
30
|
+
const context = { eventContext: {} };
|
|
31
|
+
bindEventsRecursive(domNode, vnode.props, context);
|
|
32
|
+
// Trigger mounted event (only for Elements)
|
|
33
|
+
if (domNode instanceof Element) {
|
|
34
|
+
triggerFeedEvent(domNode, 'mounted');
|
|
35
|
+
// jQuery bridge - use any to avoid complex typings
|
|
36
|
+
if (hasJQuery()) {
|
|
37
|
+
const jq = window.jQuery;
|
|
38
|
+
if (jq && typeof jq === 'function') {
|
|
39
|
+
jq(domNode).trigger('feedjs:mounted');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Bind events recursively
|
|
47
|
+
*/
|
|
48
|
+
function bindEventsRecursive(domNode, props, context) {
|
|
49
|
+
if (domNode instanceof Element) {
|
|
50
|
+
bindEvents(domNode, props, context.eventContext);
|
|
51
|
+
// Process children
|
|
52
|
+
for (const child of domNode.childNodes) {
|
|
53
|
+
bindEventsRecursive(child, null, context);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Unmount from a container
|
|
59
|
+
*/
|
|
60
|
+
export function unmount(container) {
|
|
61
|
+
const root = mountedRoots.get(container);
|
|
62
|
+
if (root) {
|
|
63
|
+
if (root instanceof Element) {
|
|
64
|
+
unbindEvents(root);
|
|
65
|
+
}
|
|
66
|
+
container.innerHTML = '';
|
|
67
|
+
mountedRoots.delete(container);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=mount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../../src/renderer/mount.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAc,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOlE,2BAA2B;AAC3B,MAAM,YAAY,GAAG,IAAI,OAAO,EAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,SAAkB,EAAE,KAAgB,EAAE,QAAa,EAAE;IACzE,kBAAkB;IAClB,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACtD,0BAA0B;IAC1B,MAAM,KAAK,GAAU;QACnB,KAAK;QACL,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,wBAAwB;IACxB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEzC,IAAI,OAAO,EAAE,CAAC;QACZ,4BAA4B;QAC5B,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE/B,yBAAyB;QACzB,MAAM,OAAO,GAAiB,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QACnD,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEnD,4CAA4C;QAC5C,IAAI,OAAO,YAAY,OAAO,EAAE,CAAC;YAC/B,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAErC,mDAAmD;YACnD,IAAI,SAAS,EAAE,EAAE,CAAC;gBAChB,MAAM,EAAE,GAAI,MAAyC,CAAC,MAAM,CAAC;gBAC7D,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;oBAClC,EAA4D,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,OAAa,EACb,KAAU,EACV,OAAqB;IAErB,IAAI,OAAO,YAAY,OAAO,EAAE,CAAC;QAC/B,UAAU,CAAC,OAAO,EAAE,KAAgC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAE5E,mBAAmB;QACnB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvC,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,SAAkB;IACxC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;QACzB,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeedJS Runtime - Patch Application
|
|
3
|
+
*
|
|
4
|
+
* Applies patch operations to update the DOM.
|
|
5
|
+
*/
|
|
6
|
+
import type { Patch } from '@illimi/core';
|
|
7
|
+
/**
|
|
8
|
+
* Apply patches to the DOM
|
|
9
|
+
*/
|
|
10
|
+
export declare function patch(container: Element, patches: Patch[]): void;
|
|
11
|
+
/**
|
|
12
|
+
* Set event context for patch application
|
|
13
|
+
*/
|
|
14
|
+
export declare function setEventContext(context: Record<string, EventListener>): void;
|
|
15
|
+
//# sourceMappingURL=patch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../src/renderer/patch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,cAAc,CAAC;AASjD;;GAEG;AACH,wBAAgB,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAKhE;AAkID;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,IAAI,CAE5E"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeedJS Runtime - Patch Application
|
|
3
|
+
*
|
|
4
|
+
* Applies patch operations to update the DOM.
|
|
5
|
+
*/
|
|
6
|
+
import { createNode } from '../dom/createNode.js';
|
|
7
|
+
import { updateProps } from '../dom/updateProps.js';
|
|
8
|
+
import { bindEvents, unbindEvents } from '../dom/events.js';
|
|
9
|
+
// Event context for resolving handlers
|
|
10
|
+
const eventContext = {};
|
|
11
|
+
/**
|
|
12
|
+
* Apply patches to the DOM
|
|
13
|
+
*/
|
|
14
|
+
export function patch(container, patches) {
|
|
15
|
+
// Apply patches sequentially and deterministically
|
|
16
|
+
for (const patchOp of patches) {
|
|
17
|
+
applyPatch(container, patchOp);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Apply a single patch operation
|
|
22
|
+
*/
|
|
23
|
+
function applyPatch(container, patchOp) {
|
|
24
|
+
const patchType = patchOp.type;
|
|
25
|
+
if (patchType === 'CREATE') {
|
|
26
|
+
applyCreatePatch(container, patchOp);
|
|
27
|
+
}
|
|
28
|
+
else if (patchType === 'REMOVE') {
|
|
29
|
+
applyRemovePatch(container, patchOp);
|
|
30
|
+
}
|
|
31
|
+
else if (patchType === 'REPLACE') {
|
|
32
|
+
applyReplacePatch(container, patchOp);
|
|
33
|
+
}
|
|
34
|
+
else if (patchType === 'UPDATE_PROPS') {
|
|
35
|
+
applyUpdatePropsPatch(container, patchOp);
|
|
36
|
+
}
|
|
37
|
+
else if (patchType === 'MOVE') {
|
|
38
|
+
applyMovePatch(container, patchOp);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Apply CREATE patch
|
|
43
|
+
*/
|
|
44
|
+
function applyCreatePatch(container, patchOp) {
|
|
45
|
+
const vnode = patchOp.node;
|
|
46
|
+
if (!vnode)
|
|
47
|
+
return;
|
|
48
|
+
const domNode = createNode(vnode, { state: {}, locals: {} });
|
|
49
|
+
if (!domNode)
|
|
50
|
+
return;
|
|
51
|
+
const index = patchOp.index ?? 0;
|
|
52
|
+
// Insert at position
|
|
53
|
+
const children = Array.from(container.childNodes);
|
|
54
|
+
const refNode = children[index];
|
|
55
|
+
if (refNode) {
|
|
56
|
+
container.insertBefore(domNode, refNode);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
container.appendChild(domNode);
|
|
60
|
+
}
|
|
61
|
+
// Bind events
|
|
62
|
+
if (domNode instanceof Element) {
|
|
63
|
+
bindEvents(domNode, vnode.props, eventContext);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Apply REMOVE patch
|
|
68
|
+
*/
|
|
69
|
+
function applyRemovePatch(container, patchOp) {
|
|
70
|
+
const index = patchOp.index ?? 0;
|
|
71
|
+
const children = Array.from(container.childNodes);
|
|
72
|
+
const nodeToRemove = children[index];
|
|
73
|
+
if (nodeToRemove) {
|
|
74
|
+
// Unbind events
|
|
75
|
+
if (nodeToRemove instanceof Element) {
|
|
76
|
+
unbindEvents(nodeToRemove);
|
|
77
|
+
}
|
|
78
|
+
container.removeChild(nodeToRemove);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Apply REPLACE patch
|
|
83
|
+
*/
|
|
84
|
+
function applyReplacePatch(container, patchOp) {
|
|
85
|
+
const vnode = patchOp.node;
|
|
86
|
+
if (!vnode)
|
|
87
|
+
return;
|
|
88
|
+
const domNode = createNode(vnode, { state: {}, locals: {} });
|
|
89
|
+
if (!domNode)
|
|
90
|
+
return;
|
|
91
|
+
const index = patchOp.index ?? 0;
|
|
92
|
+
const children = Array.from(container.childNodes);
|
|
93
|
+
const nodeToReplace = children[index];
|
|
94
|
+
if (nodeToReplace) {
|
|
95
|
+
// Unbind events from old node
|
|
96
|
+
if (nodeToReplace instanceof Element) {
|
|
97
|
+
unbindEvents(nodeToReplace);
|
|
98
|
+
}
|
|
99
|
+
container.replaceChild(domNode, nodeToReplace);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
container.appendChild(domNode);
|
|
103
|
+
}
|
|
104
|
+
// Bind events for new node
|
|
105
|
+
if (domNode instanceof Element) {
|
|
106
|
+
bindEvents(domNode, vnode.props, eventContext);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Apply UPDATE_PROPS patch
|
|
111
|
+
*/
|
|
112
|
+
function applyUpdatePropsPatch(container, patchOp) {
|
|
113
|
+
const index = patchOp.index ?? 0;
|
|
114
|
+
const children = Array.from(container.childNodes);
|
|
115
|
+
const element = children[index];
|
|
116
|
+
if (element instanceof Element && patchOp.props) {
|
|
117
|
+
// Cast to proper type
|
|
118
|
+
const props = patchOp.props;
|
|
119
|
+
updateProps(element, null, props);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Apply MOVE patch
|
|
124
|
+
*/
|
|
125
|
+
function applyMovePatch(container, patchOp) {
|
|
126
|
+
const fromIndex = patchOp.from ?? 0;
|
|
127
|
+
const toIndex = patchOp.to ?? 0;
|
|
128
|
+
const children = Array.from(container.childNodes);
|
|
129
|
+
const nodeToMove = children[fromIndex];
|
|
130
|
+
if (nodeToMove) {
|
|
131
|
+
const targetChildren = container.childNodes;
|
|
132
|
+
const refNode = targetChildren[toIndex];
|
|
133
|
+
if (refNode) {
|
|
134
|
+
container.insertBefore(nodeToMove, refNode);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
container.appendChild(nodeToMove);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Set event context for patch application
|
|
143
|
+
*/
|
|
144
|
+
export function setEventContext(context) {
|
|
145
|
+
Object.assign(eventContext, context);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=patch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/renderer/patch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Illimi Router - Core Implementation
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Static routes (/about)
|
|
6
|
+
* - Dynamic routes (/users/:id)
|
|
7
|
+
* - Route-local page state via pageState
|
|
8
|
+
* - Navigation params + query params
|
|
9
|
+
*/
|
|
10
|
+
import type { RouterOptions, Router } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Create a router instance.
|
|
13
|
+
*/
|
|
14
|
+
export declare function createRouter(options: RouterOptions): Router;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAIV,aAAa,EACb,MAAM,EAMP,MAAM,YAAY,CAAC;AAyGpB;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CA2M3D"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Illimi Router - Core Implementation
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Static routes (/about)
|
|
6
|
+
* - Dynamic routes (/users/:id)
|
|
7
|
+
* - Route-local page state via pageState
|
|
8
|
+
* - Navigation params + query params
|
|
9
|
+
*/
|
|
10
|
+
import { mount } from '../renderer/mount.js';
|
|
11
|
+
function compilePath(path) {
|
|
12
|
+
const keys = [];
|
|
13
|
+
const escaped = path
|
|
14
|
+
.replace(/\/$/, '')
|
|
15
|
+
.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
|
|
16
|
+
.replace(/:(\w+)/g, (_m, key) => {
|
|
17
|
+
keys.push(key);
|
|
18
|
+
return '([^/]+)';
|
|
19
|
+
});
|
|
20
|
+
const normalized = escaped || '/';
|
|
21
|
+
const regex = new RegExp(`^${normalized}$`);
|
|
22
|
+
return {
|
|
23
|
+
// route will be attached by caller
|
|
24
|
+
route: { path, page: () => null },
|
|
25
|
+
regex,
|
|
26
|
+
keys,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function parsePathAndQuery(urlPath) {
|
|
30
|
+
const [rawPath, rawQuery = ''] = urlPath.split('?');
|
|
31
|
+
const path = (rawPath || '/').replace(/\/$/, '') || '/';
|
|
32
|
+
const query = {};
|
|
33
|
+
const search = new URLSearchParams(rawQuery);
|
|
34
|
+
search.forEach((value, key) => {
|
|
35
|
+
query[key] = value;
|
|
36
|
+
});
|
|
37
|
+
return { path, query };
|
|
38
|
+
}
|
|
39
|
+
function buildPath(path, options) {
|
|
40
|
+
let resolved = path;
|
|
41
|
+
if (options?.params) {
|
|
42
|
+
for (const [key, value] of Object.entries(options.params)) {
|
|
43
|
+
resolved = resolved.replace(`:${key}`, encodeURIComponent(String(value)));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (options?.query) {
|
|
47
|
+
const search = new URLSearchParams();
|
|
48
|
+
for (const [key, value] of Object.entries(options.query)) {
|
|
49
|
+
if (value === null || value === undefined)
|
|
50
|
+
continue;
|
|
51
|
+
search.set(key, String(value));
|
|
52
|
+
}
|
|
53
|
+
const qs = search.toString();
|
|
54
|
+
if (qs) {
|
|
55
|
+
resolved += (resolved.includes('?') ? '&' : '?') + qs;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return resolved;
|
|
59
|
+
}
|
|
60
|
+
function matchRoute(path, compiled) {
|
|
61
|
+
for (const item of compiled) {
|
|
62
|
+
const matched = path.match(item.regex);
|
|
63
|
+
if (!matched)
|
|
64
|
+
continue;
|
|
65
|
+
const params = {};
|
|
66
|
+
for (let i = 0; i < item.keys.length; i++) {
|
|
67
|
+
const key = item.keys[i];
|
|
68
|
+
const value = matched[i + 1];
|
|
69
|
+
if (!key || !value)
|
|
70
|
+
continue;
|
|
71
|
+
params[key] = decodeURIComponent(value);
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
route: item.route,
|
|
75
|
+
params,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
function resolvePageState(route, context, getState) {
|
|
81
|
+
if (route.pageState !== undefined) {
|
|
82
|
+
return typeof route.pageState === 'function'
|
|
83
|
+
? route.pageState(context)
|
|
84
|
+
: route.pageState;
|
|
85
|
+
}
|
|
86
|
+
return getState ? getState() : {};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Create a router instance.
|
|
90
|
+
*/
|
|
91
|
+
export function createRouter(options) {
|
|
92
|
+
const { routes, root, getState, providers = [] } = options;
|
|
93
|
+
const compiledRoutes = routes.map((route) => {
|
|
94
|
+
const compiled = compilePath(route.path);
|
|
95
|
+
return {
|
|
96
|
+
...compiled,
|
|
97
|
+
route,
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
let currentPath = '/';
|
|
101
|
+
let currentParams = {};
|
|
102
|
+
let currentQuery = {};
|
|
103
|
+
let currentNavParams = {};
|
|
104
|
+
const appContext = {};
|
|
105
|
+
let currentPageModule = null;
|
|
106
|
+
let currentRoute = null;
|
|
107
|
+
let currentState = {};
|
|
108
|
+
const subscribedTargets = new WeakSet();
|
|
109
|
+
function subscribeIfReactive(state) {
|
|
110
|
+
if (!state || typeof state !== 'object')
|
|
111
|
+
return;
|
|
112
|
+
if (subscribedTargets.has(state))
|
|
113
|
+
return;
|
|
114
|
+
const maybeSubscribe = state.subscribe;
|
|
115
|
+
if (typeof maybeSubscribe === 'function') {
|
|
116
|
+
maybeSubscribe.call(state, () => {
|
|
117
|
+
void reRender();
|
|
118
|
+
});
|
|
119
|
+
subscribedTargets.add(state);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function initializeProviders(list) {
|
|
123
|
+
for (const provider of list) {
|
|
124
|
+
if (!provider || !provider.key)
|
|
125
|
+
continue;
|
|
126
|
+
const value = provider.create
|
|
127
|
+
? provider.create({
|
|
128
|
+
context: appContext,
|
|
129
|
+
navigate,
|
|
130
|
+
getCurrentPath: () => currentPath,
|
|
131
|
+
getParams: () => ({ ...currentParams }),
|
|
132
|
+
getQuery: () => ({ ...currentQuery }),
|
|
133
|
+
getNavigationParams: () => ({ ...currentNavParams }),
|
|
134
|
+
})
|
|
135
|
+
: provider.value;
|
|
136
|
+
appContext[provider.key] = value;
|
|
137
|
+
subscribeIfReactive(value);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function getPageContext(route) {
|
|
141
|
+
return {
|
|
142
|
+
path: currentPath,
|
|
143
|
+
params: { ...currentParams },
|
|
144
|
+
query: { ...currentQuery },
|
|
145
|
+
navParams: { ...currentNavParams },
|
|
146
|
+
context: appContext,
|
|
147
|
+
route,
|
|
148
|
+
navigate,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
async function renderCurrentPage() {
|
|
152
|
+
if (!currentPageModule || !currentRoute)
|
|
153
|
+
return;
|
|
154
|
+
if (currentPageModule.injectStyles) {
|
|
155
|
+
currentPageModule.injectStyles();
|
|
156
|
+
}
|
|
157
|
+
const page = currentPageModule.default;
|
|
158
|
+
if (!page) {
|
|
159
|
+
console.error('[Illimi Router] No default export from page module');
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
const context = getPageContext(currentRoute);
|
|
163
|
+
const state = currentState;
|
|
164
|
+
const vnode = page(state, context);
|
|
165
|
+
mount(root, vnode, state);
|
|
166
|
+
if (typeof currentRoute.script === 'function') {
|
|
167
|
+
currentRoute.script(context, state);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async function reRender() {
|
|
171
|
+
try {
|
|
172
|
+
await renderCurrentPage();
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
console.error('[Illimi Router] Re-render error:', error);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async function resolve(urlPath, navParams = {}) {
|
|
179
|
+
const { path, query } = parsePathAndQuery(urlPath);
|
|
180
|
+
const matched = matchRoute(path, compiledRoutes);
|
|
181
|
+
if (!matched) {
|
|
182
|
+
console.warn('[Illimi Router] Route not found:', path);
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
currentPath = path;
|
|
186
|
+
currentQuery = query;
|
|
187
|
+
currentParams = matched.params;
|
|
188
|
+
currentNavParams = navParams;
|
|
189
|
+
currentRoute = matched.route;
|
|
190
|
+
try {
|
|
191
|
+
currentPageModule = await matched.route.page();
|
|
192
|
+
const context = getPageContext(matched.route);
|
|
193
|
+
currentState = resolvePageState(matched.route, context, getState);
|
|
194
|
+
subscribeIfReactive(currentState);
|
|
195
|
+
await renderCurrentPage();
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
throw new Error(`Failed to load page for path: ${currentPath} ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function navigate(path, options = {}) {
|
|
202
|
+
const nextUrl = buildPath(path, options);
|
|
203
|
+
const { path: normalizedPath } = parsePathAndQuery(nextUrl);
|
|
204
|
+
if (normalizedPath === currentPath && Object.keys(options.query || {}).length === 0 && !options.replace) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const historyState = { navParams: options.navParams || {} };
|
|
208
|
+
if (options.replace) {
|
|
209
|
+
history.replaceState(historyState, '', nextUrl);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
history.pushState(historyState, '', nextUrl);
|
|
213
|
+
}
|
|
214
|
+
void resolve(nextUrl, historyState.navParams);
|
|
215
|
+
}
|
|
216
|
+
function handlePopState(e) {
|
|
217
|
+
const navParams = (e.state?.navParams || {});
|
|
218
|
+
void resolve(location.pathname + location.search, navParams);
|
|
219
|
+
}
|
|
220
|
+
function handleClick(e) {
|
|
221
|
+
const target = e.target;
|
|
222
|
+
const anchor = target.closest('a');
|
|
223
|
+
if (!anchor)
|
|
224
|
+
return;
|
|
225
|
+
const href = anchor.getAttribute('href');
|
|
226
|
+
if (!href)
|
|
227
|
+
return;
|
|
228
|
+
if (href.startsWith('http') || href.startsWith('#') || href.startsWith('mailto:') || href.startsWith('tel:')) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (!href.startsWith('/')) {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
e.preventDefault();
|
|
235
|
+
navigate(href);
|
|
236
|
+
}
|
|
237
|
+
window.addEventListener('popstate', handlePopState);
|
|
238
|
+
document.addEventListener('click', handleClick);
|
|
239
|
+
initializeProviders(providers);
|
|
240
|
+
return {
|
|
241
|
+
start() {
|
|
242
|
+
const navParams = (history.state?.navParams || {});
|
|
243
|
+
void resolve(location.pathname + location.search, navParams);
|
|
244
|
+
},
|
|
245
|
+
navigate,
|
|
246
|
+
getCurrentPath() {
|
|
247
|
+
return currentPath;
|
|
248
|
+
},
|
|
249
|
+
getParams() {
|
|
250
|
+
return { ...currentParams };
|
|
251
|
+
},
|
|
252
|
+
getQuery() {
|
|
253
|
+
return { ...currentQuery };
|
|
254
|
+
},
|
|
255
|
+
getNavigationParams() {
|
|
256
|
+
return { ...currentNavParams };
|
|
257
|
+
},
|
|
258
|
+
getContext() {
|
|
259
|
+
return appContext;
|
|
260
|
+
},
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeedJS Router - Types
|
|
3
|
+
*/
|
|
4
|
+
export interface RouteParams {
|
|
5
|
+
[key: string]: string;
|
|
6
|
+
}
|
|
7
|
+
export interface QueryParams {
|
|
8
|
+
[key: string]: string;
|
|
9
|
+
}
|
|
10
|
+
export interface NavigationParams {
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
export interface AppContext {
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
export interface NavigateOptions {
|
|
17
|
+
params?: Record<string, string | number | boolean>;
|
|
18
|
+
query?: Record<string, string | number | boolean | null | undefined>;
|
|
19
|
+
navParams?: NavigationParams;
|
|
20
|
+
replace?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface ProviderHelpers {
|
|
23
|
+
context: AppContext;
|
|
24
|
+
navigate: (path: string, options?: NavigateOptions) => void;
|
|
25
|
+
getCurrentPath: () => string;
|
|
26
|
+
getParams: () => RouteParams;
|
|
27
|
+
getQuery: () => QueryParams;
|
|
28
|
+
getNavigationParams: () => NavigationParams;
|
|
29
|
+
}
|
|
30
|
+
export interface AppContextProvider {
|
|
31
|
+
key: string;
|
|
32
|
+
value?: unknown;
|
|
33
|
+
create?: (helpers: ProviderHelpers) => unknown;
|
|
34
|
+
}
|
|
35
|
+
export interface PageContext {
|
|
36
|
+
path: string;
|
|
37
|
+
params: RouteParams;
|
|
38
|
+
query: QueryParams;
|
|
39
|
+
navParams: NavigationParams;
|
|
40
|
+
context: AppContext;
|
|
41
|
+
route: Route;
|
|
42
|
+
navigate: (path: string, options?: NavigateOptions) => void;
|
|
43
|
+
}
|
|
44
|
+
export type PageStateFactory = (context: PageContext) => any;
|
|
45
|
+
export type RouteScript = (context: PageContext, state: any) => void;
|
|
46
|
+
export interface Route {
|
|
47
|
+
path: string;
|
|
48
|
+
page: () => Promise<any> | any;
|
|
49
|
+
pageState?: any | PageStateFactory;
|
|
50
|
+
script?: RouteScript;
|
|
51
|
+
}
|
|
52
|
+
export interface RouterOptions {
|
|
53
|
+
routes: Route[];
|
|
54
|
+
root: HTMLElement;
|
|
55
|
+
getState?: () => any;
|
|
56
|
+
providers?: AppContextProvider[];
|
|
57
|
+
}
|
|
58
|
+
export interface Router {
|
|
59
|
+
start: () => void;
|
|
60
|
+
navigate: (path: string, options?: NavigateOptions) => void;
|
|
61
|
+
getCurrentPath: () => string;
|
|
62
|
+
getParams: () => RouteParams;
|
|
63
|
+
getQuery: () => QueryParams;
|
|
64
|
+
getNavigationParams: () => NavigationParams;
|
|
65
|
+
getContext: () => AppContext;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrE,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5D,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,WAAW,CAAC;IAC7B,QAAQ,EAAE,MAAM,WAAW,CAAC;IAC5B,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC;CAChD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;CAC7D;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,GAAG,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;AAErE,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC/B,SAAS,CAAC,EAAE,GAAG,GAAG,gBAAgB,CAAC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC;IACrB,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5D,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,WAAW,CAAC;IAC7B,QAAQ,EAAE,MAAM,WAAW,CAAC;IAC5B,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;IAC5C,UAAU,EAAE,MAAM,UAAU,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Illimi Runtime - Reactive Store
|
|
3
|
+
*
|
|
4
|
+
* Small state container for app-level or page-level state.
|
|
5
|
+
*/
|
|
6
|
+
export type Listener = () => void;
|
|
7
|
+
export interface Store<T extends Record<string, any>> {
|
|
8
|
+
get: () => T;
|
|
9
|
+
set: (next: T) => void;
|
|
10
|
+
patch: (partial: Partial<T>) => void;
|
|
11
|
+
update: (updater: (current: T) => T) => void;
|
|
12
|
+
subscribe: (listener: Listener) => () => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function createStore<T extends Record<string, any>>(initial: T): Store<T>;
|
|
15
|
+
//# sourceMappingURL=store.d.ts.map
|