@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.
Files changed (196) hide show
  1. package/lib/browser/chunks/injectable.js +65 -0
  2. package/lib/browser/chunks/injectable.js.map +1 -0
  3. package/lib/browser/common/constants/constants.js +9 -0
  4. package/lib/browser/common/constants/constants.js.map +1 -0
  5. package/lib/browser/common/decorators/autoInjectable.js +26 -0
  6. package/lib/browser/common/decorators/autoInjectable.js.map +1 -0
  7. package/lib/browser/common/decorators/configuration.js +24 -0
  8. package/lib/browser/common/decorators/configuration.js.map +1 -0
  9. package/lib/browser/common/decorators/constant.js +27 -0
  10. package/lib/browser/common/decorators/constant.js.map +1 -0
  11. package/lib/browser/common/decorators/controller.js +23 -0
  12. package/lib/browser/common/decorators/controller.js.map +1 -0
  13. package/lib/browser/common/decorators/inject.js +62 -0
  14. package/lib/browser/common/decorators/inject.js.map +1 -0
  15. package/lib/browser/common/decorators/injectable.js +14 -0
  16. package/lib/browser/common/decorators/injectable.js.map +1 -0
  17. package/lib/browser/common/decorators/intercept.js +57 -0
  18. package/lib/browser/common/decorators/intercept.js.map +1 -0
  19. package/lib/browser/common/decorators/interceptor.js +11 -0
  20. package/lib/browser/common/decorators/interceptor.js.map +1 -0
  21. package/lib/browser/common/decorators/lazyInject.js +43 -0
  22. package/lib/browser/common/decorators/lazyInject.js.map +1 -0
  23. package/lib/browser/common/decorators/module.js +22 -0
  24. package/lib/browser/common/decorators/module.js.map +1 -0
  25. package/lib/browser/common/decorators/opts.js +12 -0
  26. package/lib/browser/common/decorators/opts.js.map +1 -0
  27. package/lib/browser/common/decorators/overrideProvider.js +10 -0
  28. package/lib/browser/common/decorators/overrideProvider.js.map +1 -0
  29. package/lib/browser/common/decorators/scope.js +9 -0
  30. package/lib/browser/common/decorators/scope.js.map +1 -0
  31. package/lib/browser/common/decorators/service.js +8 -0
  32. package/lib/browser/common/decorators/service.js.map +1 -0
  33. package/lib/browser/common/decorators/useOpts.js +23 -0
  34. package/lib/browser/common/decorators/useOpts.js.map +1 -0
  35. package/lib/browser/common/decorators/value.js +23 -0
  36. package/lib/browser/common/decorators/value.js.map +1 -0
  37. package/lib/browser/common/domain/Container.js +64 -0
  38. package/lib/browser/common/domain/Container.js.map +1 -0
  39. package/lib/browser/common/domain/ControllerProvider.js +35 -0
  40. package/lib/browser/common/domain/ControllerProvider.js.map +1 -0
  41. package/lib/browser/common/domain/InjectablePropertyType.js +5 -0
  42. package/lib/browser/common/domain/InjectablePropertyType.js.map +1 -0
  43. package/lib/browser/common/domain/LocalsContainer.js +13 -0
  44. package/lib/browser/common/domain/LocalsContainer.js.map +1 -0
  45. package/lib/browser/common/domain/Provider.js +144 -0
  46. package/lib/browser/common/domain/Provider.js.map +1 -0
  47. package/lib/browser/common/domain/ProviderScope.js +5 -0
  48. package/lib/browser/common/domain/ProviderScope.js.map +1 -0
  49. package/lib/browser/common/domain/ProviderType.js +5 -0
  50. package/lib/browser/common/domain/ProviderType.js.map +1 -0
  51. package/lib/browser/common/errors/InjectionError.js +31 -0
  52. package/lib/browser/common/errors/InjectionError.js.map +1 -0
  53. package/lib/browser/common/errors/InvalidPropertyTokenError.js +17 -0
  54. package/lib/browser/common/errors/InvalidPropertyTokenError.js.map +1 -0
  55. package/lib/browser/common/fn/configuration.js +13 -0
  56. package/lib/browser/common/fn/configuration.js.map +1 -0
  57. package/lib/browser/common/fn/constant.js +8 -0
  58. package/lib/browser/common/fn/constant.js.map +1 -0
  59. package/lib/browser/common/fn/inject.js +13 -0
  60. package/lib/browser/common/fn/inject.js.map +1 -0
  61. package/lib/browser/common/fn/injectMany.js +9 -0
  62. package/lib/browser/common/fn/injectMany.js.map +1 -0
  63. package/lib/browser/common/fn/injectable.js +8 -0
  64. package/lib/browser/common/fn/injectable.js.map +1 -0
  65. package/lib/browser/common/fn/injector.js +13 -0
  66. package/lib/browser/common/fn/injector.js.map +1 -0
  67. package/lib/browser/common/fn/lazyInject.js +23 -0
  68. package/lib/browser/common/fn/lazyInject.js.map +1 -0
  69. package/lib/browser/common/fn/localsContainer.js +29 -0
  70. package/lib/browser/common/fn/localsContainer.js.map +1 -0
  71. package/lib/browser/common/fn/refValue.js +15 -0
  72. package/lib/browser/common/fn/refValue.js.map +1 -0
  73. package/lib/browser/common/index.js +113 -0
  74. package/lib/browser/common/index.js.map +1 -0
  75. package/lib/browser/common/registries/GlobalProviders.js +102 -0
  76. package/lib/browser/common/registries/GlobalProviders.js.map +1 -0
  77. package/lib/browser/common/registries/ProviderRegistry.js +8 -0
  78. package/lib/browser/common/registries/ProviderRegistry.js.map +1 -0
  79. package/lib/browser/common/services/DIConfiguration.js +99 -0
  80. package/lib/browser/common/services/DIConfiguration.js.map +1 -0
  81. package/lib/browser/common/services/DILogger.js +8 -0
  82. package/lib/browser/common/services/DILogger.js.map +1 -0
  83. package/lib/browser/common/services/InjectorService.js +378 -0
  84. package/lib/browser/common/services/InjectorService.js.map +1 -0
  85. package/lib/browser/common/utils/colors.js +5 -0
  86. package/lib/browser/common/utils/colors.js.map +1 -0
  87. package/lib/browser/common/utils/createContainer.js +10 -0
  88. package/lib/browser/common/utils/createContainer.js.map +1 -0
  89. package/lib/browser/common/utils/discoverHooks.js +17 -0
  90. package/lib/browser/common/utils/discoverHooks.js.map +1 -0
  91. package/lib/browser/common/utils/getConfiguration.js +20 -0
  92. package/lib/browser/common/utils/getConfiguration.js.map +1 -0
  93. package/lib/browser/common/utils/getConstructorDependencies.js +12 -0
  94. package/lib/browser/common/utils/getConstructorDependencies.js.map +1 -0
  95. package/lib/browser/common/utils/providerBuilder.js +8 -0
  96. package/lib/browser/common/utils/providerBuilder.js.map +1 -0
  97. package/lib/esm/common/decorators/autoInjectable.js +1 -1
  98. package/lib/esm/common/decorators/autoInjectable.js.map +1 -1
  99. package/lib/esm/common/decorators/configuration.js +2 -1
  100. package/lib/esm/common/decorators/configuration.js.map +1 -1
  101. package/lib/esm/common/decorators/constant.js +3 -2
  102. package/lib/esm/common/decorators/constant.js.map +1 -1
  103. package/lib/esm/common/decorators/controller.js +13 -6
  104. package/lib/esm/common/decorators/controller.js.map +1 -1
  105. package/lib/esm/common/decorators/inject.js +6 -1
  106. package/lib/esm/common/decorators/inject.js.map +1 -1
  107. package/lib/esm/common/decorators/intercept.js +5 -1
  108. package/lib/esm/common/decorators/intercept.js.map +1 -1
  109. package/lib/esm/common/decorators/lazyInject.js +2 -1
  110. package/lib/esm/common/decorators/lazyInject.js.map +1 -1
  111. package/lib/esm/common/decorators/module.js +1 -1
  112. package/lib/esm/common/decorators/module.js.map +1 -1
  113. package/lib/esm/common/decorators/opts.js +1 -1
  114. package/lib/esm/common/decorators/opts.js.map +1 -1
  115. package/lib/esm/common/decorators/scope.js +1 -1
  116. package/lib/esm/common/decorators/scope.js.map +1 -1
  117. package/lib/esm/common/decorators/useOpts.js +4 -1
  118. package/lib/esm/common/decorators/useOpts.js.map +1 -1
  119. package/lib/esm/common/decorators/value.js +2 -2
  120. package/lib/esm/common/decorators/value.js.map +1 -1
  121. package/lib/esm/common/domain/Provider.js +5 -1
  122. package/lib/esm/common/domain/Provider.js.map +1 -1
  123. package/lib/esm/common/errors/InjectionError.js +4 -1
  124. package/lib/esm/common/errors/InjectionError.js.map +1 -1
  125. package/lib/esm/common/errors/InvalidPropertyTokenError.js +2 -1
  126. package/lib/esm/common/errors/InvalidPropertyTokenError.js.map +1 -1
  127. package/lib/esm/common/fn/configuration.js +1 -1
  128. package/lib/esm/common/fn/configuration.js.map +1 -1
  129. package/lib/esm/common/fn/lazyInject.js +1 -1
  130. package/lib/esm/common/fn/lazyInject.js.map +1 -1
  131. package/lib/esm/common/registries/GlobalProviders.js +1 -1
  132. package/lib/esm/common/registries/GlobalProviders.js.map +1 -1
  133. package/lib/esm/common/services/DIConfiguration.js +2 -1
  134. package/lib/esm/common/services/DIConfiguration.js.map +1 -1
  135. package/lib/esm/common/services/InjectorService.js +10 -1
  136. package/lib/esm/common/services/InjectorService.js.map +1 -1
  137. package/lib/esm/common/utils/discoverHooks.js +1 -1
  138. package/lib/esm/common/utils/discoverHooks.js.map +1 -1
  139. package/lib/esm/common/utils/getConfiguration.js +1 -1
  140. package/lib/esm/common/utils/getConfiguration.js.map +1 -1
  141. package/lib/esm/common/utils/getConstructorDependencies.js +1 -1
  142. package/lib/esm/common/utils/getConstructorDependencies.js.map +1 -1
  143. package/lib/esm/common/utils/providerBuilder.js.map +1 -1
  144. package/lib/esm/node/decorators/injectContext.js +1 -1
  145. package/lib/esm/node/decorators/injectContext.js.map +1 -1
  146. package/lib/esm/node/services/DITest.js +4 -1
  147. package/lib/esm/node/services/DITest.js.map +1 -1
  148. package/lib/types/common/decorators/constant.d.ts +1 -1
  149. package/lib/types/common/decorators/controller.d.ts +1 -1
  150. package/lib/types/common/decorators/inject.d.ts +1 -1
  151. package/lib/types/common/decorators/intercept.d.ts +1 -1
  152. package/lib/types/common/decorators/overrideProvider.d.ts +1 -1
  153. package/lib/types/common/decorators/value.d.ts +1 -1
  154. package/lib/types/common/domain/Provider.d.ts +2 -1
  155. package/lib/types/common/fn/injectable.d.ts +3 -3
  156. package/lib/types/common/interfaces/RegistrySettings.d.ts +1 -1
  157. package/lib/types/common/registries/GlobalProviders.d.ts +1 -1
  158. package/lib/types/common/services/DIConfiguration.d.ts +1 -1
  159. package/lib/types/common/utils/createContainer.d.ts +1 -1
  160. package/lib/types/common/utils/discoverHooks.d.ts +1 -1
  161. package/lib/types/common/utils/getConfiguration.d.ts +1 -1
  162. package/lib/types/common/utils/providerBuilder.d.ts +2 -1
  163. package/package.json +17 -19
  164. package/src/common/decorators/autoInjectable.ts +2 -1
  165. package/src/common/decorators/configuration.ts +4 -2
  166. package/src/common/decorators/constant.ts +3 -2
  167. package/src/common/decorators/controller.ts +18 -10
  168. package/src/common/decorators/inject.ts +7 -1
  169. package/src/common/decorators/intercept.ts +8 -1
  170. package/src/common/decorators/lazyInject.ts +2 -1
  171. package/src/common/decorators/module.ts +1 -1
  172. package/src/common/decorators/opts.ts +1 -1
  173. package/src/common/decorators/overrideProvider.ts +1 -1
  174. package/src/common/decorators/scope.ts +1 -1
  175. package/src/common/decorators/useOpts.ts +4 -1
  176. package/src/common/decorators/value.ts +2 -2
  177. package/src/common/domain/Provider.ts +6 -1
  178. package/src/common/errors/InjectionError.ts +4 -1
  179. package/src/common/errors/InvalidPropertyTokenError.ts +2 -1
  180. package/src/common/fn/configuration.ts +1 -1
  181. package/src/common/fn/lazyInject.ts +1 -1
  182. package/src/common/interfaces/RegistrySettings.ts +1 -1
  183. package/src/common/registries/GlobalProviders.ts +2 -1
  184. package/src/common/services/DIConfiguration.ts +3 -1
  185. package/src/common/services/InjectorService.ts +10 -1
  186. package/src/common/utils/createContainer.ts +1 -1
  187. package/src/common/utils/discoverHooks.ts +2 -1
  188. package/src/common/utils/getConfiguration.ts +2 -1
  189. package/src/common/utils/getConstructorDependencies.ts +1 -1
  190. package/src/common/utils/providerBuilder.ts +2 -1
  191. package/src/node/decorators/injectContext.ts +1 -1
  192. package/src/node/services/DITest.ts +4 -1
  193. package/vite.config.mts +45 -0
  194. package/lib/browser/di.umd.min.js +0 -2
  195. package/lib/browser/di.umd.min.js.map +0 -1
  196. package/webpack.config.cjs +0 -8
