@tsed/di 7.0.0-alpha.2 → 7.0.0-beta.11

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 (279) hide show
  1. package/lib/cjs/constants/constants.js +7 -0
  2. package/lib/cjs/constants/constants.js.map +1 -0
  3. package/lib/cjs/decorators/configuration.js +24 -0
  4. package/lib/cjs/decorators/configuration.js.map +1 -0
  5. package/lib/cjs/decorators/constant.js +55 -0
  6. package/lib/cjs/decorators/constant.js.map +1 -0
  7. package/lib/cjs/decorators/controller.js +53 -0
  8. package/lib/cjs/decorators/controller.js.map +1 -0
  9. package/lib/cjs/decorators/inject.js +104 -0
  10. package/lib/cjs/decorators/inject.js.map +1 -0
  11. package/lib/cjs/decorators/injectable.js +32 -0
  12. package/lib/cjs/decorators/injectable.js.map +1 -0
  13. package/lib/cjs/decorators/intercept.js +36 -0
  14. package/lib/cjs/decorators/intercept.js.map +1 -0
  15. package/lib/cjs/decorators/interceptor.js +21 -0
  16. package/lib/cjs/decorators/interceptor.js.map +1 -0
  17. package/lib/cjs/decorators/lazyInject.js +71 -0
  18. package/lib/cjs/decorators/lazyInject.js.map +1 -0
  19. package/lib/cjs/decorators/module.js +32 -0
  20. package/lib/cjs/decorators/module.js.map +1 -0
  21. package/lib/cjs/decorators/opts.js +54 -0
  22. package/lib/cjs/decorators/opts.js.map +1 -0
  23. package/lib/cjs/decorators/overrideProvider.js +17 -0
  24. package/lib/cjs/decorators/overrideProvider.js.map +1 -0
  25. package/lib/cjs/decorators/scope.js +16 -0
  26. package/lib/cjs/decorators/scope.js.map +1 -0
  27. package/lib/cjs/decorators/service.js +18 -0
  28. package/lib/cjs/decorators/service.js.map +1 -0
  29. package/lib/cjs/decorators/useOpts.js +65 -0
  30. package/lib/cjs/decorators/useOpts.js.map +1 -0
  31. package/lib/cjs/decorators/value.js +55 -0
  32. package/lib/cjs/decorators/value.js.map +1 -0
  33. package/lib/cjs/domain/Container.js +72 -0
  34. package/lib/cjs/domain/Container.js.map +1 -0
  35. package/lib/cjs/domain/ContextLogger.js +85 -0
  36. package/lib/cjs/domain/ContextLogger.js.map +1 -0
  37. package/lib/cjs/domain/DIContext.js +45 -0
  38. package/lib/cjs/domain/DIContext.js.map +1 -0
  39. package/lib/cjs/domain/InjectablePropertyType.js +12 -0
  40. package/lib/cjs/domain/InjectablePropertyType.js.map +1 -0
  41. package/lib/cjs/domain/LocalsContainer.js +55 -0
  42. package/lib/cjs/domain/LocalsContainer.js.map +1 -0
  43. package/lib/cjs/domain/Provider.js +122 -0
  44. package/lib/cjs/domain/Provider.js.map +1 -0
  45. package/lib/cjs/domain/ProviderScope.js +10 -0
  46. package/lib/cjs/domain/ProviderScope.js.map +1 -0
  47. package/lib/cjs/domain/ProviderType.js +15 -0
  48. package/lib/cjs/domain/ProviderType.js.map +1 -0
  49. package/lib/cjs/errors/InjectionError.js +58 -0
  50. package/lib/cjs/errors/InjectionError.js.map +1 -0
  51. package/lib/cjs/errors/UndefinedTokenError.js +11 -0
  52. package/lib/cjs/errors/UndefinedTokenError.js.map +1 -0
  53. package/lib/cjs/index.js +59 -0
  54. package/lib/cjs/index.js.map +1 -0
  55. package/lib/cjs/interfaces/DIConfigurationOptions.js +3 -0
  56. package/lib/cjs/interfaces/DIConfigurationOptions.js.map +1 -0
  57. package/lib/cjs/interfaces/DILogger.js +3 -0
  58. package/lib/cjs/interfaces/DILogger.js.map +1 -0
  59. package/lib/cjs/interfaces/DIResolver.js +3 -0
  60. package/lib/cjs/interfaces/DIResolver.js.map +1 -0
  61. package/lib/cjs/interfaces/InjectableProperties.js +3 -0
  62. package/lib/cjs/interfaces/InjectableProperties.js.map +1 -0
  63. package/lib/cjs/interfaces/InterceptorContext.js +3 -0
  64. package/lib/cjs/interfaces/InterceptorContext.js.map +1 -0
  65. package/lib/cjs/interfaces/InterceptorMethods.js +3 -0
  66. package/lib/cjs/interfaces/InterceptorMethods.js.map +1 -0
  67. package/lib/cjs/interfaces/InvokeOptions.js +3 -0
  68. package/lib/cjs/interfaces/InvokeOptions.js.map +1 -0
  69. package/lib/cjs/interfaces/OnDestroy.js +3 -0
  70. package/lib/cjs/interfaces/OnDestroy.js.map +1 -0
  71. package/lib/cjs/interfaces/OnInit.js +3 -0
  72. package/lib/cjs/interfaces/OnInit.js.map +1 -0
  73. package/lib/cjs/interfaces/ProviderOpts.js +3 -0
  74. package/lib/cjs/interfaces/ProviderOpts.js.map +1 -0
  75. package/lib/cjs/interfaces/RegistrySettings.js +3 -0
  76. package/lib/cjs/interfaces/RegistrySettings.js.map +1 -0
  77. package/lib/cjs/interfaces/ResolvedInvokeOptions.js +3 -0
  78. package/lib/cjs/interfaces/ResolvedInvokeOptions.js.map +1 -0
  79. package/lib/cjs/interfaces/TokenProvider.js +3 -0
  80. package/lib/cjs/interfaces/TokenProvider.js.map +1 -0
  81. package/lib/cjs/interfaces/TokenRoute.js +3 -0
  82. package/lib/cjs/interfaces/TokenRoute.js.map +1 -0
  83. package/lib/cjs/package.json +3 -0
  84. package/lib/cjs/registries/GlobalProviders.js +124 -0
  85. package/lib/cjs/registries/GlobalProviders.js.map +1 -0
  86. package/lib/cjs/registries/ProviderRegistry.js +86 -0
  87. package/lib/cjs/registries/ProviderRegistry.js.map +1 -0
  88. package/lib/cjs/services/DIConfiguration.js +136 -0
  89. package/lib/cjs/services/DIConfiguration.js.map +1 -0
  90. package/lib/cjs/services/DILogger.js +13 -0
  91. package/lib/cjs/services/DILogger.js.map +1 -0
  92. package/lib/cjs/services/DITest.js +116 -0
  93. package/lib/cjs/services/DITest.js.map +1 -0
  94. package/lib/cjs/services/InjectorService.js +589 -0
  95. package/lib/cjs/services/InjectorService.js.map +1 -0
  96. package/lib/cjs/utils/colors.js +10 -0
  97. package/lib/cjs/utils/colors.js.map +1 -0
  98. package/lib/cjs/utils/createContainer.js +14 -0
  99. package/lib/cjs/utils/createContainer.js.map +1 -0
  100. package/lib/cjs/utils/getConfiguration.js +29 -0
  101. package/lib/cjs/utils/getConfiguration.js.map +1 -0
  102. package/lib/cjs/utils/resolveControllers.js +47 -0
  103. package/lib/cjs/utils/resolveControllers.js.map +1 -0
  104. package/lib/cjs/utils/runInContext.js +19 -0
  105. package/lib/cjs/utils/runInContext.js.map +1 -0
  106. package/lib/cjs/utils/setLoggerLevel.js +16 -0
  107. package/lib/cjs/utils/setLoggerLevel.js.map +1 -0
  108. package/lib/esm/constants/constants.js +4 -0
  109. package/lib/esm/constants/constants.js.map +1 -0
  110. package/lib/esm/decorators/configuration.js +20 -0
  111. package/lib/esm/decorators/configuration.js.map +1 -0
  112. package/lib/esm/decorators/constant.js +51 -0
  113. package/lib/esm/decorators/constant.js.map +1 -0
  114. package/lib/esm/decorators/controller.js +49 -0
  115. package/lib/esm/decorators/controller.js.map +1 -0
  116. package/lib/esm/decorators/inject.js +98 -0
  117. package/lib/esm/decorators/inject.js.map +1 -0
  118. package/lib/esm/decorators/injectable.js +28 -0
  119. package/lib/esm/decorators/injectable.js.map +1 -0
  120. package/lib/esm/decorators/intercept.js +32 -0
  121. package/lib/esm/decorators/intercept.js.map +1 -0
  122. package/lib/esm/decorators/interceptor.js +17 -0
  123. package/lib/esm/decorators/interceptor.js.map +1 -0
  124. package/lib/esm/decorators/lazyInject.js +66 -0
  125. package/lib/esm/decorators/lazyInject.js.map +1 -0
  126. package/lib/esm/decorators/module.js +28 -0
  127. package/lib/esm/decorators/module.js.map +1 -0
  128. package/lib/esm/decorators/opts.js +50 -0
  129. package/lib/esm/decorators/opts.js.map +1 -0
  130. package/lib/esm/decorators/overrideProvider.js +13 -0
  131. package/lib/esm/decorators/overrideProvider.js.map +1 -0
  132. package/lib/esm/decorators/scope.js +12 -0
  133. package/lib/esm/decorators/scope.js.map +1 -0
  134. package/lib/esm/decorators/service.js +14 -0
  135. package/lib/esm/decorators/service.js.map +1 -0
  136. package/lib/esm/decorators/useOpts.js +61 -0
  137. package/lib/esm/decorators/useOpts.js.map +1 -0
  138. package/lib/esm/decorators/value.js +51 -0
  139. package/lib/esm/decorators/value.js.map +1 -0
  140. package/lib/esm/domain/Container.js +68 -0
  141. package/lib/esm/domain/Container.js.map +1 -0
  142. package/lib/esm/domain/ContextLogger.js +81 -0
  143. package/lib/esm/domain/ContextLogger.js.map +1 -0
  144. package/lib/esm/domain/DIContext.js +41 -0
  145. package/lib/esm/domain/DIContext.js.map +1 -0
  146. package/lib/esm/domain/InjectablePropertyType.js +9 -0
  147. package/lib/esm/domain/InjectablePropertyType.js.map +1 -0
  148. package/lib/esm/domain/LocalsContainer.js +51 -0
  149. package/lib/esm/domain/LocalsContainer.js.map +1 -0
  150. package/lib/esm/domain/Provider.js +118 -0
  151. package/lib/esm/domain/Provider.js.map +1 -0
  152. package/lib/esm/domain/ProviderScope.js +7 -0
  153. package/lib/esm/domain/ProviderScope.js.map +1 -0
  154. package/lib/esm/domain/ProviderType.js +12 -0
  155. package/lib/esm/domain/ProviderType.js.map +1 -0
  156. package/lib/esm/errors/InjectionError.js +54 -0
  157. package/lib/esm/errors/InjectionError.js.map +1 -0
  158. package/lib/esm/errors/UndefinedTokenError.js +7 -0
  159. package/lib/esm/errors/UndefinedTokenError.js.map +1 -0
  160. package/lib/esm/index.js +56 -0
  161. package/lib/esm/index.js.map +1 -0
  162. package/lib/esm/interfaces/DIConfigurationOptions.js +2 -0
  163. package/lib/esm/interfaces/DIConfigurationOptions.js.map +1 -0
  164. package/lib/esm/interfaces/DILogger.js +2 -0
  165. package/lib/esm/interfaces/DILogger.js.map +1 -0
  166. package/lib/esm/interfaces/DIResolver.js +2 -0
  167. package/lib/esm/interfaces/DIResolver.js.map +1 -0
  168. package/lib/esm/interfaces/InjectableProperties.js +2 -0
  169. package/lib/esm/interfaces/InjectableProperties.js.map +1 -0
  170. package/lib/esm/interfaces/InterceptorContext.js +2 -0
  171. package/lib/esm/interfaces/InterceptorContext.js.map +1 -0
  172. package/lib/esm/interfaces/InterceptorMethods.js +2 -0
  173. package/lib/esm/interfaces/InterceptorMethods.js.map +1 -0
  174. package/lib/esm/interfaces/InvokeOptions.js +2 -0
  175. package/lib/esm/interfaces/InvokeOptions.js.map +1 -0
  176. package/lib/esm/interfaces/OnDestroy.js +2 -0
  177. package/lib/esm/interfaces/OnDestroy.js.map +1 -0
  178. package/lib/esm/interfaces/OnInit.js +2 -0
  179. package/lib/esm/interfaces/OnInit.js.map +1 -0
  180. package/lib/esm/interfaces/ProviderOpts.js +2 -0
  181. package/lib/esm/interfaces/ProviderOpts.js.map +1 -0
  182. package/lib/esm/interfaces/RegistrySettings.js +2 -0
  183. package/lib/esm/interfaces/RegistrySettings.js.map +1 -0
  184. package/lib/esm/interfaces/ResolvedInvokeOptions.js +2 -0
  185. package/lib/esm/interfaces/ResolvedInvokeOptions.js.map +1 -0
  186. package/lib/esm/interfaces/TokenProvider.js +2 -0
  187. package/lib/esm/interfaces/TokenProvider.js.map +1 -0
  188. package/lib/esm/interfaces/TokenRoute.js +2 -0
  189. package/lib/esm/interfaces/TokenRoute.js.map +1 -0
  190. package/lib/esm/package.json +3 -0
  191. package/lib/esm/registries/GlobalProviders.js +120 -0
  192. package/lib/esm/registries/GlobalProviders.js.map +1 -0
  193. package/lib/esm/registries/ProviderRegistry.js +81 -0
  194. package/lib/esm/registries/ProviderRegistry.js.map +1 -0
  195. package/lib/esm/services/DIConfiguration.js +132 -0
  196. package/lib/esm/services/DIConfiguration.js.map +1 -0
  197. package/lib/esm/services/DILogger.js +11 -0
  198. package/lib/esm/services/DILogger.js.map +1 -0
  199. package/lib/esm/services/DITest.js +112 -0
  200. package/lib/esm/services/DITest.js.map +1 -0
  201. package/lib/esm/services/InjectorService.js +586 -0
  202. package/lib/esm/services/InjectorService.js.map +1 -0
  203. package/lib/esm/utils/colors.js +7 -0
  204. package/lib/esm/utils/colors.js.map +1 -0
  205. package/lib/esm/utils/createContainer.js +10 -0
  206. package/lib/esm/utils/createContainer.js.map +1 -0
  207. package/lib/esm/utils/getConfiguration.js +24 -0
  208. package/lib/esm/utils/getConfiguration.js.map +1 -0
  209. package/lib/esm/utils/resolveControllers.js +42 -0
  210. package/lib/esm/utils/resolveControllers.js.map +1 -0
  211. package/lib/esm/utils/runInContext.js +13 -0
  212. package/lib/esm/utils/runInContext.js.map +1 -0
  213. package/lib/esm/utils/setLoggerLevel.js +12 -0
  214. package/lib/esm/utils/setLoggerLevel.js.map +1 -0
  215. package/lib/{constants/index.d.ts → types/constants/constants.d.ts} +0 -0
  216. package/lib/{decorators → types/decorators}/configuration.d.ts +0 -0
  217. package/lib/{decorators → types/decorators}/constant.d.ts +0 -0
  218. package/lib/{decorators → types/decorators}/controller.d.ts +2 -2
  219. package/lib/types/decorators/inject.d.ts +36 -0
  220. package/lib/{decorators → types/decorators}/injectable.d.ts +4 -5
  221. package/lib/{decorators → types/decorators}/intercept.d.ts +2 -2
  222. package/lib/{decorators → types/decorators}/interceptor.d.ts +0 -0
  223. package/lib/types/decorators/lazyInject.d.ts +43 -0
  224. package/lib/{decorators → types/decorators}/module.d.ts +3 -2
  225. package/lib/{decorators → types/decorators}/opts.d.ts +0 -0
  226. package/lib/{decorators → types/decorators}/overrideProvider.d.ts +0 -0
  227. package/lib/{decorators → types/decorators}/scope.d.ts +0 -0
  228. package/lib/{decorators → types/decorators}/service.d.ts +0 -0
  229. package/lib/{decorators → types/decorators}/useOpts.d.ts +0 -0
  230. package/lib/{decorators → types/decorators}/value.d.ts +0 -0
  231. package/lib/{domain → types/domain}/Container.d.ts +5 -6
  232. package/lib/{domain → types/domain}/ContextLogger.d.ts +0 -0
  233. package/lib/{domain → types/domain}/DIContext.d.ts +0 -6
  234. package/lib/{domain → types/domain}/InjectablePropertyType.d.ts +0 -0
  235. package/lib/{domain → types/domain}/LocalsContainer.d.ts +0 -0
  236. package/lib/{domain → types/domain}/Provider.d.ts +17 -3
  237. package/lib/{domain → types/domain}/ProviderScope.d.ts +0 -0
  238. package/lib/{domain → types/domain}/ProviderType.d.ts +0 -0
  239. package/lib/{errors → types/errors}/InjectionError.d.ts +1 -1
  240. package/lib/{errors → types/errors}/UndefinedTokenError.d.ts +0 -0
  241. package/lib/types/index.d.ts +55 -0
  242. package/lib/{interfaces → types/interfaces}/DIConfigurationOptions.d.ts +4 -0
  243. package/lib/{interfaces → types/interfaces}/DILogger.d.ts +0 -0
  244. package/lib/{interfaces → types/interfaces}/DIResolver.d.ts +0 -0
  245. package/lib/{interfaces → types/interfaces}/InjectableProperties.d.ts +8 -4
  246. package/lib/{interfaces → types/interfaces}/InterceptorContext.d.ts +0 -0
  247. package/lib/{interfaces → types/interfaces}/InterceptorMethods.d.ts +0 -0
  248. package/lib/{interfaces → types/interfaces}/InvokeOptions.d.ts +0 -0
  249. package/lib/{interfaces → types/interfaces}/OnDestroy.d.ts +0 -0
  250. package/lib/{interfaces → types/interfaces}/OnInit.d.ts +0 -0
  251. package/lib/{interfaces/IProvider.d.ts → types/interfaces/ProviderOpts.d.ts} +5 -4
  252. package/lib/{interfaces → types/interfaces}/RegistrySettings.d.ts +7 -3
  253. package/lib/types/interfaces/ResolvedInvokeOptions.d.ts +12 -0
  254. package/lib/{interfaces → types/interfaces}/TokenProvider.d.ts +0 -0
  255. package/lib/types/interfaces/TokenRoute.d.ts +5 -0
  256. package/lib/{registries → types/registries}/GlobalProviders.d.ts +11 -5
  257. package/lib/{registries → types/registries}/ProviderRegistry.d.ts +4 -4
  258. package/lib/{services → types/services}/DIConfiguration.d.ts +6 -2
  259. package/lib/{services → types/services}/DILogger.d.ts +0 -0
  260. package/lib/{services → types/services}/DITest.d.ts +7 -1
  261. package/lib/{services → types/services}/InjectorService.d.ts +45 -22
  262. package/lib/types/utils/colors.d.ts +5 -0
  263. package/lib/{utils → types/utils}/createContainer.d.ts +0 -0
  264. package/lib/{utils → types/utils}/getConfiguration.d.ts +1 -0
  265. package/lib/types/utils/resolveControllers.d.ts +12 -0
  266. package/lib/types/utils/runInContext.d.ts +6 -0
  267. package/lib/{utils → types/utils}/setLoggerLevel.d.ts +0 -0
  268. package/package.json +32 -16
  269. package/readme.md +37 -41
  270. package/tsconfig.compile.esm.json +25 -0
  271. package/lib/decorators/index.d.ts +0 -14
  272. package/lib/decorators/inject.d.ts +0 -19
  273. package/lib/domain/index.d.ts +0 -8
  274. package/lib/index.d.ts +0 -16
  275. package/lib/index.js +0 -2269
  276. package/lib/index.js.map +0 -1
  277. package/lib/index.modern.js +0 -2232
  278. package/lib/index.modern.js.map +0 -1
  279. package/lib/interfaces/index.d.ts +0 -13
