@fynixorg/ui 1.0.3 → 1.0.5

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 (86) hide show
  1. package/dist/build.d.ts +1 -0
  2. package/dist/context/context.d.ts +2 -0
  3. package/dist/context/context.js +3 -0
  4. package/dist/context/context.js.map +1 -1
  5. package/dist/custom/button.d.ts +19 -0
  6. package/dist/custom/button.js +3 -0
  7. package/dist/custom/button.js.map +1 -1
  8. package/dist/custom/index.d.ts +2 -0
  9. package/dist/custom/path.d.ts +20 -0
  10. package/dist/custom/path.js +3 -0
  11. package/dist/custom/path.js.map +2 -2
  12. package/dist/error/errorOverlay.d.ts +2 -0
  13. package/dist/error/errorOverlay.js +4 -0
  14. package/dist/error/errorOverlay.js.map +1 -1
  15. package/dist/fynix/index.d.ts +4 -0
  16. package/dist/hooks/nixAsync.d.ts +13 -0
  17. package/dist/hooks/nixAsync.js +7 -4
  18. package/dist/hooks/nixAsync.js.map +1 -1
  19. package/dist/hooks/nixAsyncCache.d.ts +7 -0
  20. package/dist/hooks/nixAsyncCache.js +7 -4
  21. package/dist/hooks/nixAsyncCache.js.map +1 -1
  22. package/dist/hooks/nixAsyncDebounce.d.ts +28 -0
  23. package/dist/hooks/nixAsyncDebounce.js +9 -6
  24. package/dist/hooks/nixAsyncDebounce.js.map +1 -1
  25. package/dist/hooks/nixAsyncQuery.d.ts +40 -0
  26. package/dist/hooks/nixAsyncQuery.js +7 -4
  27. package/dist/hooks/nixAsyncQuery.js.map +1 -1
  28. package/dist/hooks/nixCallback.d.ts +30 -0
  29. package/dist/hooks/nixCallback.js +4 -0
  30. package/dist/hooks/nixCallback.js.map +1 -1
  31. package/dist/hooks/nixComputed.d.ts +94 -0
  32. package/dist/hooks/nixComputed.js +4 -0
  33. package/dist/hooks/nixComputed.js.map +1 -1
  34. package/dist/hooks/nixDebounce.d.ts +28 -0
  35. package/dist/hooks/nixDebounce.js +7 -4
  36. package/dist/hooks/nixDebounce.js.map +1 -1
  37. package/dist/hooks/nixEffect.d.ts +64 -0
  38. package/dist/hooks/nixEffect.js +6 -0
  39. package/dist/hooks/nixEffect.js.map +1 -1
  40. package/dist/hooks/nixForm.d.ts +15 -0
  41. package/dist/hooks/nixForm.js +11 -0
  42. package/dist/hooks/nixForm.js.map +1 -1
  43. package/dist/hooks/nixFormAsync.d.ts +20 -0
  44. package/dist/hooks/nixFormAsync.js +12 -0
  45. package/dist/hooks/nixFormAsync.js.map +1 -1
  46. package/dist/hooks/nixInterval.d.ts +19 -0
  47. package/dist/hooks/nixInterval.js +6 -3
  48. package/dist/hooks/nixInterval.js.map +1 -1
  49. package/dist/hooks/nixLazy.d.ts +19 -0
  50. package/dist/hooks/nixLazy.js +6 -2
  51. package/dist/hooks/nixLazy.js.map +1 -1
  52. package/dist/hooks/nixLazyAsync.d.ts +26 -0
  53. package/dist/hooks/nixLazyAsync.js +10 -6
  54. package/dist/hooks/nixLazyAsync.js.map +1 -1
  55. package/dist/hooks/nixLazyFormAsync.d.ts +29 -0
  56. package/dist/hooks/nixLazyFormAsync.js +18 -6
  57. package/dist/hooks/nixLazyFormAsync.js.map +1 -1
  58. package/dist/hooks/nixLocalStorage.d.ts +11 -0
  59. package/dist/hooks/nixLocalStorage.js +5 -2
  60. package/dist/hooks/nixLocalStorage.js.map +1 -1
  61. package/dist/hooks/nixMemo.d.ts +8 -0
  62. package/dist/hooks/nixMemo.js +3 -0
  63. package/dist/hooks/nixMemo.js.map +1 -1
  64. package/dist/hooks/nixPrevious.d.ts +7 -0
  65. package/dist/hooks/nixPrevious.js +3 -0
  66. package/dist/hooks/nixPrevious.js.map +1 -1
  67. package/dist/hooks/nixRef.d.ts +10 -0
  68. package/dist/hooks/nixRef.js +3 -0
  69. package/dist/hooks/nixRef.js.map +1 -1
  70. package/dist/hooks/nixState.d.ts +73 -0
  71. package/dist/hooks/nixState.js +3 -0
  72. package/dist/hooks/nixState.js.map +1 -1
  73. package/dist/hooks/nixStore.d.ts +9 -0
  74. package/dist/hooks/nixStore.js +3 -0
  75. package/dist/hooks/nixStore.js.map +1 -1
  76. package/dist/plugins/vite-plugin-res.d.ts +12 -0
  77. package/dist/plugins/vite-plugin-res.js +3 -0
  78. package/dist/plugins/vite-plugin-res.js.map +1 -1
  79. package/dist/router/router.d.ts +53 -0
  80. package/dist/router/router.js +25 -2
  81. package/dist/router/router.js.map +1 -1
  82. package/dist/runtime.d.ts +91 -0
  83. package/dist/runtime.js +18 -0
  84. package/dist/runtime.js.map +1 -1
  85. package/package.json +3 -2
  86. package/types/global.d.ts +29 -19
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Creates a reactive state value that triggers component re-renders when changed.
3
+ * Must be called within a component function.
4
+ *
5
+ * @param {any} initial - The initial value for the state
6
+ * @returns {NixState} A reactive state object with value getter/setter and subscription methods
7
+ *
8
+ * @typedef {Object} NixState
9
+ * @property {any} value - Get/set the current state value. Getting tracks the dependency, setting triggers subscribers.
10
+ * @property {(fn: Function) => Function} subscribe - Subscribe to state changes. Returns unsubscribe function.
11
+ * @property {() => void} cleanup - Cleanup all subscriptions to prevent memory leaks
12
+ * @property {() => number} getSubscriberCount - Get number of active subscribers (debugging)
13
+ * @property {() => boolean} isDestroyed - Check if state has been destroyed
14
+ * @property {() => Object} asReadOnly - Get read-only version of the state
15
+ * @property {boolean} _isNixState - Internal flag to identify nixState objects
16
+ *
17
+ * @example
18
+ * const Counter = () => {
19
+ * const count = nixState(0);
20
+ *
21
+ * return h("div", {},
22
+ * h("p", {}, "Count: ", count),
23
+ * h("button", { "r-click": () => count.value++ }, "Increment")
24
+ * );
25
+ * };
26
+ *
27
+ * @example
28
+ * // With cleanup
29
+ * const MyComponent = () => {
30
+ * const state = nixState(0);
31
+ *
32
+ * nixEffect(() => {
33
+ * return () => state.cleanup(); // Clean up on unmount
34
+ * }, []);
35
+ * };
36
+ *
37
+ * @throws {Error} If called outside a component context
38
+ */
39
+ export function nixState(initial: any): NixState;
40
+ /**
41
+ * Creates a reactive state value that triggers component re-renders when changed.
42
+ * Must be called within a component function.
43
+ */
44
+ export type NixState = {
45
+ /**
46
+ * - Get/set the current state value. Getting tracks the dependency, setting triggers subscribers.
47
+ */
48
+ value: any;
49
+ /**
50
+ * - Subscribe to state changes. Returns unsubscribe function.
51
+ */
52
+ subscribe: (fn: Function) => Function;
53
+ /**
54
+ * - Cleanup all subscriptions to prevent memory leaks
55
+ */
56
+ cleanup: () => void;
57
+ /**
58
+ * - Get number of active subscribers (debugging)
59
+ */
60
+ getSubscriberCount: () => number;
61
+ /**
62
+ * - Check if state has been destroyed
63
+ */
64
+ isDestroyed: () => boolean;
65
+ /**
66
+ * - Get read-only version of the state
67
+ */
68
+ asReadOnly: () => any;
69
+ /**
70
+ * - Internal flag to identify nixState objects
71
+ */
72
+ _isNixState: boolean;
73
+ };
@@ -1,3 +1,5 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
1
3
  import { activeContext } from "../context/context";
