@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.
- package/LICENSE +21 -0
- package/README.md +40 -0
- package/dist/DI/__tests__/scoped-container-dependencies.test.d.ts +1 -0
- package/dist/DI/bootstrap.d.ts +18 -0
- package/dist/DI/decorators/inject.d.ts +37 -0
- package/dist/DI/decorators/inject.js +45 -0
- package/dist/DI/decorators/service.d.ts +24 -0
- package/dist/DI/decorators/service.js +13 -0
- package/dist/DI/di-container.d.ts +53 -0
- package/dist/DI/di-container.js +158 -0
- package/dist/DI/lifecycle.d.ts +37 -0
- package/dist/DI/lifecycle.js +6 -0
- package/dist/DI/scoped-container.d.ts +68 -0
- package/dist/DI/scoped-container.js +193 -0
- package/dist/DI/service-metadata.d.ts +32 -0
- package/dist/DI/service-metadata.js +31 -0
- package/dist/DI/types.d.ts +4 -0
- package/dist/behaviors/__tests__/behavior-system.test.d.ts +1 -0
- package/dist/behaviors/behavior-manager.d.ts +60 -0
- package/dist/behaviors/behavior-manager.js +131 -0
- package/dist/behaviors/behavior-registry.d.ts +68 -0
- package/dist/behaviors/behavior-registry.js +105 -0
- package/dist/behaviors/constants.d.ts +16 -0
- package/dist/behaviors/constants.js +8 -0
- package/dist/behaviors/decorators.d.ts +87 -0
- package/dist/behaviors/decorators.js +46 -0
- package/dist/behaviors/index.d.ts +4 -0
- package/dist/components/__tests__/host.test.d.ts +1 -0
- package/dist/components/app-tree.d.ts +49 -0
- package/dist/components/app-tree.js +122 -0
- package/dist/components/base-component.d.ts +85 -0
- package/dist/components/base-component.js +438 -0
- package/dist/components/decorators/component.d.ts +27 -0
- package/dist/components/decorators/component.js +47 -0
- package/dist/components/decorators/prop.d.ts +14 -0
- package/dist/components/decorators/prop.js +37 -0
- package/dist/components/types.d.ts +26 -0
- package/dist/core.d.ts +23 -0
- package/dist/core.js +8 -0
- package/dist/custom-components/__tests__/for.test.d.ts +1 -0
- package/dist/custom-components/__tests__/show.test.d.ts +1 -0
- package/dist/custom-components/for.d.ts +58 -0
- package/dist/custom-components/for.js +313 -0
- package/dist/custom-components/index.d.ts +2 -0
- package/dist/custom-components/show.d.ts +78 -0
- package/dist/custom-components/show.js +88 -0
- package/dist/data-management/cache/cache-invalidate.decorator.d.ts +35 -0
- package/dist/data-management/cache/cache-invalidate.decorator.js +21 -0
- package/dist/data-management/cache/cache-metadata.d.ts +15 -0
- package/dist/data-management/cache/cache-provider.interface.d.ts +67 -0
- package/dist/data-management/cache/cache-tags.decorator.d.ts +52 -0
- package/dist/data-management/cache/cache-tags.decorator.js +13 -0
- package/dist/data-management/cache/cache-update.decorator.d.ts +28 -0
- package/dist/data-management/cache/cache-update.decorator.js +21 -0
- package/dist/data-management/cache/cache.decorator.d.ts +28 -0
- package/dist/data-management/cache/cache.decorator.js +13 -0
- package/dist/data-management/cache/index.d.ts +11 -0
- package/dist/data-management/cache/local-storage-cache.d.ts +40 -0
- package/dist/data-management/cache/local-storage-cache.js +268 -0
- package/dist/data-management/cache/memory-cache.d.ts +37 -0
- package/dist/data-management/cache/memory-cache.js +149 -0
- package/dist/data-management/cache/session-storage-cache.d.ts +35 -0
- package/dist/data-management/cache/session-storage-cache.js +242 -0
- package/dist/data-management/cache/ttl.decorator.d.ts +31 -0
- package/dist/data-management/cache/ttl.decorator.js +34 -0
- package/dist/data-management/decorators/consume.d.ts +29 -0
- package/dist/data-management/decorators/consume.js +28 -0
- package/dist/data-management/decorators/id.d.ts +28 -0
- package/dist/data-management/decorators/id.js +19 -0
- package/dist/data-management/decorators/model.d.ts +48 -0
- package/dist/data-management/decorators/model.js +24 -0
- package/dist/data-management/decorators/prop.d.ts +43 -0
- package/dist/data-management/decorators/prop.js +32 -0
- package/dist/data-management/index.d.ts +13 -0
- package/dist/data-management/store/json-to-model.d.ts +45 -0
- package/dist/data-management/store/json-to-model.js +36 -0
- package/dist/data-management/store/store.d.ts +108 -0
- package/dist/data-management/store/store.js +207 -0
- package/dist/data-management/store/types.d.ts +53 -0
- package/dist/events-handler/decorators/emit.d.ts +29 -0
- package/dist/events-handler/decorators/emit.js +51 -0
- package/dist/events-handler/event-decorators.d.ts +1 -0
- package/dist/events-handler/event-emitter.service.d.ts +21 -0
- package/dist/events-handler/event-emitter.service.js +85 -0
- package/dist/events-handler/event-types.d.ts +12 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.js +121 -0
- package/dist/jsx/dynamic/__tests__/granular-array-renderer.test.d.ts +1 -0
- package/dist/jsx/dynamic/__tests__/jsx-array-rendering.test.d.ts +1 -0
- package/dist/jsx/dynamic/array-renderer.d.ts +2 -0
- package/dist/jsx/dynamic/array-renderer.js +133 -0
- package/dist/jsx/dynamic/child-renderer.d.ts +1 -0
- package/dist/jsx/dynamic/child-renderer.js +180 -0
- package/dist/jsx/dynamic/dom-utils.d.ts +5 -0
- package/dist/jsx/dynamic/dom-utils.js +22 -0
- package/dist/jsx/dynamic/granular-array-renderer.d.ts +16 -0
- package/dist/jsx/dynamic/granular-array-renderer.js +153 -0
- package/dist/jsx/dynamic/node-renderer.d.ts +2 -0
- package/dist/jsx/dynamic/props-handler.d.ts +3 -0
- package/dist/jsx/dynamic/props-handler.js +281 -0
- package/dist/jsx/dynamic/text-renderer.d.ts +2 -0
- package/dist/jsx/jsx-dev-runtime.d.ts +2 -0
- package/dist/jsx/jsx-runtime.d.ts +3 -0
- package/dist/jsx/types.d.ts +35 -0
- package/dist/jsx/types.js +4 -0
- package/dist/jsx-dev-runtime.d.ts +2 -0
- package/dist/jsx-dev-runtime.js +8 -0
- package/dist/jsx-runtime.d.ts +2 -0
- package/dist/jsx-runtime.js +11 -0
- package/dist/reactivity/__tests__/context-stack.test.d.ts +1 -0
- package/dist/reactivity/__tests__/nested-effects-untrack.test.d.ts +22 -0
- package/dist/reactivity/context-scope.d.ts +57 -0
- package/dist/reactivity/context-scope.js +35 -0
- package/dist/reactivity/decorators/__tests__/ctx-integration.test.d.ts +5 -0
- package/dist/reactivity/decorators/__tests__/ctx-loop.test.d.ts +10 -0
- package/dist/reactivity/decorators/__tests__/state-intelligent.test.d.ts +1 -0
- package/dist/reactivity/decorators/computed.d.ts +6 -0
- package/dist/reactivity/decorators/computed.js +17 -0
- package/dist/reactivity/decorators/create-event-decorator.d.ts +5 -0
- package/dist/reactivity/decorators/create-event-decorator.js +28 -0
- package/dist/reactivity/decorators/ctx.d.ts +9 -0
- package/dist/reactivity/decorators/ctx.js +91 -0
- package/dist/reactivity/decorators/effect.d.ts +9 -0
- package/dist/reactivity/decorators/effect.js +24 -0
- package/dist/reactivity/decorators/resource.d.ts +48 -0
- package/dist/reactivity/decorators/resource.js +20 -0
- package/dist/reactivity/decorators/state.d.ts +8 -0
- package/dist/reactivity/decorators/state.js +68 -0
- package/dist/reactivity/decorators/store.d.ts +6 -0
- package/dist/reactivity/decorators/store.js +25 -0
- package/dist/reactivity/phase-scheduler.d.ts +81 -0
- package/dist/reactivity/phase-scheduler.js +88 -0
- package/dist/reactivity/phase-scheduler.test.d.ts +1 -0
- package/dist/reactivity/reactive-cache.d.ts +21 -0
- package/dist/reactivity/reactive-cache.js +31 -0
- package/dist/reactivity/reactive-cache.test.d.ts +1 -0
- package/dist/reactivity/reactive-context.d.ts +152 -0
- package/dist/reactivity/reactive-context.js +184 -0
- package/dist/reactivity/signals/__tests__/composicion-automatica.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/composite/nivel-1-estructura-basica.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/composite/nivel-2-registro-subscribers.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/composite/nivel-3-notificaciones-basicas.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/composite/nivel-4-comparacion-valores.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/composite/nivel-5-tracking-automatico.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/composite/nivel-6-anti-glitch.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/composite/nivel-7-objetos-anidados.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/composite/nivel-8-observable-array-support.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/composite-shallow-tracking.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/effect.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/reactive-array/nivel-1-estructura-basica.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/reactive-array/nivel-2-metodos-mutadores.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/reactive-array/nivel-3-tracking-por-indice.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/reactive-array/nivel-4-tracking-length.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/reactive-array/nivel-5-tracking-mutation.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/reactive-array/nivel-6-metodos-no-mutadores.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/reactive-array/nivel-7-composicion-bidireccional.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/reactive-array/nivel-8-proxies.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/reactive-array/nivel-9-derived-cache-optimization.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/resource.test.d.ts +1 -0
- package/dist/reactivity/signals/__tests__/signal.test.d.ts +1 -0
- package/dist/reactivity/signals/array-strategies.d.ts +120 -0
- package/dist/reactivity/signals/array-strategies.js +261 -0
- package/dist/reactivity/signals/composite.d.ts +89 -0
- package/dist/reactivity/signals/composite.js +145 -0
- package/dist/reactivity/signals/computed.d.ts +61 -0
- package/dist/reactivity/signals/computed.js +107 -0
- package/dist/reactivity/signals/computed.test.d.ts +1 -0
- package/dist/reactivity/signals/derived.d.ts +10 -0
- package/dist/reactivity/signals/derived.js +24 -0
- package/dist/reactivity/signals/effect.d.ts +27 -0
- package/dist/reactivity/signals/effect.js +46 -0
- package/dist/reactivity/signals/event.d.ts +9 -0
- package/dist/reactivity/signals/event.js +15 -0
- package/dist/reactivity/signals/reactive-array.d.ts +133 -0
- package/dist/reactivity/signals/reactive-array.js +490 -0
- package/dist/reactivity/signals/reactive-proxy.d.ts +54 -0
- package/dist/reactivity/signals/reactive-proxy.js +299 -0
- package/dist/reactivity/signals/reactive-tracking.test.d.ts +1 -0
- package/dist/reactivity/signals/resource.d.ts +9 -0
- package/dist/reactivity/signals/resource.js +58 -0
- package/dist/reactivity/signals/signal.d.ts +39 -0
- package/dist/reactivity/signals/signal.js +56 -0
- package/dist/reactivity/signals/subscription-management.test.d.ts +1 -0
- package/dist/reactivity/types.d.ts +12 -0
- package/dist/router/__tests__/link-behavior-active-class.test.d.ts +1 -0
- package/dist/router/__tests__/loop-detector.test.d.ts +1 -0
- package/dist/router/__tests__/params-container-resolution.test.d.ts +1 -0
- package/dist/router/__tests__/router-generated-routes.test.d.ts +1 -0
- package/dist/router/__tests__/router-params-granular.test.d.ts +1 -0
- package/dist/router/__tests__/router-params-simple.test.d.ts +1 -0
- package/dist/router/__tests__/router-query-params.test.d.ts +1 -0
- package/dist/router/__tests__/router-route-candidates.test.d.ts +1 -0
- package/dist/router/__tests__/routeview-app-articles.test.d.ts +1 -0
- package/dist/router/__tests__/routeview-debug.test.d.ts +1 -0
- package/dist/router/__tests__/routeview-integration.test.d.ts +1 -0
- package/dist/router/__tests__/routeview-this.test.d.ts +1 -0
- package/dist/router/decorators/base-policy.d.ts +141 -0
- package/dist/router/decorators/base-policy.js +63 -0
- package/dist/router/decorators/index.d.ts +6 -0
- package/dist/router/decorators/params.d.ts +31 -0
- package/dist/router/decorators/params.js +97 -0
- package/dist/router/decorators/route-metadata.d.ts +11 -0
- package/dist/router/decorators/route-metadata.js +23 -0
- package/dist/router/decorators/route.d.ts +39 -0
- package/dist/router/decorators/route.js +7 -0
- package/dist/router/link.behavior.d.ts +87 -0
- package/dist/router/link.behavior.js +227 -0
- package/dist/router/policy-evaluator.d.ts +81 -0
- package/dist/router/policy-evaluator.js +209 -0
- package/dist/router/route-view.d.ts +56 -0
- package/dist/router/route-view.js +156 -0
- package/dist/router/router.d.ts +67 -0
- package/dist/router/router.js +308 -0
- package/dist/router/static-analysis/index.d.ts +37 -0
- package/dist/router/static-analysis/parser.d.ts +14 -0
- package/dist/router/static-analysis/parser.js +147 -0
- package/dist/router/static-analysis/scanner.d.ts +27 -0
- package/dist/router/static-analysis/scanner.js +91 -0
- package/dist/router/trie.d.ts +14 -0
- package/dist/router/trie.js +126 -0
- package/dist/router/trie.types.d.ts +36 -0
- package/dist/styles/base-style-sheet.d.ts +96 -0
- package/dist/styles/base-style-sheet.js +149 -0
- package/dist/styles/decorators/factories.d.ts +76 -0
- package/dist/styles/decorators/factories.js +11 -0
- package/dist/styles/decorators/keyframes.d.ts +238 -0
- package/dist/styles/decorators/keyframes.js +79 -0
- package/dist/styles/decorators/rule.d.ts +177 -0
- package/dist/styles/decorators/rule.js +72 -0
- package/dist/styles/decorators/scope.d.ts +66 -0
- package/dist/styles/decorators/scope.js +17 -0
- package/dist/styles/decorators/style.d.ts +1 -0
- package/dist/styles/decorators/style.js +20 -0
- package/dist/styles/decorators/useStyles.d.ts +5 -0
- package/dist/styles/decorators/useStyles.js +29 -0
- package/dist/styles/global-styles-registry.d.ts +72 -0
- package/dist/styles/global-styles-registry.js +155 -0
- package/dist/types.d.ts +1 -0
- package/dist/vite-plugins/__tests__/jsx-control-flow-transform.test.d.ts +1 -0
- package/dist/vite-plugins/index.d.ts +4 -0
- package/dist/vite-plugins/index.js +10 -0
- package/dist/vite-plugins/jsx-contextual.d.ts +7 -0
- package/dist/vite-plugins/jsx-contextual.js +53 -0
- package/dist/vite-plugins/jsx-control-flow-transform.d.ts +60 -0
- package/dist/vite-plugins/jsx-control-flow-transform.js +180 -0
- package/dist/vite-plugins/jsx-signals.d.ts +2 -0
- package/dist/vite-plugins/jsx-signals.js +124 -0
- package/dist/vite-plugins/router/route-generator-plugin.d.ts +63 -0
- package/dist/vite-plugins/router/route-generator-plugin.js +310 -0
- 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
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -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';
|