@@ -1,6 +1,10 @@
1
1
  import { Type } from "@tsed/core";
2
2
  import { Provider } from "../domain/Provider";
3
- import type { IProvider, RegistrySettings, TokenProvider } from "../interfaces";
3
+ import type { InjectorService } from "../services/InjectorService";
4
+ import { ResolvedInvokeOptions } from "../interfaces/ResolvedInvokeOptions";
5
+ import { TokenProvider } from "../interfaces/TokenProvider";
6
+ import { RegistrySettings } from "../interfaces/RegistrySettings";
7
+ import { ProviderOpts } from "../interfaces/ProviderOpts";
4
8
  export declare class GlobalProviderRegistry extends Map<TokenProvider, Provider> {
5
9
  #private;
6
10
  /**
@@ -26,7 +30,7 @@ export declare class GlobalProviderRegistry extends Map<TokenProvider, Provider>
26
30
  * @param target
27
31
  * @param options
28
32
  */
29
- merge(target: TokenProvider, options: Partial<IProvider>): void;
33
+ merge(target: TokenProvider, options: Partial<ProviderOpts>): void;
30
34
  /**
31
35
  * The delete() method removes the specified element from a Map object.
32
36
  * @param key Required. The key of the element to remove from the Map object.
@@ -34,15 +38,17 @@ export declare class GlobalProviderRegistry extends Map<TokenProvider, Provider>
34
38
  */
35
39
  delete(key: TokenProvider): boolean;
36
40
  createRegistry(type: string, model: Type<Provider>, options?: Partial<RegistrySettings>): this;
37
- onInvoke(provider: Provider, locals: Map<TokenProvider, any>, deps: any[]): void;
41
+ onInvoke(provider: Provider, locals: Map<TokenProvider, any>, options: ResolvedInvokeOptions & {
42
+ injector: InjectorService;
43
+ }): void;
38
44
  getRegistrySettings(target: string | TokenProvider): RegistrySettings;
39
- createRegisterFn(type: string): (provider: any | IProvider, instance?: any) => void;
45
+ createRegisterFn(type: string): (provider: any | ProviderOpts, instance?: any) => void;
40
46
  /**
41
47
  *
42
48
  * @param key
43
49
  * @param options
44
50
  */
45
- protected createIfNotExists(key: TokenProvider, options: Partial<IProvider>): Provider;
51
+ protected createIfNotExists(key: TokenProvider, options: Partial<ProviderOpts>): Provider;
46
52
  }
