@v-ibe/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +40 -0
  3. package/dist/DI/__tests__/scoped-container-dependencies.test.d.ts +1 -0
  4. package/dist/DI/bootstrap.d.ts +18 -0
  5. package/dist/DI/decorators/inject.d.ts +37 -0
  6. package/dist/DI/decorators/inject.js +45 -0
  7. package/dist/DI/decorators/service.d.ts +24 -0
  8. package/dist/DI/decorators/service.js +13 -0
  9. package/dist/DI/di-container.d.ts +53 -0
  10. package/dist/DI/di-container.js +158 -0
  11. package/dist/DI/lifecycle.d.ts +37 -0
  12. package/dist/DI/lifecycle.js +6 -0
  13. package/dist/DI/scoped-container.d.ts +68 -0
  14. package/dist/DI/scoped-container.js +193 -0
  15. package/dist/DI/service-metadata.d.ts +32 -0
  16. package/dist/DI/service-metadata.js +31 -0
  17. package/dist/DI/types.d.ts +4 -0
  18. package/dist/behaviors/__tests__/behavior-system.test.d.ts +1 -0
  19. package/dist/behaviors/behavior-manager.d.ts +60 -0
  20. package/dist/behaviors/behavior-manager.js +131 -0
  21. package/dist/behaviors/behavior-registry.d.ts +68 -0
  22. package/dist/behaviors/behavior-registry.js +105 -0
  23. package/dist/behaviors/constants.d.ts +16 -0
  24. package/dist/behaviors/constants.js +8 -0
  25. package/dist/behaviors/decorators.d.ts +87 -0
  26. package/dist/behaviors/decorators.js +46 -0
  27. package/dist/behaviors/index.d.ts +4 -0
  28. package/dist/components/__tests__/host.test.d.ts +1 -0
  29. package/dist/components/app-tree.d.ts +49 -0
  30. package/dist/components/app-tree.js +122 -0
  31. package/dist/components/base-component.d.ts +85 -0
  32. package/dist/components/base-component.js +438 -0
  33. package/dist/components/decorators/component.d.ts +27 -0
  34. package/dist/components/decorators/component.js +47 -0
  35. package/dist/components/decorators/prop.d.ts +14 -0
  36. package/dist/components/decorators/prop.js +37 -0
  37. package/dist/components/types.d.ts +26 -0
  38. package/dist/core.d.ts +23 -0
  39. package/dist/core.js +8 -0
  40. package/dist/custom-components/__tests__/for.test.d.ts +1 -0
  41. package/dist/custom-components/__tests__/show.test.d.ts +1 -0
  42. package/dist/custom-components/for.d.ts +58 -0
  43. package/dist/custom-components/for.js +313 -0
  44. package/dist/custom-components/index.d.ts +2 -0
  45. package/dist/custom-components/show.d.ts +78 -0
  46. package/dist/custom-components/show.js +88 -0
  47. package/dist/data-management/cache/cache-invalidate.decorator.d.ts +35 -0
  48. package/dist/data-management/cache/cache-invalidate.decorator.js +21 -0
  49. package/dist/data-management/cache/cache-metadata.d.ts +15 -0
  50. package/dist/data-management/cache/cache-provider.interface.d.ts +67 -0
  51. package/dist/data-management/cache/cache-tags.decorator.d.ts +52 -0
  52. package/dist/data-management/cache/cache-tags.decorator.js +13 -0
  53. package/dist/data-management/cache/cache-update.decorator.d.ts +28 -0
  54. package/dist/data-management/cache/cache-update.decorator.js +21 -0
  55. package/dist/data-management/cache/cache.decorator.d.ts +28 -0
  56. package/dist/data-management/cache/cache.decorator.js +13 -0
  57. package/dist/data-management/cache/index.d.ts +11 -0
  58. package/dist/data-management/cache/local-storage-cache.d.ts +40 -0
  59. package/dist/data-management/cache/local-storage-cache.js +268 -0
  60. package/dist/data-management/cache/memory-cache.d.ts +37 -0
  61. package/dist/data-management/cache/memory-cache.js +149 -0
  62. package/dist/data-management/cache/session-storage-cache.d.ts +35 -0
  63. package/dist/data-management/cache/session-storage-cache.js +242 -0
  64. package/dist/data-management/cache/ttl.decorator.d.ts +31 -0
  65. package/dist/data-management/cache/ttl.decorator.js +34 -0
  66. package/dist/data-management/decorators/consume.d.ts +29 -0
  67. package/dist/data-management/decorators/consume.js +28 -0
  68. package/dist/data-management/decorators/id.d.ts +28 -0
  69. package/dist/data-management/decorators/id.js +19 -0
  70. package/dist/data-management/decorators/model.d.ts +48 -0
  71. package/dist/data-management/decorators/model.js +24 -0
  72. package/dist/data-management/decorators/prop.d.ts +43 -0
  73. package/dist/data-management/decorators/prop.js +32 -0
  74. package/dist/data-management/index.d.ts +13 -0
  75. package/dist/data-management/store/json-to-model.d.ts +45 -0
  76. package/dist/data-management/store/json-to-model.js +36 -0
  77. package/dist/data-management/store/store.d.ts +108 -0
  78. package/dist/data-management/store/store.js +207 -0
  79. package/dist/data-management/store/types.d.ts +53 -0
  80. package/dist/events-handler/decorators/emit.d.ts +29 -0
  81. package/dist/events-handler/decorators/emit.js +51 -0
  82. package/dist/events-handler/event-decorators.d.ts +1 -0
  83. package/dist/events-handler/event-emitter.service.d.ts +21 -0
  84. package/dist/events-handler/event-emitter.service.js +85 -0
  85. package/dist/events-handler/event-types.d.ts +12 -0
  86. package/dist/index.d.ts +55 -0
  87. package/dist/index.js +121 -0
  88. package/dist/jsx/dynamic/__tests__/granular-array-renderer.test.d.ts +1 -0
  89. package/dist/jsx/dynamic/__tests__/jsx-array-rendering.test.d.ts +1 -0
  90. package/dist/jsx/dynamic/array-renderer.d.ts +2 -0
  91. package/dist/jsx/dynamic/array-renderer.js +133 -0
  92. package/dist/jsx/dynamic/child-renderer.d.ts +1 -0
  93. package/dist/jsx/dynamic/child-renderer.js +180 -0
  94. package/dist/jsx/dynamic/dom-utils.d.ts +5 -0
  95. package/dist/jsx/dynamic/dom-utils.js +22 -0
  96. package/dist/jsx/dynamic/granular-array-renderer.d.ts +16 -0
  97. package/dist/jsx/dynamic/granular-array-renderer.js +153 -0
  98. package/dist/jsx/dynamic/node-renderer.d.ts +2 -0
  99. package/dist/jsx/dynamic/props-handler.d.ts +3 -0
  100. package/dist/jsx/dynamic/props-handler.js +281 -0
  101. package/dist/jsx/dynamic/text-renderer.d.ts +2 -0
  102. package/dist/jsx/jsx-dev-runtime.d.ts +2 -0
  103. package/dist/jsx/jsx-runtime.d.ts +3 -0
  104. package/dist/jsx/types.d.ts +35 -0
  105. package/dist/jsx/types.js +4 -0
  106. package/dist/jsx-dev-runtime.d.ts +2 -0
  107. package/dist/jsx-dev-runtime.js +8 -0
  108. package/dist/jsx-runtime.d.ts +2 -0
  109. package/dist/jsx-runtime.js +11 -0
  110. package/dist/reactivity/__tests__/context-stack.test.d.ts +1 -0
  111. package/dist/reactivity/__tests__/nested-effects-untrack.test.d.ts +22 -0
  112. package/dist/reactivity/context-scope.d.ts +57 -0
  113. package/dist/reactivity/context-scope.js +35 -0
  114. package/dist/reactivity/decorators/__tests__/ctx-integration.test.d.ts +5 -0
  115. package/dist/reactivity/decorators/__tests__/ctx-loop.test.d.ts +10 -0
  116. package/dist/reactivity/decorators/__tests__/state-intelligent.test.d.ts +1 -0
  117. package/dist/reactivity/decorators/computed.d.ts +6 -0
  118. package/dist/reactivity/decorators/computed.js +17 -0
  119. package/dist/reactivity/decorators/create-event-decorator.d.ts +5 -0
  120. package/dist/reactivity/decorators/create-event-decorator.js +28 -0
  121. package/dist/reactivity/decorators/ctx.d.ts +9 -0
  122. package/dist/reactivity/decorators/ctx.js +91 -0
  123. package/dist/reactivity/decorators/effect.d.ts +9 -0
  124. package/dist/reactivity/decorators/effect.js +24 -0
  125. package/dist/reactivity/decorators/resource.d.ts +48 -0
  126. package/dist/reactivity/decorators/resource.js +20 -0
  127. package/dist/reactivity/decorators/state.d.ts +8 -0
  128. package/dist/reactivity/decorators/state.js +68 -0
  129. package/dist/reactivity/decorators/store.d.ts +6 -0
  130. package/dist/reactivity/decorators/store.js +25 -0
  131. package/dist/reactivity/phase-scheduler.d.ts +81 -0
  132. package/dist/reactivity/phase-scheduler.js +88 -0
  133. package/dist/reactivity/phase-scheduler.test.d.ts +1 -0
  134. package/dist/reactivity/reactive-cache.d.ts +21 -0
  135. package/dist/reactivity/reactive-cache.js +31 -0
  136. package/dist/reactivity/reactive-cache.test.d.ts +1 -0
  137. package/dist/reactivity/reactive-context.d.ts +152 -0
  138. package/dist/reactivity/reactive-context.js +184 -0
  139. package/dist/reactivity/signals/__tests__/composicion-automatica.test.d.ts +1 -0
  140. package/dist/reactivity/signals/__tests__/composite/nivel-1-estructura-basica.test.d.ts +1 -0
  141. package/dist/reactivity/signals/__tests__/composite/nivel-2-registro-subscribers.test.d.ts +1 -0
  142. package/dist/reactivity/signals/__tests__/composite/nivel-3-notificaciones-basicas.test.d.ts +1 -0
  143. package/dist/reactivity/signals/__tests__/composite/nivel-4-comparacion-valores.test.d.ts +1 -0
  144. package/dist/reactivity/signals/__tests__/composite/nivel-5-tracking-automatico.test.d.ts +1 -0
  145. package/dist/reactivity/signals/__tests__/composite/nivel-6-anti-glitch.test.d.ts +1 -0
  146. package/dist/reactivity/signals/__tests__/composite/nivel-7-objetos-anidados.test.d.ts +1 -0
  147. package/dist/reactivity/signals/__tests__/composite/nivel-8-observable-array-support.test.d.ts +1 -0
  148. package/dist/reactivity/signals/__tests__/composite-shallow-tracking.test.d.ts +1 -0
  149. package/dist/reactivity/signals/__tests__/effect.test.d.ts +1 -0
  150. package/dist/reactivity/signals/__tests__/reactive-array/nivel-1-estructura-basica.test.d.ts +1 -0
  151. package/dist/reactivity/signals/__tests__/reactive-array/nivel-2-metodos-mutadores.test.d.ts +1 -0
  152. package/dist/reactivity/signals/__tests__/reactive-array/nivel-3-tracking-por-indice.test.d.ts +1 -0
  153. package/dist/reactivity/signals/__tests__/reactive-array/nivel-4-tracking-length.test.d.ts +1 -0
  154. package/dist/reactivity/signals/__tests__/reactive-array/nivel-5-tracking-mutation.test.d.ts +1 -0
  155. package/dist/reactivity/signals/__tests__/reactive-array/nivel-6-metodos-no-mutadores.test.d.ts +1 -0
  156. package/dist/reactivity/signals/__tests__/reactive-array/nivel-7-composicion-bidireccional.test.d.ts +1 -0
  157. package/dist/reactivity/signals/__tests__/reactive-array/nivel-8-proxies.test.d.ts +1 -0
  158. package/dist/reactivity/signals/__tests__/reactive-array/nivel-9-derived-cache-optimization.test.d.ts +1 -0
  159. package/dist/reactivity/signals/__tests__/resource.test.d.ts +1 -0
  160. package/dist/reactivity/signals/__tests__/signal.test.d.ts +1 -0
  161. package/dist/reactivity/signals/array-strategies.d.ts +120 -0
  162. package/dist/reactivity/signals/array-strategies.js +261 -0
  163. package/dist/reactivity/signals/composite.d.ts +89 -0
  164. package/dist/reactivity/signals/composite.js +145 -0
  165. package/dist/reactivity/signals/computed.d.ts +61 -0
  166. package/dist/reactivity/signals/computed.js +107 -0
  167. package/dist/reactivity/signals/computed.test.d.ts +1 -0
  168. package/dist/reactivity/signals/derived.d.ts +10 -0
  169. package/dist/reactivity/signals/derived.js +24 -0
  170. package/dist/reactivity/signals/effect.d.ts +27 -0
  171. package/dist/reactivity/signals/effect.js +46 -0
  172. package/dist/reactivity/signals/event.d.ts +9 -0
  173. package/dist/reactivity/signals/event.js +15 -0
  174. package/dist/reactivity/signals/reactive-array.d.ts +133 -0
  175. package/dist/reactivity/signals/reactive-array.js +490 -0
  176. package/dist/reactivity/signals/reactive-proxy.d.ts +54 -0
  177. package/dist/reactivity/signals/reactive-proxy.js +299 -0
  178. package/dist/reactivity/signals/reactive-tracking.test.d.ts +1 -0
  179. package/dist/reactivity/signals/resource.d.ts +9 -0
  180. package/dist/reactivity/signals/resource.js +58 -0
  181. package/dist/reactivity/signals/signal.d.ts +39 -0
  182. package/dist/reactivity/signals/signal.js +56 -0
  183. package/dist/reactivity/signals/subscription-management.test.d.ts +1 -0
  184. package/dist/reactivity/types.d.ts +12 -0
  185. package/dist/router/__tests__/link-behavior-active-class.test.d.ts +1 -0
  186. package/dist/router/__tests__/loop-detector.test.d.ts +1 -0
  187. package/dist/router/__tests__/params-container-resolution.test.d.ts +1 -0
  188. package/dist/router/__tests__/router-generated-routes.test.d.ts +1 -0
  189. package/dist/router/__tests__/router-params-granular.test.d.ts +1 -0
  190. package/dist/router/__tests__/router-params-simple.test.d.ts +1 -0
  191. package/dist/router/__tests__/router-query-params.test.d.ts +1 -0
  192. package/dist/router/__tests__/router-route-candidates.test.d.ts +1 -0
  193. package/dist/router/__tests__/routeview-app-articles.test.d.ts +1 -0
  194. package/dist/router/__tests__/routeview-debug.test.d.ts +1 -0
  195. package/dist/router/__tests__/routeview-integration.test.d.ts +1 -0
  196. package/dist/router/__tests__/routeview-this.test.d.ts +1 -0
  197. package/dist/router/decorators/base-policy.d.ts +141 -0
  198. package/dist/router/decorators/base-policy.js +63 -0
  199. package/dist/router/decorators/index.d.ts +6 -0
  200. package/dist/router/decorators/params.d.ts +31 -0
  201. package/dist/router/decorators/params.js +97 -0
  202. package/dist/router/decorators/route-metadata.d.ts +11 -0
  203. package/dist/router/decorators/route-metadata.js +23 -0
  204. package/dist/router/decorators/route.d.ts +39 -0
  205. package/dist/router/decorators/route.js +7 -0
  206. package/dist/router/link.behavior.d.ts +87 -0
  207. package/dist/router/link.behavior.js +227 -0
  208. package/dist/router/policy-evaluator.d.ts +81 -0
  209. package/dist/router/policy-evaluator.js +209 -0
  210. package/dist/router/route-view.d.ts +56 -0
  211. package/dist/router/route-view.js +156 -0
  212. package/dist/router/router.d.ts +67 -0
  213. package/dist/router/router.js +308 -0
  214. package/dist/router/static-analysis/index.d.ts +37 -0
  215. package/dist/router/static-analysis/parser.d.ts +14 -0
  216. package/dist/router/static-analysis/parser.js +147 -0
  217. package/dist/router/static-analysis/scanner.d.ts +27 -0
  218. package/dist/router/static-analysis/scanner.js +91 -0
  219. package/dist/router/trie.d.ts +14 -0
  220. package/dist/router/trie.js +126 -0
  221. package/dist/router/trie.types.d.ts +36 -0
  222. package/dist/styles/base-style-sheet.d.ts +96 -0
  223. package/dist/styles/base-style-sheet.js +149 -0
  224. package/dist/styles/decorators/factories.d.ts +76 -0
  225. package/dist/styles/decorators/factories.js +11 -0
  226. package/dist/styles/decorators/keyframes.d.ts +238 -0
  227. package/dist/styles/decorators/keyframes.js +79 -0
  228. package/dist/styles/decorators/rule.d.ts +177 -0
  229. package/dist/styles/decorators/rule.js +72 -0
  230. package/dist/styles/decorators/scope.d.ts +66 -0
  231. package/dist/styles/decorators/scope.js +17 -0
  232. package/dist/styles/decorators/style.d.ts +1 -0
  233. package/dist/styles/decorators/style.js +20 -0
  234. package/dist/styles/decorators/useStyles.d.ts +5 -0
  235. package/dist/styles/decorators/useStyles.js +29 -0
  236. package/dist/styles/global-styles-registry.d.ts +72 -0
  237. package/dist/styles/global-styles-registry.js +155 -0
  238. package/dist/types.d.ts +1 -0
  239. package/dist/vite-plugins/__tests__/jsx-control-flow-transform.test.d.ts +1 -0
  240. package/dist/vite-plugins/index.d.ts +4 -0
  241. package/dist/vite-plugins/index.js +10 -0
  242. package/dist/vite-plugins/jsx-contextual.d.ts +7 -0
  243. package/dist/vite-plugins/jsx-contextual.js +53 -0
  244. package/dist/vite-plugins/jsx-control-flow-transform.d.ts +60 -0
  245. package/dist/vite-plugins/jsx-control-flow-transform.js +180 -0
  246. package/dist/vite-plugins/jsx-signals.d.ts +2 -0
  247. package/dist/vite-plugins/jsx-signals.js +124 -0
  248. package/dist/vite-plugins/router/route-generator-plugin.d.ts +63 -0
  249. package/dist/vite-plugins/router/route-generator-plugin.js +310 -0
  250. package/package.json +85 -0
