@tsed/di 8.9.5 → 8.10.0-rc.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/lib/browser/chunks/injectable.js +65 -0
- package/lib/browser/chunks/injectable.js.map +1 -0
- package/lib/browser/common/constants/constants.js +9 -0
- package/lib/browser/common/constants/constants.js.map +1 -0
- package/lib/browser/common/decorators/autoInjectable.js +26 -0
- package/lib/browser/common/decorators/autoInjectable.js.map +1 -0
- package/lib/browser/common/decorators/configuration.js +24 -0
- package/lib/browser/common/decorators/configuration.js.map +1 -0
- package/lib/browser/common/decorators/constant.js +27 -0
- package/lib/browser/common/decorators/constant.js.map +1 -0
- package/lib/browser/common/decorators/controller.js +23 -0
- package/lib/browser/common/decorators/controller.js.map +1 -0
- package/lib/browser/common/decorators/inject.js +62 -0
- package/lib/browser/common/decorators/inject.js.map +1 -0
- package/lib/browser/common/decorators/injectable.js +14 -0
- package/lib/browser/common/decorators/injectable.js.map +1 -0
- package/lib/browser/common/decorators/intercept.js +57 -0
- package/lib/browser/common/decorators/intercept.js.map +1 -0
- package/lib/browser/common/decorators/interceptor.js +11 -0
- package/lib/browser/common/decorators/interceptor.js.map +1 -0
- package/lib/browser/common/decorators/lazyInject.js +43 -0
- package/lib/browser/common/decorators/lazyInject.js.map +1 -0
- package/lib/browser/common/decorators/module.js +22 -0
- package/lib/browser/common/decorators/module.js.map +1 -0
- package/lib/browser/common/decorators/opts.js +12 -0
- package/lib/browser/common/decorators/opts.js.map +1 -0
- package/lib/browser/common/decorators/overrideProvider.js +10 -0
- package/lib/browser/common/decorators/overrideProvider.js.map +1 -0
- package/lib/browser/common/decorators/scope.js +9 -0
- package/lib/browser/common/decorators/scope.js.map +1 -0
- package/lib/browser/common/decorators/service.js +8 -0
- package/lib/browser/common/decorators/service.js.map +1 -0
- package/lib/browser/common/decorators/useOpts.js +23 -0
- package/lib/browser/common/decorators/useOpts.js.map +1 -0
- package/lib/browser/common/decorators/value.js +23 -0
- package/lib/browser/common/decorators/value.js.map +1 -0
- package/lib/browser/common/domain/Container.js +64 -0
- package/lib/browser/common/domain/Container.js.map +1 -0
- package/lib/browser/common/domain/ControllerProvider.js +35 -0
- package/lib/browser/common/domain/ControllerProvider.js.map +1 -0
- package/lib/browser/common/domain/InjectablePropertyType.js +5 -0
- package/lib/browser/common/domain/InjectablePropertyType.js.map +1 -0
- package/lib/browser/common/domain/LocalsContainer.js +13 -0
- package/lib/browser/common/domain/LocalsContainer.js.map +1 -0
- package/lib/browser/common/domain/Provider.js +144 -0
- package/lib/browser/common/domain/Provider.js.map +1 -0
- package/lib/browser/common/domain/ProviderScope.js +5 -0
- package/lib/browser/common/domain/ProviderScope.js.map +1 -0
- package/lib/browser/common/domain/ProviderType.js +5 -0
- package/lib/browser/common/domain/ProviderType.js.map +1 -0
- package/lib/browser/common/errors/InjectionError.js +31 -0
- package/lib/browser/common/errors/InjectionError.js.map +1 -0
- package/lib/browser/common/errors/InvalidPropertyTokenError.js +17 -0
- package/lib/browser/common/errors/InvalidPropertyTokenError.js.map +1 -0
- package/lib/browser/common/fn/configuration.js +13 -0
- package/lib/browser/common/fn/configuration.js.map +1 -0
- package/lib/browser/common/fn/constant.js +8 -0
- package/lib/browser/common/fn/constant.js.map +1 -0
- package/lib/browser/common/fn/inject.js +13 -0
- package/lib/browser/common/fn/inject.js.map +1 -0
- package/lib/browser/common/fn/injectMany.js +9 -0
- package/lib/browser/common/fn/injectMany.js.map +1 -0
- package/lib/browser/common/fn/injectable.js +8 -0
- package/lib/browser/common/fn/injectable.js.map +1 -0
- package/lib/browser/common/fn/injector.js +13 -0
- package/lib/browser/common/fn/injector.js.map +1 -0
- package/lib/browser/common/fn/lazyInject.js +23 -0
- package/lib/browser/common/fn/lazyInject.js.map +1 -0
- package/lib/browser/common/fn/localsContainer.js +29 -0
- package/lib/browser/common/fn/localsContainer.js.map +1 -0
- package/lib/browser/common/fn/refValue.js +15 -0
- package/lib/browser/common/fn/refValue.js.map +1 -0
- package/lib/browser/common/index.js +113 -0
- package/lib/browser/common/index.js.map +1 -0
- package/lib/browser/common/registries/GlobalProviders.js +102 -0
- package/lib/browser/common/registries/GlobalProviders.js.map +1 -0
- package/lib/browser/common/registries/ProviderRegistry.js +8 -0
- package/lib/browser/common/registries/ProviderRegistry.js.map +1 -0
- package/lib/browser/common/services/DIConfiguration.js +99 -0
- package/lib/browser/common/services/DIConfiguration.js.map +1 -0
- package/lib/browser/common/services/DILogger.js +8 -0
- package/lib/browser/common/services/DILogger.js.map +1 -0
- package/lib/browser/common/services/InjectorService.js +378 -0
- package/lib/browser/common/services/InjectorService.js.map +1 -0
- package/lib/browser/common/utils/colors.js +5 -0
- package/lib/browser/common/utils/colors.js.map +1 -0
- package/lib/browser/common/utils/createContainer.js +10 -0
- package/lib/browser/common/utils/createContainer.js.map +1 -0
- package/lib/browser/common/utils/discoverHooks.js +17 -0
- package/lib/browser/common/utils/discoverHooks.js.map +1 -0
- package/lib/browser/common/utils/getConfiguration.js +20 -0
- package/lib/browser/common/utils/getConfiguration.js.map +1 -0
- package/lib/browser/common/utils/getConstructorDependencies.js +12 -0
- package/lib/browser/common/utils/getConstructorDependencies.js.map +1 -0
- package/lib/browser/common/utils/providerBuilder.js +8 -0
- package/lib/browser/common/utils/providerBuilder.js.map +1 -0
- package/lib/esm/common/decorators/autoInjectable.js +1 -1
- package/lib/esm/common/decorators/autoInjectable.js.map +1 -1
- package/lib/esm/common/decorators/configuration.js +2 -1
- package/lib/esm/common/decorators/configuration.js.map +1 -1
- package/lib/esm/common/decorators/constant.js +3 -2
- package/lib/esm/common/decorators/constant.js.map +1 -1
- package/lib/esm/common/decorators/controller.js +13 -6
- package/lib/esm/common/decorators/controller.js.map +1 -1
- package/lib/esm/common/decorators/inject.js +6 -1
- package/lib/esm/common/decorators/inject.js.map +1 -1
- package/lib/esm/common/decorators/intercept.js +5 -1
- package/lib/esm/common/decorators/intercept.js.map +1 -1
- package/lib/esm/common/decorators/lazyInject.js +2 -1
- package/lib/esm/common/decorators/lazyInject.js.map +1 -1
- package/lib/esm/common/decorators/module.js +1 -1
- package/lib/esm/common/decorators/module.js.map +1 -1
- package/lib/esm/common/decorators/opts.js +1 -1
- package/lib/esm/common/decorators/opts.js.map +1 -1
- package/lib/esm/common/decorators/scope.js +1 -1
- package/lib/esm/common/decorators/scope.js.map +1 -1
- package/lib/esm/common/decorators/useOpts.js +4 -1
- package/lib/esm/common/decorators/useOpts.js.map +1 -1
- package/lib/esm/common/decorators/value.js +2 -2
- package/lib/esm/common/decorators/value.js.map +1 -1
- package/lib/esm/common/domain/Provider.js +5 -1
- package/lib/esm/common/domain/Provider.js.map +1 -1
- package/lib/esm/common/errors/InjectionError.js +4 -1
- package/lib/esm/common/errors/InjectionError.js.map +1 -1
- package/lib/esm/common/errors/InvalidPropertyTokenError.js +2 -1
- package/lib/esm/common/errors/InvalidPropertyTokenError.js.map +1 -1
- package/lib/esm/common/fn/configuration.js +1 -1
- package/lib/esm/common/fn/configuration.js.map +1 -1
- package/lib/esm/common/fn/lazyInject.js +1 -1
- package/lib/esm/common/fn/lazyInject.js.map +1 -1
- package/lib/esm/common/registries/GlobalProviders.js +1 -1
- package/lib/esm/common/registries/GlobalProviders.js.map +1 -1
- package/lib/esm/common/services/DIConfiguration.js +2 -1
- package/lib/esm/common/services/DIConfiguration.js.map +1 -1
- package/lib/esm/common/services/InjectorService.js +10 -1
- package/lib/esm/common/services/InjectorService.js.map +1 -1
- package/lib/esm/common/utils/discoverHooks.js +1 -1
- package/lib/esm/common/utils/discoverHooks.js.map +1 -1
- package/lib/esm/common/utils/getConfiguration.js +1 -1
- package/lib/esm/common/utils/getConfiguration.js.map +1 -1
- package/lib/esm/common/utils/getConstructorDependencies.js +1 -1
- package/lib/esm/common/utils/getConstructorDependencies.js.map +1 -1
- package/lib/esm/common/utils/providerBuilder.js.map +1 -1
- package/lib/esm/node/decorators/injectContext.js +1 -1
- package/lib/esm/node/decorators/injectContext.js.map +1 -1
- package/lib/esm/node/services/DITest.js +4 -1
- package/lib/esm/node/services/DITest.js.map +1 -1
- package/lib/types/common/decorators/constant.d.ts +1 -1
- package/lib/types/common/decorators/controller.d.ts +1 -1
- package/lib/types/common/decorators/inject.d.ts +1 -1
- package/lib/types/common/decorators/intercept.d.ts +1 -1
- package/lib/types/common/decorators/overrideProvider.d.ts +1 -1
- package/lib/types/common/decorators/value.d.ts +1 -1
- package/lib/types/common/domain/Provider.d.ts +2 -1
- package/lib/types/common/fn/injectable.d.ts +3 -3
- package/lib/types/common/interfaces/RegistrySettings.d.ts +1 -1
- package/lib/types/common/registries/GlobalProviders.d.ts +1 -1
- package/lib/types/common/services/DIConfiguration.d.ts +1 -1
- package/lib/types/common/utils/createContainer.d.ts +1 -1
- package/lib/types/common/utils/discoverHooks.d.ts +1 -1
- package/lib/types/common/utils/getConfiguration.d.ts +1 -1
- package/lib/types/common/utils/providerBuilder.d.ts +2 -1
- package/package.json +17 -19
- package/src/common/decorators/autoInjectable.ts +2 -1
- package/src/common/decorators/configuration.ts +4 -2
- package/src/common/decorators/constant.ts +3 -2
- package/src/common/decorators/controller.ts +18 -10
- package/src/common/decorators/inject.ts +7 -1
- package/src/common/decorators/intercept.ts +8 -1
- package/src/common/decorators/lazyInject.ts +2 -1
- package/src/common/decorators/module.ts +1 -1
- package/src/common/decorators/opts.ts +1 -1
- package/src/common/decorators/overrideProvider.ts +1 -1
- package/src/common/decorators/scope.ts +1 -1
- package/src/common/decorators/useOpts.ts +4 -1
- package/src/common/decorators/value.ts +2 -2
- package/src/common/domain/Provider.ts +6 -1
- package/src/common/errors/InjectionError.ts +4 -1
- package/src/common/errors/InvalidPropertyTokenError.ts +2 -1
- package/src/common/fn/configuration.ts +1 -1
- package/src/common/fn/lazyInject.ts +1 -1
- package/src/common/interfaces/RegistrySettings.ts +1 -1
- package/src/common/registries/GlobalProviders.ts +2 -1
- package/src/common/services/DIConfiguration.ts +3 -1
- package/src/common/services/InjectorService.ts +10 -1
- package/src/common/utils/createContainer.ts +1 -1
- package/src/common/utils/discoverHooks.ts +2 -1
- package/src/common/utils/getConfiguration.ts +2 -1
- package/src/common/utils/getConstructorDependencies.ts +1 -1
- package/src/common/utils/providerBuilder.ts +2 -1
- package/src/node/decorators/injectContext.ts +1 -1
- package/src/node/services/DITest.ts +4 -1
- package/vite.config.mts +45 -0
- package/lib/browser/di.umd.min.js +0 -2
- package/lib/browser/di.umd.min.js.map +0 -1
- package/webpack.config.cjs +0 -8
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { DI_INJECTABLE_PROPS as e, DI_INTERCEPTOR_OPTIONS as t, DI_INVOKE_OPTIONS as n, DI_USE_OPTIONS as p, DI_USE_PARAM_OPTIONS as f } from "./constants/constants.js";
|
|
2
|
+
import { AutoInjectable as m } from "./decorators/autoInjectable.js";
|
|
3
|
+
import { Configuration as a } from "./decorators/configuration.js";
|
|
4
|
+
import { Constant as l, bindConstant as I } from "./decorators/constant.js";
|
|
5
|
+
import { Controller as d } from "./decorators/controller.js";
|
|
6
|
+
import { Inject as C } from "./decorators/inject.js";
|
|
7
|
+
import { Injectable as j } from "./decorators/injectable.js";
|
|
8
|
+
import { Intercept as u, bindIntercept as y, getInterceptorOptions as S } from "./decorators/intercept.js";
|
|
9
|
+
import { Interceptor as _ } from "./decorators/interceptor.js";
|
|
10
|
+
import { LazyInject as E, OptionalLazyInject as b } from "./decorators/lazyInject.js";
|
|
11
|
+
import { Module as D } from "./decorators/module.js";
|
|
12
|
+
import { Opts as R } from "./decorators/opts.js";
|
|
13
|
+
import { OverrideProvider as G } from "./decorators/overrideProvider.js";
|
|
14
|
+
import { Scope as M } from "./decorators/scope.js";
|
|
15
|
+
import { Service as V } from "./decorators/service.js";
|
|
16
|
+
import { UseOpts as B } from "./decorators/useOpts.js";
|
|
17
|
+
import { Value as F, bindValue as H } from "./decorators/value.js";
|
|
18
|
+
import { Container as K } from "./domain/Container.js";
|
|
19
|
+
import { ControllerProvider as w } from "./domain/ControllerProvider.js";
|
|
20
|
+
import { InjectablePropertyType as W } from "./domain/InjectablePropertyType.js";
|
|
21
|
+
import { LocalsContainer as Y } from "./domain/LocalsContainer.js";
|
|
22
|
+
import { Provider as $ } from "./domain/Provider.js";
|
|
23
|
+
import { ProviderScope as or } from "./domain/ProviderScope.js";
|
|
24
|
+
import { ProviderType as tr } from "./domain/ProviderType.js";
|
|
25
|
+
import { InjectionError as pr } from "./errors/InjectionError.js";
|
|
26
|
+
import { InvalidPropertyTokenError as ir } from "./errors/InvalidPropertyTokenError.js";
|
|
27
|
+
import { configuration as xr } from "./fn/configuration.js";
|
|
28
|
+
import { constant as cr } from "./fn/constant.js";
|
|
29
|
+
import { inject as Ir } from "./fn/inject.js";
|
|
30
|
+
import { c as dr, i as Or, a as Cr, p as Pr, r as jr } from "../chunks/injectable.js";
|
|
31
|
+
import { injectMany as ur } from "./fn/injectMany.js";
|
|
32
|
+
import { destroyInjector as Sr, injector as Tr } from "./fn/injector.js";
|
|
33
|
+
import { lazyInject as gr, optionalLazyInject as Er } from "./fn/lazyInject.js";
|
|
34
|
+
import { cleanAllLocalsContainer as Nr, detachLocalsContainer as Dr, invokeOptions as Lr, localsContainer as Rr } from "./fn/localsContainer.js";
|
|
35
|
+
import { refValue as Gr } from "./fn/refValue.js";
|
|
36
|
+
import { GlobalProviderRegistry as Mr, GlobalProviders as Ur } from "./registries/GlobalProviders.js";
|
|
37
|
+
import { CONFIGURATION as kr, DIConfiguration as Br } from "./services/DIConfiguration.js";
|
|
38
|
+
import { LOGGER as Fr } from "./services/DILogger.js";
|
|
39
|
+
import { InjectorService as Jr } from "./services/InjectorService.js";
|
|
40
|
+
import { colors as qr } from "./utils/colors.js";
|
|
41
|
+
import { createContainer as Qr } from "./utils/createContainer.js";
|
|
42
|
+
import { discoverHooks as Xr } from "./utils/discoverHooks.js";
|
|
43
|
+
import { getConfiguration as Zr, mergeMount as $r } from "./utils/getConfiguration.js";
|
|
44
|
+
import { getConstructorDependencies as oo, setConstructorDependencies as eo } from "./utils/getConstructorDependencies.js";
|
|
45
|
+
export {
|
|
46
|
+
m as AutoInjectable,
|
|
47
|
+
kr as CONFIGURATION,
|
|
48
|
+
a as Configuration,
|
|
49
|
+
l as Constant,
|
|
50
|
+
K as Container,
|
|
51
|
+
d as Controller,
|
|
52
|
+
w as ControllerProvider,
|
|
53
|
+
Br as DIConfiguration,
|
|
54
|
+
e as DI_INJECTABLE_PROPS,
|
|
55
|
+
t as DI_INTERCEPTOR_OPTIONS,
|
|
56
|
+
n as DI_INVOKE_OPTIONS,
|
|
57
|
+
p as DI_USE_OPTIONS,
|
|
58
|
+
f as DI_USE_PARAM_OPTIONS,
|
|
59
|
+
Mr as GlobalProviderRegistry,
|
|
60
|
+
Ur as GlobalProviders,
|
|
61
|
+
C as Inject,
|
|
62
|
+
j as Injectable,
|
|
63
|
+
W as InjectablePropertyType,
|
|
64
|
+
pr as InjectionError,
|
|
65
|
+
Jr as InjectorService,
|
|
66
|
+
u as Intercept,
|
|
67
|
+
_ as Interceptor,
|
|
68
|
+
ir as InvalidPropertyTokenError,
|
|
69
|
+
Fr as LOGGER,
|
|
70
|
+
E as LazyInject,
|
|
71
|
+
Y as LocalsContainer,
|
|
72
|
+
D as Module,
|
|
73
|
+
b as OptionalLazyInject,
|
|
74
|
+
R as Opts,
|
|
75
|
+
G as OverrideProvider,
|
|
76
|
+
$ as Provider,
|
|
77
|
+
or as ProviderScope,
|
|
78
|
+
tr as ProviderType,
|
|
79
|
+
M as Scope,
|
|
80
|
+
V as Service,
|
|
81
|
+
B as UseOpts,
|
|
82
|
+
F as Value,
|
|
83
|
+
I as bindConstant,
|
|
84
|
+
y as bindIntercept,
|
|
85
|
+
H as bindValue,
|
|
86
|
+
Nr as cleanAllLocalsContainer,
|
|
87
|
+
qr as colors,
|
|
88
|
+
xr as configuration,
|
|
89
|
+
cr as constant,
|
|
90
|
+
dr as controller,
|
|
91
|
+
Qr as createContainer,
|
|
92
|
+
Sr as destroyInjector,
|
|
93
|
+
Dr as detachLocalsContainer,
|
|
94
|
+
Xr as discoverHooks,
|
|
95
|
+
Zr as getConfiguration,
|
|
96
|
+
oo as getConstructorDependencies,
|
|
97
|
+
S as getInterceptorOptions,
|
|
98
|
+
Ir as inject,
|
|
99
|
+
ur as injectMany,
|
|
100
|
+
Or as injectable,
|
|
101
|
+
Tr as injector,
|
|
102
|
+
Cr as interceptor,
|
|
103
|
+
Lr as invokeOptions,
|
|
104
|
+
gr as lazyInject,
|
|
105
|
+
Rr as localsContainer,
|
|
106
|
+
$r as mergeMount,
|
|
107
|
+
Er as optionalLazyInject,
|
|
108
|
+
Pr as providerBuilder,
|
|
109
|
+
Gr as refValue,
|
|
110
|
+
jr as registerProvider,
|
|
111
|
+
eo as setConstructorDependencies
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
var h = (s) => {
|
|
2
|
+
throw TypeError(s);
|
|
3
|
+
};
|
|
4
|
+
var d = (s, i, e) => i.has(s) || h("Cannot " + e);
|
|
5
|
+
var a = (s, i, e) => (d(s, i, "read from private field"), e ? e.call(s) : i.get(s)), l = (s, i, e) => i.has(s) ? h("Cannot add the same private member more than once") : i instanceof WeakSet ? i.add(s) : i.set(s, e);
|
|
6
|
+
import { getClassOrSymbol as c } from "@tsed/core/utils/getClassOrSymbol.js";
|
|
7
|
+
import { Provider as g } from "../domain/Provider.js";
|
|
8
|
+
import { ProviderType as u } from "../domain/ProviderType.js";
|
|
9
|
+
var o;
|
|
10
|
+
class f extends Map {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
l(this, o, /* @__PURE__ */ new Map());
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The get() method returns a specified element from a Map object.
|
|
17
|
+
* @param key Required. The key of the element to return from the Map object.
|
|
18
|
+
* @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object.
|
|
19
|
+
*/
|
|
20
|
+
get(e) {
|
|
21
|
+
return super.get(c(e));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The has() method returns a boolean indicating whether an element with the specified key exists or not.
|
|
25
|
+
* @param key
|
|
26
|
+
* @returns {boolean}
|
|
27
|
+
*/
|
|
28
|
+
has(e) {
|
|
29
|
+
return super.has(c(e));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The set() method adds or updates an element with a specified key and value to a Map object.
|
|
33
|
+
* @param key Required. The key of the element to add to the Map object.
|
|
34
|
+
* @param metadata Required. The value of the element to add to the Map object.
|
|
35
|
+
*/
|
|
36
|
+
set(e, t) {
|
|
37
|
+
return super.set(c(e), t), this;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
*
|
|
41
|
+
* @param target
|
|
42
|
+
* @param options
|
|
43
|
+
*/
|
|
44
|
+
merge(e, t) {
|
|
45
|
+
if (t.global === !1)
|
|
46
|
+
return m.createProvider(e, t);
|
|
47
|
+
const r = this.createIfNotExists(e, t);
|
|
48
|
+
return Object.keys(t).forEach((n) => {
|
|
49
|
+
r[n] = t[n];
|
|
50
|
+
}), this.set(e, r), r;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The delete() method removes the specified element from a Map object.
|
|
54
|
+
* @param key Required. The key of the element to remove from the Map object.
|
|
55
|
+
* @returns {boolean} Returns true if an element in the Map object existed and has been removed, or false if the element does not exist.
|
|
56
|
+
*/
|
|
57
|
+
delete(e) {
|
|
58
|
+
return super.delete(c(e));
|
|
59
|
+
}
|
|
60
|
+
createRegistry(e, t, r = {}) {
|
|
61
|
+
const n = this.getRegistrySettings(e);
|
|
62
|
+
return r = Object.assign(n, {
|
|
63
|
+
...r,
|
|
64
|
+
model: t
|
|
65
|
+
}), a(this, o).set(e, r), this;
|
|
66
|
+
}
|
|
67
|
+
getRegistrySettings(e) {
|
|
68
|
+
let t = u.PROVIDER;
|
|
69
|
+
if (typeof e == "string")
|
|
70
|
+
t = e;
|
|
71
|
+
else {
|
|
72
|
+
const r = this.get(e);
|
|
73
|
+
r && (t = r.type);
|
|
74
|
+
}
|
|
75
|
+
return a(this, o).get(t) || {
|
|
76
|
+
model: g
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
createProvider(e, t) {
|
|
80
|
+
const r = t.type || u.PROVIDER, { model: n = g } = a(this, o).get(r) || {};
|
|
81
|
+
return new n(e, t);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
*
|
|
85
|
+
* @param key
|
|
86
|
+
* @param options
|
|
87
|
+
*/
|
|
88
|
+
createIfNotExists(e, t) {
|
|
89
|
+
if (!this.has(e)) {
|
|
90
|
+
const r = this.createProvider(e, t);
|
|
91
|
+
this.set(e, r);
|
|
92
|
+
}
|
|
93
|
+
return this.get(e);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
o = new WeakMap();
|
|
97
|
+
const m = new f();
|
|
98
|
+
export {
|
|
99
|
+
f as GlobalProviderRegistry,
|
|
100
|
+
m as GlobalProviders
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=GlobalProviders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobalProviders.js","sources":["../../../../src/common/registries/GlobalProviders.ts"],"sourcesContent":["import {Type} from \"@tsed/core/types/Type.js\";\nimport {getClassOrSymbol} from \"@tsed/core/utils/getClassOrSymbol.js\";\n\nimport {Provider} from \"../domain/Provider.js\";\nimport {ProviderType} from \"../domain/ProviderType.js\";\nimport {ProviderOpts} from \"../interfaces/ProviderOpts.js\";\nimport {RegistrySettings} from \"../interfaces/RegistrySettings.js\";\nimport {TokenProvider} from \"../interfaces/TokenProvider.js\";\n\nexport class GlobalProviderRegistry extends Map<TokenProvider, Provider> {\n #settings: Map<TokenProvider, RegistrySettings> = new Map();\n\n /**\n * The get() method returns a specified element from a Map object.\n * @param key Required. The key of the element to return from the Map object.\n * @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object.\n */\n get(key: TokenProvider): Provider | undefined {\n return super.get(getClassOrSymbol(key));\n }\n\n /**\n * The has() method returns a boolean indicating whether an element with the specified key exists or not.\n * @param key\n * @returns {boolean}\n */\n has(key: TokenProvider): boolean {\n return super.has(getClassOrSymbol(key));\n }\n\n /**\n * The set() method adds or updates an element with a specified key and value to a Map object.\n * @param key Required. The key of the element to add to the Map object.\n * @param metadata Required. The value of the element to add to the Map object.\n */\n set(key: TokenProvider, metadata: Provider): this {\n super.set(getClassOrSymbol(key), metadata);\n\n return this;\n }\n\n /**\n *\n * @param target\n * @param options\n */\n merge(target: TokenProvider, options: Partial<ProviderOpts>) {\n if (options.global === false) {\n return GlobalProviders.createProvider(target, options);\n }\n\n const meta = this.createIfNotExists(target, options);\n\n Object.keys(options).forEach((key) => {\n meta[key] = (options as never)[key];\n });\n\n this.set(target, meta);\n\n return meta;\n }\n\n /**\n * The delete() method removes the specified element from a Map object.\n * @param key Required. The key of the element to remove from the Map object.\n * @returns {boolean} Returns true if an element in the Map object existed and has been removed, or false if the element does not exist.\n */\n delete(key: TokenProvider): boolean {\n return super.delete(getClassOrSymbol(key));\n }\n\n createRegistry(type: string | symbol, model: Type<Provider>, options: Partial<RegistrySettings> = {}) {\n const defaultOptions = this.getRegistrySettings(type);\n\n options = Object.assign(defaultOptions, {\n ...options,\n model\n });\n\n this.#settings.set(type, options);\n\n return this;\n }\n\n getRegistrySettings(target: TokenProvider): RegistrySettings {\n let type: TokenProvider | ProviderType = ProviderType.PROVIDER;\n\n if (typeof target === \"string\") {\n type = target;\n } else {\n const provider = this.get(target);\n if (provider) {\n type = provider.type;\n }\n }\n\n return (\n this.#settings.get(type) || {\n model: Provider\n }\n );\n }\n\n protected createProvider(key: TokenProvider, options: Partial<ProviderOpts<any>>) {\n const type = options.type || ProviderType.PROVIDER;\n const {model = Provider} = this.#settings.get(type) || {};\n\n return new model(key, options);\n }\n\n /**\n *\n * @param key\n * @param options\n */\n protected createIfNotExists(key: TokenProvider, options: Partial<ProviderOpts>): Provider {\n if (!this.has(key)) {\n const item = this.createProvider(key, options);\n\n this.set(key, item);\n }\n\n return this.get(key)!;\n }\n}\n\n/**\n *\n * @type {GlobalProviders}\n */\n// tslint:disable-next-line: variable-name\nexport const GlobalProviders = new GlobalProviderRegistry();\n"],"names":["GlobalProviderRegistry","__privateAdd","_settings","key","getClassOrSymbol","metadata","target","options","GlobalProviders","meta","type","model","defaultOptions","__privateGet","ProviderType","provider","Provider","item"],"mappings":";;;;;;;;;AASO,MAAMA,UAA+B,IAA6B;AAAA,EAAlE;AAAA;AACL,IAAAC,EAAA,MAAAC,uBAAsD,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO1D,IAAIC,GAA0C;AAC5C,WAAO,MAAM,IAAIC,EAAiBD,CAAG,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQxC,IAAIA,GAA6B;AAC/B,WAAO,MAAM,IAAIC,EAAiBD,CAAG,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQxC,IAAIA,GAAoBE,GAA0B;AAChD,iBAAM,IAAID,EAAiBD,CAAG,GAAGE,CAAQ,GAElC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQT,MAAMC,GAAuBC,GAAgC;AACvD,QAAAA,EAAQ,WAAW;AACd,aAAAC,EAAgB,eAAeF,GAAQC,CAAO;AAGvD,UAAME,IAAO,KAAK,kBAAkBH,GAAQC,CAAO;AAEnD,kBAAO,KAAKA,CAAO,EAAE,QAAQ,CAACJ,MAAQ;AAC/B,MAAAM,EAAAN,CAAG,IAAKI,EAAkBJ,CAAG;AAAA,IAAA,CACnC,GAEI,KAAA,IAAIG,GAAQG,CAAI,GAEdA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQT,OAAON,GAA6B;AAClC,WAAO,MAAM,OAAOC,EAAiBD,CAAG,CAAC;AAAA,EAAA;AAAA,EAG3C,eAAeO,GAAuBC,GAAuBJ,IAAqC,CAAA,GAAI;AAC9F,UAAAK,IAAiB,KAAK,oBAAoBF,CAAI;AAE1C,WAAAH,IAAA,OAAO,OAAOK,GAAgB;AAAA,MACtC,GAAGL;AAAA,MACH,OAAAI;AAAA,IAAA,CACD,GAEIE,EAAA,MAAAX,GAAU,IAAIQ,GAAMH,CAAO,GAEzB;AAAA,EAAA;AAAA,EAGT,oBAAoBD,GAAyC;AAC3D,QAAII,IAAqCI,EAAa;AAElD,QAAA,OAAOR,KAAW;AACb,MAAAI,IAAAJ;AAAA,SACF;AACC,YAAAS,IAAW,KAAK,IAAIT,CAAM;AAChC,MAAIS,MACFL,IAAOK,EAAS;AAAA,IAClB;AAGF,WACEF,EAAA,MAAKX,GAAU,IAAIQ,CAAI,KAAK;AAAA,MAC1B,OAAOM;AAAA,IACT;AAAA,EAAA;AAAA,EAIM,eAAeb,GAAoBI,GAAqC;AAC1E,UAAAG,IAAOH,EAAQ,QAAQO,EAAa,UACpC,EAAC,OAAAH,IAAQK,MAAYH,EAAA,MAAKX,GAAU,IAAIQ,CAAI,KAAK,CAAC;AAEjD,WAAA,IAAIC,EAAMR,GAAKI,CAAO;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrB,kBAAkBJ,GAAoBI,GAA0C;AACxF,QAAI,CAAC,KAAK,IAAIJ,CAAG,GAAG;AAClB,YAAMc,IAAO,KAAK,eAAed,GAAKI,CAAO;AAExC,WAAA,IAAIJ,GAAKc,CAAI;AAAA,IAAA;AAGb,WAAA,KAAK,IAAId,CAAG;AAAA,EAAA;AAEvB;AAlHED,IAAA;AAyHW,MAAAM,IAAkB,IAAIR,EAAuB;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderRegistry.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { getValue as r } from "@tsed/core/utils/getValue.js";
|
|
2
|
+
import { setValue as o } from "@tsed/core/utils/setValue.js";
|
|
3
|
+
const n = Symbol.for("CONFIGURATION");
|
|
4
|
+
class u {
|
|
5
|
+
constructor(t = {}) {
|
|
6
|
+
this.default = /* @__PURE__ */ new Map(), this.map = /* @__PURE__ */ new Map(), Object.entries({
|
|
7
|
+
imports: [],
|
|
8
|
+
routes: [],
|
|
9
|
+
logger: {},
|
|
10
|
+
...t
|
|
11
|
+
}).forEach(([e, s]) => {
|
|
12
|
+
this.default.set(e, s);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
get version() {
|
|
16
|
+
return this.get("version");
|
|
17
|
+
}
|
|
18
|
+
set version(t) {
|
|
19
|
+
this.map.set("version", t);
|
|
20
|
+
}
|
|
21
|
+
get rootDir() {
|
|
22
|
+
return this.get("rootDir");
|
|
23
|
+
}
|
|
24
|
+
set rootDir(t) {
|
|
25
|
+
this.map.set("rootDir", t);
|
|
26
|
+
}
|
|
27
|
+
get env() {
|
|
28
|
+
return this.map.get("env");
|
|
29
|
+
}
|
|
30
|
+
set env(t) {
|
|
31
|
+
this.map.set("env", t);
|
|
32
|
+
}
|
|
33
|
+
get imports() {
|
|
34
|
+
return this.get("imports");
|
|
35
|
+
}
|
|
36
|
+
set imports(t) {
|
|
37
|
+
this.map.set("imports", t);
|
|
38
|
+
}
|
|
39
|
+
get routes() {
|
|
40
|
+
return this.get("routes");
|
|
41
|
+
}
|
|
42
|
+
set routes(t) {
|
|
43
|
+
this.map.set("routes", t);
|
|
44
|
+
}
|
|
45
|
+
get logger() {
|
|
46
|
+
return this.get("logger");
|
|
47
|
+
}
|
|
48
|
+
set logger(t) {
|
|
49
|
+
const e = { ...this.logger, ...t };
|
|
50
|
+
this.map.set("logger", e);
|
|
51
|
+
}
|
|
52
|
+
get debug() {
|
|
53
|
+
return this.logger.level === "debug";
|
|
54
|
+
}
|
|
55
|
+
set debug(t) {
|
|
56
|
+
this.logger = { ...this.logger, level: t ? "debug" : "info" };
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
*
|
|
60
|
+
* @param callbackfn
|
|
61
|
+
* @param thisArg
|
|
62
|
+
*/
|
|
63
|
+
forEach(t, e) {
|
|
64
|
+
return (/* @__PURE__ */ new Set([...Array.from(this.default.keys()), ...Array.from(this.map.keys())])).forEach((s) => {
|
|
65
|
+
t(this.getRaw(s), s, this.map);
|
|
66
|
+
}, e);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
*
|
|
70
|
+
* @param propertyKey
|
|
71
|
+
* @param value
|
|
72
|
+
*/
|
|
73
|
+
set(t, e) {
|
|
74
|
+
return typeof t == "string" ? Reflect.has(this, t) ? this[t] = e : this.setRaw(t, e) : Object.entries(t).forEach(([s, i]) => {
|
|
75
|
+
this.set(s, i);
|
|
76
|
+
}), this;
|
|
77
|
+
}
|
|
78
|
+
setRaw(t, e) {
|
|
79
|
+
return o(this.map, t, e), this;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
*
|
|
83
|
+
* @param propertyKey
|
|
84
|
+
* @param defaultValue
|
|
85
|
+
* @returns {undefined|any}
|
|
86
|
+
*/
|
|
87
|
+
get(t, e) {
|
|
88
|
+
return this.getRaw(t, e);
|
|
89
|
+
}
|
|
90
|
+
getRaw(t, e) {
|
|
91
|
+
const s = r(this.map, t);
|
|
92
|
+
return s !== void 0 ? s : r(this.default, t, e);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export {
|
|
96
|
+
n as CONFIGURATION,
|
|
97
|
+
u as DIConfiguration
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=DIConfiguration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DIConfiguration.js","sources":["../../../../src/common/services/DIConfiguration.ts"],"sourcesContent":["import {Env} from \"@tsed/core/types/Env.js\";\nimport {getValue} from \"@tsed/core/utils/getValue.js\";\nimport {setValue} from \"@tsed/core/utils/setValue.js\";\n\nimport type {DILoggerOptions} from \"../interfaces/DILoggerOptions.js\";\nimport type {ImportTokenProviderOpts} from \"../interfaces/ImportTokenProviderOpts.js\";\nimport type {TokenProvider} from \"../interfaces/TokenProvider.js\";\nimport type {TokenRoute} from \"../interfaces/TokenRoute.js\";\n\nexport const CONFIGURATION = Symbol.for(\"CONFIGURATION\");\n\nexport class DIConfiguration {\n readonly default: Map<string, any> = new Map();\n protected map: Map<string, any> = new Map();\n\n constructor(initialProps = {}) {\n Object.entries({\n imports: [],\n routes: [],\n logger: {},\n ...initialProps\n }).forEach(([key, value]) => {\n this.default.set(key, value);\n });\n }\n\n get version() {\n return this.get(\"version\")!;\n }\n\n set version(v: string) {\n this.map.set(\"version\", v);\n }\n\n get rootDir() {\n return this.get(\"rootDir\")!;\n }\n\n set rootDir(value: string) {\n this.map.set(\"rootDir\", value);\n }\n\n get env(): Env {\n return this.map.get(\"env\");\n }\n\n set env(value: Env) {\n this.map.set(\"env\", value);\n }\n\n get imports(): (TokenProvider | ImportTokenProviderOpts)[] {\n return this.get(\"imports\")!;\n }\n\n set imports(imports: (TokenProvider | ImportTokenProviderOpts)[]) {\n this.map.set(\"imports\", imports);\n }\n\n get routes(): TokenRoute[] {\n return this.get(\"routes\")!;\n }\n\n set routes(routes: TokenRoute[]) {\n this.map.set(\"routes\", routes);\n }\n\n get logger(): Partial<DILoggerOptions> {\n return this.get(\"logger\")!;\n }\n\n set logger(value: Partial<DILoggerOptions>) {\n const logger = {...this.logger, ...value};\n this.map.set(\"logger\", logger);\n }\n\n get debug(): boolean {\n return this.logger.level === \"debug\";\n }\n\n set debug(debug: boolean) {\n this.logger = {...this.logger, level: debug ? \"debug\" : \"info\"};\n }\n\n /**\n *\n * @param callbackfn\n * @param thisArg\n */\n forEach(callbackfn: (value: any, index: string, map: Map<string, any>) => void, thisArg?: any) {\n return new Set([...Array.from(this.default.keys()), ...Array.from(this.map.keys())]).forEach((key) => {\n callbackfn(this.getRaw(key), key, this.map);\n }, thisArg);\n }\n\n /**\n *\n * @param propertyKey\n * @param value\n */\n set(propertyKey: string | Partial<TsED.Configuration>, value?: any): this {\n if (typeof propertyKey === \"string\") {\n if (Reflect.has(this, propertyKey)) {\n // @ts-ignore\n this[propertyKey] = value;\n } else {\n this.setRaw(propertyKey, value);\n }\n } else {\n Object.entries(propertyKey).forEach(([key, value]) => {\n this.set(key, value);\n });\n }\n\n return this;\n }\n\n setRaw(propertyKey: string, value: any) {\n setValue(this.map, propertyKey, value);\n\n return this;\n }\n\n /**\n *\n * @param propertyKey\n * @param defaultValue\n * @returns {undefined|any}\n */\n get<T = any>(propertyKey: string, defaultValue?: T): T {\n return this.getRaw(propertyKey, defaultValue);\n }\n\n protected getRaw(propertyKey: string, defaultValue?: any): any {\n const value = getValue(this.map, propertyKey);\n\n if (value !== undefined) {\n return value;\n }\n\n return getValue(this.default, propertyKey, defaultValue);\n }\n}\n"],"names":["CONFIGURATION","DIConfiguration","initialProps","key","value","v","imports","routes","logger","debug","callbackfn","thisArg","propertyKey","setValue","defaultValue","getValue"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DILogger.js","sources":["../../../../src/common/services/DILogger.ts"],"sourcesContent":["import {injectable} from \"../fn/injectable.js\";\nimport {injector} from \"../fn/injector.js\";\nimport {DILogger} from \"../interfaces/DILogger.js\";\n\nexport const LOGGER = Symbol.for(\"LOGGER\");\nexport type LOGGER = DILogger;\n\ninjectable(LOGGER).factory(() => injector().logger);\n"],"names":["LOGGER","injectable","injector"],"mappings":";;AAIa,MAAAA,IAAS,OAAO,IAAI,QAAQ;AAGzCC,EAAWD,CAAM,EAAE,QAAQ,MAAME,EAAA,EAAW,MAAM;"}
|