@coherent.js/core 1.0.0-beta.2

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 (116) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +130 -0
  3. package/dist/coherent.d.ts +472 -0
  4. package/dist/coherent.d.ts.map +1 -0
  5. package/dist/coherent.js +590 -0
  6. package/dist/coherent.js.map +1 -0
  7. package/dist/components/component-system.d.ts +1138 -0
  8. package/dist/components/component-system.d.ts.map +1 -0
  9. package/dist/components/component-system.js +2220 -0
  10. package/dist/components/component-system.js.map +1 -0
  11. package/dist/components/lifecycle.d.ts +212 -0
  12. package/dist/components/lifecycle.d.ts.map +1 -0
  13. package/dist/components/lifecycle.js +525 -0
  14. package/dist/components/lifecycle.js.map +1 -0
  15. package/dist/core/html-utils.d.ts +14 -0
  16. package/dist/core/html-utils.d.ts.map +1 -0
  17. package/dist/core/html-utils.js +166 -0
  18. package/dist/core/html-utils.js.map +1 -0
  19. package/dist/core/object-factory.d.ts +38 -0
  20. package/dist/core/object-factory.d.ts.map +1 -0
  21. package/dist/core/object-factory.js +63 -0
  22. package/dist/core/object-factory.js.map +1 -0
  23. package/dist/core/object-utils.d.ts +77 -0
  24. package/dist/core/object-utils.d.ts.map +1 -0
  25. package/dist/core/object-utils.js +502 -0
  26. package/dist/core/object-utils.js.map +1 -0
  27. package/dist/dev/dev-tools.d.ts +194 -0
  28. package/dist/dev/dev-tools.d.ts.map +1 -0
  29. package/dist/dev/dev-tools.js +846 -0
  30. package/dist/dev/dev-tools.js.map +1 -0
  31. package/dist/forms/validation.d.ts +271 -0
  32. package/dist/forms/validation.d.ts.map +1 -0
  33. package/dist/forms/validation.js +573 -0
  34. package/dist/forms/validation.js.map +1 -0
  35. package/dist/index.cjs +5281 -0
  36. package/dist/index.cjs.map +7 -0
  37. package/dist/index.js +5204 -0
  38. package/dist/index.js.map +7 -0
  39. package/dist/performance/bundle-optimizer.d.ts +95 -0
  40. package/dist/performance/bundle-optimizer.d.ts.map +1 -0
  41. package/dist/performance/bundle-optimizer.js +192 -0
  42. package/dist/performance/bundle-optimizer.js.map +1 -0
  43. package/dist/performance/cache-manager.d.ts +107 -0
  44. package/dist/performance/cache-manager.d.ts.map +1 -0
  45. package/dist/performance/cache-manager.js +314 -0
  46. package/dist/performance/cache-manager.js.map +1 -0
  47. package/dist/performance/component-cache.d.ts +120 -0
  48. package/dist/performance/component-cache.d.ts.map +1 -0
  49. package/dist/performance/component-cache.js +364 -0
  50. package/dist/performance/component-cache.js.map +1 -0
  51. package/dist/performance/monitor.d.ts +189 -0
  52. package/dist/performance/monitor.d.ts.map +1 -0
  53. package/dist/performance/monitor.js +347 -0
  54. package/dist/performance/monitor.js.map +1 -0
  55. package/dist/rendering/base-renderer.d.ts +140 -0
  56. package/dist/rendering/base-renderer.d.ts.map +1 -0
  57. package/dist/rendering/base-renderer.js +409 -0
  58. package/dist/rendering/base-renderer.js.map +1 -0
  59. package/dist/rendering/css-manager.d.ts +73 -0
  60. package/dist/rendering/css-manager.d.ts.map +1 -0
  61. package/dist/rendering/css-manager.js +176 -0
  62. package/dist/rendering/css-manager.js.map +1 -0
  63. package/dist/rendering/dom-renderer.d.ts +62 -0
  64. package/dist/rendering/dom-renderer.d.ts.map +1 -0
  65. package/dist/rendering/dom-renderer.js +252 -0
  66. package/dist/rendering/dom-renderer.js.map +1 -0
  67. package/dist/rendering/html-renderer.d.ts +67 -0
  68. package/dist/rendering/html-renderer.d.ts.map +1 -0
  69. package/dist/rendering/html-renderer.js +444 -0
  70. package/dist/rendering/html-renderer.js.map +1 -0
  71. package/dist/rendering/renderer-config.d.ts +282 -0
  72. package/dist/rendering/renderer-config.d.ts.map +1 -0
  73. package/dist/rendering/renderer-config.js +144 -0
  74. package/dist/rendering/renderer-config.js.map +1 -0
  75. package/dist/rendering/streaming-renderer.d.ts +117 -0
  76. package/dist/rendering/streaming-renderer.d.ts.map +1 -0
  77. package/dist/rendering/streaming-renderer.js +326 -0
  78. package/dist/rendering/streaming-renderer.js.map +1 -0
  79. package/dist/rendering/vdom-diff.d.ts +47 -0
  80. package/dist/rendering/vdom-diff.d.ts.map +1 -0
  81. package/dist/rendering/vdom-diff.js +416 -0
  82. package/dist/rendering/vdom-diff.js.map +1 -0
  83. package/dist/routing/router.d.ts +241 -0
  84. package/dist/routing/router.d.ts.map +1 -0
  85. package/dist/routing/router.js +648 -0
  86. package/dist/routing/router.js.map +1 -0
  87. package/dist/state/reactive-state.d.ts +166 -0
  88. package/dist/state/reactive-state.d.ts.map +1 -0
  89. package/dist/state/reactive-state.js +546 -0
  90. package/dist/state/reactive-state.js.map +1 -0
  91. package/dist/state/state-manager.d.ts +45 -0
  92. package/dist/state/state-manager.d.ts.map +1 -0
  93. package/dist/state/state-manager.js +151 -0
  94. package/dist/state/state-manager.js.map +1 -0
  95. package/dist/types/constants.d.ts +8 -0
  96. package/dist/types/constants.d.ts.map +1 -0
  97. package/dist/types/constants.js +36 -0
  98. package/dist/types/constants.js.map +1 -0
  99. package/dist/utils/dependency-utils.d.ts +43 -0
  100. package/dist/utils/dependency-utils.d.ts.map +1 -0
  101. package/dist/utils/dependency-utils.js +105 -0
  102. package/dist/utils/dependency-utils.js.map +1 -0
  103. package/dist/utils/error-handler.d.ts +148 -0
  104. package/dist/utils/error-handler.d.ts.map +1 -0
  105. package/dist/utils/error-handler.js +468 -0
  106. package/dist/utils/error-handler.js.map +1 -0
  107. package/dist/utils/normalization.d.ts +3 -0
  108. package/dist/utils/normalization.d.ts.map +1 -0
  109. package/dist/utils/normalization.js +24 -0
  110. package/dist/utils/normalization.js.map +1 -0
  111. package/dist/utils/validation.d.ts +10 -0
  112. package/dist/utils/validation.d.ts.map +1 -0
  113. package/dist/utils/validation.js +32 -0
  114. package/dist/utils/validation.js.map +1 -0
  115. package/package.json +44 -0
  116. package/types/index.d.ts +734 -0