@@ -0,0 +1,108 @@
1
+ import { Constructor, Predicate, QueryResult, ModelMetadata } from './types';
2
+ /**
3
+ * Registra metadata para un modelo
4
+ * Llamado por el decorador @Model
5
+ */
6
+ export declare function registerModelMetadata(metadata: ModelMetadata): void;
7
+ /**
8
+ * Obtiene metadata de un modelo
9
+ */
10
+ export declare function getModelMetadata(modelClass: Constructor): ModelMetadata | undefined;
11
+ /**
12
+ * EntityStore - Almacén central normalizado de todas las entidades
13
+ */
14
+ export declare class EntityStore {
15
+ /**
16
+ * Estructura de almacenamiento principal
17
+ * Map<TipoDeModelo, Map<ID, Instancia>>
18
+ *
19
+ * Ejemplo:
20
+ * entities.get(User) -> Map { "123" -> userInstance }
21
+ */
22
+ private entities;
23
+ /**
24
+ * Sistema de notificación para queries reactivas
25
+ * Map<TipoDeModelo, Signal<number>>
26
+ *
27
+ * Cada tipo de modelo tiene una signal que se incrementa cuando hay cambios.
28
+ * Las queries reactivas se suscriben a esta signal.
29
+ */
30
+ private changeNotifiers;
31
+ /**
32
+ * Obtiene entidades que coinciden con un predicado
33
+ *
34
+ * @param modelClass - La clase del modelo (ej: User, Article)
35
+ * @param predicate - Función que retorna true para items que quieres
36
+ * @returns Array de instancias que pasaron el predicado
37
+ *
38
+ * REACTIVIDAD:
39
+ * Si se llama dentro de un contexto reactivo (ej: dentro de @Store),
40
+ * el resultado se actualizará automáticamente cuando el Store cambie.
41
+ *
42
+ * @example
43
+ * // Snapshot estático (no reactivo)
44
+ * const users = store.get(User, u => u.isActive);
45
+ *
46
+ * @example
47
+ * // Reactivo (cuando se usa con @Store)
48
+ * @Store
49
+ * activeUsers = store.get(User, u => u.isActive);
50
+ */
51
+ get<T>(modelClass: Constructor<T>, predicate: Predicate<T>): QueryResult<T>;
52
+ /**
53
+ * Almacena una o más entidades en el Store
54
+ * Si la entidad ya existe (mismo ID), se actualiza
55
+ *
56
+ * @param modelClass - La clase del modelo
57
+ * @param data - Una entidad o array de entidades
58
+ *
59
+ * @example
60
+ * // Almacenar un usuario
61
+ * store.set(User, userInstance);
62
+ *
63
+ * @example
64
+ * // Almacenar múltiples usuarios
65
+ * store.set(User, [user1, user2, user3]);
66
+ */
67
+ set<T>(modelClass: Constructor<T>, data: T | T[]): void;
68
+ /**
69
+ * Elimina una entidad del Store
70
+ *
71
+ * @param modelClass - La clase del modelo
72
+ * @param id - El ID de la entidad a eliminar
73
+ * @returns true si se eliminó, false si no existía
74
+ */
75
+ delete<T>(modelClass: Constructor<T>, id: string): boolean;
76
+ /**
77
+ * Limpia todas las entidades de un tipo de modelo
78
+ *
79
+ * @param modelClass - La clase del modelo a limpiar
80
+ */
81
+ clear<T>(modelClass: Constructor<T>): void;
82
+ /**
83
+ * Limpia TODO el Store
84
+ */
85
+ clearAll(): void;
86
+ /**
87
+ * Obtiene el conteo de entidades de un tipo
88
+ */
89
+ count<T>(modelClass: Constructor<T>): number;
90
+ /**
91
+ * Obtiene o crea la signal de notificación para un tipo de modelo.
92
+ * Esta signal se incrementa cada vez que hay cambios en ese tipo.
93
+ *
94
+ * @private
95
+ */
96
+ private getChangeNotifier;
97
+ /**
98
+ * Notifica que hubo un cambio en un tipo de modelo.
99
+ * Esto triggerea la re-evaluación de todas las queries reactivas de ese tipo.
100
+ *
101
+ * @private
102
+ */
103
+ private notifyChange;
104
+ /**
105
+ * Debug: Muestra el estado actual del EntityStore
106
+ */
107
+ debug(): void;
108
+ }
@@ -0,0 +1,207 @@
1
+ import { Signal } from "../../reactivity/signals/signal.js";
2
+ import { Service } from "../../DI/decorators/service.js";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
7
+ var __typeError = (msg) => {
8
+ throw TypeError(msg);
9
+ };
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
12
+ var __decoratorStart = (base) => [, , , __create(null)];
13
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
14
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
15
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
16
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
17
+ var __runInitializers = (array, flags, self, value) => {
18
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
19
+ return value;
20
+ };
21
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
22
+ var it, done, ctx, k = flags & 7, p = false;
23
+ var j = 0;
24
+ var extraInitializers = array[j] || (array[j] = []);
25
+ var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc(target, name));
26
+ __name(target, name);
27
+ for (var i = decorators.length - 1; i >= 0; i--) {
28
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
29
+ it = (0, decorators[i])(target, ctx), done._ = 1;
30
+ __expectFn(it) && (target = it);
31
+ }
32
+ return __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
33
+ };
34
+ var _EntityStore_decorators, _init;
35
+ const modelMetadataRegistry = /* @__PURE__ */ new Map();
36
+ function registerModelMetadata(metadata) {
37
+ modelMetadataRegistry.set(metadata.modelClass, metadata);
38
+ }
39
+ function getModelMetadata(modelClass) {
40
+ return modelMetadataRegistry.get(modelClass);
41
+ }
42
+ _EntityStore_decorators = [Service];
43
+ class EntityStore {
44
+ constructor() {
45
+ this.entities = /* @__PURE__ */ new Map();
46
+ this.changeNotifiers = /* @__PURE__ */ new Map();
47
+ }
48
+ /**
49
+ * Obtiene entidades que coinciden con un predicado
50
+ *
51
+ * @param modelClass - La clase del modelo (ej: User, Article)
52
+ * @param predicate - Función que retorna true para items que quieres
53
+ * @returns Array de instancias que pasaron el predicado
54
+ *
55
+ * REACTIVIDAD:
56
+ * Si se llama dentro de un contexto reactivo (ej: dentro de @Store),
57
+ * el resultado se actualizará automáticamente cuando el Store cambie.
58
+ *
59
+ * @example
60
+ * // Snapshot estático (no reactivo)
61
+ * const users = store.get(User, u => u.isActive);
62
+ *
63
+ * @example
64
+ * // Reactivo (cuando se usa con @Store)
65
+ * @Store
66
+ * activeUsers = store.get(User, u => u.isActive);
67
+ */
68
+ get(modelClass, predicate) {
69
+ const changeNotifier = this.getChangeNotifier(modelClass);
70
+ changeNotifier.get();
71
+ const entityMap = this.entities.get(modelClass);
72
+ if (!entityMap) {
73
+ return [];
74
+ }
75
+ const allEntities = Array.from(entityMap.values());
76
+ return allEntities.filter(predicate);
77
+ }
78
+ /**
79
+ * Almacena una o más entidades en el Store
80
+ * Si la entidad ya existe (mismo ID), se actualiza
81
+ *
82
+ * @param modelClass - La clase del modelo
83
+ * @param data - Una entidad o array de entidades
84
+ *
85
+ * @example
86
+ * // Almacenar un usuario
87
+ * store.set(User, userInstance);
88
+ *
89
+ * @example
90
+ * // Almacenar múltiples usuarios
91
+ * store.set(User, [user1, user2, user3]);
92
+ */
93
+ set(modelClass, data) {
94
+ const metadata = getModelMetadata(modelClass);
95
+ if (!metadata) {
96
+ throw new Error(
97
+ `No metadata found for ${modelClass.name}. Did you forget @Model decorator?`
98
+ );
99
+ }
100
+ const entities = Array.isArray(data) ? data : [data];
101
+ if (!this.entities.has(modelClass)) {
102
+ this.entities.set(modelClass, /* @__PURE__ */ new Map());
103
+ }
104
+ const entityMap = this.entities.get(modelClass);
105
+ for (const entity of entities) {
106
+ const id = entity[metadata.idField];
107
+ if (id === void 0 || id === null) {
108
+ console.warn(
109
+ `Entity of type ${modelClass.name} has no ID field '${metadata.idField}'. Skipping.`,
110
+ entity
111
+ );
112
+ continue;
113
+ }
114
+ entityMap.set(String(id), entity);
115
+ }
116
+ this.notifyChange(modelClass);
117
+ }
118
+ /**
119
+ * Elimina una entidad del Store
120
+ *
121
+ * @param modelClass - La clase del modelo
122
+ * @param id - El ID de la entidad a eliminar
123
+ * @returns true si se eliminó, false si no existía
124
+ */
125
+ delete(modelClass, id) {
126
+ const entityMap = this.entities.get(modelClass);
127
+ if (!entityMap) {
128
+ return false;
129
+ }
130
+ const result = entityMap.delete(id);
131
+ if (result) {
132
+ this.notifyChange(modelClass);
133
+ }
134
+ return result;
135
+ }
136
+ /**
137
+ * Limpia todas las entidades de un tipo de modelo
138
+ *
139
+ * @param modelClass - La clase del modelo a limpiar
140
+ */
141
+ clear(modelClass) {
142
+ const entityMap = this.entities.get(modelClass);
143
+ if (entityMap && entityMap.size > 0) {
144
+ this.entities.delete(modelClass);
145
+ this.notifyChange(modelClass);
146
+ }
147
+ }
148
+ /**
149
+ * Limpia TODO el Store
150
+ */
151
+ clearAll() {
152
+ for (const modelClass of this.entities.keys()) {
153
+ this.notifyChange(modelClass);
154
+ }
155
+ this.entities.clear();
156
+ }
157
+ /**
158
+ * Obtiene el conteo de entidades de un tipo
159
+ */
160
+ count(modelClass) {
161
+ const entityMap = this.entities.get(modelClass);
162
+ return entityMap ? entityMap.size : 0;
163
+ }
164
+ /**
165
+ * Obtiene o crea la signal de notificación para un tipo de modelo.
166
+ * Esta signal se incrementa cada vez que hay cambios en ese tipo.
167
+ *
168
+ * @private
169
+ */
170
+ getChangeNotifier(modelClass) {
171
+ if (!this.changeNotifiers.has(modelClass)) {
172
+ this.changeNotifiers.set(modelClass, new Signal(0));
173
+ }
174
+ return this.changeNotifiers.get(modelClass);
175
+ }
176
+ /**
177
+ * Notifica que hubo un cambio en un tipo de modelo.
178
+ * Esto triggerea la re-evaluación de todas las queries reactivas de ese tipo.
179
+ *
180
+ * @private
181
+ */
182
+ notifyChange(modelClass) {
183
+ const notifier = this.getChangeNotifier(modelClass);
184
+ notifier.update((n) => n + 1);
185
+ }
186
+ /**
187
+ * Debug: Muestra el estado actual del EntityStore
188
+ */
189
+ debug() {
190
+ console.log("=== ENTITY STORE DEBUG ===");
191
+ for (const [modelClass, entityMap] of this.entities) {
192
+ console.log(`${modelClass.name}: ${entityMap.size} entities`);
193
+ for (const [id, entity] of entityMap) {
194
+ console.log(` - ${id}:`, entity);
195
+ }
196
+ }
197
+ console.log("=========================");
198
+ }
199
+ }
200
+ _init = __decoratorStart();
201
+ EntityStore = __decorateElement(_init, 0, "EntityStore", _EntityStore_decorators, EntityStore);
202
+ __runInitializers(_init, 1, EntityStore);
203
+ export {
204
+ EntityStore,
205
+ getModelMetadata,
206
+ registerModelMetadata
207
+ };
@@ -0,0 +1,53 @@
1
+ /**
2
+ * TYPES.TS - Tipos fundamentales del Data Management System
3
+ *
4
+ * Este archivo define los tipos core que todo el sistema usará.
5
+ */
6
+ /**
7
+ * Constructor type - cualquier clase que pueda ser instanciada
8
+ */
9
+ export type Constructor<T = any> = new (...args: any[]) => T;
10
+ /**
11
+ * Metadata que cada @Model class tendrá
12
+ * Esta metadata se registra cuando usas el decorador @Model
13
+ */
14
+ export interface ModelMetadata {
15
+ /**
16
+ * La clase del modelo (ej: User, Article)
17
+ */
18
+ modelClass: Constructor;
19
+ /**
20
+ * El nombre del campo que es el ID (ej: 'id', 'userId', '_id')
21
+ * Se determina por el decorador @Id
22
+ */
23
+ idField: string;
24
+ /**
25
+ * Nombres de los campos que son propiedades reactivas
26
+ * Se determinan por el decorador @Prop
27
+ */
28
+ propFields: string[];
29
+ }
30
+ /**
31
+ * Una entidad almacenada en el Store
32
+ * Cada instancia de un @Model es una StoreEntity
33
+ */
34
+ export interface StoreEntity {
35
+ /**
36
+ * El ID único de esta entidad
37
+ * Extraído del campo marcado con @Id
38
+ */
39
+ [id: string]: any;
40
+ }
41
+ /**
42
+ * Función predicado para queries
43
+ * Ejemplos:
44
+ * - u => u.id === '123'
45
+ * - u => u.name.startsWith('A')
46
+ * - u => u.age > 18
47
+ */
48
+ export type Predicate<T> = (item: T) => boolean;
49
+ /**
50
+ * El resultado de una query al Store
51
+ * Por ahora es solo un array, pero eventualmente será reactivo
52
+ */
53
+ export type QueryResult<T> = T[];
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Configuración opcional para el decorador @Emit
3
+ */
4
+ export interface EmitOptions {
5
+ /** Nombre personalizado del evento. Si no se especifica, se infiere del nombre del método */
6
+ eventName?: string;
7
+ /** Si el evento debe burbujear (bubble) por el DOM tree. Por defecto: true */
8
+ bubbles?: boolean;
9
+ /** Si el evento puede ser cancelado. Por defecto: true */
10
+ cancelable?: boolean;
11
+ /** Si se debe retornar el CustomEvent creado para permitir verificar preventDefault(). Por defecto: false */
12
+ returnEvent?: boolean;
13
+ }
14
+ /**
15
+ * @Emit es un decorador para métodos que automáticamente convierte su valor
16
+ * de retorno en un CustomEvent que se despacha desde el componente.
17
+ *
18
+ * Ejemplo de uso:
19
+ * @Emit
20
+ * onUserSelect() {
21
+ * return { name: this.name, id: this.id };
22
+ * }
23
+ *
24
+ * Esto automáticamente:
25
+ * 1. Crea un CustomEvent llamado 'userselect'
26
+ * 2. Coloca el objeto retornado en event.detail
27
+ * 3. Despacha el evento desde el elemento del componente
28
+ */
29
+ export declare function Emit(options?: EmitOptions): <This extends HTMLElement, Return>(target: (this: This, ...args: any[]) => Return, context: ClassMethodDecoratorContext<This, (this: This, ...args: any[]) => Return>) => void;
@@ -0,0 +1,51 @@
1
+ function Emit(options = {}) {
2
+ return function(target, context) {
3
+ if (context.kind !== "method") {
4
+ throw new Error("@Emit solo se puede aplicar a métodos de clase.");
5
+ }
6
+ const methodName = String(context.name);
7
+ const defaultEventName = inferEventName(methodName);
8
+ const config = {
9
+ eventName: options.eventName ?? defaultEventName,
10
+ bubbles: options.bubbles ?? true,
11
+ cancelable: options.cancelable ?? true,
12
+ returnEvent: options.returnEvent ?? false
13
+ };
14
+ context.addInitializer(function() {
15
+ const originalMethod = target;
16
+ const enhancedMethod = function(...args) {
17
+ const eventData = originalMethod.call(this, ...args);
18
+ const customEvent = new CustomEvent(config.eventName, {
19
+ detail: eventData,
20
+ bubbles: config.bubbles,
21
+ cancelable: config.cancelable
22
+ });
23
+ this.dispatchEvent(customEvent);
24
+ if (config.returnEvent) {
25
+ return customEvent;
26
+ }
27
+ return eventData;
28
+ };
29
+ Object.defineProperty(this, context.name, {
30
+ value: enhancedMethod,
31
+ writable: true,
32
+ enumerable: false,
33
+ // No mostrar en enumeraciones
34
+ configurable: true
35
+ // Permitir futuras modificaciones si es necesario
36
+ });
37
+ });
38
+ };
39
+ }
40
+ function inferEventName(methodName) {
41
+ if (methodName.startsWith("on") && methodName.length > 2) {
42
+ const thirdChar = methodName.charAt(2);
43
+ if (thirdChar === thirdChar.toUpperCase()) {
44
+ return methodName.substring(2).toLowerCase();
45
+ }
46
+ }
47
+ return methodName.toLowerCase();
48
+ }
49
+ export {
50
+ Emit
51
+ };
@@ -0,0 +1 @@
1
+ export declare function On(eventType: string): (originalMethod: any, context: ClassMethodDecoratorContext) => any;
@@ -0,0 +1,21 @@
1
+ import { EventListenerMetadata } from './event-types';
2
+ import { Constructor } from '../DI/types.ts';
3
+ /**
4
+ * EventEmitter service that uses native EventTarget for event handling
5
+ * This service manages event emission only. Registration is handled by the DI container.
6
+ */
7
+ export declare class EventEmitter {
8
+ private eventTarget;
9
+ private registeredHandlers;
10
+ constructor();
11
+ /**
12
+ * Register an event listener for a class and set up the handler immediately
13
+ */
14
+ registerEventListener(target: Constructor, metadata: EventListenerMetadata): void;
15
+ /**
16
+ * Emit an event to all registered listeners
17
+ * @param eventType - The type of event to emit
18
+ * @param eventData - The event data (can be any type)
19
+ */
20
+ emit<T = any>(eventType: string, eventData: T): void;
21
+ }
@@ -0,0 +1,85 @@
1
+ import { Service } from "../DI/decorators/service.js";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
6
+ var __typeError = (msg) => {
7
+ throw TypeError(msg);
8
+ };
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
11
+ var __decoratorStart = (base) => [, , , __create(null)];
12
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
13
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
14
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
15
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
16
+ var __runInitializers = (array, flags, self, value) => {
17
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
18
+ return value;
19
+ };
20
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
21
+ var it, done, ctx, k = flags & 7, p = false;
22
+ var j = 0;
23
+ var extraInitializers = array[j] || (array[j] = []);
24
+ var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc(target, name));
25
+ __name(target, name);
26
+ for (var i = decorators.length - 1; i >= 0; i--) {
27
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
28
+ it = (0, decorators[i])(target, ctx), done._ = 1;
29
+ __expectFn(it) && (target = it);
30
+ }
31
+ return __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
32
+ };
33
+ var _EventEmitter_decorators, _init;
34
+ class CustomEvent extends Event {
35
+ constructor(eventType, eventData) {
36
+ super(eventType);
37
+ this.eventData = eventData;
38
+ }
39
+ }
40
+ _EventEmitter_decorators = [Service];
41
+ class EventEmitter {
42
+ constructor() {
43
+ this.eventTarget = void 0;
44
+ this.registeredHandlers = /* @__PURE__ */ new Set();
45
+ this.eventTarget = new EventTarget();
46
+ }
47
+ /**
48
+ * Register an event listener for a class and set up the handler immediately
49
+ */
50
+ registerEventListener(target, metadata) {
51
+ const handlerId = `${target.name}-${metadata.eventType}-${String(metadata.methodName)}`;
52
+ if (this.registeredHandlers.has(handlerId)) {
53
+ return;
54
+ }
55
+ this.eventTarget.addEventListener(metadata.eventType, async (event) => {
56
+ if (event instanceof CustomEvent) {
57
+ try {
58
+ const serviceInstance = this.__container.get(target);
59
+ const handler = serviceInstance[metadata.methodName];
60
+ if (typeof handler === "function") {
61
+ await handler.call(serviceInstance, event.eventData);
62
+ }
63
+ } catch (error) {
64
+ console.error(`Error executing event handler ${handlerId}:`, error);
65
+ }
66
+ }
67
+ });
68
+ this.registeredHandlers.add(handlerId);
69
+ }
70
+ /**
71
+ * Emit an event to all registered listeners
72
+ * @param eventType - The type of event to emit
73
+ * @param eventData - The event data (can be any type)
74
+ */
75
+ emit(eventType, eventData) {
76
+ const customEvent = new CustomEvent(eventType, eventData);
77
+ this.eventTarget.dispatchEvent(customEvent);
78
+ }
79
+ }
80
+ _init = __decoratorStart();
81
+ EventEmitter = __decorateElement(_init, 0, "EventEmitter", _EventEmitter_decorators, EventEmitter);
82
+ __runInitializers(_init, 1, EventEmitter);
83
+ export {
84
+ EventEmitter
85
+ };
@@ -0,0 +1,12 @@
1
+ import { Constructor } from '../DI/types.ts';
2
+ /**
3
+ * Event listener metadata stored by decorators
4
+ */
5
+ export interface EventListenerMetadata {
6
+ /** Event type to listen for */
7
+ eventType: string;
8
+ /** Method name that handles the event */
9
+ methodName: string | symbol;
10
+ /** Target class constructor */
11
+ target: Constructor;
12
+ }
@@ -0,0 +1,55 @@
1
+ declare global {
2
+ namespace JSX {
3
+ type Element = any;
4
+ interface IntrinsicElements {
5
+ [elemName: string]: any;
6
+ }
7
+ }
8
+ }
9
+ export { BaseComponent } from './components/base-component';
10
+ export { Component } from './components/decorators/component';
11
+ export { Prop } from './components/decorators/prop';
12
+ export { Param, Params, Query, QueryParams, Allow, Block, Redirect, Skip, getPolicyRules } from './router/decorators';
13
+ export type { ParamMetadata, QueryParamMetadata, RouteConfig, PolicyDecisionType, PolicyRule, PolicyDecision } from './router/decorators';
14
+ export { State } from './reactivity/decorators/state';
15
+ export { Effect } from './reactivity/decorators/effect';
16
+ export { Computed } from './reactivity/decorators/computed';
17
+ export { Resource } from './reactivity/decorators/resource';
18
+ export { Store } from './reactivity/decorators/store';
19
+ export { RouteMetadata } from './router/decorators/route-metadata';
20
+ export type { IResource } from './reactivity/signals/resource';
21
+ export { Ctx } from './reactivity/decorators/ctx';
22
+ export { collection, isObservableArray, isCollection, isReactiveArrayLike, unwrapReactiveArray } from './reactivity/signals/reactive-array';
23
+ export type { ObservableArray, Collection } from './reactivity/signals/reactive-array';
24
+ export { Emit } from './events-handler/decorators/emit';
25
+ export { BaseStyleSheet } from './styles/base-style-sheet';
26
+ export { Style } from './styles/decorators/style';
27
+ export { Service } from './DI/decorators/service';
28
+ export { Inject } from './DI/decorators/inject';
29
+ export type { LifeCycle } from './DI/lifecycle';
30
+ export { DIContainer } from './DI/di-container';
31
+ export { ScopedContainer } from './DI/scoped-container';
32
+ export { registerServiceMetadata, getServiceMetadata, getAllServiceMetadata, clearServiceMetadata } from './DI/service-metadata';
33
+ export type { ServiceMetadata } from './DI/service-metadata';
34
+ export { core } from './core';
35
+ export { Rule } from './styles/decorators/rule';
36
+ export type { CSSProperties } from './styles/decorators/rule';
37
+ export { UseStyles } from './styles/decorators/useStyles';
38
+ export { Behavior, Host, ComponentHost } from './behaviors';
39
+ export { MediaQuery } from './styles/decorators/factories';
40
+ export { Shared, ForDocument } from './styles/decorators/scope';
41
+ export type { StyleScope } from './styles/decorators/scope';
42
+ export { Keyframes } from './styles/decorators/keyframes';
43
+ export type { KeyframesDefinition, KeyframeSelector } from './styles/decorators/keyframes';
44
+ export { jsxContextualPlugin } from './vite-plugins/jsx-contextual';
45
+ export { jsxSignalsPlugin } from './vite-plugins/jsx-signals';
46
+ export { Router } from './router/router';
47
+ export { Route } from './router/decorators';
48
+ export { Trie } from './router/trie';
49
+ export { RouteView } from './router/route-view';
50
+ export { Link } from './router/link.behavior';
51
+ export { Id, Model, Prop as Field, EntityStore, Consume, MemoryCache, LocalStorageCache, SessionStorageCache, Cache, TTL, CacheTags, CacheUpdate, CacheInvalidate } from './data-management';
52
+ export type { CacheProvider, CacheEntry, TagExtractor } from './data-management';
53
+ export { For, Show } from './custom-components';
54
+ export type { ForProps, ShowProps } from './custom-components';
55
+ export { ReactiveArray } from './reactivity/signals/reactive-array';