47
53
  /**
48
54
  *
@@ -1,9 +1,9 @@
1
- import type { IProvider } from "../interfaces";
1
+ import type { ProviderOpts } from "../interfaces/ProviderOpts";
2
2
  /**
3
3
  * Register a provider configuration.
4
- * @param {IProvider<any>} provider
4
+ * @param {ProviderOpts<any>} provider
5
5
  */
6
- export declare function registerProvider(provider: Partial<IProvider>): void;
6
+ export declare function registerProvider<Type = any>(provider: Partial<ProviderOpts<Type>>): void;
7
7
  /**
8
8
  * Add a new value in the `ProviderRegistry`.
9
9
  *
@@ -25,7 +25,7 @@ export declare function registerProvider(provider: Partial<IProvider>): void;
25
25
  * }
26
26
  * ```
27
27
  */
28
- export declare const registerValue: (provider: any | IProvider<any>, value?: any) => void;
28
+ export declare const registerValue: (provider: any | ProviderOpts<any>, value?: any) => void;
29
29
  /**
30
30
  * Add a new controller in the `ProviderRegistry`. This controller will be built when `InjectorService` will be loaded.
31
31
  *
@@ -1,5 +1,7 @@
1
- import { ProviderScope } from "../domain";
2
- import type { DIResolver, TokenProvider } from "../interfaces";
1
+ import { ProviderScope } from "../domain/ProviderScope";
2
+ import type { DIResolver } from "../interfaces/DIResolver";
3
+ import type { TokenProvider } from "../interfaces/TokenProvider";
4
+ import { TokenRoute } from "../interfaces/TokenRoute";
3
5
  export declare class DIConfiguration {
4
6
  readonly default: Map<string, any>;
5
7
  protected map: Map<string, any>;
@@ -15,6 +17,8 @@ export declare class DIConfiguration {
15
17
  set resolvers(resolvers: DIResolver[]);
16
18
  get imports(): TokenProvider[];
17
19
  set imports(imports: TokenProvider[]);
20
+ get routes(): TokenRoute[];
21
+ set routes(routes: TokenRoute[]);
18
22
  /**
19
23
  *
20
24
  * @param callbackfn
File without changes
@@ -1,9 +1,13 @@
1
1
  import { TokenProvider } from "../interfaces/TokenProvider";
2
2
  import { InjectorService } from "./InjectorService";
3
+ import { DIContext } from "../domain/DIContext";
3
4
  export interface DITestInvokeOptions {
4
5
  token?: TokenProvider;
5
6
  use: any;
6
7
  }
8
+ export interface DITestOptions extends Partial<TsED.Configuration> {
9
+ imports?: DITestInvokeOptions[];
10
+ }
7
11
  /**
8
12
  * Tool to run test with lightweight DI sandbox.
9
13
  */