@@ -0,0 +1,416 @@
1
+ /**
2
+ * Virtual DOM Diffing Engine for Coherent.js
3
+ * Implements efficient diffing algorithm to minimize DOM updates
4
+ */
5
+ /**
6
+ * Types of virtual DOM operations
7
+ */
8
+ export const VDOM_OPERATIONS = {
9
+ CREATE: 'CREATE',
10
+ UPDATE: 'UPDATE',
11
+ REMOVE: 'REMOVE',
12
+ REPLACE: 'REPLACE',
13
+ MOVE: 'MOVE'
14
+ };
15
+ /**
16
+ * Virtual DOM node structure
17
+ */
18
+ export function createVNode(type, props = {}, children = []) {
19
+ return {
20
+ type,
21
+ props: props || {},
22
+ children: Array.isArray(children) ? children : [children].filter(Boolean),
23
+ key: props?.key,
24
+ _coherent: true
25
+ };
26
+ }
27
+ /**
28
+ * Convert Coherent object to virtual DOM node
29
+ */
30
+ export function objectToVNode(component, depth = 0) {
31
+ if (depth > 100) {
32
+ console.warn('Maximum depth reached in virtual DOM creation');
33
+ return createVNode('span', {}, ['Maximum depth exceeded']);
34
+ }
35
+ if (component === null || component === undefined) {
36
+ return null;
37
+ }
38
+ if (typeof component === 'string' || typeof component === 'number') {
39
+ return String(component);
40
+ }
41
+ if (typeof component === 'boolean') {
42
+ return component ? 'true' : 'false';
43
+ }
44
+ if (Array.isArray(component)) {
45
+ return component.map(child => objectToVNode(child, depth + 1)).filter(Boolean);
46
+ }
47
+ if (typeof component === 'function') {
48
+ try {
49
+ const result = component();
50
+ return objectToVNode(result, depth + 1);
51
+ }
52
+ catch (error) {
53
+ console.error('Error executing function component:', error);
54
+ return createVNode('span', { className: 'error' }, [`Error: ${error.message}`]);
55
+ }
56
+ }
57
+ if (typeof component === 'object' && component !== null) {
58
+ const entries = Object.entries(component);
59
+ if (entries.length === 1) {
60
+ const [tagName, props] = entries[0];
61
+ if (typeof props === 'object' && props !== null) {
62
+ const { children, text, ...otherProps } = props;
63
+ let childNodes = [];
64
+ if (text !== undefined) {
65
+ childNodes = [String(text)];
66
+ }
67
+ else if (children) {
68
+ if (Array.isArray(children)) {
69
+ childNodes = children.map(child => objectToVNode(child, depth + 1)).filter(Boolean);
70
+ }
71
+ else {
72
+ const child = objectToVNode(children, depth + 1);
73
+ if (child)
74
+ childNodes = [child];
75
+ }
76
+ }
77
+ return createVNode(tagName, otherProps, childNodes);
78
+ }
79
+ else {
80
+ // Simple case: { div: 'text content' }
81
+ return createVNode(tagName, {}, [String(_props)]);
82
+ }
83
+ }
84
+ }
85
+ return null;
86
+ }
87
+ /**
88
+ * Compare two virtual DOM nodes and generate patch operations
89
+ */
90
+ export function diff(oldVNode, newVNode, patches = [], path = []) {
91
+ // Handle null cases
92
+ if (!oldVNode && !newVNode) {
93
+ return patches;
94
+ }
95
+ if (!oldVNode && newVNode) {
96
+ patches.push({
97
+ type: VDOM_OPERATIONS.CREATE,
98
+ path: [...path],
99
+ vnode: newVNode
100
+ });
101
+ return patches;
102
+ }
103
+ if (oldVNode && !newVNode) {
104
+ patches.push({
105
+ type: VDOM_OPERATIONS.REMOVE,
106
+ path: [...path]
107
+ });
108
+ return patches;
109
+ }
110
+ // Handle text nodes
111
+ if (typeof oldVNode === 'string' || typeof newVNode === 'string') {
112
+ if (oldVNode !== newVNode) {
113
+ patches.push({
114
+ type: VDOM_OPERATIONS.REPLACE,
115
+ path: [...path],
116
+ vnode: newVNode
117
+ });
118
+ }
119
+ return patches;
120
+ }
121
+ // Handle array diffing (fragment children)
122
+ if (Array.isArray(oldVNode) || Array.isArray(newVNode)) {
123
+ return diffArrays(oldVNode, newVNode, patches, path);
124
+ }
125
+ // Handle element diffing
126
+ if (oldVNode.type !== newVNode.type) {
127
+ patches.push({
128
+ type: VDOM_OPERATIONS.REPLACE,
129
+ path: [...path],
130
+ vnode: newVNode
131
+ });
132
+ return patches;
133
+ }
134
+ // Diff props
135
+ const propPatches = diffProps(oldVNode.props, newVNode.props, path);
136
+ patches.push(...propPatches);
137
+ // Diff children
138
+ diffArrays(oldVNode.children, newVNode.children, patches, [...path, 'children']);
139
+ return patches;
140
+ }
141
+ /**
142
+ * Diff arrays of virtual nodes (optimized for keyed elements)
143
+ */
144
+ function diffArrays(oldChildren = [], newChildren = [], patches = [], path = []) {
145
+ const oldArray = Array.isArray(oldChildren) ? oldChildren : [oldChildren].filter(Boolean);
146
+ const newArray = Array.isArray(newChildren) ? newChildren : [newChildren].filter(Boolean);
147
+ // Simple case: lengths differ significantly, replace all
148
+ if (Math.abs(oldArray.length - newArray.length) > Math.max(oldArray.length, newArray.length) * 0.5) {
149
+ patches.push({
150
+ type: VDOM_OPERATIONS.REPLACE,
151
+ path: [...path],
152
+ vnode: newArray
153
+ });
154
+ return patches;
155
+ }
156
+ // Track keys for efficient reordering
157
+ const oldKeyMap = new Map();
158
+ const newKeyMap = new Map();
159
+ oldArray.forEach((child, index) => {
160
+ if (child && child.key !== undefined) {
161
+ oldKeyMap.set(child.key, { child, index });
162
+ }
163
+ });
164
+ newArray.forEach((child, index) => {
165
+ if (child && child.key !== undefined) {
166
+ newKeyMap.set(child.key, { child, index });
167
+ }
168
+ });
169
+ // Process children
170
+ const maxLength = Math.max(oldArray.length, newArray.length);
171
+ for (let i = 0; i < maxLength; i++) {
172
+ const oldChild = oldArray[i];
173
+ const newChild = newArray[i];
174
+ const childPath = [...path, i];
175
+ if (oldChild && newChild && oldChild.key && newChild.key) {
176
+ // Handle keyed elements
177
+ if (oldChild.key !== newChild.key) {
178
+ // Check if this is a move operation
179
+ const oldPos = newKeyMap.get(oldChild.key);
180
+ if (oldPos && oldPos.index !== i) {
181
+ patches.push({
182
+ type: VDOM_OPERATIONS.MOVE,
183
+ path: childPath,
184
+ from: oldPos.index,
185
+ to: i
186
+ });
187
+ }
188
+ else {
189
+ // Replace with new element
190
+ patches.push({
191
+ type: VDOM_OPERATIONS.REPLACE,
192
+ path: childPath,
193
+ vnode: newChild
194
+ });
195
+ }
196
+ }
197
+ else {
198
+ // Same key, diff the elements
199
+ diff(oldChild, newChild, patches, childPath);
200
+ }
201
+ }
202
+ else {
203
+ // Handle non-keyed elements
204
+ diff(oldChild, newChild, patches, childPath);
205
+ }
206
+ }
207
+ return patches;
208
+ }
209
+ /**
210
+ * Diff element properties
211
+ */
212
+ function diffProps(oldProps = {}, newProps = {}, path = []) {
213
+ const patches = [];
214
+ const allKeys = new Set([...Object.keys(oldProps), ...Object.keys(newProps)]);
215
+ for (const key of allKeys) {
216
+ if (key === 'children')
217
+ continue; // Children handled separately
218
+ const oldValue = oldProps[key];
219
+ const newValue = newProps[key];
220
+ if (oldValue !== newValue) {
221
+ patches.push({
222
+ type: VDOM_OPERATIONS.UPDATE,
223
+ path: [...path, 'props', key],
224
+ oldValue,
225
+ newValue
226
+ });
227
+ }
228
+ }
229
+ return patches;
230
+ }
231
+ /**
232
+ * Apply patches to a DOM element
233
+ */
234
+ export function patch(element, patches) {
235
+ if (!element || !patches.length) {
236
+ return element;
237
+ }
238
+ const patchResults = [];
239
+ for (const p of patches) {
240
+ try {
241
+ const result = applyPatch(element, p);
242
+ patchResults.push(result);
243
+ }
244
+ catch (error) {
245
+ console.error('Error applying patch:', error, p);
246
+ }
247
+ }
248
+ return element;
249
+ }
250
+ /**
251
+ * Apply a single patch operation
252
+ */
253
+ function applyPatch(rootElement, patch) {
254
+ const target = getElementByPath(rootElement, patch.path);
255
+ switch (patch.type) {
256
+ case VDOM_OPERATIONS.CREATE:
257
+ const newElement = vnodeToDOM(patch.vnode);
258
+ if (target && target.parentNode) {
259
+ target.parentNode.appendChild(newElement);
260
+ }
261
+ return newElement;
262
+ case VDOM_OPERATIONS.REMOVE:
263
+ if (target && target.parentNode) {
264
+ target.parentNode.removeChild(target);
265
+ }
266
+ return null;
267
+ case VDOM_OPERATIONS.REPLACE:
268
+ const replacement = vnodeToDOM(patch.vnode);
269
+ if (target && target.parentNode) {
270
+ target.parentNode.replaceChild(replacement, target);
271
+ }
272
+ return replacement;
273
+ case VDOM_OPERATIONS.UPDATE:
274
+ if (target && patch.path[patch.path.length - 2] === 'props') {
275
+ const propName = patch.path[patch.path.length - 1];
276
+ updateDOMProperty(target, propName, patch.oldValue, patch.newValue);
277
+ }
278
+ return target;
279
+ case VDOM_OPERATIONS.MOVE:
280
+ if (target && target.parentNode) {
281
+ const parent = target.parentNode;
282
+ const children = Array.from(parent.children);
283
+ const fromElement = children[patch.from];
284
+ const toPosition = patch.to;
285
+ if (fromElement && toPosition < children.length) {
286
+ parent.insertBefore(fromElement, children[toPosition]);
287
+ }
288
+ }
289
+ return target;
290
+ default:
291
+ console.warn('Unknown patch operation:', patch.type);
292
+ return target;
293
+ }
294
+ }
295
+ /**
296
+ * Navigate DOM tree by path
297
+ */
298
+ function getElementByPath(element, path) {
299
+ let current = element;
300
+ for (const segment of path) {
301
+ if (!current)
302
+ return null;
303
+ if (segment === 'children') {
304
+ continue; // Skip children marker
305
+ }
306
+ if (typeof segment === 'number') {
307
+ current = current.children[segment];
308
+ }
309
+ else if (segment === 'props') {
310
+ continue; // Props handled in UPDATE operations
311
+ }
312
+ }
313
+ return current;
314
+ }
315
+ /**
316
+ * Convert virtual node to DOM element
317
+ */
318
+ function vnodeToDOM(vnode) {
319
+ if (typeof vnode === 'string') {
320
+ return document.createTextNode(vnode);
321
+ }
322
+ if (Array.isArray(vnode)) {
323
+ const fragment = document.createDocumentFragment();
324
+ vnode.forEach(child => {
325
+ const childElement = vnodeToDOM(child);
326
+ if (childElement) {
327
+ fragment.appendChild(childElement);
328
+ }
329
+ });
330
+ return fragment;
331
+ }
332
+ if (vnode && vnode.type) {
333
+ const element = document.createElement(vnode.type);
334
+ // Set properties
335
+ Object.entries(vnode._props).forEach(([key, value]) => {
336
+ updateDOMProperty(element, key, undefined, value);
337
+ });
338
+ // Append children
339
+ vnode.children.forEach(child => {
340
+ const childElement = vnodeToDOM(child);
341
+ if (childElement) {
342
+ element.appendChild(childElement);
343
+ }
344
+ });
345
+ return element;
346
+ }
347
+ return null;
348
+ }
349
+ /**
350
+ * Update DOM element property
351
+ */
352
+ function updateDOMProperty(element, name, oldValue, newValue) {
353
+ // Handle special properties
354
+ if (name === 'className' || name === 'class') {
355
+ element.className = newValue || '';
356
+ return;
357
+ }
358
+ if (name.startsWith('on') && typeof newValue === 'function') {
359
+ const eventType = name.slice(2).toLowerCase();
360
+ // Remove old event listener
361
+ if (typeof oldValue === 'function') {
362
+ element.removeEventListener(eventType, oldValue);
363
+ }
364
+ // Add new event listener
365
+ element.addEventListener(eventType, newValue);
366
+ return;
367
+ }
368
+ if (newValue === null || newValue === undefined) {
369
+ element.removeAttribute(name);
370
+ }
371
+ else if (typeof newValue === 'boolean') {
372
+ if (newValue) {
373
+ element.setAttribute(name, '');
374
+ }
375
+ else {
376
+ element.removeAttribute(name);
377
+ }
378
+ }
379
+ else {
380
+ element.setAttribute(name, String(newValue));
381
+ }
382
+ }
383
+ /**
384
+ * Create a virtual DOM differ for component updates
385
+ */
386
+ export class VDOMDiffer {
387
+ constructor() {
388
+ this.cache = new Map();
389
+ }
390
+ /**
391
+ * Perform efficient diff and patch
392
+ */
393
+ update(element, oldComponent, newComponent) {
394
+ const oldVNode = objectToVNode(oldComponent);
395
+ const newVNode = objectToVNode(newComponent);
396
+ const patches = diff(oldVNode, newVNode);
397
+ if (patches.length > 0) {
398
+ patch(element, patches);
399
+ }
400
+ return patches.length;
401
+ }
402
+ /**
403
+ * Cache virtual nodes for performance
404
+ */
405
+ cacheVNode(key, vnode) {
406
+ this.cache.set(key, vnode);
407
+ }
408
+ getCachedVNode(key) {
409
+ return this.cache.get(key);
410
+ }
411
+ clearCache() {
412
+ this.cache.clear();
413
+ }
414
+ }
415
+ export default VDOMDiffer;
416
+ //# sourceMappingURL=vdom-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vdom-diff.js","sourceRoot":"","sources":["../../../../src/rendering/vdom-diff.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Create router instance
3
+ */
4
+ export function createRouter(options: any): Router;
5
+ /**
6
+ * Route configuration structure
7
+ */
8
+ export class Route {
9
+ constructor(config: any);
10
+ path: any;
11
+ name: any;
12
+ component: any;
13
+ children: any;
14
+ meta: any;
15
+ beforeEnter: any;
16
+ beforeLeave: any;
17
+ redirect: any;
18
+ alias: any;
19
+ params: {};
20
+ query: {};
21
+ hash: string;
22
+ /**
23
+ * Check if this route matches a path
24
+ */
25
+ matches(path: any): {
26
+ params: {};
27
+ match: any;
28
+ } | null;
29
+ /**
30
+ * Match path against route pattern with parameters
31
+ */
32
+ matchPath(path: any, pattern: any): {
33
+ params: {};
34
+ match: any;
35
+ } | null;
36
+ }
37
+ /**
38
+ * Advanced router with nested routing support
39
+ */
40
+ export class Router {
41
+ constructor(options?: {});
42
+ options: {
43
+ mode: any;
44
+ base: any;
45
+ fallback: boolean;
46
+ scrollBehavior: any;
47
+ };
48
+ routes: any[];
49
+ currentRoute: any;
50
+ history: any[];
51
+ guards: {
52
+ beforeEach: never[];
53
+ beforeResolve: never[];
54
+ afterEach: never[];
55
+ };
56
+ state: ReactiveState;
57
+ /**
58
+ * Initialize router
59
+ */
60
+ init(): void;
61
+ /**
62
+ * Setup browser environment
63
+ */
64
+ setupBrowser(): void;
65
+ /**
66
+ * Setup server environment
67
+ */
68
+ setupServer(): void;
69
+ isServer: boolean | undefined;
70
+ /**
71
+ * Add routes to router
72
+ */
73
+ addRoutes(routes: any): void;
74
+ /**
75
+ * Navigate to a route
76
+ */
77
+ push(location: any): Promise<any>;
78
+ /**
79
+ * Replace current route
80
+ */
81
+ replace(location: any): Promise<any>;
82
+ /**
83
+ * Go back in history
84
+ */
85
+ back(): void;
86
+ /**
87
+ * Go forward in history
88
+ */
89
+ forward(): void;
90
+ /**
91
+ * Navigate to specific history index
92
+ */
93
+ go(delta: any): void;
94
+ /**
95
+ * Main navigation method
96
+ */
97
+ navigate(location: any, method?: string): any;
98
+ /**
99
+ * Normalize location input
100
+ */
101
+ normalizeLocation(location: any): {
102
+ path: string;
103
+ params: {};
104
+ query: {
105
+ [k: string]: string;
106
+ };
107
+ hash: string;
108
+ } | {
109
+ path: any;
110
+ params: any;
111
+ query: any;
112
+ hash: any;
113
+ name: any;
114
+ };
115
+ /**
116
+ * Parse URL string into route object
117
+ */
118
+ parseURL(url: any): {
119
+ path: string;
120
+ params: {};
121
+ query: {
122
+ [k: string]: string;
123
+ };
124
+ hash: string;
125
+ };
126
+ /**
127
+ * Resolve route by path
128
+ */
129
+ resolveRoute(path: any, routes?: any[], parentRoute?: null): any;
130
+ /**
131
+ * Run navigation guards
132
+ */
133
+ runGuards(context: any): Promise<void>;
134
+ /**
135
+ * Run individual guard
136
+ */
137
+ runGuard(guard: any, context: any): Promise<void>;
138
+ /**
139
+ * Update browser URL
140
+ */
141
+ updateURL(route: any, method?: string): void;
142
+ /**
143
+ * Build URL from route
144
+ */
145
+ buildURL(route: any): any;
146
+ /**
147
+ * Update reactive state
148
+ */
149
+ updateState(route: any): void;
150
+ /**
151
+ * Handle browser popstate event
152
+ */
153
+ handlePopState(): void;
154
+ /**
155
+ * Sync router state from browser location
156
+ */
157
+ syncFromLocation(): void;
158
+ /**
159
+ * Resolve initial route
160
+ */
161
+ resolveInitialRoute(): void;
162
+ /**
163
+ * Add navigation guards
164
+ */
165
+ beforeEach(guard: any): () => void;
166
+ beforeResolve(guard: any): () => void;
167
+ afterEach(guard: any): () => void;
168
+ /**
169
+ * Get current route information
170
+ */
171
+ getCurrentRoute(): any;
172
+ /**
173
+ * Check if route is current
174
+ */
175
+ isActive(route: any, exact?: boolean): any;
176
+ /**
177
+ * Generate URL for route
178
+ */
179
+ resolve(location: any): any;
180
+ /**
181
+ * Get router statistics
182
+ */
183
+ getStats(): {
184
+ totalRoutes: number;
185
+ currentRoute: any;
186
+ historyLength: number;
187
+ guards: {
188
+ beforeEach: number;
189
+ beforeResolve: number;
190
+ afterEach: number;
191
+ };
192
+ isLoading: any;
193
+ };
194
+ /**
195
+ * Cleanup router
196
+ */
197
+ destroy(): void;
198
+ }
199
+ export namespace routeGuards {
200
+ /**
201
+ * Authentication guard
202
+ */
203
+ function requireAuth(authCheck: any): (to: any, from: any, next: any) => void;
204
+ /**
205
+ * Role-based access guard
206
+ */
207
+ function requireRole(roleCheck: any, roles: any): (to: any, from: any, next: any) => void;
208
+ /**
209
+ * Meta-based guard
210
+ */
211
+ function requireMeta(metaKey: any, expectedValue: any): (to: any, from: any, next: any) => void;
212
+ /**
213
+ * Confirmation guard
214
+ */
215
+ function requireConfirmation(message: any, confirmCallback: any): (to: any, from: any, next: any) => void;
216
+ }
217
+ export namespace routeComponents {
218
+ /**
219
+ * Router link component
220
+ */
221
+ function RouterLink(props?: {}): {
222
+ a: {
223
+ href: any;
224
+ className: string;
225
+ onclick: (event: any) => void;
226
+ children: any;
227
+ };
228
+ };
229
+ /**
230
+ * Router view component
231
+ */
232
+ function RouterView(props?: {}): {
233
+ div: {
234
+ className: string;
235
+ children: any;
236
+ };
237
+ };
238
+ }
239
+ export default Router;
240
+ import { ReactiveState } from '../state/reactive-state.js';
241
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../src/routing/router.js"],"names":[],"mappings":"AAuqBA;;GAEG;AACH,mDAEC;AAnqBD;;GAEG;AACH;IACI,yBAgBC;IAfG,UAAuB;IACvB,UAAuB;IACvB,eAAiC;IACjC,cAAqC;IACrC,UAA6B;IAC7B,iBAAqC;IACrC,iBAAqC;IACrC,cAA+B;IAC/B,WAAyB;IACzB,WAAgB;IAChB,UAAe;IACf,aAAc;IAMlB;;OAEG;IACH;;;aAEC;IAED;;OAEG;IACH;;;aAyBC;CACJ;AA6BD;;GAEG;AACH;IACI,0BA+BC;IA9BG;;;;;MAMC;IAED,cAAgB;IAChB,kBAAwB;IACxB,eAAiB;IACjB;;;;MAIC;IAGD,qBAQE;IAMN;;OAEG;IACH,aASC;IAED;;OAEG;IACH,qBAYC;IAED;;OAEG;IACH,oBAGC;IADG,8BAAoB;IAGxB;;OAEG;IACH,6BAIC;IAED;;OAEG;IACH,kCAEC;IAED;;OAEG;IACH,qCAEC;IAED;;OAEG;IACH,aAIC;IAED;;OAEG;IACH,gBAIC;IAED;;OAEG;IACH,qBAIC;IAED;;OAEG;IACH,8CAsEC;IAED;;OAEG;IACH;;;;;;;;;;;;;MAYC;IAED;;OAEG;IACH;;;;;;;MASC;IAED;;OAEG;IACH,iEA6CC;IAED;;OAEG;IACH,uCAwBC;IAED;;OAEG;IACH,kDAoBC;IAED;;OAEG;IACH,6CAUC;IAED;;OAEG;IACH,0BAeC;IAED;;OAEG;IACH,8BASC;IAED;;OAEG;IACH,uBAEC;IAED;;OAEG;IACH,yBAUC;IAED;;OAEG;IACH,4BAUC;IAED;;OAEG;IACH,mCAMC;IAED,sCAMC;IAED,kCAMC;IAED;;OAEG;IACH,uBAEC;IAED;;OAEG;IACH,2CAQC;IAED;;OAEG;IACH,4BAGC;IAED;;OAEG;IACH;;;;;;;;;;MAYC;IAED;;OAEG;IACH,gBAgBC;CACJ;;IAMG;;OAEG;IACH,uCACY,OAAE,EAAE,SAAI,EAAE,SAAI,UAOzB;IAED;;OAEG;IACH,mDACY,OAAE,EAAE,SAAI,EAAE,SAAI,UAUzB;IAED;;OAEG;IACH,yDACY,OAAE,EAAE,SAAI,EAAE,SAAI,UAOzB;IAED;;OAEG;IACH,mEACY,OAAE,EAAE,SAAI,EAAE,SAAI,UAczB;;;IAcD;;OAEG;IACH;;;;;;;MAgBC;IAED;;OAEG;IACH;;;;;MAQC;;;8BA7sByB,4BAA4B"}