2
4
  function nixState(initial) {
3
5
  const ctx = activeContext;
@@ -171,6 +173,7 @@ function nixState(initial) {
171
173
  }
172
174
  return ctx.hooks[idx];
173
175
  }
176
+ __name(nixState, "nixState");
174
177
  export {
175
178
  nixState
176
179
  };
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../hooks/nixState.js"],
4
4
  "sourcesContent": ["/* ----------------------\r\n nixState - Reactive State\r\n Memory Leaks & Security Issues Resolved\r\n---------------------- */\r\nimport { activeContext } from \"../context/context\";\r\n\r\n/**\r\n * Creates a reactive state value that triggers component re-renders when changed.\r\n * Must be called within a component function.\r\n * \r\n * @param {any} initial - The initial value for the state\r\n * @returns {NixState} A reactive state object with value getter/setter and subscription methods\r\n * \r\n * @typedef {Object} NixState\r\n * @property {any} value - Get/set the current state value. Getting tracks the dependency, setting triggers subscribers.\r\n * @property {(fn: Function) => Function} subscribe - Subscribe to state changes. Returns unsubscribe function.\r\n * @property {() => void} cleanup - Cleanup all subscriptions to prevent memory leaks\r\n * @property {() => number} getSubscriberCount - Get number of active subscribers (debugging)\r\n * @property {() => boolean} isDestroyed - Check if state has been destroyed\r\n * @property {() => Object} asReadOnly - Get read-only version of the state\r\n * @property {boolean} _isNixState - Internal flag to identify nixState objects\r\n * \r\n * @example\r\n * const Counter = () => {\r\n * const count = nixState(0);\r\n * \r\n * return h(\"div\", {},\r\n * h(\"p\", {}, \"Count: \", count),\r\n * h(\"button\", { \"r-click\": () => count.value++ }, \"Increment\")\r\n * );\r\n * };\r\n * \r\n * @example\r\n * // With cleanup\r\n * const MyComponent = () => {\r\n * const state = nixState(0);\r\n * \r\n * nixEffect(() => {\r\n * return () => state.cleanup(); // Clean up on unmount\r\n * }, []);\r\n * };\r\n * \r\n * @throws {Error} If called outside a component context\r\n */\r\nexport function nixState(initial) {\r\n const ctx = activeContext;\r\n if (!ctx) throw new Error(\"nixState() called outside component\");\r\n\r\n const idx = ctx.hookIndex++;\r\n if (!ctx.hooks[idx]) {\r\n let value = initial;\r\n const subscribers = new Set();\r\n let isDestroyed = false;\r\n \r\n // Security: Validate initial value to prevent prototype pollution\r\n if (initial !== null && typeof initial === 'object') {\r\n if ('__proto__' in initial || 'constructor' in initial || 'prototype' in initial) {\r\n console.warn('[nixState] Security: Dangerous properties detected in initial value');\r\n // Create a clean copy without dangerous properties\r\n if (Array.isArray(initial)) {\r\n value = [...initial];\r\n } else {\r\n value = { ...initial };\r\n delete value.__proto__;\r\n delete value.constructor;\r\n delete value.prototype;\r\n }\r\n }\r\n }\r\n\r\n const s = {\r\n /**\r\n * Get the current state value. Automatically tracks this state as a dependency.\r\n * @returns {*} The current state value\r\n */\r\n get value() {\r\n // Memory Leak Fix: Check if state is destroyed\r\n if (isDestroyed) {\r\n console.warn('[nixState] Accessing destroyed state');\r\n return value;\r\n }\r\n \r\n // Track dependency only if there's an active context\r\n if (activeContext && !isDestroyed) {\r\n activeContext._accessedStates.add(s);\r\n }\r\n return value;\r\n },\r\n \r\n /**\r\n * Set a new state value. Triggers all subscribers if value changed.\r\n * @param {any} newVal - The new value to set\r\n */\r\n set value(newVal) {\r\n // Memory Leak Fix: Prevent updates on destroyed state\r\n if (isDestroyed) {\r\n console.warn('[nixState] Attempting to update destroyed state');\r\n return;\r\n }\r\n \r\n // Performance: Skip update if value hasn't changed\r\n if (newVal === value) return;\r\n \r\n // Security: Validate new value to prevent prototype pollution\r\n if (newVal !== null && typeof newVal === 'object') {\r\n if ('__proto__' in newVal || 'constructor' in newVal || 'prototype' in newVal) {\r\n console.warn('[nixState] Security: Dangerous properties detected in new value');\r\n // Create a clean copy\r\n if (Array.isArray(newVal)) {\r\n newVal = [...newVal];\r\n } else {\r\n newVal = { ...newVal };\r\n delete newVal.__proto__;\r\n delete newVal.constructor;\r\n delete newVal.prototype;\r\n }\r\n }\r\n }\r\n \r\n value = newVal;\r\n \r\n // Notify all subscribers\r\n // Memory Leak Fix: Use Array.from to prevent modification during iteration\r\n const subsArray = Array.from(subscribers);\r\n subsArray.forEach((fn) => {\r\n try {\r\n fn(newVal);\r\n } catch (err) {\r\n console.error('[nixState] Subscriber error:', err);\r\n // Remove failed subscriber to prevent future errors\r\n subscribers.delete(fn);\r\n }\r\n });\r\n },\r\n \r\n /**\r\n * Subscribe to state changes.\r\n * @param {(value: any) => void} fn - Callback function called when state changes\r\n * @returns {() => void} Unsubscribe function\r\n * \r\n * @example\r\n * const unsub = state.subscribe((newVal) => {\r\n * console.log('State changed to:', newVal);\r\n * });\r\n * // Later: unsub();\r\n */\r\n subscribe(fn) {\r\n // Security: Validate subscriber function\r\n if (typeof fn !== 'function') {\r\n console.error('[nixState] subscribe() requires a function');\r\n return () => {}; // Return no-op unsubscribe\r\n }\r\n \r\n // Memory Leak Fix: Don't add subscribers to destroyed state\r\n if (isDestroyed) {\r\n console.warn('[nixState] Cannot subscribe to destroyed state');\r\n return () => {};\r\n }\r\n \r\n // Security: Limit number of subscribers to prevent DOS\r\n const MAX_SUBSCRIBERS = 1000;\r\n if (subscribers.size >= MAX_SUBSCRIBERS) {\r\n console.error('[nixState] Maximum subscriber limit reached');\r\n return () => {};\r\n }\r\n \r\n subscribers.add(fn);\r\n \r\n // Return unsubscribe function\r\n return () => {\r\n subscribers.delete(fn);\r\n };\r\n },\r\n \r\n /**\r\n * Cleanup all subscriptions and mark state as destroyed.\r\n * Call this when component unmounts to prevent memory leaks.\r\n * \r\n * @example\r\n * nixEffect(() => {\r\n * return () => myState.cleanup();\r\n * }, []);\r\n */\r\n cleanup() {\r\n if (isDestroyed) return;\r\n \r\n // Mark as destroyed to prevent further operations\r\n isDestroyed = true;\r\n \r\n // Clear all subscribers\r\n subscribers.clear();\r\n \r\n // Clear value if it's an object/array to help garbage collection\r\n if (value !== null && typeof value === 'object') {\r\n if (Array.isArray(value)) {\r\n value = [];\r\n } else {\r\n value = null;\r\n }\r\n }\r\n \r\n console.log('[nixState] State cleaned up');\r\n },\r\n \r\n /**\r\n * Get the number of active subscribers (useful for debugging)\r\n * @returns {number} Number of active subscribers\r\n */\r\n getSubscriberCount() {\r\n return subscribers.size;\r\n },\r\n \r\n /**\r\n * Check if state has been destroyed\r\n * @returns {boolean} True if state is destroyed\r\n */\r\n isDestroyed() {\r\n return isDestroyed;\r\n },\r\n \r\n /**\r\n * Get a read-only version of the state (prevents modification)\r\n * Useful for passing to child components\r\n * @returns {Object} Read-only state object\r\n * \r\n * @example\r\n * const readOnly = state.asReadOnly();\r\n * console.log(readOnly.value); // Can read\r\n * readOnly.value = 5; // Has no effect (no setter)\r\n */\r\n asReadOnly() {\r\n return {\r\n get value() {\r\n return s.value;\r\n },\r\n subscribe: s.subscribe.bind(s),\r\n _isNixState: true,\r\n _isReadOnly: true,\r\n };\r\n },\r\n \r\n // Internal flags\r\n _isNixState: true,\r\n };\r\n\r\n // Store state in hooks\r\n ctx.hooks[idx] = s;\r\n \r\n // Memory Leak Fix: Track state for cleanup\r\n if (ctx.stateCleanups) {\r\n ctx.stateCleanups.push(() => s.cleanup());\r\n }\r\n }\r\n\r\n return ctx.hooks[idx];\r\n}"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Reactive store hook with subscription support.
3
+ * Memory-safe: cleans up subscribers on component unmount.
4
+ *
5
+ * @param {string} path - Optional path identifier
6
+ * @param {any} initial - Initial value
7
+ * @returns {Object} Reactive store object with get/set/subscribe
8
+ */
9
+ export function nixStore(path: string, initial: any): any;
@@ -1,3 +1,5 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
1
3
  import { activeContext } from "../context/context";
2
4
  function nixStore(path, initial) {
3
5
  const ctx = activeContext;
@@ -47,6 +49,7 @@ function nixStore(path, initial) {
47
49
  }
48
50
  return ctx.hooks[idx];
49
51
  }
52
+ __name(nixStore, "nixStore");
50
53
  export {
51
54
  nixStore
52
55
  };
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../hooks/nixStore.js"],
4
4
  "sourcesContent": ["import { activeContext } from \"../context/context\";\r\n\r\n/**\r\n * Reactive store hook with subscription support.\r\n * Memory-safe: cleans up subscribers on component unmount.\r\n *\r\n * @param {string} path - Optional path identifier\r\n * @param {any} initial - Initial value\r\n * @returns {Object} Reactive store object with get/set/subscribe\r\n */\r\nexport function nixStore(path, initial) {\r\n const ctx = activeContext;\r\n if (!ctx) throw new Error(\"nixStore() called outside component\");\r\n\r\n const idx = ctx.hookIndex++;\r\n\r\n if (!ctx.hooks[idx]) {\r\n let value = initial;\r\n const subscribers = new Set();\r\n\r\n const s = {\r\n get value() {\r\n try {\r\n if (activeContext?._accessedStates) {\r\n activeContext._accessedStates.add(s);\r\n }\r\n } catch (err) {\r\n console.error(\"[nixStore] Error tracking accessed state:\", err);\r\n }\r\n return value;\r\n },\r\n set value(v) {\r\n value = v;\r\n subscribers.forEach((fn) => {\r\n try {\r\n fn();\r\n } catch (err) {\r\n console.error(\"[nixStore] Subscriber error:\", err);\r\n }\r\n });\r\n },\r\n subscribe(fn) {\r\n if (typeof fn !== \"function\") {\r\n console.error(\"[nixStore] Subscriber must be a function\");\r\n return () => {};\r\n }\r\n subscribers.add(fn);\r\n // Return cleanup function\r\n return () => subscribers.delete(fn);\r\n },\r\n path,\r\n _isNixState: true,\r\n };\r\n\r\n // Optional: register cleanup on component unmount\r\n if (!ctx.cleanups) ctx.cleanups = [];\r\n ctx.cleanups.push(() => subscribers.clear());\r\n\r\n ctx.hooks[idx] = s;\r\n }\r\n\r\n return ctx.hooks[idx];\r\n}\r\n"],
5
- "mappings": "AAAA,SAAS,qBAAqB;AAUvB,SAAS,SAAS,MAAM,SAAS;AACtC,QAAM,MAAM;AACZ,MAAI,CAAC;AAAK,UAAM,IAAI,MAAM,qCAAqC;AAE/D,QAAM,MAAM,IAAI;AAEhB,MAAI,CAAC,IAAI,MAAM,GAAG,GAAG;AACnB,QAAI,QAAQ;AACZ,UAAM,cAAc,oBAAI,IAAI;AAE5B,UAAM,IAAI;AAAA,MACR,IAAI,QAAQ;AACV,YAAI;AACF,cAAI,eAAe,iBAAiB;AAClC,0BAAc,gBAAgB,IAAI,CAAC;AAAA,UACrC;AAAA,QACF,SAAS,KAAK;AACZ,kBAAQ,MAAM,6CAA6C,GAAG;AAAA,QAChE;AACA,eAAO;AAAA,MACT;AAAA,MACA,IAAI,MAAM,GAAG;AACX,gBAAQ;AACR,oBAAY,QAAQ,CAAC,OAAO;AAC1B,cAAI;AACF,eAAG;AAAA,UACL,SAAS,KAAK;AACZ,oBAAQ,MAAM,gCAAgC,GAAG;AAAA,UACnD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,UAAU,IAAI;AACZ,YAAI,OAAO,OAAO,YAAY;AAC5B,kBAAQ,MAAM,0CAA0C;AACxD,iBAAO,MAAM;AAAA,UAAC;AAAA,QAChB;AACA,oBAAY,IAAI,EAAE;AAElB,eAAO,MAAM,YAAY,OAAO,EAAE;AAAA,MACpC;AAAA,MACA;AAAA,MACA,aAAa;AAAA,IACf;AAGA,QAAI,CAAC,IAAI;AAAU,UAAI,WAAW,CAAC;AACnC,QAAI,SAAS,KAAK,MAAM,YAAY,MAAM,CAAC;AAE3C,QAAI,MAAM,GAAG,IAAI;AAAA,EACnB;AAEA,SAAO,IAAI,MAAM,GAAG;AACtB;",
5
+ "mappings": ";;AAAA,SAAS,qBAAqB;AAUvB,SAAS,SAAS,MAAM,SAAS;AACtC,QAAM,MAAM;AACZ,MAAI,CAAC;AAAK,UAAM,IAAI,MAAM,qCAAqC;AAE/D,QAAM,MAAM,IAAI;AAEhB,MAAI,CAAC,IAAI,MAAM,GAAG,GAAG;AACnB,QAAI,QAAQ;AACZ,UAAM,cAAc,oBAAI,IAAI;AAE5B,UAAM,IAAI;AAAA,MACR,IAAI,QAAQ;AACV,YAAI;AACF,cAAI,eAAe,iBAAiB;AAClC,0BAAc,gBAAgB,IAAI,CAAC;AAAA,UACrC;AAAA,QACF,SAAS,KAAK;AACZ,kBAAQ,MAAM,6CAA6C,GAAG;AAAA,QAChE;AACA,eAAO;AAAA,MACT;AAAA,MACA,IAAI,MAAM,GAAG;AACX,gBAAQ;AACR,oBAAY,QAAQ,CAAC,OAAO;AAC1B,cAAI;AACF,eAAG;AAAA,UACL,SAAS,KAAK;AACZ,oBAAQ,MAAM,gCAAgC,GAAG;AAAA,UACnD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,UAAU,IAAI;AACZ,YAAI,OAAO,OAAO,YAAY;AAC5B,kBAAQ,MAAM,0CAA0C;AACxD,iBAAO,MAAM;AAAA,UAAC;AAAA,QAChB;AACA,oBAAY,IAAI,EAAE;AAElB,eAAO,MAAM,YAAY,OAAO,EAAE;AAAA,MACpC;AAAA,MACA;AAAA,MACA,aAAa;AAAA,IACf;AAGA,QAAI,CAAC,IAAI;AAAU,UAAI,WAAW,CAAC;AACnC,QAAI,SAAS,KAAK,MAAM,YAAY,MAAM,CAAC;AAE3C,QAAI,MAAM,GAAG,IAAI;AAAA,EACnB;AAEA,SAAO,IAAI,MAAM,GAAG;AACtB;AApDgB;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,12 @@
1
+ export function fynix(): {
2
+ name: string;
3
+ enforce: string;
4
+ transform(code: any, id: any): Promise<{
5
+ code: string;
6
+ map: string;
7
+ }>;
8
+ handleHotUpdate({ file, server }: {
9
+ file: any;
10
+ server: any;
11
+ }): any[];
12
+ };
@@ -1,3 +1,5 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
1
3
  import { transform } from "esbuild";
2
4
  function fynix() {
3
5
  return {
@@ -29,6 +31,7 @@ function fynix() {
29
31
  }
30
32
  };
31
33
  }
34
+ __name(fynix, "fynix");
32
35
  export {
33
36
  fynix
34
37
  };
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../plugins/vite-plugin-res.js"],
4
4
  "sourcesContent": ["\r\nimport { transform } from \"esbuild\";\r\nexport function fynix() {\r\n return {\r\n name: \"vite-plugin-res\",\r\n enforce: \"pre\",\r\n\r\n async transform(code, id) {\r\n if (!id.includes(\"/src/\")) return null;\r\n if (!id.endsWith(\".ts\") && !id.endsWith(\".js\") && !id.endsWith(\".fnx\")) return null;\r\n this.addWatchFile(id);\r\n\r\n const result = await transform(code, {\r\n loader: \"jsx\",\r\n jsxFactory: \"Fynix\",\r\n jsxFragment: \"Fynix.Fragment\",\r\n sourcemap: true,\r\n sourcefile: id,\r\n });\r\n\r\n return {\r\n code: result.code,\r\n map: result.map,\r\n };\r\n },\r\n\r\n handleHotUpdate({ file, server }) {\r\n if (file.endsWith(\".ts\") || file.endsWith(\".js\") || file.endsWith(\".fnx\")) {\r\n server.ws.send({ type: \"full-reload\" });\r\n return [];\r\n }\r\n },\r\n };\r\n}\r\n"],
5
- "mappings": "AACA,SAAS,iBAAiB;AACnB,SAAS,QAAQ;AACtB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,MAAM,UAAU,MAAM,IAAI;AACxB,UAAI,CAAC,GAAG,SAAS,OAAO;AAAG,eAAO;AAClC,UAAI,CAAC,GAAG,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS,MAAM;AAAG,eAAO;AAC/E,WAAK,aAAa,EAAE;AAEpB,YAAM,SAAS,MAAM,UAAU,MAAM;AAAA,QACnC,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,WAAW;AAAA,QACX,YAAY;AAAA,MACd,CAAC;AAED,aAAO;AAAA,QACL,MAAM,OAAO;AAAA,QACb,KAAK,OAAO;AAAA,MACd;AAAA,IACF;AAAA,IAEA,gBAAgB,EAAE,MAAM,OAAO,GAAG;AAChC,UAAI,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,MAAM,GAAG;AACzE,eAAO,GAAG,KAAK,EAAE,MAAM,cAAc,CAAC;AACtC,eAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;",
5
+ "mappings": ";;AACA,SAAS,iBAAiB;AACnB,SAAS,QAAQ;AACtB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,MAAM,UAAU,MAAM,IAAI;AACxB,UAAI,CAAC,GAAG,SAAS,OAAO;AAAG,eAAO;AAClC,UAAI,CAAC,GAAG,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS,MAAM;AAAG,eAAO;AAC/E,WAAK,aAAa,EAAE;AAEpB,YAAM,SAAS,MAAM,UAAU,MAAM;AAAA,QACnC,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,WAAW;AAAA,QACX,YAAY;AAAA,MACd,CAAC;AAED,aAAO;AAAA,QACL,MAAM,OAAO;AAAA,QACb,KAAK,OAAO;AAAA,MACd;AAAA,IACF;AAAA,IAEA,gBAAgB,EAAE,MAAM,OAAO,GAAG;AAChC,UAAI,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,MAAM,GAAG;AACzE,eAAO,GAAG,KAAK,EAAE,MAAM,cAAc,CAAC;AACtC,eAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;AA/BgB;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @typedef {Object} FynixRouter
3
+ * @property {function(string=): void} mountRouter - Mount router to DOM element
4
+ * @property {function(string, Object=): void} navigate - Navigate to path with props
5
+ * @property {function(string, Object=): void} replace - Replace current path
6
+ * @property {function(): void} back - Navigate back
7
+ * @property {function(): void} cleanup - Cleanup router instance
8
+ * @property {Object} routes - Static routes map
9
+ * @property {Array} dynamicRoutes - Dynamic routes array
10
+ */
11
+ /**
12
+ * Fynix Router Factory
13
+ * @returns {FynixRouter}
14
+ */
15
+ export default function createFynix(): FynixRouter;
16
+ /**
17
+ * Helper: Set props for links
18
+ */
19
+ export function setLinkProps(key: any, props: any): void;
20
+ /**
21
+ * Helper: Clear link props
22
+ */
23
+ export function clearLinkProps(key: any): void;
24
+ export type FynixRouter = {
25
+ /**
26
+ * - Mount router to DOM element
27
+ */
28
+ mountRouter: (arg0: string | undefined) => void;
29
+ /**
30
+ * - Navigate to path with props
31
+ */
32
+ navigate: (arg0: string, arg1: any | undefined) => void;
33
+ /**
34
+ * - Replace current path
35
+ */
36
+ replace: (arg0: string, arg1: any | undefined) => void;
37
+ /**
38
+ * - Navigate back
39
+ */
40
+ back: () => void;
41
+ /**
42
+ * - Cleanup router instance
43
+ */
44
+ cleanup: () => void;
45
+ /**
46
+ * - Static routes map
47
+ */
48
+ routes: any;
49
+ /**
50
+ * - Dynamic routes array
51
+ */
52
+ dynamicRoutes: any[];
53
+ };
@@ -1,3 +1,5 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
1
3
  import { mount } from "../runtime.js";
2
4
  const MAX_CACHE_SIZE = 50;
3
5
  const PROPS_NAMESPACE = "__fynixLinkProps__";
@@ -10,6 +12,7 @@ function escapeHTML(str) {
10
12
  return "";
11
13
  return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;").replace(/`/g, "&#96;").replace(/\//g, "&#x2F;");
12
14
  }
15
+ __name(escapeHTML, "escapeHTML");
13
16
  function isValidURL(url) {
14
17
  try {
15
18
  const parsed = new URL(url, window.location.origin);
@@ -27,6 +30,7 @@ function isValidURL(url) {
27
30
  return false;
28
31
  }
29
32
  }
33
+ __name(isValidURL, "isValidURL");
30
34
  function sanitizePath(path) {
31
35
  if (typeof path !== "string")
32
36
  return "/";
@@ -48,6 +52,7 @@ function sanitizePath(path) {
48
52
  }
49
53
  return path || "/";
50
54
  }
55
+ __name(sanitizePath, "sanitizePath");
51
56
  function tryGlobPaths() {
52
57
  try {
53
58
  const modules = import.meta.glob("/src/**/*.{ts,js,jsx,fnx}", { eager: true });
@@ -57,6 +62,7 @@ function tryGlobPaths() {
57
62
  return {};
58
63
  }
59
64
  }
65
+ __name(tryGlobPaths, "tryGlobPaths");
60
66
  function filePathToRoute(filePath) {
61
67
  let route = filePath.replace(/^.*\/src/, "").replace(/\.(js|jsx|fnx)$/, "").replace(/\/view$/, "").replace(/\/$/, "");
62
68
  if (!route)
@@ -64,6 +70,7 @@ function filePathToRoute(filePath) {
64
70
  route = route.replace(/\[([^\]]+)\]/g, ":$1");
65
71
  return route;
66
72
  }
73
+ __name(filePathToRoute, "filePathToRoute");
67
74
  function matchDynamicRoute(path, dynamicRoutes) {
68
75
  for (const route of dynamicRoutes) {
69
76
  const match = path.match(route.regex);
@@ -77,6 +84,7 @@ function matchDynamicRoute(path, dynamicRoutes) {
77
84
  }
78
85
  return null;
79
86
  }
87
+ __name(matchDynamicRoute, "matchDynamicRoute");
80
88
  function deserializeProps(props) {
81
89
  if (!props || typeof props !== "object")
82
90
  return {};
@@ -89,15 +97,18 @@ function deserializeProps(props) {
89
97
  }
90
98
  return deserialized;
91
99
  }
100
+ __name(deserializeProps, "deserializeProps");
92
101
  function normalizePath(path) {
93
102
  return sanitizePath(path);
94
103
  }
104
+ __name(normalizePath, "normalizePath");
95
105
  function generateCacheKey() {
96
106
  if (typeof crypto !== "undefined" && crypto.randomUUID) {
97
107
  return crypto.randomUUID();
98
108
  }
99
109
  return `${Date.now()}-${Math.random().toString(36).slice(2)}-${Math.random().toString(36).slice(2)}`;
100
110
  }
111
+ __name(generateCacheKey, "generateCacheKey");
101
112
  function createFynix() {
102
113
  const isDevMode = import.meta.hot !== void 0;
103
114
  if (routerInstance && isRouterInitialized && !isDevMode) {
@@ -161,6 +172,7 @@ function createFynix() {
161
172
  }
162
173
  __fynixPropsCache.set(key, value);
163
174
  }
175
+ __name(addToCache, "addToCache");
164
176
  const MANAGED_META = [
165
177
  { key: "description", name: "description" },
166
178
  { key: "keywords", name: "keywords" },
@@ -197,6 +209,7 @@ function createFynix() {
197
209
  el.setAttribute("content", escapeHTML(value));
198
210
  });
199
211
  }
212
+ __name(updateMetaTags, "updateMetaTags");
200
213
  let renderTimeout = null;
201
214
  const RENDER_DEBOUNCE = 10;
202
215
  function renderRoute() {
@@ -210,6 +223,7 @@ function createFynix() {
210
223
  renderTimeout = null;
211
224
  }, RENDER_DEBOUNCE);
212
225
  }
226
+ __name(renderRoute, "renderRoute");
213
227
  function _renderRouteImmediate() {
214
228
  if (isDestroyed)
215
229
  return;
@@ -261,6 +275,7 @@ function createFynix() {
261
275
  }
262
276
  currentPath = path;
263
277
  }
278
+ __name(_renderRouteImmediate, "_renderRouteImmediate");
264
279
  function navigate(path, props = {}) {
265
280
  if (isDestroyed)
266
281
  return;
@@ -280,6 +295,7 @@ function createFynix() {
280
295
  console.error("[Router] Navigation failed:", err);
281
296
  }
282
297
  }
298
+ __name(navigate, "navigate");
283
299
  function replace(path, props = {}) {
284
300
  if (isDestroyed)
285
301
  return;
@@ -297,6 +313,7 @@ function createFynix() {
297
313
  console.error("[Router] Replace failed:", err);
298
314
  }
299
315
  }
316
+ __name(replace, "replace");
300
317
  function back() {
301
318
  if (isDestroyed)
302
319
  return;
@@ -306,6 +323,7 @@ function createFynix() {
306
323
  console.error("[Router] Back navigation failed:", err);
307
324
  }
308
325
  }
326
+ __name(back, "back");
309
327
  function mountRouter(selector = "#app-root") {
310
328
  if (isDestroyed) {
311
329
  console.error("[Router] Cannot mount destroyed router");
@@ -319,7 +337,8 @@ function createFynix() {
319
337
  renderRoute();
320
338
  isRouterInitialized = true;
321
339
  }
322
- const clickHandler = (e) => {
340
+ __name(mountRouter, "mountRouter");
341
+ const clickHandler = /* @__PURE__ */ __name((e) => {
323
342
  if (isDestroyed)
324
343
  return;
325
344
  const link = e.target.closest("a[data-fynix-link]");
@@ -364,7 +383,7 @@ function createFynix() {
364
383
  } catch (err) {
365
384
  console.error("[Router] Link navigation failed:", err);
366
385
  }
367
- };
386
+ }, "clickHandler");
368
387
  if (listenerCount < MAX_LISTENERS && !isRouterInitialized) {
369
388
  document.addEventListener("click", clickHandler);
370
389
  listeners.push({ element: document, event: "click", handler: clickHandler });
@@ -414,6 +433,7 @@ function createFynix() {
414
433
  routerInstance = null;
415
434
  console.log("[Router] Cleanup complete");
416
435
  }
436
+ __name(cleanup, "cleanup");
417
437
  if (import.meta.hot) {
418
438
  import.meta.hot.accept(() => {
419
439
  console.log("[Router] HMR detected, re-rendering route...");
@@ -438,6 +458,7 @@ function createFynix() {
438
458
  routerInstance = router;
439
459
  return router;
440
460
  }
461
+ __name(createFynix, "createFynix");
441
462
  function setLinkProps(key, props) {
442
463
  if (typeof key !== "string" || key.startsWith("__")) {
443
464
  console.error("[Router] Invalid props key");
@@ -456,6 +477,7 @@ function setLinkProps(key, props) {
456
477
  }
457
478
  window[PROPS_NAMESPACE][key] = props;
458
479
  }
480
+ __name(setLinkProps, "setLinkProps");
459
481
  function clearLinkProps(key) {
460
482
  if (typeof key !== "string")
461
483
  return;
@@ -474,6 +496,7 @@ function clearLinkProps(key) {
474
496
  delete window[PROPS_NAMESPACE][key];
475
497
  }
476
498
  }
499
+ __name(clearLinkProps, "clearLinkProps");
477
500
  export {
478
501
  clearLinkProps,
479
502
  createFynix,
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../router/router.js"],
4
4
  "sourcesContent": ["/**\r\n * Fynix File-Based Router - PRODUCTION FIXED VERSION\r\n * All Security & Memory Leak Issues Fixed\r\n */\r\n\r\nimport { mount } from \"../runtime.js\";\r\n\r\nconst MAX_CACHE_SIZE = 50;\r\nconst PROPS_NAMESPACE = '__fynixLinkProps__';\r\nconst MAX_LISTENERS = 100;\r\nconst ALLOWED_PROTOCOLS = ['http:', 'https:', ''];\r\n\r\n// FIX 1: Singleton pattern to prevent multiple router instances\r\nlet routerInstance = null;\r\nlet isRouterInitialized = false;\r\n\r\n/**\r\n * Security: Improved HTML escaping to prevent XSS\r\n */\r\nfunction escapeHTML(str) {\r\n if (typeof str !== 'string') return '';\r\n return str\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#039;')\r\n .replace(/`/g, '&#96;')\r\n .replace(/\\//g, '&#x2F;');\r\n}\r\n\r\n/**\r\n * Security: Validate URL to prevent open redirect\r\n */\r\nfunction isValidURL(url) {\r\n try {\r\n const parsed = new URL(url, window.location.origin);\r\n \r\n if (parsed.origin !== window.location.origin) {\r\n console.warn('[Router] Security: Cross-origin navigation blocked');\r\n return false;\r\n }\r\n \r\n if (!ALLOWED_PROTOCOLS.includes(parsed.protocol)) {\r\n console.warn('[Router] Security: Dangerous protocol blocked:', parsed.protocol);\r\n return false;\r\n }\r\n \r\n return true;\r\n } catch (e) {\r\n console.warn('[Router] Security: Invalid URL blocked');\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Security: Sanitize path to prevent directory traversal\r\n */\r\nfunction sanitizePath(path) {\r\n if (typeof path !== 'string') return '/';\r\n \r\n // Decode URL encoding first to catch encoded traversal attempts like %2e%2e\r\n try {\r\n path = decodeURIComponent(path);\r\n } catch (e) {\r\n // Invalid encoding, reject\r\n console.warn('[Router] Invalid URL encoding in path');\r\n return '/';\r\n }\r\n \r\n path = path.replace(/\\0/g, '');\r\n path = path.replace(/\\\\/g, '/');\r\n path = path.replace(/\\/+/g, '/');\r\n path = path.split('/').filter(part => part !== '..' && part !== '.').join('/');\r\n \r\n if (!path.startsWith('/')) {\r\n path = '/' + path;\r\n }\r\n \r\n if (path.length > 1 && path.endsWith('/')) {\r\n path = path.slice(0, -1);\r\n }\r\n \r\n return path || '/';\r\n}\r\n\r\n/**\r\n * Helper: Try multiple possible glob paths for file-based routing\r\n */\r\nfunction tryGlobPaths() {\r\n try {\r\n // @ts-ignore - Vite glob API\r\n const modules = import.meta.glob(\"/src/**/*.{ts,js,jsx,fnx}\", { eager: true });\r\n return modules || {};\r\n } catch (error) {\r\n console.error('[Router] Failed to load modules:', error);\r\n return {};\r\n }\r\n}\r\n\r\n/**\r\n * Convert file path to route path\r\n */\r\nfunction filePathToRoute(filePath) {\r\n let route = filePath\r\n .replace(/^.*\\/src/, \"\")\r\n .replace(/\\.(js|jsx|fnx)$/, \"\")\r\n .replace(/\\/view$/, \"\")\r\n .replace(/\\/$/, \"\");\r\n\r\n if (!route) route = \"/\";\r\n route = route.replace(/\\[([^\\]]+)\\]/g, \":$1\");\r\n return route;\r\n}\r\n\r\n/**\r\n * Match a dynamic route pattern\r\n */\r\nfunction matchDynamicRoute(path, dynamicRoutes) {\r\n for (const route of dynamicRoutes) {\r\n const match = path.match(route.regex);\r\n if (match) {\r\n const params = {};\r\n route.params.forEach((param, i) => {\r\n // FIX: Don't decode again - already decoded in sanitizePath\r\n // Just escape the matched value\r\n params[param] = escapeHTML(match[i + 1]);\r\n });\r\n return { component: route.component, params };\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Deserialize plain props\r\n */\r\nfunction deserializeProps(props) {\r\n if (!props || typeof props !== 'object') return {};\r\n \r\n const deserialized = {};\r\n for (const [key, value] of Object.entries(props)) {\r\n if (typeof key !== 'string' || key.startsWith('__')) {\r\n continue;\r\n }\r\n deserialized[key] = value;\r\n }\r\n return deserialized;\r\n}\r\n\r\n/**\r\n * Normalize path\r\n */\r\nfunction normalizePath(path) {\r\n return sanitizePath(path);\r\n}\r\n\r\n/**\r\n * FIX 2: Generate unique cache keys using crypto API when available\r\n */\r\nfunction generateCacheKey() {\r\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\r\n return crypto.randomUUID();\r\n }\r\n // Fallback with better uniqueness\r\n return `${Date.now()}-${Math.random().toString(36).slice(2)}-${Math.random().toString(36).slice(2)}`;\r\n}\r\n\r\n/**\r\n * @typedef {Object} FynixRouter\r\n * @property {function(string=): void} mountRouter - Mount router to DOM element\r\n * @property {function(string, Object=): void} navigate - Navigate to path with props\r\n * @property {function(string, Object=): void} replace - Replace current path\r\n * @property {function(): void} back - Navigate back\r\n * @property {function(): void} cleanup - Cleanup router instance\r\n * @property {Object} routes - Static routes map\r\n * @property {Array} dynamicRoutes - Dynamic routes array\r\n */\r\n\r\n/**\r\n * Fynix Router Factory\r\n * @returns {FynixRouter}\r\n */\r\nexport default function createFynix() {\r\n // FIX 3: Singleton pattern - return existing instance if already initialized\r\n // Skip singleton check in dev mode (HMR) to allow hot reloading\r\n const isDevMode = import.meta.hot !== undefined;\r\n \r\n if (routerInstance && isRouterInitialized && !isDevMode) {\r\n console.warn('[Router] Router already initialized, returning existing instance');\r\n return routerInstance;\r\n }\r\n \r\n // In dev mode with HMR, cleanup old instance before creating new one\r\n if (isDevMode && routerInstance) {\r\n console.log('[Router] HMR: Cleaning up old router instance');\r\n routerInstance.cleanup();\r\n routerInstance = null;\r\n isRouterInitialized = false;\r\n }\r\n\r\n let rootSelector = \"#app-root\";\r\n let currentPath = null;\r\n let isDestroyed = false;\r\n let listenerCount = 0;\r\n\r\n const listeners = [];\r\n\r\n if (!window[PROPS_NAMESPACE]) {\r\n window[PROPS_NAMESPACE] = {};\r\n }\r\n\r\n // Clear old cache in dev mode to prevent memory buildup\r\n if (isDevMode && window.__fynixPropsCache) {\r\n window.__fynixPropsCache.clear();\r\n }\r\n\r\n // @ts-ignore - Custom cache property\r\n const __fynixPropsCache = window.__fynixPropsCache || new Map();\r\n // @ts-ignore\r\n window.__fynixPropsCache = __fynixPropsCache;\r\n\r\n const modules = tryGlobPaths();\r\n const routes = {};\r\n const dynamicRoutes = [];\r\n\r\n for (const [filePath, mod] of Object.entries(modules)) {\r\n const routePath = filePathToRoute(filePath);\r\n const component = mod.default || mod[Object.keys(mod)[0]] || Object.values(mod)[0];\r\n\r\n if (!component) continue;\r\n\r\n const hasDynamic = /:[^/]+/.test(routePath);\r\n if (hasDynamic) {\r\n dynamicRoutes.push({\r\n pattern: routePath,\r\n regex: new RegExp(\"^\" + routePath.replace(/:[^/]+/g, \"([^/]+)\") + \"$\"),\r\n component,\r\n params: [...routePath.matchAll(/:([^/]+)/g)].map((m) => m[1]),\r\n });\r\n } else {\r\n routes[routePath] = component;\r\n }\r\n }\r\n\r\n /**\r\n * Add cache management with LRU\r\n */\r\n function addToCache(key, value) {\r\n if (__fynixPropsCache.size >= MAX_CACHE_SIZE) {\r\n const firstKey = __fynixPropsCache.keys().next().value;\r\n const evicted = __fynixPropsCache.get(firstKey);\r\n \r\n if (evicted && typeof evicted === 'object') {\r\n Object.values(evicted).forEach(val => {\r\n if (val && typeof val === 'object' && val.cleanup) {\r\n try { val.cleanup(); } catch (e) {}\r\n }\r\n });\r\n }\r\n \r\n __fynixPropsCache.delete(firstKey);\r\n }\r\n __fynixPropsCache.set(key, value);\r\n }\r\n\r\n const MANAGED_META = [\r\n { key: \"description\", name: \"description\" },\r\n { key: \"keywords\", name: \"keywords\" },\r\n { key: \"twitterCard\", name: \"twitter:card\" },\r\n { key: \"ogTitle\", property: \"og:title\" },\r\n { key: \"ogDescription\", property: \"og:description\" },\r\n { key: \"ogImage\", property: \"og:image\" },\r\n ];\r\n\r\n /**\r\n * Update document meta tags for SEO with XSS prevention\r\n * @param {Object} meta - Meta object\r\n */\r\n function updateMetaTags(meta = {}) {\r\n if (!meta || typeof meta !== 'object') return;\r\n\r\n if (meta.title && typeof meta.title === 'string') {\r\n document.title = escapeHTML(meta.title);\r\n }\r\n\r\n MANAGED_META.forEach(def => {\r\n const value = meta[def.key];\r\n\r\n const selector = def.name\r\n ? `meta[name=\"${def.name}\"]`\r\n : `meta[property=\"${def.property}\"]`;\r\n\r\n let el = document.querySelector(selector);\r\n\r\n if (value == null) {\r\n if (el) el.remove();\r\n return;\r\n }\r\n\r\n if (typeof value !== 'string') return;\r\n\r\n if (!el) {\r\n el = document.createElement(\"meta\");\r\n if (def.name) el.setAttribute(\"name\", def.name);\r\n if (def.property) el.setAttribute(\"property\", def.property);\r\n document.head.appendChild(el);\r\n }\r\n\r\n el.setAttribute(\"content\", escapeHTML(value));\r\n });\r\n }\r\n\r\n // FIX 4: Debounce renderRoute to prevent race conditions\r\n let renderTimeout = null;\r\n const RENDER_DEBOUNCE = 10; // ms\r\n\r\n /**\r\n * Core route rendering function\r\n */\r\n function renderRoute() {\r\n if (isDestroyed) return;\r\n\r\n // FIX 5: Debounce to prevent race conditions\r\n if (renderTimeout) {\r\n clearTimeout(renderTimeout);\r\n }\r\n\r\n renderTimeout = setTimeout(() => {\r\n _renderRouteImmediate();\r\n renderTimeout = null;\r\n }, RENDER_DEBOUNCE);\r\n }\r\n\r\n function _renderRouteImmediate() {\r\n if (isDestroyed) return;\r\n\r\n const path = normalizePath(window.location.pathname);\r\n let Page = routes[path];\r\n let params = {};\r\n let routeProps = {};\r\n\r\n if (!Page) {\r\n const match = matchDynamicRoute(path, dynamicRoutes);\r\n if (match) {\r\n Page = match.component;\r\n params = match.params;\r\n }\r\n }\r\n\r\n const root = document.querySelector(rootSelector);\r\n if (!root) {\r\n console.error(\"[Router] Root element not found:\", rootSelector);\r\n return;\r\n }\r\n\r\n if (!Page) {\r\n root.innerHTML = `<h2>404 Not Found</h2><p>Path: ${escapeHTML(path)}</p>`;\r\n updateMetaTags({ title: \"404 - Page Not Found\" });\r\n return;\r\n }\r\n\r\n const state = window.history.state || {};\r\n let passedProps = {};\r\n \r\n if (state.__fynixCacheKey && __fynixPropsCache.has(state.__fynixCacheKey)) {\r\n passedProps = __fynixPropsCache.get(state.__fynixCacheKey);\r\n } else if (state.serializedProps) {\r\n passedProps = deserializeProps(state.serializedProps);\r\n }\r\n\r\n if (Page.props) {\r\n routeProps = typeof Page.props === \"function\" ? Page.props() : Page.props;\r\n }\r\n\r\n if (Page.meta) {\r\n const meta = typeof Page.meta === \"function\" ? Page.meta(params) : Page.meta;\r\n updateMetaTags(meta);\r\n }\r\n\r\n // @ts-ignore\r\n window.__lastRouteProps = {\r\n ...routeProps,\r\n ...passedProps,\r\n params,\r\n };\r\n\r\n try {\r\n mount(Page, rootSelector, false, window.__lastRouteProps);\r\n } catch (err) {\r\n console.error(\"[Router] Mount failed:\", err);\r\n root.innerHTML = `<pre style=\"color:red;\">Mount Error occurred</pre>`;\r\n }\r\n\r\n currentPath = path;\r\n }\r\n\r\n /**\r\n * SPA Navigation Helpers\r\n */\r\n function navigate(path, props = {}) {\r\n if (isDestroyed) return;\r\n \r\n path = normalizePath(path);\r\n \r\n if (!isValidURL(window.location.origin + path)) {\r\n console.error('[Router] Invalid navigation URL');\r\n return;\r\n }\r\n \r\n if (path === currentPath) return;\r\n \r\n const cacheKey = generateCacheKey();\r\n addToCache(cacheKey, props);\r\n \r\n try {\r\n window.history.pushState({ __fynixCacheKey: cacheKey }, \"\", path);\r\n renderRoute();\r\n } catch (err) {\r\n console.error('[Router] Navigation failed:', err);\r\n }\r\n }\r\n\r\n function replace(path, props = {}) {\r\n if (isDestroyed) return;\r\n \r\n path = normalizePath(path);\r\n \r\n if (!isValidURL(window.location.origin + path)) {\r\n console.error('[Router] Invalid replace URL');\r\n return;\r\n }\r\n \r\n const cacheKey = generateCacheKey();\r\n addToCache(cacheKey, props);\r\n \r\n try {\r\n window.history.replaceState({ __fynixCacheKey: cacheKey }, \"\", path);\r\n renderRoute();\r\n } catch (err) {\r\n console.error('[Router] Replace failed:', err);\r\n }\r\n }\r\n\r\n function back() {\r\n if (isDestroyed) return;\r\n try {\r\n window.history.back();\r\n } catch (err) {\r\n console.error('[Router] Back navigation failed:', err);\r\n }\r\n }\r\n\r\n /**\r\n * Mount the router to a DOM element\r\n */\r\n function mountRouter(selector = \"#app-root\") {\r\n if (isDestroyed) {\r\n console.error(\"[Router] Cannot mount destroyed router\");\r\n return;\r\n }\r\n \r\n if (typeof selector !== 'string' || selector.length === 0) {\r\n console.error('[Router] Invalid selector');\r\n return;\r\n }\r\n \r\n rootSelector = selector;\r\n renderRoute();\r\n isRouterInitialized = true;\r\n }\r\n\r\n /**\r\n * Link click delegation\r\n */\r\n const clickHandler = (e) => {\r\n if (isDestroyed) return;\r\n\r\n const link = e.target.closest(\"a[data-fynix-link]\");\r\n if (!link) return;\r\n\r\n const href = link.getAttribute('href');\r\n if (!href) {\r\n console.warn('[Router] Missing href attribute');\r\n return;\r\n }\r\n\r\n // FIX: Build full URL for validation (handles relative URLs)\r\n const fullUrl = new URL(link.href, window.location.origin).href;\r\n if (!isValidURL(fullUrl)) {\r\n console.warn('[Router] Invalid link href');\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n const path = normalizePath(new URL(link.href, window.location.origin).pathname);\r\n\r\n if (path === currentPath) return;\r\n\r\n let props = {};\r\n const propsKey = link.getAttribute(\"data-props-key\");\r\n \r\n if (propsKey && typeof propsKey === 'string' && !propsKey.startsWith('__')) {\r\n if (window[PROPS_NAMESPACE]?.[propsKey]) {\r\n props = window[PROPS_NAMESPACE][propsKey];\r\n }\r\n }\r\n\r\n const serializableProps = {};\r\n for (const [k, v] of Object.entries(props)) {\r\n if (typeof k !== 'string' || k.startsWith('__')) continue;\r\n serializableProps[k] = v && (v._isNixState || v._isRestState) ? v.value : v;\r\n }\r\n\r\n const cacheKey = generateCacheKey();\r\n addToCache(cacheKey, serializableProps);\r\n\r\n try {\r\n window.history.pushState(\r\n { __fynixCacheKey: cacheKey, serializedProps: serializableProps },\r\n \"\",\r\n path\r\n );\r\n renderRoute();\r\n } catch (err) {\r\n console.error('[Router] Link navigation failed:', err);\r\n }\r\n };\r\n\r\n // FIX 6: Only add listeners if not already added\r\n if (listenerCount < MAX_LISTENERS && !isRouterInitialized) {\r\n document.addEventListener(\"click\", clickHandler);\r\n listeners.push({ element: document, event: \"click\", handler: clickHandler });\r\n listenerCount++;\r\n\r\n window.addEventListener(\"popstate\", renderRoute);\r\n listeners.push({ element: window, event: \"popstate\", handler: renderRoute });\r\n listenerCount++;\r\n }\r\n\r\n /**\r\n * Cleanup function\r\n */\r\n function cleanup() {\r\n // FIX: Clear timeout FIRST to prevent pending renders\r\n if (renderTimeout) {\r\n clearTimeout(renderTimeout);\r\n renderTimeout = null;\r\n }\r\n\r\n // THEN mark as destroyed\r\n isDestroyed = true;\r\n\r\n // Remove all event listeners\r\n listeners.forEach(({ element, event, handler }) => {\r\n try {\r\n element.removeEventListener(event, handler);\r\n } catch (e) {\r\n console.error('[Router] Cleanup error:', e);\r\n }\r\n });\r\n listeners.length = 0;\r\n listenerCount = 0;\r\n\r\n // Clean up all cached props\r\n __fynixPropsCache.forEach(props => {\r\n if (props && typeof props === 'object') {\r\n Object.values(props).forEach(val => {\r\n if (val && typeof val === 'object' && val.cleanup) {\r\n try { val.cleanup(); } catch (e) {}\r\n }\r\n });\r\n }\r\n });\r\n __fynixPropsCache.clear();\r\n\r\n // Clean up global namespace\r\n if (window[PROPS_NAMESPACE]) {\r\n Object.keys(window[PROPS_NAMESPACE]).forEach(key => {\r\n delete window[PROPS_NAMESPACE][key];\r\n });\r\n delete window[PROPS_NAMESPACE];\r\n }\r\n\r\n // Clear last route props\r\n // @ts-ignore\r\n if (window.__lastRouteProps) {\r\n // @ts-ignore\r\n delete window.__lastRouteProps;\r\n }\r\n\r\n // Reset singleton flags at the VERY end\r\n isRouterInitialized = false;\r\n routerInstance = null;\r\n \r\n console.log(\"[Router] Cleanup complete\");\r\n }\r\n\r\n // @ts-ignore - Vite HMR API\r\n if (import.meta.hot) {\r\n // @ts-ignore\r\n import.meta.hot.accept(() => {\r\n console.log(\"[Router] HMR detected, re-rendering route...\");\r\n renderRoute();\r\n });\r\n\r\n // @ts-ignore\r\n import.meta.hot.dispose(() => {\r\n console.log(\"[Router] HMR dispose, cleaning up...\");\r\n cleanup();\r\n // Reset singleton flags for HMR\r\n routerInstance = null;\r\n isRouterInitialized = false;\r\n });\r\n }\r\n\r\n const router = {\r\n mountRouter,\r\n navigate,\r\n replace,\r\n back,\r\n cleanup,\r\n routes,\r\n dynamicRoutes,\r\n };\r\n\r\n routerInstance = router;\r\n return router;\r\n}\r\n\r\n/**\r\n * Helper: Set props for links\r\n */\r\nexport function setLinkProps(key, props) {\r\n if (typeof key !== 'string' || key.startsWith('__')) {\r\n console.error('[Router] Invalid props key');\r\n return;\r\n }\r\n \r\n if (!props || typeof props !== 'object') {\r\n console.error('[Router] Invalid props object');\r\n return;\r\n }\r\n \r\n if (!window[PROPS_NAMESPACE]) {\r\n window[PROPS_NAMESPACE] = {};\r\n }\r\n \r\n if (Object.keys(window[PROPS_NAMESPACE]).length >= MAX_CACHE_SIZE) {\r\n console.warn('[Router] Props storage limit reached');\r\n return;\r\n }\r\n \r\n window[PROPS_NAMESPACE][key] = props;\r\n}\r\n\r\n/**\r\n * Helper: Clear link props\r\n */\r\nexport function clearLinkProps(key) {\r\n if (typeof key !== 'string') return;\r\n \r\n if (window[PROPS_NAMESPACE]?.[key]) {\r\n const props = window[PROPS_NAMESPACE][key];\r\n if (props && typeof props === 'object') {\r\n Object.values(props).forEach(val => {\r\n if (val && typeof val === 'object' && val.cleanup) {\r\n try { val.cleanup(); } catch (e) {}\r\n }\r\n });\r\n }\r\n delete window[PROPS_NAMESPACE][key];\r\n }\r\n}\r\n\r\n// Named export for better IDE support\r\nexport { createFynix };"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Create a virtual text node, supporting reactive state.
3
+ * @param {string|number|object} text
4
+ * @returns {object} vnode
5
+ */
6
+ export function createTextVNode(text: string | number | object): object;
7
+ /**
8
+ * Create a virtual DOM node (element, fragment, or component).
9
+ * @param {string|function|symbol} type
10
+ * @param {object} [props={}]
11
+ * @param {...any} children
12
+ * @returns {object} vnode
13
+ */
14
+ export function h(type: string | Function | symbol, props?: object, ...children: any[]): object;
15
+ export namespace h {
16
+ function Fragment({ children }: {
17
+ children: any;
18
+ }): any;
19
+ }
20
+ /**
21
+ * Safely render a component
22
+ * @param {function} Component
23
+ * @param {object} props
24
+ * @returns {object} vnode
25
+ */
26
+ export function renderComponent(Component: Function, props?: object): object;
27
+ /**
28
+ * Patch a parent DOM node based on oldVNode -> newVNode changes
29
+ * @param {Node} parent
30
+ * @param {object|string|number} newVNode
31
+ * @param {object|string|number} oldVNode
32
+ * @returns {Promise<void>}
33
+ */
34
+ export function patch(parent: Node, newVNode: object | string | number, oldVNode: object | string | number): Promise<void>;
35
+ /**
36
+ * Mount the app component to a root DOM node
37
+ * @param {function} AppComponent
38
+ * @param {string|Element} root
39
+ * @param {boolean} [hydrate=false]
40
+ * @param {object} [props={}]
41
+ */
42
+ export function mount(AppComponent: Function, root: string | Element, hydrate?: boolean, props?: object): void;
43
+ /**
44
+ * Symbol for text nodes
45
+ * @type {symbol}
46
+ */
47
+ export const TEXT: symbol;
48
+ /**
49
+ * Symbol for fragments
50
+ * @type {symbol}
51
+ */
52
+ export const Fragment: symbol;
53
+ /**
54
+ * Create a virtual DOM node (element, fragment, or component).
55
+ * @param {string|function|symbol} type
56
+ * @param {object} [props={}]
57
+ * @param {...any} children
58
+ * @returns {object} vnode
59
+ */
60
+ export function Fynix(type: string | Function | symbol, props?: object, ...children: any[]): object;
61
+ export namespace Fynix {
62
+ import Fragment = h.Fragment;
63
+ export { Fragment };
64
+ }
65
+ import { nixState } from "./hooks/nixState";
66
+ import { nixEffect } from "./hooks/nixEffect";
67
+ import { nixStore } from "./hooks/nixStore";
68
+ import { nixInterval } from "./hooks/nixInterval";
69
+ import { nixAsync } from "./hooks/nixAsync";
70
+ import { nixCallback } from "./hooks/nixCallback";
71
+ import { nixComputed } from "./hooks/nixComputed";
72
+ import { nixMemo } from "./hooks/nixMemo";
73
+ import { nixDebounce } from "./hooks/nixDebounce";
74
+ import { nixPrevious } from "./hooks/nixPrevious";
75
+ import { nixLocalStorage } from "./hooks/nixLocalStorage";
76
+ import { nixRef } from "./hooks/nixRef";
77
+ import { nixLazy } from "./hooks/nixLazy.js";
78
+ import { Suspense } from "./hooks/nixLazy.js";
79
+ import { nixForm } from "./hooks/nixForm.js";
80
+ import { nixAsyncCached } from "./hooks/nixAsyncCache";
81
+ import { nixAsyncDebounce } from "./hooks/nixAsyncDebounce";
82
+ import { nixAsyncQuery } from "./hooks/nixAsyncQuery";
83
+ import { nixEffectAlways } from "./hooks/nixEffect";
84
+ import { nixEffectOnce } from "./hooks/nixEffect";
85
+ import { nixFormAsync } from "./hooks/nixFormAsync";
86
+ import { nixLazyAsync } from "./hooks/nixLazyAsync";
87
+ import { nixLazyFormAsync } from "./hooks/nixLazyFormAsync";
88
+ import { Path } from "./custom/index.js";
89
+ import { Button } from "./custom/index.js";
90
+ import createFynix from "./router/router.js";
91
+ export { nixState, nixEffect, nixStore, nixInterval, nixAsync, nixCallback, nixComputed, nixMemo, nixDebounce, nixPrevious, nixLocalStorage, nixRef, nixLazy, Suspense, nixForm, nixAsyncCached, nixAsyncDebounce, nixAsyncQuery, nixEffectAlways, nixEffectOnce, nixFormAsync, nixLazyAsync, nixLazyFormAsync, Path, Button, createFynix };