@@ -12,7 +16,8 @@ export declare class DITest {
12
16
  static get injector(): InjectorService;
13
17
  static set injector(injector: InjectorService);
14
18
  static hasInjector(): boolean;
15
- static create(settings?: Partial<TsED.Configuration>): Promise<void>;
19
+ static create(settings?: DITestOptions): Promise<void>;
20
+ static createContainer(settings?: DITestOptions): Promise<void>;
16
21
  /**
17
22
  * Create a new injector with the right default services
18
23
  */
@@ -33,5 +38,6 @@ export declare class DITest {
33
38
  * @param options
34
39
  */
35
40
  static get<T = any>(target: TokenProvider, options?: any): T;
41
+ static createDIContext(): DIContext;
36
42
  protected static configure(settings?: Partial<TsED.Configuration>): Partial<TsED.Configuration>;
37
43
  }
@@ -1,9 +1,12 @@
1
- import { DIContext, ProviderScope } from "../domain";
2
1
  import { Container } from "../domain/Container";
3
2
  import { LocalsContainer } from "../domain/LocalsContainer";
4
3
  import { Provider } from "../domain/Provider";
5
- import { DILogger, InjectablePropertyService, InjectablePropertyValue, InvokeOptions, IProvider, TokenProvider } from "../interfaces";
6
4
  import { DIConfiguration } from "./DIConfiguration";
5
+ import { ProviderScope } from "../domain/ProviderScope";
6
+ import { DILogger } from "../interfaces/DILogger";
7
+ import { TokenProvider } from "../interfaces/TokenProvider";
8
+ import { InvokeOptions } from "../interfaces/InvokeOptions";
9
+ import { InjectablePropertyOptions, InjectablePropertyValue } from "../interfaces/InjectableProperties";
7
10
  /**
8
11
  * This service contain all services collected by `@Service` or services declared manually with `InjectorService.factory()` or `InjectorService.service()`.
9
12
  *
@@ -17,7 +20,7 @@ import { DIConfiguration } from "./DIConfiguration";
17
20
  * import MyService2 from "./services/service2";
18
21
  * import MyService3 from "./services/service3";
19
22
  *
20
- * // When all services is imported you can load InjectorService.
23
+ * // When all services are imported, you can load InjectorService.
21
24
  * const injector = new InjectorService()
22
25
  *
23
26
  * await injector.load();
@@ -26,11 +29,12 @@ import { DIConfiguration } from "./DIConfiguration";
26
29
  * ```
27
30
  */
28
31
  export declare class InjectorService extends Container {
32
+ #private;
29
33
  settings: TsED.Configuration & DIConfiguration;
30
34
  logger: DILogger;
31
35
  private resolvedConfiguration;
32
36
  constructor();
33
- get resolvers(): import("../interfaces").DIResolver[];
37
+ get resolvers(): import("..").DIResolver[];
34
38
  get scopes(): {
35
39
  [key: string]: ProviderScope;
36
40
  } & {
@@ -41,12 +45,6 @@ export declare class InjectorService extends Container {
41
45
  * @param provider
42
46
  */
43
47
  scopeOf(provider: Provider): ProviderScope;
44
- /**
45
- * Clone a provider from GlobalProviders and the given token. forkProvider method build automatically the provider if the instance parameter ins't given.
46
- * @param token
47
- * @param settings
48
- */
49
- forkProvider(token: TokenProvider, settings?: Partial<IProvider<any>>): Provider;
50
48
  /**
51
49
  * Return a list of instance build by the injector.
52
50
  */
@@ -72,6 +70,11 @@ export declare class InjectorService extends Container {
72
70
  * @returns {boolean}
73
71
  */
74
72
  get<T = any>(token: TokenProvider, options?: any): T | undefined;
73
+ /**
74
+ * Return all instance of the same provider type
75
+ * @param type
76
+ */
77
+ getAll(type: string): any[];
75
78
  /**
76
79
  * The has() method returns a boolean indicating whether an element with the specified key exists or not.
77
80
  * @returns {boolean}
@@ -103,14 +106,19 @@ export declare class InjectorService extends Container {
103
106
  /**
104
107
  * Build only providers which are asynchronous.
105
108
  */
106
- loadAsync(locals?: LocalsContainer<any>): Promise<LocalsContainer<any>>;
107
- loadSync(locals?: LocalsContainer<any>): LocalsContainer<any>;
109
+ loadAsync(locals?: LocalsContainer): Promise<LocalsContainer<any>>;
110
+ loadSync(locals?: LocalsContainer): LocalsContainer<any>;
108
111
  /**
109
112
  * Boostrap injector from container and resolve configuration.
110
113
  *
111
114
  * @param container
112
115
  */
113
116
  bootstrap(container?: Container): this;
117
+ /**
118
+ * Load injector from a given module
119
+ * @param rootModule
120
+ */
121
+ loadModule(rootModule: TokenProvider): Promise<LocalsContainer<any>>;
114
122
  /**
115
123
  * Build all providers from given container (or GlobalProviders) and emit `$onInit` event.
116
124
  *
@@ -134,19 +142,19 @@ export declare class InjectorService extends Container {
134
142
  * @param instance
135
143
  * @param {string} propertyKey
136
144
  */
137
- bindMethod(instance: any, { propertyKey }: InjectablePropertyService): void;
145
+ bindMethod(instance: any, { propertyKey }: InjectablePropertyOptions): void;
138
146
  /**
139
147
  * Create an injectable property.
140
148
  *
141
149
  * @param instance
142
150
  * @param {string} propertyKey
143
151
  * @param {any} useType
144
- * @param onGet
152
+ * @param resolver
145
153
  * @param options
146
154
  * @param locals
147
155
  * @param invokeOptions
148
156
  */
149
- bindProperty(instance: any, { propertyKey, useType, onGet, options }: InjectablePropertyService, locals: Map<TokenProvider, any>, invokeOptions: Partial<InvokeOptions>): void;
157
+ bindProperty(instance: any, { propertyKey, resolver, options }: InjectablePropertyOptions, locals: Map<TokenProvider, any>, invokeOptions: Partial<InvokeOptions>): void;
150
158
  /**
151
159
  *
152
160
  * @param instance
@@ -160,7 +168,7 @@ export declare class InjectorService extends Container {
160
168
  * @param {string} propertyKey
161
169
  * @param {any} useType
162
170
  */
163
- bindConstant(instance: any, { propertyKey, expression, defaultValue }: InjectablePropertyValue): PropertyDescriptor;
171
+ bindConstant(instance: any, { propertyKey, expression, defaultValue }: InjectablePropertyValue): void;
164
172
  /**
165
173
  *
166
174
  * @param instance
@@ -168,15 +176,30 @@ export declare class InjectorService extends Container {
168
176
  * @param useType
169
177
  * @param options
170
178
  */
171
- bindInterceptor(instance: any, { propertyKey, useType, options }: InjectablePropertyService): void;
179
+ bindInterceptor(instance: any, { propertyKey, useType, options }: InjectablePropertyOptions): void;
180
+ lazyInvoke<T = any>(token: TokenProvider): Promise<any>;
181
+ /**
182
+ * Emit an event to all service. See service [lifecycle hooks](/docs/services.md#lifecycle-hooks).
183
+ * @param eventName The event name to emit at all services.
184
+ * @param args List of the parameters to give to each services.
185
+ * @returns {Promise<any[]>} A list of promises.
186
+ */
187
+ emit(eventName: string, ...args: any[]): Promise<void>;
188
+ /**
189
+ * @param eventName
190
+ * @param value
191
+ * @param args
192
+ */
193
+ alter<T = any>(eventName: string, value: any, ...args: any[]): T;
172
194
  /**
173
- * Allow handler hack for AsyncHookContext plugin.
174
- * @param ctx
175
- * @param cb
176
- * @protected
195
+ * @param eventName
196
+ * @param value
197
+ * @param args
177
198
  */
178
- runInContext(ctx: DIContext, cb: any): any;
199
+ alterAsync<T = any>(eventName: string, value: any, ...args: any[]): Promise<T>;
200
+ destroy(): Promise<void>;
179
201
  protected ensureProvider(token: TokenProvider): Provider | undefined;
202
+ protected getInstance(token: any): any;
180
203
  /**
181
204
  * Invoke a class method and inject service.
182
205
  *
@@ -0,0 +1,5 @@
1
+ export declare const colors: {
2
+ red: (text: string) => string;
3
+ yellow: (text: string) => string;
4
+ green: (text: string) => string;
5
+ };
File without changes
@@ -1,2 +1,3 @@
1
1
  import { Type } from "@tsed/core";
2
+ export declare function mergeMount(m1?: any, m2?: any): any;
2
3
  export declare function getConfiguration(module: Type<any>, configuration?: any): any;
@@ -0,0 +1,12 @@
1
+ import { TokenProvider } from "../interfaces/TokenProvider";
2
+ import { TokenRoute } from "../interfaces/TokenRoute";
3
+ export declare function getTokens(config: any): {
4
+ route?: string;
5
+ token: TokenProvider;
6
+ }[];
7
+ /**
8
+ * Return controllers and is base route according to his configuration in module configuration.
9
+ *
10
+ * @param settings
11
+ */
12
+ export declare function resolveControllers(settings: Partial<TsED.Configuration>): TokenRoute[];
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" />
2
+ import { AsyncLocalStorage } from "async_hooks";
3
+ import { DIContext } from "../domain/DIContext";
4
+ export declare function getAsyncStore(): AsyncLocalStorage<DIContext>;
5
+ export declare function getContext(): DIContext | undefined;
6
+ export declare function runInContext(ctx: DIContext, cb: any): unknown;
File without changes
package/package.json CHANGED
@@ -1,37 +1,53 @@
1
1
  {
2
2
  "name": "@tsed/di",
3
- "version": "7.0.0-alpha.2",
3
+ "version": "7.0.0-beta.11",
4
4
  "description": "DI module for Ts.ED Framework",
5
5
  "private": false,
6
6
  "source": "./src/index.ts",
7
- "main": "./lib/index.js",
8
- "typings": "./lib/index.d.ts",
7
+ "main": "./lib/cjs/index.js",
8
+ "module": "./lib/esm/index.js",
9
+ "typings": "./lib/types/index.d.ts",
9
10
  "exports": {
10
- "require": "./lib/index.js",
11
- "default": "./lib/index.modern.js"
11
+ "types": "./lib/types/index.d.ts",
12
+ "import": "./lib/esm/index.js",
13
+ "require": "./lib/cjs/index.js",
14
+ "default": "./lib/esm/index.js"
12
15
  },
13
16
  "scripts": {
14
- "build": "microbundle --target node --no-compress --format modern,cjs --tsconfig ./tsconfig.compile.json"
17
+ "build": "yarn barrels && yarn run build:esm && yarn run build:cjs",
18
+ "build:cjs": "tsc --build tsconfig.compile.json",
19
+ "build:esm": "tsc --build tsconfig.compile.esm.json",
20
+ "barrels": "yarn barrelsby --delete -d ./src -e \"\\.spec\\.ts\" -e \"__mock__\""
15
21
  },
16
22
  "dependencies": {
17
- "@tsed/core": "7.0.0-alpha.2",
18
- "chalk": "4.1.0",
19
- "tslib": "2.2.0"
23
+ "tslib": "2.3.1"
20
24
  },
21
25
  "devDependencies": {
22
- "@tsed/logger": "^5.16.0"
26
+ "@tsed/core": "7.0.0-beta.11",
27
+ "@tsed/logger": ">=6.1.1",
28
+ "@tsed/schema": "7.0.0-beta.11"
23
29
  },
24
30
  "peerDependencies": {
25
- "@tsed/logger": "^5.16.0"
31
+ "@tsed/core": "^7.0.0-beta.11",
32
+ "@tsed/logger": ">=6.1.1",
33
+ "@tsed/schema": "^7.0.0-beta.11"
34
+ },
35
+ "peerDependenciesMeta": {
36
+ "@tsed/core": {
37
+ "optional": false
38
+ },
39
+ "@tsed/logger": {
40
+ "optional": false
41
+ },
42
+ "@tsed/schema": {
43
+ "optional": false
44
+ }
26
45
  },
27
46
  "repository": "https://github.com/tsedio/tsed",
28
47
  "bugs": {
29
48
  "url": "https://github.com/tsedio/tsed/issues"
30
49
  },
31
- "homepage": "https://github.com/tsedio/tsed/tree/alpha/packages/di",
50
+ "homepage": "https://github.com/tsedio/tsed/tree/beta/packages/di",
32
51
  "author": "Romain Lenzotti",
33
- "license": "MIT",
34
- "publishConfig": {
35
- "tag": "alpha"
36
- }
52
+ "license": "MIT"
37
53
  }
package/readme.md CHANGED
@@ -32,39 +32,36 @@ A package of Ts.ED framework. See website: https://tsed.io/
32
32
  # Installation
33
33
 
34
34
  You can get the latest release and the type definitions using npm:
35
+
35
36
  ```bash
36
37
  npm install --save @tsed/di
37
38
  ```
38
39
 
39
- > **Important!** TsExpressDecorators requires Node >= 6, Express >= 4, TypeScript >= 2.0 and
40
- the `experimentalDecorators`, `emitDecoratorMetadata`, `types` and `lib` compilation
41
- options in your `tsconfig.json` file.
40
+ > **Important!** TsExpressDecorators requires Node >= 6, Express >= 4, TypeScript >= 2.0 and
41
+ > the `experimentalDecorators`, `emitDecoratorMetadata`, `types` and `lib` compilation
42
+ > options in your `tsconfig.json` file.
42
43
 
43
44
  ```json
44
45
  {
45
46
  "compilerOptions": {
46
47
  "target": "es2016",
47
48
  "lib": ["es2016"],
48
- "typeRoots": [
49
- "./node_modules/@types"
50
- ],
49
+ "typeRoots": ["./node_modules/@types"],
51
50
  "module": "commonjs",
52
51
  "moduleResolution": "node",
53
- "experimentalDecorators":true,
52
+ "experimentalDecorators": true,
54
53
  "emitDecoratorMetadata": true,
55
54
  "allowSyntheticDefaultImports": true
56
55
  },
57
- "exclude": [
58
- "node_modules"
59
- ]
56
+ "exclude": ["node_modules"]
60
57
  }
61
58
  ```
62
59
 
63
60
  ## Introduction
64
61
 
65
- Basically, almost everything may be considered as a provider – service, factory, intereceptors, and so on.
62
+ Basically, almost everything may be considered as a provider – service, factory, intereceptors, and so on.
66
63
  All of them can inject dependencies, meaning, they can create various relationships with each other.
67
- But in fact, a provider is nothing else than just a simple class annotated with an `@Injectable()` decorator.
64
+ But in fact, a provider is nothing else than just a simple class annotated with an `@Injectable()` decorator.
68
65
 
69
66
  ## Usage
70
67
 
@@ -77,27 +74,28 @@ import {Calendar} from "./models/calendar";
77
74
  @Injectable()
78
75
  export class CalendarsService {
79
76
  private readonly calendars: Calendar[] = [];
80
-
81
- create(calendar: Calendar) {
82
- this.calendars.push(calendar);
83
- }
84
-
85
- findAll(): Calendar[] {
86
- return this.calendars;
87
- }
77
+
78
+ create(calendar: Calendar) {
79
+ this.calendars.push(calendar);
80
+ }
81
+
82
+ findAll(): Calendar[] {
83
+ return this.calendars;
84
+ }
88
85
  }
89
86
  ```
90
87
 
91
88
  Here's a CalendarsService, a basic class with one property and two methods. The only new trait is that it uses the `@Injectable()` decorator.
92
89
  The `@Injectable()` attaches the metadata, thereby Ts.ED knows that this class is a provider.
93
-
90
+
94
91
  Now we have the service class already done, let's use it inside a controller:
92
+
95
93
  ```typescript
96
- import { Controller, Post, Body, Get } from '@tsed/common';
97
- import { CalendarsService } from './CalendarsService';
98
- import { Calendar } from './models/Calendar';
94
+ import {Controller, Post, Body, Get} from "@tsed/common";
95
+ import {CalendarsService} from "./CalendarsService";
96
+ import {Calendar} from "./models/Calendar";
99
97
 
100
- @Controller('/calendars')
98
+ @Controller("/calendars")
101
99
  export class CalendarCtrl {
102
100
  constructor(private readonly calendarsService: CalendarsService) {}
103
101
 
@@ -112,30 +110,31 @@ export class CalendarCtrl {
112
110
  }
113
111
  }
114
112
  ```
115
- > Note: Controller isn't a part of `@tsed/di`. `@Controller` decorator is exposed by `@tsed/common` package because it's a specific provider
116
- used by the Ts.ED framework. Ts.ED DI allow you to define your own Provider and decorator.
117
113
 
114
+ > Note: Controller isn't a part of `@tsed/di`. `@Controller` decorator is exposed by `@tsed/common` package because it's a specific provider
115
+ > used by the Ts.ED framework. Ts.ED DI allow you to define your own Provider and decorator.
118
116
 
119
117
  Finally, we can load the injector and use:
118
+
120
119
  ```typescript
121
120
  import {InjectorService} from "@tsed/di";
122
121
  import {CalendarCtrl} from "./CalendarCtrl";
123
122
 
124
123
  async function bootstrap() {
125
- const injector = new InjectorService()
126
-
124
+ const injector = new InjectorService();
125
+
127
126
  // Load all providers registered via @Injectable decorator
128
- await injector.load()
129
-
130
- const calendarController = injector.get<CalendarCtrl>()
131
-
132
- await calendarController.create(new Calendar())
133
-
127
+ await injector.load();
128
+
129
+ const calendarController = injector.get<CalendarCtrl>();
130
+
131
+ await calendarController.create(new Calendar());
132
+
134
133
  // And finally destroy injector and his instances (see injector hooks)
135
- await injector.destroy()
134
+ await injector.destroy();
136
135
  }
137
136
 
138
- bootstrap()
137
+ bootstrap();
139
138
  ```
140
139
 
141
140
  ## Custom providers
@@ -147,23 +146,20 @@ To organize your code Ts.ED DI provide different kind of providers:
147
146
  - Interceptor can be declared with `@Interceptor`,
148
147
  - Factory and Value can be declared with `registerProvider` and `registerValue`.
149
148
 
150
-
151
149
  See more details on our documentation https://tsed.io/providers.html
152
150
 
153
-
154
151
  ## Contributors
152
+
155
153
  Please read [contributing guidelines here](https://tsed.io/CONTRIBUTING.html)
156
154
 
157
155
  <a href="https://github.com/tsedio/ts-express-decorators/graphs/contributors"><img src="https://opencollective.com/tsed/contributors.svg?width=890" /></a>
158
156
 
159
-
160
157
  ## Backers
161
158
 
162
159
  Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/tsed#backer)]
163
160
 
164
161
  <a href="https://opencollective.com/tsed#backers" target="_blank"><img src="https://opencollective.com/tsed/tiers/backer.svg?width=890"></a>
165
162
 
166
-
167
163
  ## Sponsors
168
164
 
169
165
  Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)]
@@ -0,0 +1,25 @@
1
+ {
2
+ "extends": "./tsconfig.compile.json",
3
+ "compilerOptions": {
4
+ "baseUrl": ".",
5
+ "module": "ES2020",
6
+ "rootDir": "src",
7
+ "outDir": "./lib/esm",
8
+ "declaration": true,
9
+ "declarationDir": "./lib/types"
10
+ },
11
+ "include": ["src"],
12
+ "exclude": [
13
+ "node_modules",
14
+ "test",
15
+ "lib",
16
+ "benchmark",
17
+ "coverage",
18
+ "spec",
19
+ "**/*.benchmark.ts",
20
+ "**/*.spec.ts",
21
+ "keys",
22
+ "jest.config.js",
23
+ "**/__mock__/**"
24
+ ]
25
+ }
@@ -1,14 +0,0 @@
1
- export * from "./scope";
2
- export * from "./service";
3
- export * from "./overrideProvider";
4
- export * from "./inject";
5
- export * from "./injectable";
6
- export * from "./constant";
7
- export * from "./value";
8
- export * from "./intercept";
9
- export * from "./interceptor";
10
- export * from "./configuration";
11
- export * from "./module";
12
- export * from "./opts";
13
- export * from "./useOpts";
14
- export * from "./controller";
@@ -1,19 +0,0 @@
1
- /**
2
- * Inject a provider to another provider.
3
- *
4
- * Use this decorator to inject a custom provider on constructor parameter or property.
5
- *
6
- * ```typescript
7
- * @Injectable()
8
- * export class MyService {
9
- * @Inject(CONNECTION)
10
- * connection: CONNECTION;
11
- * }
12
- * ```
13
- *
14
- * @param symbol
15
- * @param onGet Use the given name method to inject
16
- * @returns {Function}
17
- * @decorator
18
- */
19
- export declare function Inject(symbol?: any, onGet?: (bean: any) => any): Function;
@@ -1,8 +0,0 @@
1
- export * from "./Container";
2
- export * from "./InjectablePropertyType";
3
- export * from "./LocalsContainer";
4
- export * from "./Provider";
5
- export * from "./ProviderScope";
6
- export * from "./ProviderType";
7
- export * from "./ContextLogger";
8
- export * from "./DIContext";
package/lib/index.d.ts DELETED
@@ -1,16 +0,0 @@
1
- export * from "./constants/index";
2
- export * from "./domain";
3
- export * from "./interfaces";
4
- export * from "./decorators";
5
- export * from "./registries/ProviderRegistry";
6
- export * from "./registries/GlobalProviders";
7
- export * from "./services/InjectorService";
8
- export * from "./services/DILogger";
9
- export * from "./services/DIConfiguration";
10
- export * from "./services/DITest";
11
- export * from "./errors/InjectionError";
12
- export * from "./errors/UndefinedTokenError";
13
- export * from "./utils/createContainer";
14
- export * from "./utils/getConfiguration";
15
- export * from "./utils/getConfiguration";
16
- export * from "./utils/setLoggerLevel";