@tsed/di 6.69.3 → 6.71.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/lib/decorators/injectable.d.ts +1 -1
- package/lib/domain/Container.d.ts +3 -3
- package/lib/domain/DIContext.d.ts +8 -7
- package/lib/domain/LocalsContainer.d.ts +1 -1
- package/lib/domain/Provider.d.ts +4 -8
- package/lib/index.d.ts +0 -3
- package/lib/index.js +73 -273
- package/lib/index.js.map +1 -1
- package/lib/index.modern.js +75 -249
- package/lib/index.modern.js.map +1 -1
- package/lib/registries/GlobalProviders.d.ts +2 -5
- package/lib/registries/ProviderRegistry.d.ts +1 -31
- package/package.json +2 -3
- package/lib/utils/cleanGlobPatterns.d.ts +0 -1
- package/lib/utils/importComponents.d.ts +0 -8
- package/lib/utils/importFiles.d.ts +0 -1
- package/lib/utils/importProviders.d.ts +0 -10
|
@@ -18,4 +18,4 @@ import type { IProvider } from "../interfaces";
|
|
|
18
18
|
* @returns {Function}
|
|
19
19
|
* @decorator
|
|
20
20
|
*/
|
|
21
|
-
export declare function Injectable(options?: Partial<IProvider
|
|
21
|
+
export declare function Injectable(options?: Partial<IProvider>): ClassDecorator;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IProvider } from "../interfaces/IProvider";
|
|
2
|
-
import { ProviderType } from "./ProviderType";
|
|
3
|
-
import { TokenProvider } from "../interfaces/TokenProvider";
|
|
1
|
+
import type { IProvider } from "../interfaces/IProvider";
|
|
2
|
+
import type { ProviderType } from "./ProviderType";
|
|
3
|
+
import type { TokenProvider } from "../interfaces/TokenProvider";
|
|
4
4
|
import { LocalsContainer } from "./LocalsContainer";
|
|
5
5
|
import { Provider } from "./Provider";
|
|
6
6
|
export declare class Container extends LocalsContainer<Provider> {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Env } from "@tsed/core";
|
|
1
|
+
import type { Env } from "@tsed/core";
|
|
2
2
|
import { InjectorService } from "../services/InjectorService";
|
|
3
3
|
import { ContextLogger, ContextLoggerOptions } from "./ContextLogger";
|
|
4
4
|
import { LocalsContainer } from "./LocalsContainer";
|
|
@@ -22,6 +22,7 @@ export interface DIContextOptions extends Omit<ContextLoggerOptions, "dateStart"
|
|
|
22
22
|
injector?: InjectorService;
|
|
23
23
|
}
|
|
24
24
|
export declare class DIContext extends Map<any, any> implements ContextMethods {
|
|
25
|
+
#private;
|
|
25
26
|
[x: string]: any;
|
|
26
27
|
/**
|
|
27
28
|
* Request id generated by @@contextMiddleware@@.
|
|
@@ -52,19 +53,19 @@ export declare class DIContext extends Map<any, any> implements ContextMethods {
|
|
|
52
53
|
* Date when request have been handled by the server. @@RequestLogger@@ use this date to log request duration.
|
|
53
54
|
*/
|
|
54
55
|
readonly dateStart: Date;
|
|
55
|
-
/**
|
|
56
|
-
* The request container used by the Ts.ED DI. It contain all services annotated with `@Scope(ProviderScope.REQUEST)`
|
|
57
|
-
*/
|
|
58
|
-
container: LocalsContainer<any>;
|
|
59
56
|
/**
|
|
60
57
|
* Logger attached to the context request.
|
|
61
58
|
*/
|
|
62
59
|
logger: ContextLogger;
|
|
60
|
+
constructor({ id, injector, logger, ignoreLog, ...options }: DIContextOptions);
|
|
61
|
+
/**
|
|
62
|
+
* The request container used by the Ts.ED DI. It contain all services annotated with `@Scope(ProviderScope.REQUEST)`
|
|
63
|
+
*/
|
|
64
|
+
get container(): LocalsContainer;
|
|
63
65
|
/**
|
|
64
66
|
*
|
|
65
67
|
*/
|
|
66
|
-
injector: InjectorService;
|
|
67
|
-
constructor({ id, injector, logger, ignoreLog, ...options }: DIContextOptions);
|
|
68
|
+
get injector(): InjectorService;
|
|
68
69
|
get env(): any;
|
|
69
70
|
destroy(): Promise<void>;
|
|
70
71
|
emit(eventName: string, ...args: any[]): Promise<void>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TokenProvider } from "../interfaces/TokenProvider";
|
|
1
|
+
import type { TokenProvider } from "../interfaces/TokenProvider";
|
|
2
2
|
export declare class LocalsContainer<V = any> extends Map<TokenProvider, V> {
|
|
3
3
|
/**
|
|
4
4
|
* Emit an event to all service. See service [lifecycle hooks](/docs/services.md#lifecycle-hooks).
|
package/lib/domain/Provider.d.ts
CHANGED
|
@@ -3,21 +3,17 @@ import { IProvider, TokenProvider } from "../interfaces";
|
|
|
3
3
|
import { ProviderScope } from "./ProviderScope";
|
|
4
4
|
import { ProviderType } from "./ProviderType";
|
|
5
5
|
export declare class Provider<T = any> implements IProvider<T> {
|
|
6
|
+
#private;
|
|
6
7
|
type: ProviderType | any;
|
|
7
|
-
injectable: boolean;
|
|
8
8
|
instance: T;
|
|
9
9
|
deps: TokenProvider[];
|
|
10
10
|
imports: any[];
|
|
11
11
|
useFactory: Function;
|
|
12
12
|
useAsyncFactory: Function;
|
|
13
13
|
useValue: any;
|
|
14
|
-
|
|
15
|
-
protected _useClass: Type<T>;
|
|
16
|
-
protected _instance: T;
|
|
17
|
-
private _store;
|
|
18
|
-
private _tokenStore;
|
|
14
|
+
_useClass: Type<T>;
|
|
19
15
|
[key: string]: any;
|
|
20
|
-
constructor(token: TokenProvider);
|
|
16
|
+
constructor(token: TokenProvider, options?: Partial<Provider>);
|
|
21
17
|
get token(): any;
|
|
22
18
|
get provide(): TokenProvider;
|
|
23
19
|
set provide(value: TokenProvider);
|
|
@@ -49,6 +45,6 @@ export declare class Provider<T = any> implements IProvider<T> {
|
|
|
49
45
|
set configuration(configuration: Partial<TsED.Configuration>);
|
|
50
46
|
get(key: string): any;
|
|
51
47
|
isAsync(): boolean;
|
|
52
|
-
clone(): Provider
|
|
48
|
+
clone(): Provider;
|
|
53
49
|
toString(): string;
|
|
54
50
|
}
|
package/lib/index.d.ts
CHANGED
|
@@ -11,9 +11,6 @@ export * from "./services/DITest";
|
|
|
11
11
|
export * from "./errors/InjectionError";
|
|
12
12
|
export * from "./errors/UndefinedTokenError";
|
|
13
13
|
export * from "./utils/createContainer";
|
|
14
|
-
export * from "./utils/importFiles";
|
|
15
|
-
export * from "./utils/importComponents";
|
|
16
14
|
export * from "./utils/getConfiguration";
|
|
17
15
|
export * from "./utils/getConfiguration";
|
|
18
|
-
export * from "./utils/importProviders";
|
|
19
16
|
export * from "./utils/setLoggerLevel";
|
package/lib/index.js
CHANGED
|
@@ -1,34 +1,11 @@
|
|
|
1
1
|
var core = require('@tsed/core');
|
|
2
|
-
var tslib = require('tslib');
|
|
3
2
|
var logger = require('@tsed/logger');
|
|
3
|
+
var tslib = require('tslib');
|
|
4
4
|
var chalk = require('chalk');
|
|
5
|
-
var globby = require('globby');
|
|
6
|
-
var path = require('path');
|
|
7
5
|
|
|
8
6
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
7
|
|
|
10
|
-
function _interopNamespace(e) {
|
|
11
|
-
if (e && e.__esModule) return e;
|
|
12
|
-
var n = Object.create(null);
|
|
13
|
-
if (e) {
|
|
14
|
-
Object.keys(e).forEach(function (k) {
|
|
15
|
-
if (k !== 'default') {
|
|
16
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
get: function () {
|
|
20
|
-
return e[k];
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
n['default'] = e;
|
|
27
|
-
return n;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
8
|
var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
|
|
31
|
-
var globby__default = /*#__PURE__*/_interopDefaultLegacy(globby);
|
|
32
9
|
|
|
33
10
|
const INJECTABLE_PROP = "DI:INJECTABLE_PROP";
|
|
34
11
|
const DI_PARAMS = "DI:PARAMS";
|
|
@@ -102,26 +79,44 @@ exports.ProviderType = void 0;
|
|
|
102
79
|
ProviderType["MIDDLEWARE"] = "middleware";
|
|
103
80
|
})(exports.ProviderType || (exports.ProviderType = {}));
|
|
104
81
|
|
|
82
|
+
var _provide = /*#__PURE__*/_classPrivateFieldLooseKey("provide");
|
|
83
|
+
|
|
84
|
+
var _store = /*#__PURE__*/_classPrivateFieldLooseKey("store");
|
|
85
|
+
|
|
86
|
+
var _tokenStore = /*#__PURE__*/_classPrivateFieldLooseKey("tokenStore");
|
|
87
|
+
|
|
105
88
|
class Provider {
|
|
106
|
-
constructor(token) {
|
|
89
|
+
constructor(token, options = {}) {
|
|
90
|
+
Object.defineProperty(this, _provide, {
|
|
91
|
+
writable: true,
|
|
92
|
+
value: void 0
|
|
93
|
+
});
|
|
94
|
+
Object.defineProperty(this, _store, {
|
|
95
|
+
writable: true,
|
|
96
|
+
value: void 0
|
|
97
|
+
});
|
|
98
|
+
Object.defineProperty(this, _tokenStore, {
|
|
99
|
+
writable: true,
|
|
100
|
+
value: void 0
|
|
101
|
+
});
|
|
107
102
|
this.type = exports.ProviderType.PROVIDER;
|
|
108
|
-
this.injectable = true;
|
|
109
103
|
this.provide = token;
|
|
110
104
|
this.useClass = token;
|
|
105
|
+
Object.assign(this, options);
|
|
111
106
|
}
|
|
112
107
|
|
|
113
108
|
get token() {
|
|
114
|
-
return this
|
|
109
|
+
return _classPrivateFieldLooseBase(this, _provide)[_provide];
|
|
115
110
|
}
|
|
116
111
|
|
|
117
112
|
get provide() {
|
|
118
|
-
return this
|
|
113
|
+
return _classPrivateFieldLooseBase(this, _provide)[_provide];
|
|
119
114
|
}
|
|
120
115
|
|
|
121
116
|
set provide(value) {
|
|
122
117
|
if (value) {
|
|
123
|
-
this
|
|
124
|
-
this
|
|
118
|
+
_classPrivateFieldLooseBase(this, _provide)[_provide] = core.getClassOrSymbol(value);
|
|
119
|
+
_classPrivateFieldLooseBase(this, _tokenStore)[_tokenStore] = _classPrivateFieldLooseBase(this, _store)[_store] = core.Store.from(value);
|
|
125
120
|
}
|
|
126
121
|
}
|
|
127
122
|
|
|
@@ -137,7 +132,7 @@ class Provider {
|
|
|
137
132
|
set useClass(value) {
|
|
138
133
|
if (core.isClass(value)) {
|
|
139
134
|
this._useClass = core.classOf(value);
|
|
140
|
-
this
|
|
135
|
+
_classPrivateFieldLooseBase(this, _store)[_store] = core.Store.from(value);
|
|
141
136
|
}
|
|
142
137
|
}
|
|
143
138
|
|
|
@@ -150,7 +145,7 @@ class Provider {
|
|
|
150
145
|
}
|
|
151
146
|
|
|
152
147
|
get store() {
|
|
153
|
-
return this
|
|
148
|
+
return _classPrivateFieldLooseBase(this, _store)[_store];
|
|
154
149
|
}
|
|
155
150
|
/**
|
|
156
151
|
* Get the scope of the provider.
|
|
@@ -189,7 +184,7 @@ class Provider {
|
|
|
189
184
|
}
|
|
190
185
|
|
|
191
186
|
get(key) {
|
|
192
|
-
return this.store.get(key) || this
|
|
187
|
+
return this.store.get(key) || _classPrivateFieldLooseBase(this, _tokenStore)[_tokenStore].get(key);
|
|
193
188
|
}
|
|
194
189
|
|
|
195
190
|
isAsync() {
|
|
@@ -197,13 +192,7 @@ class Provider {
|
|
|
197
192
|
}
|
|
198
193
|
|
|
199
194
|
clone() {
|
|
200
|
-
|
|
201
|
-
core.getEnumerableKeys(this).forEach(key => {
|
|
202
|
-
if (this[key] !== undefined) {
|
|
203
|
-
provider[key] = this[key];
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
return provider;
|
|
195
|
+
return new (core.classOf(this))(_classPrivateFieldLooseBase(this, _provide)[_provide], this);
|
|
207
196
|
}
|
|
208
197
|
|
|
209
198
|
toString() {
|
|
@@ -212,38 +201,6 @@ class Provider {
|
|
|
212
201
|
|
|
213
202
|
}
|
|
214
203
|
|
|
215
|
-
tslib.__decorate([core.Enumerable(), tslib.__metadata("design:type", Object)], Provider.prototype, "type", void 0);
|
|
216
|
-
|
|
217
|
-
tslib.__decorate([core.Enumerable(), tslib.__metadata("design:type", Boolean)], Provider.prototype, "injectable", void 0);
|
|
218
|
-
|
|
219
|
-
tslib.__decorate([core.Enumerable(), tslib.__metadata("design:type", Object)], Provider.prototype, "instance", void 0);
|
|
220
|
-
|
|
221
|
-
tslib.__decorate([core.Enumerable(), tslib.__metadata("design:type", Array)], Provider.prototype, "deps", void 0);
|
|
222
|
-
|
|
223
|
-
tslib.__decorate([core.Enumerable(), tslib.__metadata("design:type", Array)], Provider.prototype, "imports", void 0);
|
|
224
|
-
|
|
225
|
-
tslib.__decorate([core.Enumerable(), tslib.__metadata("design:type", Function)], Provider.prototype, "useFactory", void 0);
|
|
226
|
-
|
|
227
|
-
tslib.__decorate([core.Enumerable(), tslib.__metadata("design:type", Function)], Provider.prototype, "useAsyncFactory", void 0);
|
|
228
|
-
|
|
229
|
-
tslib.__decorate([core.Enumerable(), tslib.__metadata("design:type", Object)], Provider.prototype, "useValue", void 0);
|
|
230
|
-
|
|
231
|
-
tslib.__decorate([core.NotEnumerable(), tslib.__metadata("design:type", Object)], Provider.prototype, "_provide", void 0);
|
|
232
|
-
|
|
233
|
-
tslib.__decorate([core.NotEnumerable(), tslib.__metadata("design:type", core.Type)], Provider.prototype, "_useClass", void 0);
|
|
234
|
-
|
|
235
|
-
tslib.__decorate([core.NotEnumerable(), tslib.__metadata("design:type", Object)], Provider.prototype, "_instance", void 0);
|
|
236
|
-
|
|
237
|
-
tslib.__decorate([core.NotEnumerable(), tslib.__metadata("design:type", core.Store)], Provider.prototype, "_store", void 0);
|
|
238
|
-
|
|
239
|
-
tslib.__decorate([core.NotEnumerable(), tslib.__metadata("design:type", core.Store)], Provider.prototype, "_tokenStore", void 0);
|
|
240
|
-
|
|
241
|
-
tslib.__decorate([core.Enumerable(), tslib.__metadata("design:type", core.Type), tslib.__metadata("design:paramtypes", [core.Type])], Provider.prototype, "useClass", null);
|
|
242
|
-
|
|
243
|
-
tslib.__decorate([core.Enumerable(), tslib.__metadata("design:type", String), tslib.__metadata("design:paramtypes", [String])], Provider.prototype, "scope", null);
|
|
244
|
-
|
|
245
|
-
tslib.__decorate([core.Enumerable(), tslib.__metadata("design:type", Object), tslib.__metadata("design:paramtypes", [Object])], Provider.prototype, "configuration", null);
|
|
246
|
-
|
|
247
204
|
var _settings = /*#__PURE__*/_classPrivateFieldLooseKey("settings");
|
|
248
205
|
|
|
249
206
|
class GlobalProviderRegistry extends Map {
|
|
@@ -310,9 +267,7 @@ class GlobalProviderRegistry extends Map {
|
|
|
310
267
|
return super.delete(core.getClassOrSymbol(key));
|
|
311
268
|
}
|
|
312
269
|
|
|
313
|
-
createRegistry(type, model, options = {
|
|
314
|
-
injectable: true
|
|
315
|
-
}) {
|
|
270
|
+
createRegistry(type, model, options = {}) {
|
|
316
271
|
const defaultOptions = this.getRegistrySettings(type);
|
|
317
272
|
options = Object.assign(defaultOptions, _extends({}, options, {
|
|
318
273
|
model
|
|
@@ -323,6 +278,14 @@ class GlobalProviderRegistry extends Map {
|
|
|
323
278
|
return this;
|
|
324
279
|
}
|
|
325
280
|
|
|
281
|
+
onInvoke(provider, locals, deps) {
|
|
282
|
+
const settings = _classPrivateFieldLooseBase(this, _settings)[_settings].get(provider.type);
|
|
283
|
+
|
|
284
|
+
if (settings != null && settings.onInvoke) {
|
|
285
|
+
settings.onInvoke(provider, locals, deps);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
326
289
|
getRegistrySettings(target) {
|
|
327
290
|
let type = "provider";
|
|
328
291
|
|
|
@@ -337,13 +300,13 @@ class GlobalProviderRegistry extends Map {
|
|
|
337
300
|
}
|
|
338
301
|
|
|
339
302
|
return _classPrivateFieldLooseBase(this, _settings)[_settings].get(type) || {
|
|
340
|
-
model: Provider
|
|
341
|
-
injectable: true
|
|
303
|
+
model: Provider
|
|
342
304
|
};
|
|
343
305
|
}
|
|
344
306
|
|
|
345
307
|
createRegisterFn(type) {
|
|
346
308
|
return (provider, instance) => {
|
|
309
|
+
// istanbul ignore next
|
|
347
310
|
if (!provider.provide) {
|
|
348
311
|
provider = {
|
|
349
312
|
provide: provider
|
|
@@ -358,15 +321,6 @@ class GlobalProviderRegistry extends Map {
|
|
|
358
321
|
this.merge(provider.provide, provider);
|
|
359
322
|
};
|
|
360
323
|
}
|
|
361
|
-
/**
|
|
362
|
-
* @deprecated
|
|
363
|
-
*/
|
|
364
|
-
// istanbul ignore next
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
getRegistry(target) {
|
|
368
|
-
return this;
|
|
369
|
-
}
|
|
370
324
|
/**
|
|
371
325
|
*
|
|
372
326
|
* @param key
|
|
@@ -696,6 +650,11 @@ class ContextLogger {
|
|
|
696
650
|
}
|
|
697
651
|
|
|
698
652
|
const _excluded$1 = ["id", "injector", "logger", "ignoreLog"];
|
|
653
|
+
|
|
654
|
+
var _container = /*#__PURE__*/_classPrivateFieldLooseKey("container");
|
|
655
|
+
|
|
656
|
+
var _injector = /*#__PURE__*/_classPrivateFieldLooseKey("injector");
|
|
657
|
+
|
|
699
658
|
class DIContext extends Map {
|
|
700
659
|
constructor(_ref) {
|
|
701
660
|
let {
|
|
@@ -711,14 +670,18 @@ class DIContext extends Map {
|
|
|
711
670
|
* Date when request have been handled by the server. @@RequestLogger@@ use this date to log request duration.
|
|
712
671
|
*/
|
|
713
672
|
|
|
673
|
+
Object.defineProperty(this, _container, {
|
|
674
|
+
writable: true,
|
|
675
|
+
value: void 0
|
|
676
|
+
});
|
|
677
|
+
Object.defineProperty(this, _injector, {
|
|
678
|
+
writable: true,
|
|
679
|
+
value: void 0
|
|
680
|
+
});
|
|
714
681
|
this.dateStart = new Date();
|
|
715
|
-
|
|
716
|
-
* The request container used by the Ts.ED DI. It contain all services annotated with `@Scope(ProviderScope.REQUEST)`
|
|
717
|
-
*/
|
|
718
|
-
|
|
719
|
-
this.container = new LocalsContainer();
|
|
682
|
+
_classPrivateFieldLooseBase(this, _container)[_container] = new LocalsContainer();
|
|
720
683
|
this.id = id;
|
|
721
|
-
injector && (this
|
|
684
|
+
injector && (_classPrivateFieldLooseBase(this, _injector)[_injector] = injector);
|
|
722
685
|
this.logger = new ContextLogger(logger, _extends({}, options, {
|
|
723
686
|
dateStart: this.dateStart,
|
|
724
687
|
id,
|
|
@@ -726,6 +689,21 @@ class DIContext extends Map {
|
|
|
726
689
|
}));
|
|
727
690
|
}
|
|
728
691
|
|
|
692
|
+
/**
|
|
693
|
+
* The request container used by the Ts.ED DI. It contain all services annotated with `@Scope(ProviderScope.REQUEST)`
|
|
694
|
+
*/
|
|
695
|
+
get container() {
|
|
696
|
+
return _classPrivateFieldLooseBase(this, _container)[_container];
|
|
697
|
+
}
|
|
698
|
+
/**
|
|
699
|
+
*
|
|
700
|
+
*/
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
get injector() {
|
|
704
|
+
return _classPrivateFieldLooseBase(this, _injector)[_injector];
|
|
705
|
+
}
|
|
706
|
+
|
|
729
707
|
get env() {
|
|
730
708
|
return this.injector.settings.env;
|
|
731
709
|
}
|
|
@@ -734,11 +712,7 @@ class DIContext extends Map {
|
|
|
734
712
|
await this.container.destroy();
|
|
735
713
|
this.logger.destroy(); // @ts-ignore
|
|
736
714
|
|
|
737
|
-
delete this.
|
|
738
|
-
|
|
739
|
-
delete this.logger; // @ts-ignore
|
|
740
|
-
|
|
741
|
-
delete this.injector;
|
|
715
|
+
delete this.logger;
|
|
742
716
|
}
|
|
743
717
|
|
|
744
718
|
async emit(eventName, ...args) {
|
|
@@ -764,9 +738,7 @@ function Scope(scope = exports.ProviderScope.REQUEST) {
|
|
|
764
738
|
*
|
|
765
739
|
*/
|
|
766
740
|
|
|
767
|
-
GlobalProviders.createRegistry(exports.ProviderType.CONTROLLER, Provider
|
|
768
|
-
injectable: false
|
|
769
|
-
});
|
|
741
|
+
GlobalProviders.createRegistry(exports.ProviderType.CONTROLLER, Provider);
|
|
770
742
|
/**
|
|
771
743
|
* Register a provider configuration.
|
|
772
744
|
* @param {IProvider<any>} provider
|
|
@@ -881,37 +853,6 @@ const registerValue = (provider, value) => {
|
|
|
881
853
|
});
|
|
882
854
|
GlobalProviders.merge(provider.provide, provider);
|
|
883
855
|
};
|
|
884
|
-
/**
|
|
885
|
-
* Add a new service in the `ProviderRegistry`. This service will be built when `InjectorService` will be loaded.
|
|
886
|
-
*
|
|
887
|
-
* #### Example
|
|
888
|
-
*
|
|
889
|
-
* ```typescript
|
|
890
|
-
* import {registerService, InjectorService} from "@tsed/di";
|
|
891
|
-
*
|
|
892
|
-
* export default class MyFooService {
|
|
893
|
-
* constructor(){}
|
|
894
|
-
* getFoo() {
|
|
895
|
-
* return "test";
|
|
896
|
-
* }
|
|
897
|
-
* }
|
|
898
|
-
*
|
|
899
|
-
* registerService({provide: MyFooService});
|
|
900
|
-
* // or
|
|
901
|
-
* registerService(MyFooService);
|
|
902
|
-
*
|
|
903
|
-
* const injector = new InjectorService();
|
|
904
|
-
* injector.load();
|
|
905
|
-
*
|
|
906
|
-
* const myFooService = injector.get<MyFooService>(MyFooService);
|
|
907
|
-
* myFooService.getFoo(); // test
|
|
908
|
-
* ```
|
|
909
|
-
*
|
|
910
|
-
* @param provider Provider configuration.
|
|
911
|
-
* @deprecated Since 2021-05-15. Use registerProvider instead.
|
|
912
|
-
*/
|
|
913
|
-
|
|
914
|
-
const registerService = GlobalProviders.createRegisterFn(exports.ProviderType.SERVICE);
|
|
915
856
|
/**
|
|
916
857
|
* Add a new controller in the `ProviderRegistry`. This controller will be built when `InjectorService` will be loaded.
|
|
917
858
|
*
|
|
@@ -2100,17 +2041,7 @@ exports.InjectorService = InjectorService_1 = class InjectorService extends Cont
|
|
|
2100
2041
|
} = this.mapInvokeOptions(target, locals, options);
|
|
2101
2042
|
|
|
2102
2043
|
if (provider) {
|
|
2103
|
-
|
|
2104
|
-
throw new InjectionError(token, `${core.nameOf(token)} ${provider.type} is not injectable to another provider`);
|
|
2105
|
-
}
|
|
2106
|
-
|
|
2107
|
-
const {
|
|
2108
|
-
onInvoke
|
|
2109
|
-
} = GlobalProviders.getRegistrySettings(target);
|
|
2110
|
-
|
|
2111
|
-
if (onInvoke) {
|
|
2112
|
-
onInvoke(provider, locals, deps);
|
|
2113
|
-
}
|
|
2044
|
+
GlobalProviders.onInvoke(provider, locals, deps);
|
|
2114
2045
|
}
|
|
2115
2046
|
|
|
2116
2047
|
let instance;
|
|
@@ -2353,103 +2284,6 @@ class DITest {
|
|
|
2353
2284
|
}
|
|
2354
2285
|
DITest._injector = null;
|
|
2355
2286
|
|
|
2356
|
-
function isTsEnv() {
|
|
2357
|
-
return require && require.extensions && require.extensions[".ts"] || process.env["TS_TEST"] || process.env.JEST_WORKER_ID !== undefined || process.env.NODE_ENV === "test";
|
|
2358
|
-
}
|
|
2359
|
-
|
|
2360
|
-
function mapExcludes(excludes) {
|
|
2361
|
-
return excludes.map(s => `!${s.replace(/!/gi, "")}`);
|
|
2362
|
-
}
|
|
2363
|
-
|
|
2364
|
-
function mapExtensions(file) {
|
|
2365
|
-
if (!isTsEnv()) {
|
|
2366
|
-
file = file.replace(/\.ts$/i, ".js").replace(/{\.ts,\.js}$/i, ".js");
|
|
2367
|
-
}
|
|
2368
|
-
|
|
2369
|
-
return file;
|
|
2370
|
-
}
|
|
2371
|
-
|
|
2372
|
-
function cleanGlobPatterns(files, excludes) {
|
|
2373
|
-
return [].concat(files).map(s => path.resolve(s)).concat(mapExcludes(excludes)).map(mapExtensions).map(s => core.normalizePath(s));
|
|
2374
|
-
}
|
|
2375
|
-
|
|
2376
|
-
async function importFiles(patterns, exclude) {
|
|
2377
|
-
const files = await globby__default['default'](cleanGlobPatterns(patterns, exclude));
|
|
2378
|
-
const symbols = [];
|
|
2379
|
-
|
|
2380
|
-
for (const file of files) {
|
|
2381
|
-
if (!file.endsWith(".d.ts")) {
|
|
2382
|
-
// prevent .d.ts import if the global pattern isn't correctly configured
|
|
2383
|
-
try {
|
|
2384
|
-
const exports = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(file)); });
|
|
2385
|
-
Object.keys(exports).forEach(key => symbols.push(exports[key]));
|
|
2386
|
-
} catch (er) {
|
|
2387
|
-
// istanbul ignore next
|
|
2388
|
-
console.error(er); // istanbul ignore next
|
|
2389
|
-
|
|
2390
|
-
process.exit(1);
|
|
2391
|
-
}
|
|
2392
|
-
}
|
|
2393
|
-
}
|
|
2394
|
-
|
|
2395
|
-
return symbols;
|
|
2396
|
-
}
|
|
2397
|
-
|
|
2398
|
-
async function resolveSymbols(item, excludes) {
|
|
2399
|
-
if (core.isClass(item)) {
|
|
2400
|
-
return [item];
|
|
2401
|
-
}
|
|
2402
|
-
/* istanbul ignore else */
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
if (!process.env.WEBPACK) {
|
|
2406
|
-
return importFiles(item, excludes);
|
|
2407
|
-
}
|
|
2408
|
-
/* istanbul ignore next */
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
return [];
|
|
2412
|
-
}
|
|
2413
|
-
|
|
2414
|
-
function mapConfiguration(config) {
|
|
2415
|
-
if (core.isArray(config)) {
|
|
2416
|
-
return config.map(value => {
|
|
2417
|
-
return {
|
|
2418
|
-
values: [].concat(value)
|
|
2419
|
-
};
|
|
2420
|
-
});
|
|
2421
|
-
}
|
|
2422
|
-
|
|
2423
|
-
return Object.keys(config).reduce((list, key) => {
|
|
2424
|
-
list.push({
|
|
2425
|
-
endpoint: key,
|
|
2426
|
-
values: [].concat(config[key])
|
|
2427
|
-
});
|
|
2428
|
-
return list;
|
|
2429
|
-
}, []);
|
|
2430
|
-
}
|
|
2431
|
-
async function importComponents(config, excludes) {
|
|
2432
|
-
if (!config) {
|
|
2433
|
-
return [];
|
|
2434
|
-
}
|
|
2435
|
-
|
|
2436
|
-
config = mapConfiguration(config);
|
|
2437
|
-
const promises = [];
|
|
2438
|
-
|
|
2439
|
-
for (const option of config) {
|
|
2440
|
-
promises.push(...option.values.map(async value => {
|
|
2441
|
-
const symbols = await resolveSymbols(value, excludes);
|
|
2442
|
-
return symbols.filter(core.isClass).map(symbol => ({
|
|
2443
|
-
token: symbol,
|
|
2444
|
-
route: option.endpoint
|
|
2445
|
-
}));
|
|
2446
|
-
}));
|
|
2447
|
-
}
|
|
2448
|
-
|
|
2449
|
-
const result = await Promise.all(promises);
|
|
2450
|
-
return result.flat();
|
|
2451
|
-
}
|
|
2452
|
-
|
|
2453
2287
|
function getConfiguration(module, configuration = {}) {
|
|
2454
2288
|
const store = core.Store.from(module).get("configuration") || {};
|
|
2455
2289
|
|
|
@@ -2466,35 +2300,6 @@ function getConfiguration(module, configuration = {}) {
|
|
|
2466
2300
|
return config;
|
|
2467
2301
|
}
|
|
2468
2302
|
|
|
2469
|
-
async function recursiveImports(providers, settings, properties) {
|
|
2470
|
-
const {
|
|
2471
|
-
exclude = []
|
|
2472
|
-
} = settings;
|
|
2473
|
-
const promises = providers.map(({
|
|
2474
|
-
token
|
|
2475
|
-
}) => GlobalProviders.get(token)).filter(provider => (provider == null ? void 0 : provider.type) === exports.ProviderType.MODULE && provider.configuration).map(provider => importProviders(_extends({
|
|
2476
|
-
exclude
|
|
2477
|
-
}, provider.configuration), properties));
|
|
2478
|
-
return (await Promise.all(promises)).flat();
|
|
2479
|
-
}
|
|
2480
|
-
/**
|
|
2481
|
-
* Import providers from given patterns.
|
|
2482
|
-
*
|
|
2483
|
-
* @param settings
|
|
2484
|
-
* @param properties
|
|
2485
|
-
*/
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
async function importProviders(settings, properties = ["imports"]) {
|
|
2489
|
-
const {
|
|
2490
|
-
exclude = []
|
|
2491
|
-
} = settings;
|
|
2492
|
-
const promises = properties.map(key => importComponents(settings[key], exclude));
|
|
2493
|
-
const providers = (await Promise.all(promises)).flat();
|
|
2494
|
-
const children = await recursiveImports(providers, settings, properties);
|
|
2495
|
-
return [...children, ...providers];
|
|
2496
|
-
}
|
|
2497
|
-
|
|
2498
2303
|
exports.Configuration = Configuration;
|
|
2499
2304
|
exports.Constant = Constant;
|
|
2500
2305
|
exports.Container = Container;
|
|
@@ -2524,14 +2329,9 @@ exports.UseOpts = UseOpts;
|
|
|
2524
2329
|
exports.Value = Value;
|
|
2525
2330
|
exports.createContainer = createContainer;
|
|
2526
2331
|
exports.getConfiguration = getConfiguration;
|
|
2527
|
-
exports.importComponents = importComponents;
|
|
2528
|
-
exports.importFiles = importFiles;
|
|
2529
|
-
exports.importProviders = importProviders;
|
|
2530
|
-
exports.mapConfiguration = mapConfiguration;
|
|
2531
2332
|
exports.registerController = registerController;
|
|
2532
2333
|
exports.registerFactory = registerFactory;
|
|
2533
2334
|
exports.registerProvider = registerProvider;
|
|
2534
|
-
exports.registerService = registerService;
|
|
2535
2335
|
exports.registerValue = registerValue;
|
|
2536
2336
|
exports.setLoggerLevel = setLoggerLevel;
|
|
2537
2337
|
//# sourceMappingURL=index.js.map
|