@zanobijs/core 1.2.0-beta.1 → 1.2.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/factory.d.ts +19 -2
- package/factory.js +19 -2
- package/injector/injector.js +2 -2
- package/injector/module.d.ts +25 -5
- package/injector/module.js +26 -6
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [1.2.0-beta.2](https://github.com/devdroide/ZanobiJS/compare/v1.2.0-beta.1...v1.2.0-beta.2) (2025-06-08)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **core,test:** The injection of provider asValue and asFunction that is done in entities was corrected ([83ae3c1](https://github.com/devdroide/ZanobiJS/commit/83ae3c164b28cdc9747c524b8595a1b86257a957))
|
|
11
|
+
|
|
6
12
|
# [1.2.0-beta.1](https://github.com/devdroide/ZanobiJS/compare/v1.2.0-beta.0...v1.2.0-beta.1) (2025-06-05)
|
|
7
13
|
|
|
8
14
|
### Bug Fixes
|
package/factory.d.ts
CHANGED
|
@@ -14,16 +14,30 @@ export declare class Factory {
|
|
|
14
14
|
private logger;
|
|
15
15
|
private options;
|
|
16
16
|
constructor(appModule: TClass, options?: IFactoryOptions);
|
|
17
|
+
/**
|
|
18
|
+
* Se encarga de escaenear modulo por modulo los proveedores con el fin de luego
|
|
19
|
+
* poder ser registrados e inyectados en quien depende de ese proveedor
|
|
20
|
+
* @param {TClass} module - Módulo desde el que se escanearan los proveedores.
|
|
21
|
+
* @private
|
|
22
|
+
*/
|
|
17
23
|
private scanProviderModule;
|
|
24
|
+
/**
|
|
25
|
+
* Se encarga tomar la lista de proveedores y registralos para luego se resueltos
|
|
26
|
+
* cuando el usuario lo solicite
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
18
29
|
private registerProviderScanedModules;
|
|
19
30
|
/**
|
|
20
|
-
*
|
|
31
|
+
* Procesa modulo por modulos registrando los controladores, servicios y proveedores,
|
|
32
|
+
* estos se le irá inyectando sus dependecias resueltas para ser usados por el usuario
|
|
21
33
|
* @param {TClass} module - Módulo desde el que se registrarán las clases.
|
|
22
34
|
* @private
|
|
23
35
|
*/
|
|
24
36
|
private processClassModule;
|
|
25
37
|
/**
|
|
26
|
-
* Crea el contenedor de inyección de dependencias y registra
|
|
38
|
+
* Crea el contenedor de inyección de dependencias y registra el listado de
|
|
39
|
+
* controladores, servicio y proveedores que se ha venido creando a parti de escaneos
|
|
40
|
+
* y registros de clases.
|
|
27
41
|
* @returns {Factory} - Instancia actual de la fábrica.
|
|
28
42
|
*/
|
|
29
43
|
create(): Factory;
|
|
@@ -34,5 +48,8 @@ export declare class Factory {
|
|
|
34
48
|
* @returns {T} - Instancia resuelta.
|
|
35
49
|
*/
|
|
36
50
|
get<T>(className: string): T;
|
|
51
|
+
/**
|
|
52
|
+
* Se encarga de evaluar las opciones para ver si o no aplica y realizar lo correspondiente
|
|
53
|
+
*/
|
|
37
54
|
private evaluateOptions;
|
|
38
55
|
}
|
package/factory.js
CHANGED
|
@@ -29,6 +29,12 @@ class Factory {
|
|
|
29
29
|
this.registerProviderScanedModules();
|
|
30
30
|
this.processClassModule(appModule);
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Se encarga de escaenear modulo por modulo los proveedores con el fin de luego
|
|
34
|
+
* poder ser registrados e inyectados en quien depende de ese proveedor
|
|
35
|
+
* @param {TClass} module - Módulo desde el que se escanearan los proveedores.
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
32
38
|
scanProviderModule(module) {
|
|
33
39
|
this.logger.debug('Factory - Scan Module:', module.name);
|
|
34
40
|
this.moduleHandler.setup(module);
|
|
@@ -41,11 +47,17 @@ class Factory {
|
|
|
41
47
|
});
|
|
42
48
|
}
|
|
43
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Se encarga tomar la lista de proveedores y registralos para luego se resueltos
|
|
52
|
+
* cuando el usuario lo solicite
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
44
55
|
registerProviderScanedModules() {
|
|
45
56
|
this.moduleHandler.registerAllProviders();
|
|
46
57
|
}
|
|
47
58
|
/**
|
|
48
|
-
*
|
|
59
|
+
* Procesa modulo por modulos registrando los controladores, servicios y proveedores,
|
|
60
|
+
* estos se le irá inyectando sus dependecias resueltas para ser usados por el usuario
|
|
49
61
|
* @param {TClass} module - Módulo desde el que se registrarán las clases.
|
|
50
62
|
* @private
|
|
51
63
|
*/
|
|
@@ -64,7 +76,9 @@ class Factory {
|
|
|
64
76
|
this.logger.debug('===================================================');
|
|
65
77
|
}
|
|
66
78
|
/**
|
|
67
|
-
* Crea el contenedor de inyección de dependencias y registra
|
|
79
|
+
* Crea el contenedor de inyección de dependencias y registra el listado de
|
|
80
|
+
* controladores, servicio y proveedores que se ha venido creando a parti de escaneos
|
|
81
|
+
* y registros de clases.
|
|
68
82
|
* @returns {Factory} - Instancia actual de la fábrica.
|
|
69
83
|
*/
|
|
70
84
|
create() {
|
|
@@ -93,6 +107,9 @@ class Factory {
|
|
|
93
107
|
throw new resolution_exception_1.ContainerResolutionException(className, resolutionError[0], error.message);
|
|
94
108
|
}
|
|
95
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Se encarga de evaluar las opciones para ver si o no aplica y realizar lo correspondiente
|
|
112
|
+
*/
|
|
96
113
|
evaluateOptions() {
|
|
97
114
|
if (this.options.activeLoggerSystem)
|
|
98
115
|
process.env.ZANOBIJS_LOGGER = 'true';
|
package/injector/injector.js
CHANGED
|
@@ -87,8 +87,8 @@ class Injector {
|
|
|
87
87
|
for (const key of dInject.keys()) {
|
|
88
88
|
if (this.listProviders.has(key)) {
|
|
89
89
|
const paramName = dInject.get(key);
|
|
90
|
-
const
|
|
91
|
-
injectData[paramName] =
|
|
90
|
+
const providerValue = this.listProviders.get(key);
|
|
91
|
+
injectData[paramName] = providerValue.resolve();
|
|
92
92
|
}
|
|
93
93
|
else {
|
|
94
94
|
this.logger.important(`You are trying to inject @INJECT('${key}') into '${target.name}'`, `but the provider '${key}' and its value are not registered in '${this.moduleName}' or any other previously loaded modules`);
|
package/injector/module.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
2
|
import { TClass } from '../interfaces';
|
|
3
3
|
/**
|
|
4
|
-
* Módulo para gestionar la configuración y el registro de
|
|
4
|
+
* Módulo para gestionar la configuración y el registro de
|
|
5
|
+
* controladores, servicios, proveedores y dependencias.
|
|
5
6
|
*/
|
|
6
7
|
export declare class Module {
|
|
7
8
|
private config;
|
|
@@ -23,9 +24,18 @@ export declare class Module {
|
|
|
23
24
|
* @param {any} module - Módulo a configurar.
|
|
24
25
|
*/
|
|
25
26
|
setup(module: any): void;
|
|
27
|
+
/** Metodo de exposicion para escarnear proveedores y obtener
|
|
28
|
+
* la metadata del modulo que esta confirgurado(Setup) en ese momento
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
26
31
|
scan(): void;
|
|
27
32
|
/**
|
|
28
|
-
*
|
|
33
|
+
* Este metodo incializa una serie de pasos dentro de los cuales son:
|
|
34
|
+
* obtener la metada del modulo configurado actualmente, busca y registra
|
|
35
|
+
* las dependencias de las entidades (controladores y servicios), registra
|
|
36
|
+
* las dependencias de los proveedores que son tipo entidad (clase abst a clase)
|
|
37
|
+
* y registra las dependecias con alias cuando sus nombres no son iguales
|
|
38
|
+
* @public
|
|
29
39
|
*/
|
|
30
40
|
initialize(): void;
|
|
31
41
|
/**
|
|
@@ -37,15 +47,21 @@ export declare class Module {
|
|
|
37
47
|
* Registra las entidades de configuración en el módulo.
|
|
38
48
|
* @private
|
|
39
49
|
*/
|
|
40
|
-
private
|
|
50
|
+
private registerDependenciesFromEntity;
|
|
41
51
|
/**
|
|
42
|
-
*
|
|
52
|
+
* se encarga de filtrar los metadatos del modulo buscando si es controlador o servicio
|
|
53
|
+
* para luego buscar en los metadatos el nombre de la dependecia y de quien depende
|
|
54
|
+
* para se agrupado y agregarlos a la lista de clases a registrar en el contenedor.
|
|
43
55
|
* @param {('controllers' | 'services')} entityType - Tipo de entidad a registrar.
|
|
44
56
|
* @private
|
|
45
57
|
*/
|
|
46
58
|
private registerEntities;
|
|
47
59
|
/**
|
|
48
|
-
*
|
|
60
|
+
* Se encarga de recorrer la lista de proveedores que son tipo clase para
|
|
61
|
+
* luego buscar en los metadatos el nombre de la dependecia y de quien depende
|
|
62
|
+
* para se agrupado y agregarlos a la lista de clases a registrar en el contenedor.
|
|
63
|
+
* toma el proveedor que es nombre la clase o un token (nombre de pendencia)
|
|
64
|
+
* que va ser sustituida por la clase de useClass
|
|
49
65
|
* @private
|
|
50
66
|
*/
|
|
51
67
|
private registerEntitiesFromProvider;
|
|
@@ -72,6 +88,10 @@ export declare class Module {
|
|
|
72
88
|
* contructor(private sA: ServiceA) // parametro con nombre diferente
|
|
73
89
|
*/
|
|
74
90
|
private registerDependenciesToAlias;
|
|
91
|
+
/**
|
|
92
|
+
* Toma el listado proveedores y los une al listado de clases que van
|
|
93
|
+
* a registrar en el contenedor (asValue y asFunction) para ser resueltos
|
|
94
|
+
*/
|
|
75
95
|
registerAllProviders(): void;
|
|
76
96
|
/**
|
|
77
97
|
* Devuelve las importaciones del módulo.
|
package/injector/module.js
CHANGED
|
@@ -10,7 +10,8 @@ const metadata_1 = require("../metadata");
|
|
|
10
10
|
const exceptions_1 = require("../exceptions");
|
|
11
11
|
const invalidProvider_module_exception_1 = require("../exceptions/invalidProvider.module.exception");
|
|
12
12
|
/**
|
|
13
|
-
* Módulo para gestionar la configuración y el registro de
|
|
13
|
+
* Módulo para gestionar la configuración y el registro de
|
|
14
|
+
* controladores, servicios, proveedores y dependencias.
|
|
14
15
|
*/
|
|
15
16
|
class Module {
|
|
16
17
|
config;
|
|
@@ -44,17 +45,26 @@ class Module {
|
|
|
44
45
|
throw new exceptions_1.InvalidModuleAnnotationException();
|
|
45
46
|
}
|
|
46
47
|
}
|
|
48
|
+
/** Metodo de exposicion para escarnear proveedores y obtener
|
|
49
|
+
* la metadata del modulo que esta confirgurado(Setup) en ese momento
|
|
50
|
+
* @public
|
|
51
|
+
*/
|
|
47
52
|
scan() {
|
|
48
53
|
this.injector.scanProviders();
|
|
49
54
|
this.getMetadataModule();
|
|
50
55
|
}
|
|
51
56
|
/**
|
|
52
|
-
*
|
|
57
|
+
* Este metodo incializa una serie de pasos dentro de los cuales son:
|
|
58
|
+
* obtener la metada del modulo configurado actualmente, busca y registra
|
|
59
|
+
* las dependencias de las entidades (controladores y servicios), registra
|
|
60
|
+
* las dependencias de los proveedores que son tipo entidad (clase abst a clase)
|
|
61
|
+
* y registra las dependecias con alias cuando sus nombres no son iguales
|
|
62
|
+
* @public
|
|
53
63
|
*/
|
|
54
64
|
initialize() {
|
|
55
65
|
this.logger.debug('Module - Initialize:', this.module.name);
|
|
56
66
|
this.getMetadataModule();
|
|
57
|
-
this.
|
|
67
|
+
this.registerDependenciesFromEntity();
|
|
58
68
|
this.registerEntitiesFromProvider();
|
|
59
69
|
this.registerDependenciesToAlias();
|
|
60
70
|
}
|
|
@@ -69,12 +79,14 @@ class Module {
|
|
|
69
79
|
* Registra las entidades de configuración en el módulo.
|
|
70
80
|
* @private
|
|
71
81
|
*/
|
|
72
|
-
|
|
82
|
+
registerDependenciesFromEntity() {
|
|
73
83
|
this.registerEntities('controllers');
|
|
74
84
|
this.registerEntities('services');
|
|
75
85
|
}
|
|
76
86
|
/**
|
|
77
|
-
*
|
|
87
|
+
* se encarga de filtrar los metadatos del modulo buscando si es controlador o servicio
|
|
88
|
+
* para luego buscar en los metadatos el nombre de la dependecia y de quien depende
|
|
89
|
+
* para se agrupado y agregarlos a la lista de clases a registrar en el contenedor.
|
|
78
90
|
* @param {('controllers' | 'services')} entityType - Tipo de entidad a registrar.
|
|
79
91
|
* @private
|
|
80
92
|
*/
|
|
@@ -103,7 +115,11 @@ class Module {
|
|
|
103
115
|
}
|
|
104
116
|
}
|
|
105
117
|
/**
|
|
106
|
-
*
|
|
118
|
+
* Se encarga de recorrer la lista de proveedores que son tipo clase para
|
|
119
|
+
* luego buscar en los metadatos el nombre de la dependecia y de quien depende
|
|
120
|
+
* para se agrupado y agregarlos a la lista de clases a registrar en el contenedor.
|
|
121
|
+
* toma el proveedor que es nombre la clase o un token (nombre de pendencia)
|
|
122
|
+
* que va ser sustituida por la clase de useClass
|
|
107
123
|
* @private
|
|
108
124
|
*/
|
|
109
125
|
registerEntitiesFromProvider() {
|
|
@@ -167,6 +183,10 @@ class Module {
|
|
|
167
183
|
}
|
|
168
184
|
});
|
|
169
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Toma el listado proveedores y los une al listado de clases que van
|
|
188
|
+
* a registrar en el contenedor (asValue y asFunction) para ser resueltos
|
|
189
|
+
*/
|
|
170
190
|
registerAllProviders() {
|
|
171
191
|
this.logger.debug('Module - Register list provider:', this.module.name);
|
|
172
192
|
const listProviders = this.injector.getAllProvider();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zanobijs/core",
|
|
3
|
-
"version": "1.2.0-beta.
|
|
3
|
+
"version": "1.2.0-beta.2",
|
|
4
4
|
"description": "Zanobi - modern, small, powerful node.js lambda framework (@core)",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "John Edison Cortes Rivera [Devdroide] <johne.aplicativos@gmail.com>",
|
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"@zanobijs/common": "*"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "9eea2d0fd88769931296ebe578beb19f745fac88"
|
|
33
33
|
}
|