@asenajs/asena 0.7.1 → 0.8.1
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/README.md +2 -2
- package/dist/lib/adapter/AsenaAdapter.d.ts +2 -2
- package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
- package/dist/lib/adapter/types/ServeOptions.d.ts +16 -0
- package/dist/lib/adapter/types/ValidationError.d.ts +53 -0
- package/dist/lib/adapter/types/ValidationError.js +24 -0
- package/dist/lib/adapter/types/ValidationError.js.map +1 -0
- package/dist/lib/adapter/types/index.d.ts +1 -0
- package/dist/lib/adapter/types/index.js +1 -0
- package/dist/lib/adapter/types/index.js.map +1 -1
- package/dist/lib/ioc/Container.d.ts +25 -0
- package/dist/lib/ioc/Container.js +47 -0
- package/dist/lib/ioc/Container.js.map +1 -1
- package/dist/lib/ioc/CoreContainer.d.ts +5 -3
- package/dist/lib/ioc/CoreContainer.js +9 -3
- package/dist/lib/ioc/CoreContainer.js.map +1 -1
- package/dist/lib/ioc/IocEngine.d.ts +50 -4
- package/dist/lib/ioc/IocEngine.js +138 -12
- package/dist/lib/ioc/IocEngine.js.map +1 -1
- package/dist/lib/ioc/component/componentRegistry.d.ts +22 -0
- package/dist/lib/ioc/component/componentRegistry.js +119 -0
- package/dist/lib/ioc/component/componentRegistry.js.map +1 -0
- package/dist/lib/ioc/component/componentUtils.js +4 -0
- package/dist/lib/ioc/component/componentUtils.js.map +1 -1
- package/dist/lib/ioc/component/decorators/Inject.js +16 -0
- package/dist/lib/ioc/component/decorators/Inject.js.map +1 -1
- package/dist/lib/ioc/component/index.d.ts +1 -0
- package/dist/lib/ioc/component/index.js +1 -0
- package/dist/lib/ioc/component/index.js.map +1 -1
- package/dist/lib/ioc/constants/ComponentConstants.d.ts +4 -0
- package/dist/lib/ioc/constants/ComponentConstants.js +5 -0
- package/dist/lib/ioc/constants/ComponentConstants.js.map +1 -1
- package/dist/lib/ioc/helper/fileHelper.d.ts +9 -0
- package/dist/lib/ioc/helper/fileHelper.js +41 -11
- package/dist/lib/ioc/helper/fileHelper.js.map +1 -1
- package/dist/lib/ioc/types/ICoreServiceNamesType.d.ts +1 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.js +1 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.js.map +1 -1
- package/dist/lib/ioc/types/InjectableComponent.d.ts +10 -0
- package/dist/lib/ioc/types/IocConfig.d.ts +7 -0
- package/dist/lib/ioc/types/decorators/ComponentType.d.ts +2 -1
- package/dist/lib/ioc/types/decorators/ComponentType.js +1 -0
- package/dist/lib/ioc/types/decorators/ComponentType.js.map +1 -1
- package/dist/lib/server/AsenaServer.d.ts +47 -3
- package/dist/lib/server/AsenaServer.js +167 -28
- package/dist/lib/server/AsenaServer.js.map +1 -1
- package/dist/lib/server/AsenaServerFactory.d.ts +38 -3
- package/dist/lib/server/AsenaServerFactory.js +21 -2
- package/dist/lib/server/AsenaServerFactory.js.map +1 -1
- package/dist/lib/server/config/AsenaConfig.d.ts +82 -4
- package/dist/lib/server/config/AsenaConfig.js +39 -1
- package/dist/lib/server/config/AsenaConfig.js.map +1 -1
- package/dist/lib/server/decorators/components/MessageController.d.ts +49 -0
- package/dist/lib/server/decorators/components/MessageController.js +62 -0
- package/dist/lib/server/decorators/components/MessageController.js.map +1 -0
- package/dist/lib/server/decorators/components/index.d.ts +1 -0
- package/dist/lib/server/decorators/components/index.js +1 -0
- package/dist/lib/server/decorators/components/index.js.map +1 -1
- package/dist/lib/server/event/EventDispatchService.d.ts +3 -7
- package/dist/lib/server/event/EventDispatchService.js +9 -40
- package/dist/lib/server/event/EventDispatchService.js.map +1 -1
- package/dist/lib/server/event/PatternHandlerIndex.d.ts +53 -0
- package/dist/lib/server/event/PatternHandlerIndex.js +100 -0
- package/dist/lib/server/event/PatternHandlerIndex.js.map +1 -0
- package/dist/lib/server/event/decorators/On.d.ts +4 -0
- package/dist/lib/server/event/decorators/On.js +6 -0
- package/dist/lib/server/event/decorators/On.js.map +1 -1
- package/dist/lib/server/event/index.d.ts +1 -0
- package/dist/lib/server/event/index.js +2 -0
- package/dist/lib/server/event/index.js.map +1 -1
- package/dist/lib/server/event/types.d.ts +12 -0
- package/dist/lib/server/health/HealthServer.d.ts +26 -0
- package/dist/lib/server/health/HealthServer.js +63 -0
- package/dist/lib/server/health/HealthServer.js.map +1 -0
- package/dist/lib/server/health/index.d.ts +1 -0
- package/dist/lib/server/health/index.js +2 -0
- package/dist/lib/server/health/index.js.map +1 -0
- package/dist/lib/server/messaging/Ulak.d.ts +156 -0
- package/dist/lib/server/messaging/Ulak.js +174 -0
- package/dist/lib/server/messaging/Ulak.js.map +1 -1
- package/dist/lib/server/messaging/types.d.ts +5 -1
- package/dist/lib/server/messaging/types.js +5 -0
- package/dist/lib/server/messaging/types.js.map +1 -1
- package/dist/lib/server/microservice/InMemoryTransport.d.ts +45 -0
- package/dist/lib/server/microservice/InMemoryTransport.js +124 -0
- package/dist/lib/server/microservice/InMemoryTransport.js.map +1 -0
- package/dist/lib/server/microservice/MicroserviceTransport.d.ts +132 -0
- package/dist/lib/server/microservice/MicroserviceTransport.js +2 -0
- package/dist/lib/server/microservice/MicroserviceTransport.js.map +1 -0
- package/dist/lib/server/microservice/decorators/EventPattern.d.ts +38 -0
- package/dist/lib/server/microservice/decorators/EventPattern.js +59 -0
- package/dist/lib/server/microservice/decorators/EventPattern.js.map +1 -0
- package/dist/lib/server/microservice/decorators/MessagePattern.d.ts +31 -0
- package/dist/lib/server/microservice/decorators/MessagePattern.js +55 -0
- package/dist/lib/server/microservice/decorators/MessagePattern.js.map +1 -0
- package/dist/lib/server/microservice/decorators/index.d.ts +2 -0
- package/dist/lib/server/microservice/decorators/index.js +3 -0
- package/dist/lib/server/microservice/decorators/index.js.map +1 -0
- package/dist/lib/server/microservice/index.d.ts +5 -0
- package/dist/lib/server/microservice/index.js +11 -0
- package/dist/lib/server/microservice/index.js.map +1 -0
- package/dist/lib/server/microservice/interceptorChain.d.ts +20 -0
- package/dist/lib/server/microservice/interceptorChain.js +39 -0
- package/dist/lib/server/microservice/interceptorChain.js.map +1 -0
- package/dist/lib/server/microservice/types.d.ts +142 -0
- package/dist/lib/server/microservice/types.js +5 -0
- package/dist/lib/server/microservice/types.js.map +1 -0
- package/dist/lib/server/src/services/PrepareEventService.d.ts +4 -1
- package/dist/lib/server/src/services/PrepareEventService.js +10 -3
- package/dist/lib/server/src/services/PrepareEventService.js.map +1 -1
- package/dist/lib/server/src/services/PrepareMicroserviceService.d.ts +66 -0
- package/dist/lib/server/src/services/PrepareMicroserviceService.js +193 -0
- package/dist/lib/server/src/services/PrepareMicroserviceService.js.map +1 -0
- package/dist/lib/test/factory/deepMock.d.ts +25 -0
- package/dist/lib/test/factory/deepMock.js +105 -0
- package/dist/lib/test/factory/deepMock.js.map +1 -0
- package/dist/lib/test/factory/ulakStub.d.ts +44 -0
- package/dist/lib/test/factory/ulakStub.js +40 -0
- package/dist/lib/test/factory/ulakStub.js.map +1 -0
- package/dist/lib/test/harness/createTestApp.d.ts +33 -0
- package/dist/lib/test/harness/createTestApp.js +105 -0
- package/dist/lib/test/harness/createTestApp.js.map +1 -0
- package/dist/lib/test/harness/createWebTest.d.ts +28 -0
- package/dist/lib/test/harness/createWebTest.js +127 -0
- package/dist/lib/test/harness/createWebTest.js.map +1 -0
- package/dist/lib/test/harness/silentLogger.d.ts +27 -0
- package/dist/lib/test/harness/silentLogger.js +54 -0
- package/dist/lib/test/harness/silentLogger.js.map +1 -0
- package/dist/lib/test/harness/types.d.ts +147 -0
- package/dist/lib/test/harness/types.js +2 -0
- package/dist/lib/test/harness/types.js.map +1 -0
- package/dist/lib/test/http/TestHttpCall.d.ts +78 -0
- package/dist/lib/test/http/TestHttpCall.js +149 -0
- package/dist/lib/test/http/TestHttpCall.js.map +1 -0
- package/dist/lib/test/http/TestHttpResponse.d.ts +46 -0
- package/dist/lib/test/http/TestHttpResponse.js +70 -0
- package/dist/lib/test/http/TestHttpResponse.js.map +1 -0
- package/dist/lib/test/index.d.ts +9 -0
- package/dist/lib/test/index.js +8 -0
- package/dist/lib/test/index.js.map +1 -1
- package/dist/lib/test/metadata/discovery.d.ts +21 -0
- package/dist/lib/test/metadata/discovery.js +37 -8
- package/dist/lib/test/metadata/discovery.js.map +1 -1
- package/dist/lib/test/mockComponent.d.ts +25 -0
- package/dist/lib/test/mockComponent.js +39 -6
- package/dist/lib/test/mockComponent.js.map +1 -1
- package/dist/lib/test/types.d.ts +13 -0
- package/package.json +11 -7
|
@@ -12,22 +12,30 @@ import { getAllFiles } from './helper/fileHelper';
|
|
|
12
12
|
import * as path from 'node:path';
|
|
13
13
|
import { ComponentConstants } from './constants';
|
|
14
14
|
import * as process from 'node:process';
|
|
15
|
-
import * as console from 'node:console';
|
|
16
15
|
import { getStrategyClass } from './helper/iocHelper';
|
|
17
16
|
import { getOwnTypedMetadata, getTypedMetadata } from '../utils';
|
|
18
|
-
import { Inject, Scope } from './component';
|
|
17
|
+
import { getComponentsDeclaredIn, Inject, Scope } from './component';
|
|
19
18
|
import { CoreService } from './decorators';
|
|
20
19
|
import { CircularDependencyError } from './CircularDependencyDetector';
|
|
21
20
|
/**
|
|
22
21
|
* @description IoC Engine - Manages component registration and dependency injection
|
|
23
22
|
* Core service that handles automatic component discovery and registration
|
|
24
23
|
*/
|
|
24
|
+
/**
|
|
25
|
+
* @description How long a single component file may take to import before the
|
|
26
|
+
* engine points at it. Only a warning - the import is never cancelled.
|
|
27
|
+
*/
|
|
28
|
+
const DEFAULT_IMPORT_TIMEOUT = 10_000;
|
|
25
29
|
let IocEngine = class IocEngine {
|
|
26
30
|
serviceName = 'IocEngine';
|
|
27
31
|
_container;
|
|
28
32
|
logger;
|
|
29
33
|
injectables = [];
|
|
30
34
|
config;
|
|
35
|
+
/** Entry files kept out of the scan, empty unless the scan actually ran */
|
|
36
|
+
entryFiles = new Set();
|
|
37
|
+
/** Entry-declared components that existed by the time the scan ran */
|
|
38
|
+
entryComponents = new Set();
|
|
31
39
|
/**
|
|
32
40
|
* @description Set IoC configuration
|
|
33
41
|
* @param {IocConfig} config - IoC configuration object
|
|
@@ -68,13 +76,103 @@ let IocEngine = class IocEngine {
|
|
|
68
76
|
if (!this.config) {
|
|
69
77
|
throw new Error('No components or configuration found');
|
|
70
78
|
}
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
79
|
+
const entryFiles = (this.entryFiles = this.resolveEntryFiles());
|
|
80
|
+
// The entry file must not be imported. While it awaits AsenaServerFactory.create
|
|
81
|
+
// at module scope it is in the evaluating-async state, so importing it here is a
|
|
82
|
+
// cyclic dynamic import that can only settle once this scan returns - a deadlock
|
|
83
|
+
// (Bun >= 1.3.14 follows the spec and waits, older versions short-circuited it).
|
|
84
|
+
const files = getAllFiles(this.config.sourceFolder).filter((file) => !entryFiles.has(this.toAbsolutePath(file)));
|
|
85
|
+
const scanned = await this.getInjectables(files);
|
|
86
|
+
// Components declared directly in the entry file are still supported: their
|
|
87
|
+
// decorators ran before the bootstrap call, so they come from the registry
|
|
88
|
+
// rather than from a module namespace
|
|
89
|
+
const entryClasses = getComponentsDeclaredIn(entryFiles);
|
|
90
|
+
this.entryComponents = new Set(entryClasses);
|
|
91
|
+
const declaredInEntry = this.processComponents(entryClasses);
|
|
92
|
+
this.injectables = this.dedupeInjectables([...this.injectables, ...scanned, ...declaredInEntry]);
|
|
74
93
|
if (!this.injectables.length) {
|
|
75
94
|
throw new Error('No components found');
|
|
76
95
|
}
|
|
77
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* @description Report components that were declared in the entry file *after* the
|
|
99
|
+
* bootstrap call. Their decorators had not run yet when the scan read the registry,
|
|
100
|
+
* so they never made it into the container - and without this they would just be
|
|
101
|
+
* quietly missing at runtime.
|
|
102
|
+
* @returns {void}
|
|
103
|
+
*/
|
|
104
|
+
warnAboutLateEntryComponents() {
|
|
105
|
+
if (!this.entryFiles.size) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const late = getComponentsDeclaredIn(this.entryFiles).filter((cls) => !this.entryComponents.has(cls));
|
|
109
|
+
if (!late.length) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
this.logger.warn(`[IocEngine] ${late.length} component(s) declared after the AsenaServerFactory.create() call were not ` +
|
|
113
|
+
`registered: ${late.map((cls) => cls.name).join(', ')}. ` +
|
|
114
|
+
'Move them above the bootstrap call, or into their own file under sourceFolder.');
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* @description Absolute paths of the files that must be kept out of the scan:
|
|
118
|
+
* the entry declared in the config, and the module actually being executed.
|
|
119
|
+
* They are usually the same file, but not always - a project may declare one
|
|
120
|
+
* `rootFile` and start another, or run without a config at all.
|
|
121
|
+
* @returns {Set<string>} Resolved absolute entry paths
|
|
122
|
+
*/
|
|
123
|
+
resolveEntryFiles() {
|
|
124
|
+
const entryFiles = new Set();
|
|
125
|
+
if (this.config?.rootFile) {
|
|
126
|
+
entryFiles.add(path.resolve(process.cwd(), this.config.rootFile));
|
|
127
|
+
}
|
|
128
|
+
const runningModule = typeof Bun !== 'undefined' ? Bun.main : process.argv[1];
|
|
129
|
+
if (runningModule) {
|
|
130
|
+
entryFiles.add(path.resolve(runningModule));
|
|
131
|
+
}
|
|
132
|
+
return entryFiles;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* @description Resolve a scanned path against the working directory. `getAllFiles`
|
|
136
|
+
* mirrors the form of the folder it was given, so a `sourceFolder` configured as an
|
|
137
|
+
* absolute path yields absolute entries that must not be joined onto cwd again.
|
|
138
|
+
* @param {string} file - Path as returned by the scan
|
|
139
|
+
* @returns {string} Absolute path
|
|
140
|
+
*/
|
|
141
|
+
toAbsolutePath(file) {
|
|
142
|
+
return path.isAbsolute(file) ? path.normalize(file) : path.resolve(process.cwd(), file);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* @description Collapse components that arrived from more than one source - a class
|
|
146
|
+
* re-exported through a barrel file, or one found by both the scan and the registry.
|
|
147
|
+
*
|
|
148
|
+
* Deduplication is by class identity, not by name: `Container.register` promotes a
|
|
149
|
+
* key to an array when the same name is registered twice, which would construct the
|
|
150
|
+
* component a second time (running @PostConstruct again) and hand every dependent an
|
|
151
|
+
* array instead of an instance.
|
|
152
|
+
* @param {InjectableComponent[]} components - Components from every source
|
|
153
|
+
* @returns {InjectableComponent[]} Components with duplicates removed
|
|
154
|
+
*/
|
|
155
|
+
dedupeInjectables(components) {
|
|
156
|
+
const seen = new Set();
|
|
157
|
+
const byName = new Map();
|
|
158
|
+
const unique = [];
|
|
159
|
+
for (const component of components) {
|
|
160
|
+
if (seen.has(component.Class))
|
|
161
|
+
continue;
|
|
162
|
+
seen.add(component.Class);
|
|
163
|
+
const name = getTypedMetadata(ComponentConstants.NameKey, component.Class) || component.Class.name;
|
|
164
|
+
const claimed = byName.get(name);
|
|
165
|
+
if (claimed && claimed !== component.Class) {
|
|
166
|
+
this.logger.warn(`[IocEngine] Two different classes resolve to the component name '${name}'. ` +
|
|
167
|
+
'Only one of them will be registered - give one an explicit name to disambiguate.');
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
byName.set(name, component.Class);
|
|
171
|
+
}
|
|
172
|
+
unique.push(component);
|
|
173
|
+
}
|
|
174
|
+
return unique;
|
|
175
|
+
}
|
|
78
176
|
async validateAndRegisterComponents(injectableClasses) {
|
|
79
177
|
const sortedInjectables = this.topologicalSort(injectableClasses, this.injectables);
|
|
80
178
|
await this.register(sortedInjectables);
|
|
@@ -85,7 +183,9 @@ let IocEngine = class IocEngine {
|
|
|
85
183
|
const isSingleton = getTypedMetadata(ComponentConstants.ScopeKey, injectable) === Scope.SINGLETON;
|
|
86
184
|
await this._container.register(name, injectable, isSingleton);
|
|
87
185
|
const _interface = getTypedMetadata(ComponentConstants.InterfaceKey, injectable);
|
|
88
|
-
|
|
186
|
+
// An overridden component must not sneak back in under its @Implements interface key -
|
|
187
|
+
// registering there would construct the real class and run its @PostConstruct anyway
|
|
188
|
+
if (_interface && !this._container.isOverridden(name)) {
|
|
89
189
|
await this._container.register(_interface, injectable, isSingleton);
|
|
90
190
|
}
|
|
91
191
|
}
|
|
@@ -96,21 +196,47 @@ let IocEngine = class IocEngine {
|
|
|
96
196
|
return this.processComponents(components);
|
|
97
197
|
}
|
|
98
198
|
async importFiles(files) {
|
|
199
|
+
const timeout = this.config?.importTimeout ?? DEFAULT_IMPORT_TIMEOUT;
|
|
99
200
|
const importPromises = files.map(async (file) => {
|
|
100
201
|
try {
|
|
101
|
-
const
|
|
102
|
-
const module = await import(filePath);
|
|
202
|
+
const module = await this.importFile(this.toAbsolutePath(file), file, timeout);
|
|
103
203
|
return Object.values(module);
|
|
104
204
|
}
|
|
105
205
|
catch (error) {
|
|
106
|
-
//
|
|
107
|
-
|
|
108
|
-
|
|
206
|
+
// A file inside sourceFolder that cannot be imported used to be skipped, which
|
|
207
|
+
// started the server with that component silently missing - the first symptom
|
|
208
|
+
// being an injection failure or a vanished route much later
|
|
209
|
+
this.logger.error(`[IocEngine] Failed to import component file '${file}':`, error);
|
|
210
|
+
throw new Error(`Failed to import component file '${file}'`, { cause: error });
|
|
109
211
|
}
|
|
110
212
|
});
|
|
111
213
|
const results = await Promise.all(importPromises);
|
|
112
214
|
return results.flat();
|
|
113
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* @description Import a single component file, pointing at it if it takes suspiciously
|
|
218
|
+
* long. A module whose top-level await never settles would otherwise hang the boot with
|
|
219
|
+
* no output at all; the import itself is left alone, only reported.
|
|
220
|
+
* @param {string} filePath - Absolute path to import
|
|
221
|
+
* @param {string} file - Path as scanned, for the message
|
|
222
|
+
* @param {number} timeout - Milliseconds before warning, 0 disables
|
|
223
|
+
* @returns {Promise<any>} The imported module namespace
|
|
224
|
+
*/
|
|
225
|
+
async importFile(filePath, file, timeout) {
|
|
226
|
+
const timer = timeout > 0
|
|
227
|
+
? setTimeout(() => {
|
|
228
|
+
this.logger.warn(`[IocEngine] Import of '${file}' has not settled after ${timeout}ms. ` +
|
|
229
|
+
'A top-level await in that file that never resolves will hang startup.');
|
|
230
|
+
}, timeout)
|
|
231
|
+
: undefined;
|
|
232
|
+
try {
|
|
233
|
+
return await import(filePath);
|
|
234
|
+
}
|
|
235
|
+
finally {
|
|
236
|
+
if (timer !== undefined)
|
|
237
|
+
clearTimeout(timer);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
114
240
|
processComponents(components) {
|
|
115
241
|
return components
|
|
116
242
|
.filter((component) => this.isValidComponent(component))
|
|
@@ -134,7 +260,7 @@ let IocEngine = class IocEngine {
|
|
|
134
260
|
};
|
|
135
261
|
}
|
|
136
262
|
catch (error) {
|
|
137
|
-
|
|
263
|
+
this.logger.error('[IocEngine] Failed to create component object:', error);
|
|
138
264
|
return null;
|
|
139
265
|
}
|
|
140
266
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IocEngine.js","sourceRoot":"","sources":["../../../lib/ioc/IocEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IocEngine.js","sourceRoot":"","sources":["../../../lib/ioc/IocEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Class } from '../../server/types';
|
|
2
|
+
/**
|
|
3
|
+
* @description Record a decorated class along with the file it was declared in.
|
|
4
|
+
* Called from `defineComponent`, the single place that marks a class as an IoC
|
|
5
|
+
* component.
|
|
6
|
+
* @param {Class} target - The decorated class
|
|
7
|
+
* @returns {void}
|
|
8
|
+
*/
|
|
9
|
+
export declare const registerDeclaredComponent: (target: Class) => void;
|
|
10
|
+
/**
|
|
11
|
+
* @description Every registered class that was declared in one of the given files.
|
|
12
|
+
* @param {ReadonlySet<string>} sourceFiles - Absolute, resolved file paths
|
|
13
|
+
* @returns {Class[]} Classes declared in those files
|
|
14
|
+
*/
|
|
15
|
+
export declare const getComponentsDeclaredIn: (sourceFiles: ReadonlySet<string>) => Class[];
|
|
16
|
+
/**
|
|
17
|
+
* @description Clear the registry. The registry outlives any single application,
|
|
18
|
+
* so tests that boot more than one app in the same process use this to keep
|
|
19
|
+
* components from one run leaking into the next.
|
|
20
|
+
* @returns {void}
|
|
21
|
+
*/
|
|
22
|
+
export declare const resetComponentRegistry: () => void;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
/**
|
|
3
|
+
* @description Registry of every class a component decorator has been applied to,
|
|
4
|
+
* keyed by the class itself and valued by the file it was declared in.
|
|
5
|
+
*
|
|
6
|
+
* The IoC scan cannot import the application entry file. While the entry awaits
|
|
7
|
+
* `AsenaServerFactory.create` at module scope it sits in the *evaluating-async*
|
|
8
|
+
* state, so importing it is a cyclic dynamic import that never settles - Bun
|
|
9
|
+
* >= 1.3.14 follows the spec here and waits on an evaluation that can only finish
|
|
10
|
+
* once the scan returns. Declaring components directly in the entry file is still
|
|
11
|
+
* supported: their decorators have already run by the time the scan starts, so the
|
|
12
|
+
* scan reads them from this registry instead of from a module namespace.
|
|
13
|
+
*
|
|
14
|
+
* Stored under `Symbol.for` so a project that ends up with two copies of
|
|
15
|
+
* `@asenajs/asena` still shares a single registry.
|
|
16
|
+
*/
|
|
17
|
+
const REGISTRY_KEY = Symbol.for('asena.componentRegistry');
|
|
18
|
+
const getRegistry = () => {
|
|
19
|
+
const store = globalThis;
|
|
20
|
+
if (!store[REGISTRY_KEY]) {
|
|
21
|
+
store[REGISTRY_KEY] = new Map();
|
|
22
|
+
}
|
|
23
|
+
return store[REGISTRY_KEY];
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* The framework's own source tree - `<pkg>/lib` when running from source,
|
|
27
|
+
* `<pkg>/dist/lib` when running the build. Frames below it belong to Asena itself
|
|
28
|
+
* (the decorator factory, this file) and are never a declaration site.
|
|
29
|
+
*
|
|
30
|
+
* Deliberately narrower than the package root: test fixtures and example apps live
|
|
31
|
+
* beside `lib`, and skipping the whole package would swallow them too.
|
|
32
|
+
*/
|
|
33
|
+
const FRAMEWORK_ROOT = path.resolve(import.meta.dir, '../..');
|
|
34
|
+
/**
|
|
35
|
+
* Matches the trailing `/abs/path/file.ts:12:34` of a stack frame, with or without
|
|
36
|
+
* parens. The column is optional: the module-level frame that a top-level class
|
|
37
|
+
* declaration produces carries only a line number.
|
|
38
|
+
*/
|
|
39
|
+
const STACK_FRAME = /\(?((?:\/|[A-Za-z]:\\)[^()]+?):\d+(?::\d+)?\)?\s*$/;
|
|
40
|
+
/**
|
|
41
|
+
* `reflect-metadata` installs `Reflect.decorate`, which TypeScript's `__decorate`
|
|
42
|
+
* helper uses to apply decorators - so it sits between us and the declaring file.
|
|
43
|
+
* Matches both a `node_modules/reflect-metadata/` layout and Bun's flattened
|
|
44
|
+
* install cache (`reflect-metadata@0.2.2@@@1/`).
|
|
45
|
+
*/
|
|
46
|
+
const DECORATOR_PLUMBING = /[/\\]reflect-metadata[@/\\]/;
|
|
47
|
+
/**
|
|
48
|
+
* @description Resolve the file a decorator was applied in, by walking the call
|
|
49
|
+
* stack past Asena's own frames, past the decorator plumbing, and past runtime
|
|
50
|
+
* internals (`bun:*`, `node:*`, which carry no absolute path and therefore never
|
|
51
|
+
* match `STACK_FRAME`).
|
|
52
|
+
*
|
|
53
|
+
* Skipping only these - rather than everything under `node_modules` - keeps a
|
|
54
|
+
* component declared inside a third-party package attributed to *that* package's
|
|
55
|
+
* file. It then never matches an entry path, so importing such a package from the
|
|
56
|
+
* entry file does not silently pull its components into the container.
|
|
57
|
+
*
|
|
58
|
+
* Returns null when the site cannot be determined; such a component is simply
|
|
59
|
+
* never treated as entry-declared, which is the safe direction - it means the
|
|
60
|
+
* file scan stays the only source for it.
|
|
61
|
+
*/
|
|
62
|
+
const declarationSite = () => {
|
|
63
|
+
const previousLimit = Error.stackTraceLimit;
|
|
64
|
+
// Asena's own frames plus the decorator plumbing put the declaring frame around
|
|
65
|
+
// 6 levels up; a small limit keeps the capture cheap
|
|
66
|
+
Error.stackTraceLimit = 20;
|
|
67
|
+
const stack = new Error().stack;
|
|
68
|
+
Error.stackTraceLimit = previousLimit;
|
|
69
|
+
if (!stack) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
for (const line of stack.split('\n')) {
|
|
73
|
+
const match = STACK_FRAME.exec(line);
|
|
74
|
+
if (!match)
|
|
75
|
+
continue;
|
|
76
|
+
const file = match[1];
|
|
77
|
+
if (file.startsWith(FRAMEWORK_ROOT) || DECORATOR_PLUMBING.test(file))
|
|
78
|
+
continue;
|
|
79
|
+
return file;
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* @description Record a decorated class along with the file it was declared in.
|
|
85
|
+
* Called from `defineComponent`, the single place that marks a class as an IoC
|
|
86
|
+
* component.
|
|
87
|
+
* @param {Class} target - The decorated class
|
|
88
|
+
* @returns {void}
|
|
89
|
+
*/
|
|
90
|
+
export const registerDeclaredComponent = (target) => {
|
|
91
|
+
getRegistry().set(target, declarationSite());
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* @description Every registered class that was declared in one of the given files.
|
|
95
|
+
* @param {ReadonlySet<string>} sourceFiles - Absolute, resolved file paths
|
|
96
|
+
* @returns {Class[]} Classes declared in those files
|
|
97
|
+
*/
|
|
98
|
+
export const getComponentsDeclaredIn = (sourceFiles) => {
|
|
99
|
+
if (!sourceFiles.size) {
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
const components = [];
|
|
103
|
+
for (const [target, file] of getRegistry()) {
|
|
104
|
+
if (file !== null && sourceFiles.has(file)) {
|
|
105
|
+
components.push(target);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return components;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* @description Clear the registry. The registry outlives any single application,
|
|
112
|
+
* so tests that boot more than one app in the same process use this to keep
|
|
113
|
+
* components from one run leaking into the next.
|
|
114
|
+
* @returns {void}
|
|
115
|
+
*/
|
|
116
|
+
export const resetComponentRegistry = () => {
|
|
117
|
+
getRegistry().clear();
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=componentRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"componentRegistry.js","sourceRoot":"","sources":["../../../../lib/ioc/component/componentRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC;;;;;;;;;;;;;;GAcG;AACH,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAI3D,MAAM,WAAW,GAAG,GAAa,EAAE;IACjC,MAAM,KAAK,GAAG,UAA6D,CAAC;IAE5E,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,WAAW,GAAG,oDAAoD,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,MAAM,eAAe,GAAG,GAAkB,EAAE;IAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC;IAE5C,gFAAgF;IAChF,qDAAqD;IACrD,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;IAE3B,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;IAEhC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAC;IAEtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QAE/E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAa,EAAQ,EAAE;IAC/D,WAAW,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,WAAgC,EAAW,EAAE;IACnF,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAY,EAAE,CAAC;IAE/B,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,EAAE,CAAC;QAC3C,IAAI,IAAI,KAAK,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAS,EAAE;IAC/C,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -2,11 +2,15 @@ import { ComponentType } from '../types';
|
|
|
2
2
|
import { ComponentConstants } from '../constants';
|
|
3
3
|
import { defineTypedMetadata, getOwnTypedMetadata } from '../../utils/typedMetadata';
|
|
4
4
|
import { Scope } from './Scope';
|
|
5
|
+
import { registerDeclaredComponent } from './componentRegistry';
|
|
5
6
|
export const defineComponent = (componentType, params, extra) => {
|
|
6
7
|
return (target) => {
|
|
7
8
|
const { scope = Scope.SINGLETON, name = target.name } = paramsGenerator(params, componentType);
|
|
8
9
|
defineTypedMetadata(componentType, true, target);
|
|
9
10
|
defineTypedMetadata(ComponentConstants.IOCObjectKey, true, target);
|
|
11
|
+
// Records the declaring file too, so components written directly in the entry
|
|
12
|
+
// file stay discoverable - the scan has to skip that file (see componentRegistry)
|
|
13
|
+
registerDeclaredComponent(target);
|
|
10
14
|
defineTypedMetadata(ComponentConstants.ScopeKey, scope, target);
|
|
11
15
|
defineTypedMetadata(ComponentConstants.NameKey, name, target);
|
|
12
16
|
if (extra) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentUtils.js","sourceRoot":"","sources":["../../../../lib/ioc/component/componentUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,aAAa,EAAsC,MAAM,UAAU,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"componentUtils.js","sourceRoot":"","sources":["../../../../lib/ioc/component/componentUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,aAAa,EAAsC,MAAM,UAAU,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,aAA4B,EAC5B,MAAkB,EAClB,KAAkC,EAClB,EAAE;IAClB,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAE/F,mBAAmB,CAAU,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE1D,mBAAmB,CAAU,kBAAkB,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE5E,8EAA8E;QAC9E,kFAAkF;QAClF,yBAAyB,CAAC,MAAe,CAAC,CAAC;QAE3C,mBAAmB,CAAQ,kBAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAEvE,mBAAmB,CAAS,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAEtE,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,MAAM,CAAC,CAAC;QAChB,CAAC;QAED,IAAI,mBAAmB,CAAe,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YAC9F,mBAAmB,CAAe,kBAAkB,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,mBAAmB,CAAa,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YAC1F,mBAAmB,CAAa,kBAAkB,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,MAAgC,EAAE,aAA4B,EAAmB,EAAE;IAC1G,MAAM,YAAY,GAAoB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAE5E,IACE,OAAO,MAAM,KAAK,QAAQ;QAC1B,CAAC,aAAa,KAAK,aAAa,CAAC,UAAU;YACzC,aAAa,KAAK,aAAa,CAAC,SAAS;YACzC,aAAa,KAAK,aAAa,CAAC,mBAAmB,CAAC,EACtD,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC;AAChF,CAAC,CAAC"}
|
|
@@ -31,11 +31,16 @@ export const Inject = (Injection, expression) => {
|
|
|
31
31
|
return (target, propertyKey) => {
|
|
32
32
|
let dependencyName;
|
|
33
33
|
let resolvedExpression = expression;
|
|
34
|
+
// Kept only for class-based injections - string injections carry no class reference
|
|
35
|
+
let dependencyClass;
|
|
34
36
|
// Check if Injection is a tuple [serviceName, expression]
|
|
35
37
|
if (Array.isArray(Injection) && Injection.length === 2) {
|
|
36
38
|
const [name, tupleExpression] = Injection;
|
|
37
39
|
// Check Name type, it can be a Class or String
|
|
38
40
|
dependencyName = typeof name === 'string' ? name : getTypedMetadata(ComponentConstants.NameKey, name);
|
|
41
|
+
if (typeof name !== 'string') {
|
|
42
|
+
dependencyClass = name;
|
|
43
|
+
}
|
|
39
44
|
resolvedExpression = tupleExpression;
|
|
40
45
|
}
|
|
41
46
|
else if (typeof Injection === 'string') {
|
|
@@ -44,6 +49,8 @@ export const Inject = (Injection, expression) => {
|
|
|
44
49
|
else {
|
|
45
50
|
// Injection is a Class
|
|
46
51
|
dependencyName = getTypedMetadata(ComponentConstants.NameKey, Injection);
|
|
52
|
+
// The `length === 2` guard above stops TS narrowing the tuple out of this branch
|
|
53
|
+
dependencyClass = Injection;
|
|
47
54
|
}
|
|
48
55
|
// Store dependency
|
|
49
56
|
const dependencies = getOwnTypedMetadata(ComponentConstants.DependencyKey, target.constructor) || {};
|
|
@@ -51,6 +58,15 @@ export const Inject = (Injection, expression) => {
|
|
|
51
58
|
dependencies[propertyKey] = dependencyName;
|
|
52
59
|
}
|
|
53
60
|
defineTypedMetadata(ComponentConstants.DependencyKey, dependencies, target.constructor);
|
|
61
|
+
// Store the class reference (class-based injections only) so test utilities can
|
|
62
|
+
// derive the real method shape without instantiating the dependency
|
|
63
|
+
if (dependencyClass) {
|
|
64
|
+
const dependencyClasses = getOwnTypedMetadata(ComponentConstants.DependencyClassKey, target.constructor) || {};
|
|
65
|
+
if (!dependencyClasses[propertyKey]) {
|
|
66
|
+
dependencyClasses[propertyKey] = dependencyClass;
|
|
67
|
+
}
|
|
68
|
+
defineTypedMetadata(ComponentConstants.DependencyClassKey, dependencyClasses, target.constructor);
|
|
69
|
+
}
|
|
54
70
|
// Store expression if provided
|
|
55
71
|
if (resolvedExpression) {
|
|
56
72
|
const expressions = getOwnTypedMetadata(ComponentConstants.ExpressionKey, target.constructor) || {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Inject.js","sourceRoot":"","sources":["../../../../../lib/ioc/component/decorators/Inject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAE1G;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,SAAkF,EAClF,UAAwC,EACrB,EAAE;IACrB,OAAO,CAAC,MAAc,EAAE,WAAmB,EAAQ,EAAE;QACnD,IAAI,cAAsB,CAAC;QAC3B,IAAI,kBAAkB,GAA8C,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Inject.js","sourceRoot":"","sources":["../../../../../lib/ioc/component/decorators/Inject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAE1G;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,SAAkF,EAClF,UAAwC,EACrB,EAAE;IACrB,OAAO,CAAC,MAAc,EAAE,WAAmB,EAAQ,EAAE;QACnD,IAAI,cAAsB,CAAC;QAC3B,IAAI,kBAAkB,GAA8C,UAAU,CAAC;QAC/E,oFAAoF;QACpF,IAAI,eAAkC,CAAC;QAEvC,0DAA0D;QAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,SAAS,CAAC;YAE1C,+CAA+C;YAC/C,cAAc,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAE9G,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,eAAe,GAAG,IAAI,CAAC;YACzB,CAAC;YAED,kBAAkB,GAAG,eAAe,CAAC;QACvC,CAAC;aAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YACzC,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,uBAAuB;YACvB,cAAc,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACjF,iFAAiF;YACjF,eAAe,GAAG,SAAkB,CAAC;QACvC,CAAC;QAED,mBAAmB;QACnB,MAAM,YAAY,GAChB,mBAAmB,CAAe,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAEhG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,YAAY,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC;QAC7C,CAAC;QAED,mBAAmB,CAAe,kBAAkB,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAEtG,gFAAgF;QAChF,oEAAoE;QACpE,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,iBAAiB,GACrB,mBAAmB,CAAoB,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAE1G,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpC,iBAAiB,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC;YACnD,CAAC;YAED,mBAAmB,CACjB,kBAAkB,CAAC,kBAAkB,EACrC,iBAAiB,EACjB,MAAM,CAAC,WAAW,CACnB,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,WAAW,GACf,mBAAmB,CAAc,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAE/F,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9B,WAAW,CAAC,WAAW,CAAC,GAAG,kBAAkB,CAAC;YAChD,CAAC;YAED,mBAAmB,CAAc,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACtG,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/ioc/component/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/ioc/component/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC"}
|
|
@@ -9,6 +9,7 @@ export declare class ComponentConstants {
|
|
|
9
9
|
static readonly PathKey: unique symbol;
|
|
10
10
|
static readonly InterfaceKey: unique symbol;
|
|
11
11
|
static readonly DependencyKey: unique symbol;
|
|
12
|
+
static readonly DependencyClassKey: unique symbol;
|
|
12
13
|
static readonly SoftDependencyKey: unique symbol;
|
|
13
14
|
static readonly StrategyKey: unique symbol;
|
|
14
15
|
static readonly ExpressionKey: unique symbol;
|
|
@@ -31,4 +32,7 @@ export declare class ComponentConstants {
|
|
|
31
32
|
static readonly PageRoutesKey: unique symbol;
|
|
32
33
|
static readonly EventHandlersKey: unique symbol;
|
|
33
34
|
static readonly EventPrefixKey: unique symbol;
|
|
35
|
+
static readonly MessageHandlersKey: unique symbol;
|
|
36
|
+
static readonly MessagePrefixKey: unique symbol;
|
|
37
|
+
static readonly MessageTransportKey: unique symbol;
|
|
34
38
|
}
|
|
@@ -10,6 +10,7 @@ export class ComponentConstants {
|
|
|
10
10
|
static PathKey = Symbol('component:path');
|
|
11
11
|
static InterfaceKey = Symbol('component:interface');
|
|
12
12
|
static DependencyKey = Symbol('component:dependency');
|
|
13
|
+
static DependencyClassKey = Symbol('component:dependencyClass');
|
|
13
14
|
static SoftDependencyKey = Symbol('component:softDependency');
|
|
14
15
|
static StrategyKey = Symbol('component:strategy');
|
|
15
16
|
static ExpressionKey = Symbol('component:expression');
|
|
@@ -39,5 +40,9 @@ export class ComponentConstants {
|
|
|
39
40
|
// Event specific
|
|
40
41
|
static EventHandlersKey = Symbol('event:handlers');
|
|
41
42
|
static EventPrefixKey = Symbol('event:prefix');
|
|
43
|
+
// Microservice specific
|
|
44
|
+
static MessageHandlersKey = Symbol('microservice:handlers');
|
|
45
|
+
static MessagePrefixKey = Symbol('microservice:prefix');
|
|
46
|
+
static MessageTransportKey = Symbol('microservice:transport');
|
|
42
47
|
}
|
|
43
48
|
//# sourceMappingURL=ComponentConstants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentConstants.js","sourceRoot":"","sources":["../../../../lib/ioc/constants/ComponentConstants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAC7B,wDAAwD;IACjD,MAAM,CAAU,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEnD,MAAM,CAAU,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEnD,MAAM,CAAU,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAErD,MAAM,CAAU,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEnD,MAAM,CAAU,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAE7D,MAAM,CAAU,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAE/D,MAAM,CAAU,iBAAiB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAEvE,MAAM,CAAU,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAE3D,MAAM,CAAU,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAE/D,MAAM,CAAU,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAErE,MAAM,CAAU,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAE3D,MAAM,CAAU,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAE7D,MAAM,CAAU,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE1D,sBAAsB;IACf,MAAM,CAAU,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAElE,MAAM,CAAU,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAE5E,MAAM,CAAU,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAE7D,sBAAsB;IACf,MAAM,CAAU,cAAc,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAElE,MAAM,CAAU,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAErE,iBAAiB;IACV,MAAM,CAAU,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IAEnD,MAAM,CAAU,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAEpD,MAAM,CAAU,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAElE,MAAM,CAAU,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAErE,qBAAqB;IACd,MAAM,CAAU,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,CAAU,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAEjF,wBAAwB;IACjB,MAAM,CAAU,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEvE,8BAA8B;IACvB,MAAM,CAAU,aAAa,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;IAE/E,iBAAiB;IACV,MAAM,CAAU,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,CAAU,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ComponentConstants.js","sourceRoot":"","sources":["../../../../lib/ioc/constants/ComponentConstants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAC7B,wDAAwD;IACjD,MAAM,CAAU,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEnD,MAAM,CAAU,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEnD,MAAM,CAAU,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAErD,MAAM,CAAU,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEnD,MAAM,CAAU,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAE7D,MAAM,CAAU,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAE/D,MAAM,CAAU,kBAAkB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAEzE,MAAM,CAAU,iBAAiB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAEvE,MAAM,CAAU,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAE3D,MAAM,CAAU,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAE/D,MAAM,CAAU,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAErE,MAAM,CAAU,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAE3D,MAAM,CAAU,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAE7D,MAAM,CAAU,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE1D,sBAAsB;IACf,MAAM,CAAU,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAElE,MAAM,CAAU,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAE5E,MAAM,CAAU,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAE7D,sBAAsB;IACf,MAAM,CAAU,cAAc,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAElE,MAAM,CAAU,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAErE,iBAAiB;IACV,MAAM,CAAU,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IAEnD,MAAM,CAAU,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAEpD,MAAM,CAAU,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAElE,MAAM,CAAU,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAErE,qBAAqB;IACd,MAAM,CAAU,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,CAAU,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAEjF,wBAAwB;IACjB,MAAM,CAAU,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEvE,8BAA8B;IACvB,MAAM,CAAU,aAAa,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;IAE/E,iBAAiB;IACV,MAAM,CAAU,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,CAAU,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IAE/D,wBAAwB;IACjB,MAAM,CAAU,kBAAkB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAErE,MAAM,CAAU,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAEjE,MAAM,CAAU,mBAAmB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import type { IocConfig } from '../types';
|
|
2
2
|
export declare const getAllFiles: (dirPath: string, arrayOfFiles?: string[]) => string[];
|
|
3
3
|
export declare const readJson: (path: any) => any;
|
|
4
|
+
/**
|
|
5
|
+
* @description Locate and load `asena-config.ts`.
|
|
6
|
+
*
|
|
7
|
+
* The config sits in the project root in every supported layout, so that is checked
|
|
8
|
+
* directly before falling back to a walk. The fallback is also order-dependent - the
|
|
9
|
+
* first match wins and `readdirSync` order is not defined - which is the second reason
|
|
10
|
+
* to prefer the direct hit.
|
|
11
|
+
* @returns {Promise<IocConfig | null>} The config, or null when there is none
|
|
12
|
+
*/
|
|
4
13
|
export declare const readConfigFile: () => Promise<IocConfig | null>;
|