@@ -0,0 +1,23 @@
1
+ import { catchError as o } from "@tsed/core/utils/catchError.js";
2
+ import { injector as u } from "../fn/injector.js";
3
+ function f(e, t, r, n) {
4
+ const c = {
5
+ get() {
6
+ return u().settings.get(r, n);
7
+ },
8
+ set(i) {
9
+ u().settings.set(r, i);
10
+ },
11
+ enumerable: !0,
12
+ configurable: !0
13
+ };
14
+ o(() => Reflect.deleteProperty(e, t)), o(() => Reflect.defineProperty(e, t, c));
15
+ }
16
+ function m(e, t) {
17
+ return (r, n) => f(r, n, e, t);
18
+ }
19
+ export {
20
+ m as Value,
21
+ f as bindValue
22
+ };
23
+ //# sourceMappingURL=value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.js","sources":["../../../../src/common/decorators/value.ts"],"sourcesContent":["import {catchError} from \"@tsed/core/utils/catchError.js\";\n\nimport {injector} from \"../fn/injector.js\";\n\nexport function bindValue(target: any, propertyKey: string | symbol, expression: string, defaultValue?: any) {\n const descriptor = {\n get() {\n return injector().settings.get(expression, defaultValue);\n },\n set(value: unknown) {\n injector().settings.set(expression, value);\n },\n enumerable: true,\n configurable: true\n };\n\n catchError(() => Reflect.deleteProperty(target, propertyKey));\n catchError(() => Reflect.defineProperty(target, propertyKey, descriptor));\n}\n\n/**\n * Return value from Configuration.\n *\n * ## Example\n *\n * ```typescript\n * import {Env} from \"@tsed/core/domain/Env.js\";\n * import {Constant, Value} from \"@tsed/di\";\n *\n * export class MyClass {\n *\n * @Constant(\"env\")\n * env: Env;\n *\n * @Value(\"swagger.path\")\n * swaggerPath: string;\n *\n * @Value(\"swagger.path\", \"defaultValue\")\n * swaggerPath: string;\n *\n * constructor() {\n * console.log(this.swaggerPath) // undefined. Not available on constructor\n * }\n *\n * $onInit() {\n * console.log(this.swaggerPath) // something\n * }\n * }\n * ```\n *\n * @param expression\n * @param defaultValue\n * @returns {(targetClass: any, attributeName: string) => any}\n * @decorator\n */\nexport function Value(expression: string, defaultValue?: unknown): PropertyDecorator {\n return (target, propertyKey) => {\n return bindValue(target, propertyKey, expression, defaultValue);\n };\n}\n"],"names":["bindValue","target","propertyKey","expression","defaultValue","descriptor","injector","value","catchError","Value"],"mappings":";;AAIO,SAASA,EAAUC,GAAaC,GAA8BC,GAAoBC,GAAoB;AAC3G,QAAMC,IAAa;AAAA,IACjB,MAAM;AACJ,aAAOC,EAAS,EAAE,SAAS,IAAIH,GAAYC,CAAY;AAAA,IACzD;AAAA,IACA,IAAIG,GAAgB;AAClB,MAAAD,EAAW,EAAA,SAAS,IAAIH,GAAYI,CAAK;AAAA,IAC3C;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB;AAEA,EAAAC,EAAW,MAAM,QAAQ,eAAeP,GAAQC,CAAW,CAAC,GAC5DM,EAAW,MAAM,QAAQ,eAAeP,GAAQC,GAAaG,CAAU,CAAC;AAC1E;AAqCgB,SAAAI,EAAMN,GAAoBC,GAA2C;AAC5E,SAAA,CAACH,GAAQC,MACPF,EAAUC,GAAQC,GAAaC,GAAYC,CAAY;AAElE;"}
@@ -0,0 +1,64 @@
1
+ import { GlobalProviders as i } from "../registries/GlobalProviders.js";
2
+ import { Provider as o } from "./Provider.js";
3
+ class c extends Map {
4
+ /**
5
+ *
6
+ * @param token
7
+ * @param settings
8
+ */
9
+ add(r, e = {}) {
10
+ var s;
11
+ const t = ((s = i.get(r)) == null ? void 0 : s.clone()) || new o(r);
12
+ return Object.assign(t, e), super.set(r, t);
13
+ }
14
+ /**
15
+ * Add a provider to the
16
+ * @param token
17
+ * @param settings
18
+ */
19
+ addProvider(r, e = {}) {
20
+ return this.add(r, e);
21
+ }
22
+ /**
23
+ *
24
+ * @param token
25
+ */
26
+ hasProvider(r) {
27
+ return super.has(r);
28
+ }
29
+ /**
30
+ * Add a provider to the
31
+ * @param token
32
+ * @param provider
33
+ */
34
+ setProvider(r, e) {
35
+ return super.set(r, e);
36
+ }
37
+ /**
38
+ * The getProvider() method returns a specified element from a Map object.
39
+ * @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object.
40
+ * @param token
41
+ */
42
+ getProvider(r) {
43
+ return super.get(r);
44
+ }
45
+ /**
46
+ * Get all providers registered in the injector container.
47
+ *
48
+ * @param type Filter the list by the given ProviderType.
49
+ * @returns {[TokenProvider , Provider<any>][]}
50
+ */
51
+ getProviders(r) {
52
+ const e = [].concat(r).map(String);
53
+ return [...this].reduce((t, [s, n]) => e.includes(String(n.type)) || !r ? [...t, n] : t, []);
54
+ }
55
+ addProviders(r) {
56
+ r.forEach((e) => {
57
+ this.hasProvider(e.token) || this.setProvider(e.token, e.clone());
58
+ });
59
+ }
60
+ }
61
+ export {
62
+ c as Container
63
+ };
64
+ //# sourceMappingURL=Container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.js","sources":["../../../../src/common/domain/Container.ts"],"sourcesContent":["import type {ProviderOpts} from \"../interfaces/ProviderOpts.js\";\nimport type {TokenProvider} from \"../interfaces/TokenProvider.js\";\nimport {GlobalProviders} from \"../registries/GlobalProviders.js\";\nimport {Provider} from \"./Provider.js\";\nimport type {ProviderType} from \"./ProviderType.js\";\n\nexport class Container extends Map<TokenProvider, Provider> {\n /**\n *\n * @param token\n * @param settings\n */\n public add(token: TokenProvider, settings: Partial<ProviderOpts> = {}): this {\n const provider = GlobalProviders.get(token)?.clone() || new Provider(token);\n\n Object.assign(provider, settings);\n\n return super.set(token, provider);\n }\n\n /**\n * Add a provider to the\n * @param token\n * @param settings\n */\n public addProvider(token: TokenProvider, settings: Partial<ProviderOpts> = {}): this {\n return this.add(token, settings);\n }\n\n /**\n *\n * @param token\n */\n public hasProvider(token: TokenProvider) {\n return super.has(token);\n }\n\n /**\n * Add a provider to the\n * @param token\n * @param provider\n */\n public setProvider(token: TokenProvider, provider: Provider) {\n return super.set(token, provider);\n }\n\n /**\n * The getProvider() method returns a specified element from a 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 * @param token\n */\n public getProvider<T extends Provider = Provider>(token: TokenProvider | undefined): T | undefined {\n return super.get(token!) as T;\n }\n\n /**\n * Get all providers registered in the injector container.\n *\n * @param type Filter the list by the given ProviderType.\n * @returns {[TokenProvider , Provider<any>][]}\n */\n public getProviders(type?: TokenProvider | ProviderType | string | string[]): Provider[] {\n const types = ([] as (string | ProviderType)[]).concat(type as never).map(String);\n\n return [...this].reduce((providers, [_, provider]) => {\n if (types.includes(String(provider.type)) || !type) {\n return [...providers, provider];\n }\n return providers;\n }, []);\n }\n\n public addProviders(container: Map<TokenProvider, Provider>) {\n container.forEach((provider) => {\n if (!this.hasProvider(provider.token)) {\n this.setProvider(provider.token, provider.clone());\n }\n });\n }\n}\n"],"names":["Container","token","settings","provider","_a","GlobalProviders","Provider","type","types","providers","_","container"],"mappings":";;AAMO,MAAMA,UAAkB,IAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnD,IAAIC,GAAsBC,IAAkC,IAAU;;AACrE,UAAAC,MAAWC,IAAAC,EAAgB,IAAIJ,CAAK,MAAzB,gBAAAG,EAA4B,YAAW,IAAIE,EAASL,CAAK;AAEnE,kBAAA,OAAOE,GAAUD,CAAQ,GAEzB,MAAM,IAAID,GAAOE,CAAQ;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3B,YAAYF,GAAsBC,IAAkC,IAAU;AAC5E,WAAA,KAAK,IAAID,GAAOC,CAAQ;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO1B,YAAYD,GAAsB;AAChC,WAAA,MAAM,IAAIA,CAAK;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjB,YAAYA,GAAsBE,GAAoB;AACpD,WAAA,MAAM,IAAIF,GAAOE,CAAQ;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3B,YAA2CF,GAAiD;AAC1F,WAAA,MAAM,IAAIA,CAAM;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASlB,aAAaM,GAAqE;AACvF,UAAMC,IAAS,CAAA,EAAiC,OAAOD,CAAa,EAAE,IAAI,MAAM;AAEzE,WAAA,CAAC,GAAG,IAAI,EAAE,OAAO,CAACE,GAAW,CAACC,GAAGP,CAAQ,MAC1CK,EAAM,SAAS,OAAOL,EAAS,IAAI,CAAC,KAAK,CAACI,IACrC,CAAC,GAAGE,GAAWN,CAAQ,IAEzBM,GACN,EAAE;AAAA,EAAA;AAAA,EAGA,aAAaE,GAAyC;AACjD,IAAAA,EAAA,QAAQ,CAACR,MAAa;AAC9B,MAAK,KAAK,YAAYA,EAAS,KAAK,KAClC,KAAK,YAAYA,EAAS,OAAOA,EAAS,OAAO;AAAA,IACnD,CACD;AAAA,EAAA;AAEL;"}
@@ -0,0 +1,35 @@
1
+ import { Provider as d } from "./Provider.js";
2
+ import { ProviderType as c } from "./ProviderType.js";
3
+ class l extends d {
4
+ constructor(r, s = {}) {
5
+ super(r, s), this.type = c.CONTROLLER;
6
+ }
7
+ /**
8
+ *
9
+ * @returns {any[]}
10
+ */
11
+ get middlewares() {
12
+ return Object.assign(
13
+ {
14
+ use: [],
15
+ useAfter: [],
16
+ useBefore: []
17
+ },
18
+ this.store.get("middlewares", {})
19
+ );
20
+ }
21
+ /**
22
+ *
23
+ * @param middlewares
24
+ */
25
+ set middlewares(r) {
26
+ const s = this.middlewares, o = (e, t, i) => t[e] = t[e].concat(i[e]);
27
+ Object.keys(r).forEach((e) => {
28
+ o(e, s, r);
29
+ }), this.store.set("middlewares", s);
30
+ }
31
+ }
32
+ export {
33
+ l as ControllerProvider
34
+ };
35
+ //# sourceMappingURL=ControllerProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControllerProvider.js","sources":["../../../../src/common/domain/ControllerProvider.ts"],"sourcesContent":["import {TokenProvider} from \"../interfaces/TokenProvider.js\";\nimport {Provider} from \"./Provider.js\";\nimport {ProviderType} from \"./ProviderType.js\";\n\nexport interface ControllerMiddlewares {\n useBefore: TokenProvider[];\n use: TokenProvider[];\n useAfter: TokenProvider[];\n}\n\nexport class ControllerProvider<T = any> extends Provider<T> {\n public tokenRouter: string;\n\n constructor(token: TokenProvider, options: Partial<Provider> = {}) {\n super(token, options);\n this.type = ProviderType.CONTROLLER;\n }\n\n /**\n *\n * @returns {any[]}\n */\n get middlewares(): Partial<ControllerMiddlewares> {\n return Object.assign(\n {\n use: [],\n useAfter: [],\n useBefore: []\n },\n this.store.get(\"middlewares\", {})\n );\n }\n\n /**\n *\n * @param middlewares\n */\n set middlewares(middlewares: Partial<ControllerMiddlewares>) {\n const mdlwrs = this.middlewares;\n const concat = (key: string, a: any, b: any) => (a[key] = a[key].concat(b[key]));\n\n Object.keys(middlewares).forEach((key: string) => {\n concat(key, mdlwrs, middlewares);\n });\n\n this.store.set(\"middlewares\", mdlwrs);\n }\n}\n"],"names":["ControllerProvider","Provider","token","options","ProviderType","middlewares","mdlwrs","concat","key","a","b"],"mappings":";;AAUO,MAAMA,UAAoCC,EAAY;AAAA,EAG3D,YAAYC,GAAsBC,IAA6B,IAAI;AACjE,UAAMD,GAAOC,CAAO,GACpB,KAAK,OAAOC,EAAa;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO3B,IAAI,cAA8C;AAChD,WAAO,OAAO;AAAA,MACZ;AAAA,QACE,KAAK,CAAC;AAAA,QACN,UAAU,CAAC;AAAA,QACX,WAAW,CAAA;AAAA,MACb;AAAA,MACA,KAAK,MAAM,IAAI,eAAe,CAAE,CAAA;AAAA,IAClC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOF,IAAI,YAAYC,GAA6C;AAC3D,UAAMC,IAAS,KAAK,aACdC,IAAS,CAACC,GAAaC,GAAQC,MAAYD,EAAED,CAAG,IAAIC,EAAED,CAAG,EAAE,OAAOE,EAAEF,CAAG,CAAC;AAE9E,WAAO,KAAKH,CAAW,EAAE,QAAQ,CAACG,MAAgB;AACzC,MAAAD,EAAAC,GAAKF,GAAQD,CAAW;AAAA,IAAA,CAChC,GAEI,KAAA,MAAM,IAAI,eAAeC,CAAM;AAAA,EAAA;AAExC;"}
@@ -0,0 +1,5 @@
1
+ var O = /* @__PURE__ */ ((E) => (E.METHOD = "method", E.PROPERTY = "property", E.CONSTANT = "constant", E.VALUE = "value", E.INTERCEPTOR = "interceptor", E))(O || {});
2
+ export {
3
+ O as InjectablePropertyType
4
+ };
5
+ //# sourceMappingURL=InjectablePropertyType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InjectablePropertyType.js","sources":["../../../../src/common/domain/InjectablePropertyType.ts"],"sourcesContent":["export enum InjectablePropertyType {\n METHOD = \"method\",\n PROPERTY = \"property\",\n CONSTANT = \"constant\",\n VALUE = \"value\",\n INTERCEPTOR = \"interceptor\"\n}\n"],"names":["InjectablePropertyType"],"mappings":"AAAY,IAAAA,sBAAAA,OACVA,EAAA,SAAS,UACTA,EAAA,WAAW,YACXA,EAAA,WAAW,YACXA,EAAA,QAAQ,SACRA,EAAA,cAAc,eALJA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -0,0 +1,13 @@
1
+ import { Hooks as o } from "@tsed/hooks";
2
+ class r extends Map {
3
+ constructor() {
4
+ super(...arguments), this.hooks = new o();
5
+ }
6
+ async destroy() {
7
+ await this.hooks.asyncEmit("$onDestroy");
8
+ }
9
+ }
10
+ export {
11
+ r as LocalsContainer
12
+ };
13
+ //# sourceMappingURL=LocalsContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalsContainer.js","sources":["../../../../src/common/domain/LocalsContainer.ts"],"sourcesContent":["import {Hooks} from \"@tsed/hooks\";\n\nimport type {TokenProvider} from \"../interfaces/TokenProvider.js\";\n\nexport class LocalsContainer extends Map<TokenProvider, any> {\n readonly hooks = new Hooks();\n\n async destroy() {\n await this.hooks.asyncEmit(\"$onDestroy\");\n }\n}\n"],"names":["LocalsContainer","Hooks"],"mappings":";AAIO,MAAMA,UAAwB,IAAwB;AAAA,EAAtD,cAAA;AAAA,UAAA,GAAA,SAAA,GACI,KAAA,QAAQ,IAAIC,EAAM;AAAA,EAAA;AAAA,EAE3B,MAAM,UAAU;AACR,UAAA,KAAK,MAAM,UAAU,YAAY;AAAA,EAAA;AAE3C;"}
@@ -0,0 +1,144 @@
1
+ var l = (e) => {
2
+ throw TypeError(e);
3
+ };
4
+ var m = (e, t, s) => t.has(e) || l("Cannot " + s);
5
+ var r = (e, t, s) => (m(e, t, "read from private field"), s ? s.call(e) : t.get(e)), a = (e, t, s) => t.has(e) ? l("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, s), i = (e, t, s, g) => (m(e, t, "write to private field"), g ? g.call(e, s) : t.set(e, s), s);
6
+ import { Store as f } from "@tsed/core/types/Store.js";
7
+ import { classOf as p } from "@tsed/core/utils/classOf.js";
8
+ import { getClassOrSymbol as k } from "@tsed/core/utils/getClassOrSymbol.js";
9
+ import { isClass as O } from "@tsed/core/utils/isClass.js";
10
+ import { nameOf as y } from "@tsed/core/utils/nameOf.js";
11
+ import { DI_USE_PARAM_OPTIONS as A } from "../constants/constants.js";
12
+ import { discoverHooks as S } from "../utils/discoverHooks.js";
13
+ import { ProviderScope as d } from "./ProviderScope.js";
14
+ import { ProviderType as F } from "./ProviderType.js";
15
+ var o, c, h, n;
16
+ const u = class u {
17
+ constructor(t, s = {}) {
18
+ a(this, o);
19
+ a(this, c);
20
+ a(this, h);
21
+ a(this, n);
22
+ this.type = F.PROVIDER, this.hooks = {}, this.token = t, this.useClass = t, Object.assign(this, s), s instanceof u && (i(this, o, r(s, o)), i(this, h, r(s, h)), i(this, n, r(s, n)));
23
+ }
24
+ get token() {
25
+ return r(this, c);
26
+ }
27
+ set token(t) {
28
+ t && (i(this, c, k(t)), i(this, n, i(this, h, f.from(t))));
29
+ }
30
+ /**
31
+ * @deprecated
32
+ */
33
+ get provide() {
34
+ return this.token;
35
+ }
36
+ /**
37
+ * @deprecated
38
+ * @param value
39
+ */
40
+ set provide(t) {
41
+ this.token = t;
42
+ }
43
+ get useClass() {
44
+ return r(this, o);
45
+ }
46
+ /**
47
+ * Create a new store if the given value is a class. Otherwise, the value is ignored.
48
+ * @param value
49
+ */
50
+ set useClass(t) {
51
+ O(t) && (i(this, o, p(t)), i(this, h, f.from(t)), this.hooks = S(r(this, o)));
52
+ }
53
+ get className() {
54
+ return this.name;
55
+ }
56
+ get name() {
57
+ return y(this.token);
58
+ }
59
+ get store() {
60
+ return r(this, h);
61
+ }
62
+ get path() {
63
+ return this.store.get("path", "/");
64
+ }
65
+ set path(t) {
66
+ this.store.set("path", t);
67
+ }
68
+ /**
69
+ * Get the scope of the provider.
70
+ *
71
+ * ::: tip Note
72
+ * Async provider is always a SINGLETON
73
+ * :::
74
+ *
75
+ * @returns {boolean}
76
+ */
77
+ get scope() {
78
+ return this.isAsync() ? d.SINGLETON : this.get("scope", d.SINGLETON);
79
+ }
80
+ /**
81
+ * Change the scope value of the provider.
82
+ * @param scope
83
+ */
84
+ set scope(t) {
85
+ this.store.set("scope", t);
86
+ }
87
+ get configuration() {
88
+ return this.get("configuration");
89
+ }
90
+ set configuration(t) {
91
+ this.store.set("configuration", t);
92
+ }
93
+ get children() {
94
+ return this.store.get("childrenControllers", []);
95
+ }
96
+ set children(t) {
97
+ this.store.set("childrenControllers", t);
98
+ }
99
+ getArgOpts(t) {
100
+ return this.store.get(`${A}:${t}`);
101
+ }
102
+ get(t, s) {
103
+ return this.store.get(t) || r(this, n).get(t) || s;
104
+ }
105
+ isAsync() {
106
+ return !!this.useAsyncFactory;
107
+ }
108
+ clone() {
109
+ return new (p(this))(this.token, this);
110
+ }
111
+ /**
112
+ *
113
+ * @returns {boolean}
114
+ */
115
+ hasChildren() {
116
+ return !!this.children.length;
117
+ }
118
+ /**
119
+ *
120
+ * @returns {boolean}
121
+ */
122
+ hasParent() {
123
+ return !!this.store.get("parentController");
124
+ }
125
+ toString() {
126
+ return [
127
+ "Token",
128
+ this.name,
129
+ this.useClass && y(this.useClass),
130
+ this.useFactory && "Factory",
131
+ this.useValue && "Value",
132
+ this.useAsyncFactory && "AsyncFactory"
133
+ ].filter(Boolean).join(":");
134
+ }
135
+ reset() {
136
+ return this.useValue = void 0, this.useFactory = void 0, this.useAsyncFactory = void 0, this;
137
+ }
138
+ };
139
+ o = new WeakMap(), c = new WeakMap(), h = new WeakMap(), n = new WeakMap();
140
+ let C = u;
141
+ export {
142
+ C as Provider
143
+ };
144
+ //# sourceMappingURL=Provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.js","sources":["../../../../src/common/domain/Provider.ts"],"sourcesContent":["import {Store} from \"@tsed/core/types/Store.js\";\nimport {type AbstractType, Type} from \"@tsed/core/types/Type.js\";\nimport {classOf} from \"@tsed/core/utils/classOf.js\";\nimport {getClassOrSymbol} from \"@tsed/core/utils/getClassOrSymbol.js\";\nimport {isClass} from \"@tsed/core/utils/isClass.js\";\nimport {nameOf} from \"@tsed/core/utils/nameOf.js\";\n\nimport {DI_USE_PARAM_OPTIONS} from \"../constants/constants.js\";\nimport type {ProviderOpts} from \"../interfaces/ProviderOpts.js\";\nimport type {TokenProvider} from \"../interfaces/TokenProvider.js\";\nimport {discoverHooks} from \"../utils/discoverHooks.js\";\nimport {ProviderScope} from \"./ProviderScope.js\";\nimport {ProviderType} from \"./ProviderType.js\";\n\nexport type ProviderHookCallback<T = any> = (instance: T, ...args: unknown[]) => Promise<void> | void;\n\nexport class Provider<T = any> implements ProviderOpts<T> {\n /**\n * Token group provider to retrieve all provider from the same type\n */\n public type: ProviderType | TokenProvider = ProviderType.PROVIDER;\n public deps: TokenProvider[];\n public imports: (TokenProvider | [TokenProvider])[];\n public alias: string;\n public priority: number;\n public useFactory?: Function;\n public useAsyncFactory?: Function;\n public useValue?: unknown;\n public hooks: Record<string, ProviderHookCallback<T>> = {};\n #useClass: Type<T>;\n #token: TokenProvider;\n #store: Store;\n #tokenStore: Store;\n\n [key: string]: any;\n\n constructor(token: TokenProvider<T>, options: Partial<Provider> = {}) {\n this.token = token;\n this.useClass = token as Type<T>;\n\n Object.assign(this, options);\n\n if (options instanceof Provider) {\n this.#useClass = options.#useClass;\n this.#store = options.#store;\n this.#tokenStore = options.#tokenStore;\n }\n }\n\n get token() {\n return this.#token;\n }\n\n set token(value: TokenProvider) {\n if (value) {\n this.#token = getClassOrSymbol(value);\n this.#tokenStore = this.#store = Store.from(value);\n }\n }\n\n /**\n * @deprecated\n */\n get provide(): TokenProvider {\n return this.token;\n }\n\n /**\n * @deprecated\n * @param value\n */\n set provide(value: TokenProvider) {\n this.token = value;\n }\n\n get useClass(): Type<T> {\n return this.#useClass;\n }\n\n /**\n * Create a new store if the given value is a class. Otherwise, the value is ignored.\n * @param value\n */\n set useClass(value: Type<T> | AbstractType<T>) {\n if (isClass(value)) {\n this.#useClass = classOf(value);\n this.#store = Store.from(value);\n this.hooks = discoverHooks(this.#useClass);\n }\n }\n\n get className() {\n return this.name;\n }\n\n get name() {\n return nameOf(this.token);\n }\n\n get store(): Store {\n return this.#store;\n }\n\n get path() {\n return this.store.get(\"path\", \"/\");\n }\n\n set path(path: string) {\n this.store.set(\"path\", path);\n }\n\n /**\n * Get the scope of the provider.\n *\n * ::: tip Note\n * Async provider is always a SINGLETON\n * :::\n *\n * @returns {boolean}\n */\n get scope(): ProviderScope {\n if (this.isAsync()) {\n return ProviderScope.SINGLETON;\n }\n\n return this.get<ProviderScope>(\"scope\", ProviderScope.SINGLETON);\n }\n\n /**\n * Change the scope value of the provider.\n * @param scope\n */\n set scope(scope: ProviderScope) {\n this.store.set(\"scope\", scope);\n }\n\n get configuration(): Partial<TsED.Configuration> {\n return this.get(\"configuration\")!;\n }\n\n set configuration(configuration: Partial<TsED.Configuration>) {\n this.store.set(\"configuration\", configuration);\n }\n\n get children(): TokenProvider[] {\n return this.store.get(\"childrenControllers\", []);\n }\n\n set children(children: TokenProvider[]) {\n this.store.set(\"childrenControllers\", children);\n }\n\n getArgOpts(index: number) {\n return this.store.get(`${DI_USE_PARAM_OPTIONS}:${index}`);\n }\n\n /**\n * Retrieves a value from the provider's store.\n * @param key The key to look up\n * @returns The value if found, undefined otherwise\n */\n get<Type = unknown>(key: string): Type | undefined;\n /**\n * Retrieves a value from the provider's store with a default fallback.\n * @param key The key to look up\n * @param defaultValue The value to return if key is not found\n * @returns The found value or defaultValue\n */\n get<Type = unknown>(key: string, defaultValue: Type): Type;\n get<Type = unknown>(key: string, defaultValue?: Type): Type | undefined {\n return this.store.get(key) || this.#tokenStore.get(key) || defaultValue;\n }\n\n isAsync(): boolean {\n return !!this.useAsyncFactory;\n }\n\n clone(): Provider {\n return new (classOf(this))(this.token, this);\n }\n\n /**\n *\n * @returns {boolean}\n */\n public hasChildren(): boolean {\n return !!this.children.length;\n }\n\n /**\n *\n * @returns {boolean}\n */\n public hasParent(): boolean {\n return !!this.store.get(\"parentController\");\n }\n\n toString() {\n return [\n \"Token\",\n this.name,\n this.useClass && nameOf(this.useClass),\n this.useFactory && \"Factory\",\n this.useValue && \"Value\",\n this.useAsyncFactory && \"AsyncFactory\"\n ]\n .filter(Boolean)\n .join(\":\");\n }\n\n reset() {\n this.useValue = undefined;\n this.useFactory = undefined;\n this.useAsyncFactory = undefined;\n\n return this;\n }\n}\n"],"names":["_Provider","token","options","__privateAdd","_useClass","_token","_store","_tokenStore","ProviderType","__privateSet","__privateGet","value","getClassOrSymbol","Store","isClass","classOf","discoverHooks","nameOf","path","ProviderScope","scope","configuration","children","index","DI_USE_PARAM_OPTIONS","key","defaultValue","Provider"],"mappings":";;;;;;;;;;;;;;;AAgBO,MAAMA,IAAN,MAAMA,EAA6C;AAAA,EAoBxD,YAAYC,GAAyBC,IAA6B,IAAI;AAPtE,IAAAC,EAAA,MAAAC;AACA,IAAAD,EAAA,MAAAE;AACA,IAAAF,EAAA,MAAAG;AACA,IAAAH,EAAA,MAAAI;AAZA,SAAO,OAAqCC,EAAa,UAQzD,KAAO,QAAiD,CAAC,GASvD,KAAK,QAAQP,GACb,KAAK,WAAWA,GAET,OAAA,OAAO,MAAMC,CAAO,GAEvBA,aAAmBF,MACrBS,EAAA,MAAKL,GAAYM,EAAAR,GAAQE,KACzBK,EAAA,MAAKH,GAASI,EAAAR,GAAQI,KACtBG,EAAA,MAAKF,GAAcG,EAAAR,GAAQK;AAAA,EAC7B;AAAA,EAGF,IAAI,QAAQ;AACV,WAAOG,EAAA,MAAKL;AAAA,EAAA;AAAA,EAGd,IAAI,MAAMM,GAAsB;AAC9B,IAAIA,MACGF,EAAA,MAAAJ,GAASO,EAAiBD,CAAK,IACpCF,EAAA,MAAKF,GAAcE,EAAA,MAAKH,GAASO,EAAM,KAAKF,CAAK;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAMF,IAAI,UAAyB;AAC3B,WAAO,KAAK;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOd,IAAI,QAAQA,GAAsB;AAChC,SAAK,QAAQA;AAAA,EAAA;AAAA,EAGf,IAAI,WAAoB;AACtB,WAAOD,EAAA,MAAKN;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOd,IAAI,SAASO,GAAkC;AACzC,IAAAG,EAAQH,CAAK,MACVF,EAAA,MAAAL,GAAYW,EAAQJ,CAAK,IACzBF,EAAA,MAAAH,GAASO,EAAM,KAAKF,CAAK,IACzB,KAAA,QAAQK,EAAcN,EAAA,MAAKN,EAAS;AAAA,EAC3C;AAAA,EAGF,IAAI,YAAY;AACd,WAAO,KAAK;AAAA,EAAA;AAAA,EAGd,IAAI,OAAO;AACF,WAAAa,EAAO,KAAK,KAAK;AAAA,EAAA;AAAA,EAG1B,IAAI,QAAe;AACjB,WAAOP,EAAA,MAAKJ;AAAA,EAAA;AAAA,EAGd,IAAI,OAAO;AACT,WAAO,KAAK,MAAM,IAAI,QAAQ,GAAG;AAAA,EAAA;AAAA,EAGnC,IAAI,KAAKY,GAAc;AAChB,SAAA,MAAM,IAAI,QAAQA,CAAI;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAY7B,IAAI,QAAuB;AACrB,WAAA,KAAK,YACAC,EAAc,YAGhB,KAAK,IAAmB,SAASA,EAAc,SAAS;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjE,IAAI,MAAMC,GAAsB;AACzB,SAAA,MAAM,IAAI,SAASA,CAAK;AAAA,EAAA;AAAA,EAG/B,IAAI,gBAA6C;AACxC,WAAA,KAAK,IAAI,eAAe;AAAA,EAAA;AAAA,EAGjC,IAAI,cAAcC,GAA4C;AACvD,SAAA,MAAM,IAAI,iBAAiBA,CAAa;AAAA,EAAA;AAAA,EAG/C,IAAI,WAA4B;AAC9B,WAAO,KAAK,MAAM,IAAI,uBAAuB,CAAA,CAAE;AAAA,EAAA;AAAA,EAGjD,IAAI,SAASC,GAA2B;AACjC,SAAA,MAAM,IAAI,uBAAuBA,CAAQ;AAAA,EAAA;AAAA,EAGhD,WAAWC,GAAe;AACxB,WAAO,KAAK,MAAM,IAAI,GAAGC,CAAoB,IAAID,CAAK,EAAE;AAAA,EAAA;AAAA,EAgB1D,IAAoBE,GAAaC,GAAuC;AAC/D,WAAA,KAAK,MAAM,IAAID,CAAG,KAAKf,EAAA,MAAKH,GAAY,IAAIkB,CAAG,KAAKC;AAAA,EAAA;AAAA,EAG7D,UAAmB;AACV,WAAA,CAAC,CAAC,KAAK;AAAA,EAAA;AAAA,EAGhB,QAAkB;AAChB,WAAO,KAAKX,EAAQ,IAAI,GAAG,KAAK,OAAO,IAAI;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOtC,cAAuB;AACrB,WAAA,CAAC,CAAC,KAAK,SAAS;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOlB,YAAqB;AAC1B,WAAO,CAAC,CAAC,KAAK,MAAM,IAAI,kBAAkB;AAAA,EAAA;AAAA,EAG5C,WAAW;AACF,WAAA;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL,KAAK,YAAYE,EAAO,KAAK,QAAQ;AAAA,MACrC,KAAK,cAAc;AAAA,MACnB,KAAK,YAAY;AAAA,MACjB,KAAK,mBAAmB;AAAA,IAEvB,EAAA,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,EAAA;AAAA,EAGb,QAAQ;AACN,gBAAK,WAAW,QAChB,KAAK,aAAa,QAClB,KAAK,kBAAkB,QAEhB;AAAA,EAAA;AAEX;AA5LEb,IAAA,eACAC,IAAA,eACAC,IAAA,eACAC,IAAA;AAhBK,IAAMoB,IAAN3B;"}
@@ -0,0 +1,5 @@
1
+ var t = /* @__PURE__ */ ((n) => (n.SINGLETON = "singleton", n.REQUEST = "request", n.INSTANCE = "instance", n))(t || {});
2
+ export {
3
+ t as ProviderScope
4
+ };
5
+ //# sourceMappingURL=ProviderScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderScope.js","sources":["../../../../src/common/domain/ProviderScope.ts"],"sourcesContent":["export enum ProviderScope {\n SINGLETON = \"singleton\",\n REQUEST = \"request\",\n INSTANCE = \"instance\"\n}\n"],"names":["ProviderScope"],"mappings":"AAAY,IAAAA,sBAAAA,OACVA,EAAA,YAAY,aACZA,EAAA,UAAU,WACVA,EAAA,WAAW,YAHDA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -0,0 +1,5 @@
1
+ var R = /* @__PURE__ */ ((E) => (E.VALUE = "value", E.PROVIDER = "provider", E.MODULE = "module", E.CONTROLLER = "controller", E.INTERCEPTOR = "interceptor", E.MIDDLEWARE = "middleware", E))(R || {});
2
+ export {
3
+ R as ProviderType
4
+ };
5
+ //# sourceMappingURL=ProviderType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderType.js","sources":["../../../../src/common/domain/ProviderType.ts"],"sourcesContent":["export enum ProviderType {\n VALUE = \"value\",\n PROVIDER = \"provider\",\n MODULE = \"module\",\n CONTROLLER = \"controller\",\n INTERCEPTOR = \"interceptor\",\n MIDDLEWARE = \"middleware\"\n}\n"],"names":["ProviderType"],"mappings":"AAAY,IAAAA,sBAAAA,OACVA,EAAA,QAAQ,SACRA,EAAA,WAAW,YACXA,EAAA,SAAS,UACTA,EAAA,aAAa,cACbA,EAAA,cAAc,eACdA,EAAA,aAAa,cANHA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -0,0 +1,31 @@
1
+ import { getConstructorArgNames as p } from "@tsed/core/utils/getConstructorArgNames.js";
2
+ import { isClass as d } from "@tsed/core/utils/isClass.js";
3
+ import { isString as m } from "@tsed/core/utils/isString.js";
4
+ import { nameOf as i } from "@tsed/core/utils/nameOf.js";
5
+ import { colors as h } from "../utils/colors.js";
6
+ class f extends Error {
7
+ constructor(t, s) {
8
+ super(m(s) ? s : ""), this.name = "INJECTION_ERROR", this.tokens = [], this.tokens = [t], s && (m(s) ? this.origin = {
9
+ message: s,
10
+ stack: this.stack
11
+ } : s.tokens ? (this.tokens = this.tokens.concat(s.tokens), this.origin = s.origin) : (this.origin = s, this.stack = s.stack));
12
+ const e = this.origin ? `
13
+ Origin: ` + this.origin.message : "", o = this.tokens.map((r) => i(r)).join(" > ");
14
+ this.message = `Injection failed on ${o}${e}`;
15
+ }
16
+ static throwInjectorError(t, s, e) {
17
+ throw s && d(t) && (e.message = l(t, { ...s, message: e.message })), new f(t, e);
18
+ }
19
+ }
20
+ function l(a, t) {
21
+ let s = "";
22
+ const e = p(a).map((n, c) => (t.index === c && (s = n, n = h.red(n)), `${n}: ${i(t.deps[c])}`)).join(", "), o = i(a) + "->constructor(" + e + ")", r = o.indexOf(s) - 5, g = (n) => " ".repeat(n) + h.red("^" + "‾".repeat(s.length - 1));
23
+ return "Unable to inject dependency. " + t.message + `
24
+
25
+ ` + o + `
26
+ ` + (r > -1 ? g(r) : "");
27
+ }
28
+ export {
29
+ f as InjectionError
30
+ };
31
+ //# sourceMappingURL=InjectionError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InjectionError.js","sources":["../../../../src/common/errors/InjectionError.ts"],"sourcesContent":["import {getConstructorArgNames} from \"@tsed/core/utils/getConstructorArgNames.js\";\nimport {isClass} from \"@tsed/core/utils/isClass.js\";\nimport {isString} from \"@tsed/core/utils/isString.js\";\nimport {nameOf} from \"@tsed/core/utils/nameOf.js\";\n\nimport {TokenProvider} from \"../interfaces/TokenProvider.js\";\nimport {colors} from \"../utils/colors.js\";\n\nexport class InjectionError extends Error {\n name = \"INJECTION_ERROR\";\n\n public tokens: TokenProvider[] = [];\n public origin: any;\n\n constructor(token: TokenProvider, origin?: any) {\n super(isString(origin) ? origin : \"\");\n\n this.tokens = [token];\n\n if (origin) {\n if (isString(origin)) {\n this.origin = {\n message: origin,\n stack: this.stack\n };\n } else {\n if (origin.tokens) {\n this.tokens = this.tokens.concat(origin.tokens);\n this.origin = origin.origin;\n } else {\n this.origin = origin;\n this.stack = origin.stack;\n }\n }\n }\n\n const originMessage = this.origin ? \"\\nOrigin: \" + this.origin.message : \"\";\n const tokensMessage = this.tokens.map((token) => nameOf(token)).join(\" > \");\n\n this.message = `Injection failed on ${tokensMessage}${originMessage}`;\n }\n\n static throwInjectorError(token: any, currentDependency: any, error: any) {\n if (currentDependency && isClass(token)) {\n error.message = printDependencyInjectionError(token, {...currentDependency, message: error.message});\n }\n\n throw new InjectionError(token, error);\n }\n}\n\nfunction printDependencyInjectionError(token: any, options: {token: any; index: number; deps: any[]; message: string}) {\n let erroredArg = \"\";\n\n const args = getConstructorArgNames(token)\n .map((arg, index) => {\n if (options.index === index) {\n erroredArg = arg;\n arg = colors.red(arg);\n }\n\n return `${arg}: ${nameOf(options.deps[index])}`;\n })\n .join(\", \");\n\n const signature = nameOf(token) + \"->constructor(\" + args + \")\";\n const indexOf = signature.indexOf(erroredArg) - 5;\n const drawline = (indexOf: number) => \" \".repeat(indexOf) + colors.red(\"^\" + \"‾\".repeat(erroredArg.length - 1));\n\n return \"Unable to inject dependency. \" + options.message + \"\\n\\n\" + signature + \"\\n\" + (indexOf > -1 ? drawline(indexOf) : \"\");\n}\n"],"names":["InjectionError","token","origin","isString","originMessage","tokensMessage","nameOf","currentDependency","error","isClass","printDependencyInjectionError","options","erroredArg","args","getConstructorArgNames","arg","index","colors","signature","indexOf","drawline"],"mappings":";;;;;AAQO,MAAMA,UAAuB,MAAM;AAAA,EAMxC,YAAYC,GAAsBC,GAAc;AAC9C,UAAMC,EAASD,CAAM,IAAIA,IAAS,EAAE,GAN/B,KAAA,OAAA,mBAEP,KAAO,SAA0B,CAAC,GAM3B,KAAA,SAAS,CAACD,CAAK,GAEhBC,MACEC,EAASD,CAAM,IACjB,KAAK,SAAS;AAAA,MACZ,SAASA;AAAA,MACT,OAAO,KAAK;AAAA,IACd,IAEIA,EAAO,UACT,KAAK,SAAS,KAAK,OAAO,OAAOA,EAAO,MAAM,GAC9C,KAAK,SAASA,EAAO,WAErB,KAAK,SAASA,GACd,KAAK,QAAQA,EAAO;AAK1B,UAAME,IAAgB,KAAK,SAAS;AAAA,YAAe,KAAK,OAAO,UAAU,IACnEC,IAAgB,KAAK,OAAO,IAAI,CAACJ,MAAUK,EAAOL,CAAK,CAAC,EAAE,KAAK,KAAK;AAE1E,SAAK,UAAU,uBAAuBI,CAAa,GAAGD,CAAa;AAAA,EAAA;AAAA,EAGrE,OAAO,mBAAmBH,GAAYM,GAAwBC,GAAY;AACpE,UAAAD,KAAqBE,EAAQR,CAAK,MAC9BO,EAAA,UAAUE,EAA8BT,GAAO,EAAC,GAAGM,GAAmB,SAASC,EAAM,SAAQ,IAG/F,IAAIR,EAAeC,GAAOO,CAAK;AAAA,EAAA;AAEzC;AAEA,SAASE,EAA8BT,GAAYU,GAAoE;AACrH,MAAIC,IAAa;AAEjB,QAAMC,IAAOC,EAAuBb,CAAK,EACtC,IAAI,CAACc,GAAKC,OACLL,EAAQ,UAAUK,MACPJ,IAAAG,GACPA,IAAAE,EAAO,IAAIF,CAAG,IAGf,GAAGA,CAAG,KAAKT,EAAOK,EAAQ,KAAKK,CAAK,CAAC,CAAC,GAC9C,EACA,KAAK,IAAI,GAENE,IAAYZ,EAAOL,CAAK,IAAI,mBAAmBY,IAAO,KACtDM,IAAUD,EAAU,QAAQN,CAAU,IAAI,GAC1CQ,IAAW,CAACD,MAAoB,IAAI,OAAOA,CAAO,IAAIF,EAAO,IAAI,MAAM,IAAI,OAAOL,EAAW,SAAS,CAAC,CAAC;AAEvG,SAAA,kCAAkCD,EAAQ,UAAU;AAAA;AAAA,IAASO,IAAY;AAAA,KAAQC,IAAU,KAAKC,EAASD,CAAO,IAAI;AAC7H;"}
@@ -0,0 +1,17 @@
1
+ import { classOf as r } from "@tsed/core/utils/classOf.js";
2
+ import { nameOf as o } from "@tsed/core/utils/nameOf.js";
3
+ class n extends Error {
4
+ constructor(e, t) {
5
+ super(
6
+ `Object isn't a valid token. Please check the token set on ${o(
7
+ r(e)
8
+ )}.${t}.
9
+ - Check that it is not a circular reference.
10
+ - Check that the token (class or symbol) exists`
11
+ ), this.name = "INVALID_TOKEN_ERROR";
12
+ }
13
+ }
14
+ export {
15
+ n as InvalidPropertyTokenError
16
+ };
17
+ //# sourceMappingURL=InvalidPropertyTokenError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidPropertyTokenError.js","sources":["../../../../src/common/errors/InvalidPropertyTokenError.ts"],"sourcesContent":["import {classOf} from \"@tsed/core/utils/classOf.js\";\nimport {nameOf} from \"@tsed/core/utils/nameOf.js\";\n\nexport class InvalidPropertyTokenError extends Error {\n name = \"INVALID_TOKEN_ERROR\";\n\n constructor(target: any, propertyKey: string) {\n super(\n `Object isn't a valid token. Please check the token set on ${nameOf(\n classOf(target)\n )}.${propertyKey}.\\n- Check that it is not a circular reference.\\n- Check that the token (class or symbol) exists`\n );\n }\n}\n"],"names":["InvalidPropertyTokenError","target","propertyKey","nameOf","classOf"],"mappings":";;AAGO,MAAMA,UAAkC,MAAM;AAAA,EAGnD,YAAYC,GAAaC,GAAqB;AAC5C;AAAA,MACE,6DAA6DC;AAAA,QAC3DC,EAAQH,CAAM;AAAA,MAAA,CACf,IAAIC,CAAW;AAAA;AAAA;AAAA,IAClB,GAPK,KAAA,OAAA;AAAA,EAAA;AAST;"}
@@ -0,0 +1,13 @@
1
+ import { Store as i } from "@tsed/core/types/Store.js";
2
+ import { injector as e } from "./injector.js";
3
+ function m(t, r) {
4
+ if (t) {
5
+ const o = i.from(t);
6
+ return r && o.set("configuration", r), o.get("configuration", r);
7
+ }
8
+ return e().settings;
9
+ }
10
+ export {
11
+ m as configuration
12
+ };
13
+ //# sourceMappingURL=configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.js","sources":["../../../../src/common/fn/configuration.ts"],"sourcesContent":["import {Store} from \"@tsed/core/types/Store.js\";\n\nimport type {TokenProvider} from \"../interfaces/TokenProvider.js\";\nimport {DIConfiguration} from \"../services/DIConfiguration.js\";\nimport {injector} from \"./injector.js\";\n\nexport function configuration(): TsED.DIConfiguration & DIConfiguration;\nexport function configuration(token: TokenProvider): Partial<TsED.Configuration>;\nexport function configuration(token: TokenProvider, configuration: Partial<TsED.Configuration>): Partial<TsED.Configuration>;\nexport function configuration(token?: TokenProvider, configuration?: Partial<TsED.Configuration>) {\n if (token) {\n const store = Store.from(token);\n\n if (configuration) {\n store.set(\"configuration\", configuration);\n }\n\n return store.get(\"configuration\", configuration);\n }\n\n return injector().settings as TsED.DIConfiguration & DIConfiguration;\n}\n"],"names":["configuration","token","store","Store","injector"],"mappings":";;AASgB,SAAAA,EAAcC,GAAuBD,GAA6C;AAChG,MAAIC,GAAO;AACH,UAAAC,IAAQC,EAAM,KAAKF,CAAK;AAE9B,WAAID,KACIE,EAAA,IAAI,iBAAiBF,CAAa,GAGnCE,EAAM,IAAI,iBAAiBF,CAAa;AAAA,EAAA;AAGjD,SAAOI,EAAW,EAAA;AACpB;"}
@@ -0,0 +1,8 @@
1
+ import { injector as o } from "./injector.js";
2
+ function e(t, n) {
3
+ return o().settings.get(t, n);
4
+ }
5
+ export {
6
+ e as constant
7
+ };
8
+ //# sourceMappingURL=constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constant.js","sources":["../../../../src/common/fn/constant.ts"],"sourcesContent":["import {injector} from \"./injector.js\";\n\nexport function constant<Type>(expression: string): Type | undefined;\nexport function constant<Type>(expression: string, defaultValue: Type | undefined): Type;\nexport function constant<Type>(expression: string, defaultValue?: Type | undefined): Type | undefined {\n return injector().settings.get(expression, defaultValue);\n}\n"],"names":["constant","expression","defaultValue","injector"],"mappings":";AAIgB,SAAAA,EAAeC,GAAoBC,GAAmD;AACpG,SAAOC,EAAS,EAAE,SAAS,IAAIF,GAAYC,CAAY;AACzD;"}
@@ -0,0 +1,13 @@
1
+ import { injector as o } from "./injector.js";
2
+ import { localsContainer as e, invokeOptions as i } from "./localsContainer.js";
3
+ function a(n, r) {
4
+ return o().resolve(n, {
5
+ ...r,
6
+ ...i(),
7
+ locals: (r == null ? void 0 : r.locals) || e()
8
+ });
9
+ }
10
+ export {
11
+ a as inject
12
+ };
13
+ //# sourceMappingURL=inject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.js","sources":["../../../../src/common/fn/inject.ts"],"sourcesContent":["import type {InvokeOptions} from \"../interfaces/InvokeOptions.js\";\nimport type {TokenProvider} from \"../interfaces/TokenProvider.js\";\nimport {injector} from \"./injector.js\";\nimport {invokeOptions, localsContainer} from \"./localsContainer.js\";\n\n/**\n * Inject a provider to another provider.\n *\n * Use this function to inject a custom provider on constructor parameter or property.\n *\n * ```typescript\n * @Injectable()\n * export class MyService {\n * connection = inject(CONNECTION);\n * }\n * ```\n *\n * @param token A token provider or token provider group\n * @param opts\n * @returns {Function}\n * @decorator\n */\nexport function inject<TokenType>(\n token: TokenProvider<TokenType>,\n opts?: Partial<Pick<InvokeOptions, \"useOpts\" | \"rebuild\" | \"locals\">>\n): TokenType {\n return injector().resolve(token, {\n ...opts,\n ...invokeOptions(),\n locals: opts?.locals || localsContainer()\n });\n}\n"],"names":["inject","token","opts","injector","invokeOptions","localsContainer"],"mappings":";;AAsBgB,SAAAA,EACdC,GACAC,GACW;AACJ,SAAAC,EAAA,EAAW,QAAQF,GAAO;AAAA,IAC/B,GAAGC;AAAA,IACH,GAAGE,EAAc;AAAA,IACjB,SAAQF,KAAA,gBAAAA,EAAM,WAAUG,EAAgB;AAAA,EAAA,CACzC;AACH;"}
@@ -0,0 +1,9 @@
1
+ import { injector as a } from "./injector.js";
2
+ import { localsContainer as c } from "./localsContainer.js";
3
+ function l(r, n) {
4
+ return a().getMany(r, { ...n, locals: (n == null ? void 0 : n.locals) || c() });
5
+ }
6
+ export {
7
+ l as injectMany
8
+ };
9
+ //# sourceMappingURL=injectMany.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectMany.js","sources":["../../../../src/common/fn/injectMany.ts"],"sourcesContent":["import type {InvokeOptions} from \"../interfaces/InvokeOptions.js\";\nimport {injector} from \"./injector.js\";\nimport {localsContainer} from \"./localsContainer.js\";\n\n/**\n * Injects multiple instances of a given token using the injector service.\n * @param token - The injection token to resolve\n * @param opts - Optional configuration for the injection\n * @param opts.useOpts - Options for instance creation\n * @param opts.rebuild - Whether to rebuild the instance\n * @param opts.locals - Local container overrides\n * @returns Array of resolved instances\n */\nexport function injectMany<T>(token: string | symbol, opts?: Partial<Pick<InvokeOptions, \"useOpts\" | \"rebuild\" | \"locals\">>): T[] {\n return injector().getMany<T>(token, {...opts, locals: opts?.locals || localsContainer()} as InvokeOptions);\n}\n"],"names":["injectMany","token","opts","injector","localsContainer"],"mappings":";;AAagB,SAAAA,EAAcC,GAAwBC,GAA4E;AAChI,SAAOC,EAAS,EAAE,QAAWF,GAAO,EAAC,GAAGC,GAAM,SAAQA,KAAA,gBAAAA,EAAM,WAAUE,EAAgB,EAAA,CAAmB;AAC3G;"}
@@ -0,0 +1,8 @@
1
+ import "../domain/ProviderType.js";
2
+ import { c as t, i as a, a as c } from "../../chunks/injectable.js";
3
+ export {
4
+ t as controller,
5
+ a as injectable,
6
+ c as interceptor
7
+ };
8
+ //# sourceMappingURL=injectable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectable.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,13 @@
1
+ import { InjectorService as t } from "../services/InjectorService.js";
2
+ let e = new t();
3
+ function o() {
4
+ return e;
5
+ }
6
+ async function r() {
7
+ await e.destroy(), e = new t();
8
+ }
9
+ export {
10
+ r as destroyInjector,
11
+ o as injector
12
+ };
13
+ //# sourceMappingURL=injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injector.js","sources":["../../../../src/common/fn/injector.ts"],"sourcesContent":["import {InjectorService} from \"../services/InjectorService.js\";\n\nlet globalInjector: InjectorService = new InjectorService();\n\n/**\n * Return the existing injector service.\n *\n * Example:\n *\n * ```typescript\n * import {injector, Injectable} from \"@tsed/di\";\n *\n * @Injectable()\n * class MyService {\n * injector = injector();\n * }\n * ```\n */\nexport function injector(): InjectorService {\n return globalInjector;\n}\n\nexport async function destroyInjector() {\n await globalInjector.destroy();\n globalInjector = new InjectorService();\n}\n"],"names":["globalInjector","InjectorService","injector","destroyInjector"],"mappings":";AAEA,IAAIA,IAAkC,IAAIC,EAAgB;AAgBnD,SAASC,IAA4B;AACnC,SAAAF;AACT;AAEA,eAAsBG,IAAkB;AACtC,QAAMH,EAAe,QAAQ,GAC7BA,IAAiB,IAAIC,EAAgB;AACvC;"}
@@ -0,0 +1,23 @@
1
+ import { isFunction as a } from "@tsed/core/utils/isFunction.js";
2
+ import { inject as c } from "./inject.js";
3
+ import { injector as o } from "./injector.js";
4
+ async function r(n) {
5
+ const { default: t } = await n();
6
+ if (!o().has(t)) {
7
+ const i = await c(t);
8
+ "$onInit" in i && a(i.$onInit) && await i.$onInit();
9
+ }
10
+ return o().get(t);
11
+ }
12
+ async function m(n) {
13
+ try {
14
+ return await r(n);
15
+ } catch {
16
+ return;
17
+ }
18
+ }
19
+ export {
20
+ r as lazyInject,
21
+ m as optionalLazyInject
22
+ };
23
+ //# sourceMappingURL=lazyInject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazyInject.js","sources":["../../../../src/common/fn/lazyInject.ts"],"sourcesContent":["import {isFunction} from \"@tsed/core/utils/isFunction.js\";\n\nimport type {TokenProvider} from \"../interfaces/TokenProvider.js\";\nimport {inject} from \"./inject.js\";\nimport {injector} from \"./injector.js\";\n\n/**\n * Lazy load a provider from his package and invoke only when the provider is used.\n */\nexport async function lazyInject<Token>(factory: () => Promise<{default: TokenProvider<Token>}>): Promise<Token> {\n const {default: token} = await factory();\n\n if (!injector().has(token)) {\n const instance = await inject(token);\n\n const instanceWithHook = instance as unknown as {$onInit?: () => Promise<void>};\n\n if (\"$onInit\" in instanceWithHook && isFunction(instanceWithHook.$onInit)) {\n await instanceWithHook.$onInit();\n }\n }\n\n return injector().get(token) as unknown as Promise<Token>;\n}\n\nexport async function optionalLazyInject<Token>(\n factory: () => Promise<{\n default: TokenProvider;\n }>\n): Promise<Token | undefined> {\n try {\n return await lazyInject(factory);\n } catch (er) {\n return undefined;\n }\n}\n"],"names":["lazyInject","factory","token","injector","instanceWithHook","inject","isFunction","optionalLazyInject"],"mappings":";;;AASA,eAAsBA,EAAkBC,GAAyE;AAC/G,QAAM,EAAC,SAASC,EAAK,IAAI,MAAMD,EAAQ;AAEvC,MAAI,CAACE,EAAA,EAAW,IAAID,CAAK,GAAG;AAG1B,UAAME,IAFW,MAAMC,EAAOH,CAAK;AAInC,IAAI,aAAaE,KAAoBE,EAAWF,EAAiB,OAAO,KACtE,MAAMA,EAAiB,QAAQ;AAAA,EACjC;AAGK,SAAAD,EAAA,EAAW,IAAID,CAAK;AAC7B;AAEA,eAAsBK,EACpBN,GAG4B;AACxB,MAAA;AACK,WAAA,MAAMD,EAAWC,CAAO;AAAA,UACpB;AACJ;AAAA,EAAA;AAEX;"}
@@ -0,0 +1,29 @@
1
+ import { LocalsContainer as i } from "../domain/LocalsContainer.js";
2
+ import { InjectorService as l } from "../services/InjectorService.js";
3
+ import { injector as r } from "./injector.js";
4
+ let o, t = {};
5
+ const c = [];
6
+ function p({
7
+ providers: n,
8
+ rebuild: e
9
+ } = {}) {
10
+ return (!o || n) && (o = new i(), n && (n.forEach((a) => {
11
+ o.set(a.token, a.use);
12
+ }), o.set(l, r())), e && (t.rebuild = e)), o;
13
+ }
14
+ function L() {
15
+ return { ...t };
16
+ }
17
+ function s() {
18
+ o && c.push(o), o = void 0, t = {};
19
+ }
20
+ function C() {
21
+ s(), c.map((n) => n.clear());
22
+ }
23
+ export {
24
+ C as cleanAllLocalsContainer,
25
+ s as detachLocalsContainer,
26
+ L as invokeOptions,
27
+ p as localsContainer
28
+ };
29
+ //# sourceMappingURL=localsContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localsContainer.js","sources":["../../../../src/common/fn/localsContainer.ts"],"sourcesContent":["import {LocalsContainer} from \"../domain/LocalsContainer.js\";\nimport type {UseImportTokenProviderOpts} from \"../interfaces/ImportTokenProviderOpts.js\";\nimport {InjectorService} from \"../services/InjectorService.js\";\nimport {injector} from \"./injector.js\";\n\nlet globalLocals: LocalsContainer | undefined;\nlet globalInvOpts: any = {};\nconst stagedLocals: LocalsContainer[] = [];\n\n/**\n * Get the locals container initiated by DITest or .bootstrap() method.\n */\nexport function localsContainer({\n providers,\n rebuild\n}: {\n providers?: UseImportTokenProviderOpts[];\n rebuild?: boolean;\n} = {}) {\n if (!globalLocals || providers) {\n globalLocals = new LocalsContainer();\n\n if (providers) {\n providers.forEach((p) => {\n globalLocals!.set(p.token, p.use);\n });\n\n globalLocals.set(InjectorService, injector());\n }\n\n if (rebuild) {\n globalInvOpts.rebuild = rebuild;\n }\n }\n\n return globalLocals;\n}\n\nexport function invokeOptions() {\n return {...globalInvOpts};\n}\n\n/**\n * Reset the locals container.\n */\nexport function detachLocalsContainer() {\n globalLocals && stagedLocals.push(globalLocals);\n globalLocals = undefined;\n globalInvOpts = {};\n}\n\nexport function cleanAllLocalsContainer() {\n detachLocalsContainer();\n stagedLocals.map((item) => item.clear());\n}\n"],"names":["globalLocals","globalInvOpts","stagedLocals","localsContainer","providers","rebuild","LocalsContainer","p","InjectorService","injector","invokeOptions","detachLocalsContainer","cleanAllLocalsContainer","item"],"mappings":";;;AAKA,IAAIA,GACAC,IAAqB,CAAC;AAC1B,MAAMC,IAAkC,CAAC;AAKlC,SAASC,EAAgB;AAAA,EAC9B,WAAAC;AAAA,EACA,SAAAC;AACF,IAGI,IAAI;AACF,UAAA,CAACL,KAAgBI,OACnBJ,IAAe,IAAIM,EAAgB,GAE/BF,MACQA,EAAA,QAAQ,CAACG,MAAM;AACvB,IAAAP,EAAc,IAAIO,EAAE,OAAOA,EAAE,GAAG;AAAA,EAAA,CACjC,GAEYP,EAAA,IAAIQ,GAAiBC,GAAU,IAG1CJ,MACFJ,EAAc,UAAUI,KAIrBL;AACT;AAEO,SAASU,IAAgB;AACvB,SAAA,EAAC,GAAGT,EAAa;AAC1B;AAKO,SAASU,IAAwB;AACtB,EAAAX,KAAAE,EAAa,KAAKF,CAAY,GAC/BA,IAAA,QACfC,IAAgB,CAAC;AACnB;AAEO,SAASW,IAA0B;AAClB,EAAAD,EAAA,GACtBT,EAAa,IAAI,CAACW,MAASA,EAAK,OAAO;AACzC;"}
@@ -0,0 +1,15 @@
1
+ import { injector as t } from "./injector.js";
2
+ function f(e, r) {
3
+ return Object.freeze({
4
+ get value() {
5
+ return t().settings.get(e, r);
6
+ },
7
+ set value(n) {
8
+ t().settings.set(e, n);
9
+ }
10
+ });
11
+ }
12
+ export {
13
+ f as refValue
14
+ };
15
+ //# sourceMappingURL=refValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refValue.js","sources":["../../../../src/common/fn/refValue.ts"],"sourcesContent":["import {injector} from \"./injector.js\";\n\n/**\n * Get a value from the `injector.settings`.\n *\n * ## Example\n *\n * ```ts\n * import {refValue, Injectable} from \"@tsed/di\";\n *\n * @Injectable()\n * class Test {\n * test = refValue(\"logger.level\", \"default value\");\n *\n * constructor() {\n * console.log(this.test.value); // \"off\"\n * }\n * }\n *\n * @param expression The expression to get the value from the `injector.settings`.\n */\nexport function refValue<Type>(expression: string): {value: Type | undefined};\nexport function refValue<Type>(expression: string, defaultValue: Type | undefined): {value: Type};\nexport function refValue<Type>(expression: string, defaultValue?: Type | undefined): {value: Type | undefined} {\n return Object.freeze({\n get value() {\n return injector().settings.get(expression, defaultValue);\n },\n set value(value: Type) {\n injector().settings.set(expression, value);\n }\n });\n}\n"],"names":["refValue","expression","defaultValue","injector","value"],"mappings":";AAuBgB,SAAAA,EAAeC,GAAoBC,GAA4D;AAC7G,SAAO,OAAO,OAAO;AAAA,IACnB,IAAI,QAAQ;AACV,aAAOC,EAAS,EAAE,SAAS,IAAIF,GAAYC,CAAY;AAAA,IACzD;AAAA,IACA,IAAI,MAAME,GAAa;AACrB,MAAAD,EAAW,EAAA,SAAS,IAAIF,GAAYG,CAAK;AAAA,IAAA;AAAA,EAC3C,CACD;AACH;"}