@tsed/di 8.0.0-rc.5 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/lib/browser/di.umd.min.js +1 -1
  2. package/lib/browser/di.umd.min.js.map +1 -1
  3. package/lib/esm/common/decorators/autoInjectable.js +1 -1
  4. package/lib/esm/common/decorators/autoInjectable.js.map +1 -1
  5. package/lib/esm/common/decorators/configuration.js +7 -1
  6. package/lib/esm/common/decorators/configuration.js.map +1 -1
  7. package/lib/esm/common/decorators/controller.js +1 -1
  8. package/lib/esm/common/decorators/injectable.js +3 -3
  9. package/lib/esm/common/decorators/injectable.js.map +1 -1
  10. package/lib/esm/common/decorators/module.js +2 -4
  11. package/lib/esm/common/decorators/module.js.map +1 -1
  12. package/lib/esm/common/domain/Container.js +2 -2
  13. package/lib/esm/common/domain/Container.js.map +1 -1
  14. package/lib/esm/common/domain/ControllerProvider.js +2 -2
  15. package/lib/esm/common/domain/ControllerProvider.js.map +1 -1
  16. package/lib/esm/common/domain/LocalsContainer.js +1 -1
  17. package/lib/esm/common/domain/LocalsContainer.js.map +1 -1
  18. package/lib/esm/common/domain/Provider.js +44 -29
  19. package/lib/esm/common/domain/Provider.js.map +1 -1
  20. package/lib/esm/common/fn/inject.js +3 -2
  21. package/lib/esm/common/fn/inject.js.map +1 -1
  22. package/lib/esm/common/fn/injectMany.js +10 -1
  23. package/lib/esm/common/fn/injectMany.js.map +1 -1
  24. package/lib/esm/common/fn/injectable.js +2 -48
  25. package/lib/esm/common/fn/injectable.js.map +1 -1
  26. package/lib/esm/common/fn/injector.js +5 -17
  27. package/lib/esm/common/fn/injector.js.map +1 -1
  28. package/lib/esm/common/fn/lazyInject.js +4 -4
  29. package/lib/esm/common/fn/lazyInject.js.map +1 -1
  30. package/lib/esm/common/index.js +2 -3
  31. package/lib/esm/common/index.js.map +1 -1
  32. package/lib/esm/common/registries/GlobalProviders.js +8 -14
  33. package/lib/esm/common/registries/GlobalProviders.js.map +1 -1
  34. package/lib/esm/common/registries/ProviderRegistry.js +7 -3
  35. package/lib/esm/common/registries/ProviderRegistry.js.map +1 -1
  36. package/lib/esm/common/services/DIConfiguration.js +1 -14
  37. package/lib/esm/common/services/DIConfiguration.js.map +1 -1
  38. package/lib/esm/common/services/DILogger.js +3 -9
  39. package/lib/esm/common/services/DILogger.js.map +1 -1
  40. package/lib/esm/common/services/InjectorService.js +157 -157
  41. package/lib/esm/common/services/InjectorService.js.map +1 -1
  42. package/lib/esm/common/utils/discoverHooks.js +14 -0
  43. package/lib/esm/common/utils/discoverHooks.js.map +1 -0
  44. package/lib/esm/common/utils/providerBuilder.js +55 -0
  45. package/lib/esm/common/utils/providerBuilder.js.map +1 -0
  46. package/lib/esm/node/domain/ContextLogger.js +1 -1
  47. package/lib/esm/node/domain/ContextLogger.js.map +1 -1
  48. package/lib/esm/node/domain/DIContext.js.map +1 -1
  49. package/lib/esm/node/services/DITest.js +9 -14
  50. package/lib/esm/node/services/DITest.js.map +1 -1
  51. package/lib/esm/node/utils/attachLogger.js +4 -3
  52. package/lib/esm/node/utils/attachLogger.js.map +1 -1
  53. package/lib/esm/node/utils/setLoggerConfiguration.js +3 -3
  54. package/lib/esm/node/utils/setLoggerConfiguration.js.map +1 -1
  55. package/lib/esm/node/utils/setLoggerFormat.js +8 -7
  56. package/lib/esm/node/utils/setLoggerFormat.js.map +1 -1
  57. package/lib/esm/node/utils/setLoggerLevel.js +4 -4
  58. package/lib/esm/node/utils/setLoggerLevel.js.map +1 -1
  59. package/lib/types/common/decorators/controller.d.ts +1 -1
  60. package/lib/types/common/decorators/injectable.d.ts +1 -1
  61. package/lib/types/common/decorators/module.d.ts +0 -6
  62. package/lib/types/common/domain/ControllerProvider.d.ts +1 -1
  63. package/lib/types/common/domain/LocalsContainer.d.ts +1 -1
  64. package/lib/types/common/domain/Provider.d.ts +26 -7
  65. package/lib/types/common/fn/injectMany.d.ts +9 -0
  66. package/lib/types/common/fn/injectable.d.ts +403 -18
  67. package/lib/types/common/fn/injector.d.ts +2 -9
  68. package/lib/types/common/index.d.ts +2 -3
  69. package/lib/types/common/interfaces/DIConfigurationOptions.d.ts +0 -5
  70. package/lib/types/common/interfaces/InvokeOptions.d.ts +0 -5
  71. package/lib/types/common/interfaces/ProviderOpts.d.ts +1 -6
  72. package/lib/types/common/interfaces/RegistrySettings.d.ts +0 -12
  73. package/lib/types/common/interfaces/ResolvedInvokeOptions.d.ts +2 -2
  74. package/lib/types/common/registries/GlobalProviders.d.ts +1 -7
  75. package/lib/types/common/registries/ProviderRegistry.d.ts +12 -2
  76. package/lib/types/common/services/DIConfiguration.d.ts +1 -6
  77. package/lib/types/common/services/InjectorService.d.ts +50 -38
  78. package/lib/types/common/utils/discoverHooks.d.ts +2 -0
  79. package/lib/types/common/utils/providerBuilder.d.ts +17 -0
  80. package/lib/types/node/domain/ContextLogger.d.ts +1 -1
  81. package/lib/types/node/services/DITest.d.ts +1 -2
  82. package/lib/types/node/utils/attachLogger.d.ts +2 -2
  83. package/lib/types/node/utils/setLoggerConfiguration.d.ts +1 -2
  84. package/lib/types/node/utils/setLoggerFormat.d.ts +1 -3
  85. package/lib/types/node/utils/setLoggerLevel.d.ts +1 -3
  86. package/package.json +13 -11
  87. package/vitest.config.mts +4 -4
  88. package/lib/esm/common/fn/events.js +0 -31
  89. package/lib/esm/common/fn/events.js.map +0 -1
  90. package/lib/esm/common/interfaces/DIResolver.js +0 -2
  91. package/lib/esm/common/interfaces/DIResolver.js.map +0 -1
  92. package/lib/esm/common/utils/resolveControllers.js +0 -42
  93. package/lib/esm/common/utils/resolveControllers.js.map +0 -1
  94. package/lib/types/common/fn/events.d.ts +0 -23
  95. package/lib/types/common/interfaces/DIResolver.d.ts +0 -5
  96. package/lib/types/common/utils/resolveControllers.d.ts +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"autoInjectable.js","sourceRoot":"","sources":["../../../../src/common/decorators/autoInjectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAY,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;AAElF,SAAS,yBAAyB,CAAC,KAAW,EAAE,IAAe;IAC7D,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,IAAI,GAAoB,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,CAAC,GAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;YAEhI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAyD,MAAS,EAAK,EAAE;QAC9E,OAAO,MAAM,cAAe,SAAQ,MAAM;YACxC,YAAY,GAAG,IAAW;gBACxB,KAAK,CAAC,GAAG,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACpD,CAAC;SACc,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"autoInjectable.js","sourceRoot":"","sources":["../../../../src/common/decorators/autoInjectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAY,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;AAElF,SAAS,yBAAyB,CAAC,KAAW,EAAE,IAAe;IAC7D,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,IAAI,GAAoB,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;YAE9H,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAyD,MAAS,EAAK,EAAE;QAC9E,OAAO,MAAM,cAAe,SAAQ,MAAM;YACxC,YAAY,GAAG,IAAW;gBACxB,KAAK,CAAC,GAAG,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACpD,CAAC;SACc,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,8 @@
1
1
  import { decoratorTypeOf, DecoratorTypes } from "@tsed/core";
2
2
  import { configuration } from "../fn/configuration.js";
3
+ import { injectable } from "../fn/injectable.js";
4
+ import { injector } from "../fn/injector.js";
5
+ import { DIConfiguration } from "../services/DIConfiguration.js";
3
6
  import { Inject } from "./inject.js";
4
7
  export function Configuration(settings = {}) {
5
8
  return (...args) => {
@@ -9,8 +12,11 @@ export function Configuration(settings = {}) {
9
12
  break;
10
13
  default:
11
14
  case DecoratorTypes.PARAM_CTOR:
12
- return Inject(Configuration)(args[0], args[1], args[2]);
15
+ return Inject(DIConfiguration)(args[0], args[1], args[2]);
13
16
  }
14
17
  };
15
18
  }
19
+ // To maintain compatibility with the previous implementation, we need to declare Configuration as
20
+ // injectable token.
21
+ injectable(Configuration).factory(() => injector().settings);
16
22
  //# sourceMappingURL=configuration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../../../src/common/decorators/configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,eAAe,EAAE,cAAc,EAAC,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AASnC,MAAM,UAAU,aAAa,CAAC,WAAwC,EAAE;IACtE,OAAO,CAAC,GAAG,IAAyB,EAAE,EAAE;QACtC,QAAQ,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,KAAK,cAAc,CAAC,KAAK;gBACvB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAEjC,MAAM;YACR,QAAQ;YACR,KAAK,cAAc,CAAC,UAAU;gBAC5B,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAW,CAAC,CAAC;QACtE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../../../src/common/decorators/configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,eAAe,EAAE,cAAc,EAAC,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAgB,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AASnC,MAAM,UAAU,aAAa,CAAC,WAAwC,EAAE;IACtE,OAAO,CAAC,GAAG,IAAyB,EAAE,EAAE;QACtC,QAAQ,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,KAAK,cAAc,CAAC,KAAK;gBACvB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAEjC,MAAM;YACR,QAAQ;YACR,KAAK,cAAc,CAAC,UAAU;gBAC5B,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAW,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAID,kGAAkG;AAClG,oBAAoB;AACpB,UAAU,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC"}
@@ -19,7 +19,7 @@ function mapOptions(options) {
19
19
  *
20
20
  * ```typescript
21
21
  * @Controller("/calendars")
22
- * export provide CalendarCtrl {
22
+ * export class CalendarCtrl {
23
23
  *
24
24
  * @Get("/:id")
25
25
  * public get(
@@ -11,7 +11,7 @@ import { injectable } from "../fn/injectable.js";
11
11
  *
12
12
  * - type (@@ProviderType@@ or `string`): Kind of provider. (Default: `ProviderType.PROVIDER`)
13
13
  * - scope (@@ProviderScope@@): Kind of provider. (Default: `ProviderScope.SINGLETON`)
14
- * - provide (@@TokenProvider@@): An injection token (Note: This option override default metadata generated by Typescript).
14
+ * - token (@@TokenProvider@@): An injection token (Note: This option override default metadata generated by Typescript).
15
15
  * - deps (`Type<any>`): List of class or provider which will be injected to the constructor (Note: This options override default metadata generated by Typescript).
16
16
  *
17
17
  * @returns {Function}
@@ -21,9 +21,9 @@ export function Injectable(options = {}) {
21
21
  return (target) => {
22
22
  const opts = {
23
23
  ...options,
24
- ...(options.provide ? { useClass: target } : { provide: target })
24
+ ...(options.token ? { useClass: target } : { token: target })
25
25
  };
26
- injectable(opts.provide, opts);
26
+ injectable(opts.token, opts);
27
27
  };
28
28
  }
29
29
  //# sourceMappingURL=injectable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../../../src/common/decorators/injectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAG/C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CAAC,UAAiC,EAAE;IAC5D,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG;YACX,GAAG,OAAO;YACV,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,EAAC,OAAO,EAAE,MAAM,EAAC,CAAC;SAC9D,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../../../src/common/decorators/injectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAG/C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CAAC,UAAiC,EAAE;IAC5D,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG;YACX,GAAG,OAAO;YACV,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC;SAC1D,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC"}
@@ -8,21 +8,19 @@ import { Injectable } from "./injectable.js";
8
8
  *
9
9
  * ## Options
10
10
  * - imports: List of Provider which must be built by injector before invoking the module
11
- * - resolvers: List of external DI must be used to resolve unknown provider
12
11
  * - deps: List of provider must be injected to the module constructor (explicit declaration)
13
12
  *
14
13
  * @param options
15
14
  * @decorator
16
15
  */
17
16
  export function Module(options = {}) {
18
- const { scopes, imports, resolvers, deps, scope, ...configuration } = options;
17
+ const { scopes, imports, deps, scope, ...configuration } = options;
19
18
  return useDecorators(Configuration(configuration), Injectable({
20
19
  type: ProviderType.MODULE,
21
20
  scope: ProviderScope.SINGLETON,
22
21
  imports,
23
22
  deps,
24
- injectable: false,
25
- resolvers
23
+ injectable: false
26
24
  }));
27
25
  }
28
26
  //# sourceMappingURL=module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/common/decorators/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AA0B3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CAAC,UAAkC,EAAE;IACzD,MAAM,EAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,aAAa,EAAC,GAAG,OAAO,CAAC;IAE5E,OAAO,aAAa,CAClB,aAAa,CAAC,aAAa,CAAC,EAC5B,UAAU,CAAC;QACT,IAAI,EAAE,YAAY,CAAC,MAAM;QACzB,KAAK,EAAE,aAAa,CAAC,SAAS;QAC9B,OAAO;QACP,IAAI;QACJ,UAAU,EAAE,KAAK;QACjB,SAAS;KACV,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/common/decorators/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAsB3C;;;;;;;;;GASG;AACH,MAAM,UAAU,MAAM,CAAC,UAAkC,EAAE;IACzD,MAAM,EAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,aAAa,EAAC,GAAG,OAAO,CAAC;IAEjE,OAAO,aAAa,CAClB,aAAa,CAAC,aAAa,CAAC,EAC5B,UAAU,CAAC;QACT,IAAI,EAAE,YAAY,CAAC,MAAM;QACzB,KAAK,EAAE,aAAa,CAAC,SAAS;QAC9B,OAAO;QACP,IAAI;QACJ,UAAU,EAAE,KAAK;KAClB,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -59,8 +59,8 @@ export class Container extends Map {
59
59
  }
60
60
  addProviders(container) {
61
61
  container.forEach((provider) => {
62
- if (!this.hasProvider(provider.provide)) {
63
- this.setProvider(provider.provide, provider.clone());
62
+ if (!this.hasProvider(provider.token)) {
63
+ this.setProvider(provider.token, provider.clone());
64
64
  }
65
65
  });
66
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../../src/common/domain/Container.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAGvC,MAAM,OAAO,SAAU,SAAQ,GAA4B;IACzD;;;;OAIG;IACI,GAAG,CAAC,KAAoB,EAAE,WAAkC,EAAE;QACnE,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE5E,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAElC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,KAAoB,EAAE,WAAkC,EAAE;QAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,KAAoB;QACrC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,KAAoB,EAAE,QAAkB;QACzD,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAgC,KAAgC;QAChF,OAAO,KAAK,CAAC,GAAG,CAAC,KAAM,CAAM,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,IAAuD;QACzE,MAAM,KAAK,GAAI,EAAgC,CAAC,MAAM,CAAC,IAAa,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAElF,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE;YACnD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnD,OAAO,CAAC,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAEM,YAAY,CAAC,SAAuC;QACzD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../../src/common/domain/Container.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAGvC,MAAM,OAAO,SAAU,SAAQ,GAA4B;IACzD;;;;OAIG;IACI,GAAG,CAAC,KAAoB,EAAE,WAAkC,EAAE;QACnE,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE5E,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAElC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,KAAoB,EAAE,WAAkC,EAAE;QAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,KAAoB;QACrC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,KAAoB,EAAE,QAAkB;QACzD,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAgC,KAAgC;QAChF,OAAO,KAAK,CAAC,GAAG,CAAC,KAAM,CAAM,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,IAAuD;QACzE,MAAM,KAAK,GAAI,EAAgC,CAAC,MAAM,CAAC,IAAa,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAElF,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE;YACnD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnD,OAAO,CAAC,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAEM,YAAY,CAAC,SAAuC;QACzD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,8 +1,8 @@
1
1
  import { Provider } from "./Provider.js";
2
2
  import { ProviderType } from "./ProviderType.js";
3
3
  export class ControllerProvider extends Provider {
4
- constructor(provide, options = {}) {
5
- super(provide, options);
4
+ constructor(token, options = {}) {
5
+ super(token, options);
6
6
  this.type = ProviderType.CONTROLLER;
7
7
  }
8
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ControllerProvider.js","sourceRoot":"","sources":["../../../../src/common/domain/ControllerProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAQ/C,MAAM,OAAO,kBAA4B,SAAQ,QAAW;IAG1D,YAAY,OAAsB,EAAE,UAA6B,EAAE;QACjE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW;QACb,OAAO,MAAM,CAAC,MAAM,CAClB;YACE,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,EAAE;SACd,EACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAClC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW,CAAC,WAA2C;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEjF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YAC/C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"ControllerProvider.js","sourceRoot":"","sources":["../../../../src/common/domain/ControllerProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAQ/C,MAAM,OAAO,kBAA4B,SAAQ,QAAW;IAG1D,YAAY,KAAoB,EAAE,UAA6B,EAAE;QAC/D,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW;QACb,OAAO,MAAM,CAAC,MAAM,CAClB;YACE,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,EAAE;SACd,EACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAClC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW,CAAC,WAA2C;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEjF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YAC/C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { Hooks } from "@tsed/core";
1
+ import { Hooks } from "@tsed/hooks";
2
2
  export class LocalsContainer extends Map {
3
3
  constructor() {
4
4
  super(...arguments);
@@ -1 +1 @@
1
- {"version":3,"file":"LocalsContainer.js","sourceRoot":"","sources":["../../../../src/common/domain/LocalsContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAIjC,MAAM,OAAO,eAAgB,SAAQ,GAAuB;IAA5D;;QACW,UAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAK/B,CAAC;IAHC,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"LocalsContainer.js","sourceRoot":"","sources":["../../../../src/common/domain/LocalsContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAC;AAIlC,MAAM,OAAO,eAAgB,SAAQ,GAAuB;IAA5D;;QACW,UAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAK/B,CAAC;IAHC,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;CACF"}
@@ -1,32 +1,52 @@
1
- import { classOf, getClassOrSymbol, isClass, methodsOf, nameOf, Store } from "@tsed/core";
1
+ import { classOf, getClassOrSymbol, isClass, nameOf, Store } from "@tsed/core";
2
+ import { DI_USE_PARAM_OPTIONS } from "../constants/constants.js";
3
+ import { discoverHooks } from "../utils/discoverHooks.js";
2
4
  import { ProviderScope } from "./ProviderScope.js";
3
5
  import { ProviderType } from "./ProviderType.js";
4
6
  export class Provider {
7
+ #useClass;
8
+ #token;
9
+ #store;
10
+ #tokenStore;
5
11
  constructor(token, options = {}) {
6
12
  /**
7
13
  * Token group provider to retrieve all provider from the same type
8
14
  */
9
15
  this.type = ProviderType.PROVIDER;
10
- this.provide = token;
16
+ this.hooks = {};
17
+ this.token = token;
11
18
  this.useClass = token;
12
- Object.assign(this, {
13
- ...options
14
- });
19
+ Object.assign(this, options);
20
+ if (options instanceof Provider) {
21
+ this.#useClass = options.#useClass;
22
+ this.#store = options.#store;
23
+ this.#tokenStore = options.#tokenStore;
24
+ }
15
25
  }
16
26
  get token() {
17
- return this._provide;
27
+ return this.#token;
28
+ }
29
+ set token(value) {
30
+ if (value) {
31
+ this.#token = getClassOrSymbol(value);
32
+ this.#tokenStore = this.#store = Store.from(value);
33
+ }
18
34
  }
35
+ /**
36
+ * @deprecated
37
+ */
19
38
  get provide() {
20
- return this._provide;
39
+ return this.token;
21
40
  }
41
+ /**
42
+ * @deprecated
43
+ * @param value
44
+ */
22
45
  set provide(value) {
23
- if (value) {
24
- this._provide = getClassOrSymbol(value);
25
- this._tokenStore = this._store = Store.from(value);
26
- }
46
+ this.token = value;
27
47
  }
28
48
  get useClass() {
29
- return this._useClass;
49
+ return this.#useClass;
30
50
  }
31
51
  /**
32
52
  * Create a new store if the given value is a class. Otherwise, the value is ignored.
@@ -34,27 +54,19 @@ export class Provider {
34
54
  */
35
55
  set useClass(value) {
36
56
  if (isClass(value)) {
37
- this._useClass = classOf(value);
38
- this._store = Store.from(value);
39
- this.hooks = methodsOf(this._useClass).reduce((hooks, { propertyKey }) => {
40
- if (String(propertyKey).startsWith("$")) {
41
- return {
42
- ...hooks,
43
- [propertyKey]: (instance, ...args) => instance?.[propertyKey](...args)
44
- };
45
- }
46
- return hooks;
47
- }, {});
57
+ this.#useClass = classOf(value);
58
+ this.#store = Store.from(value);
59
+ this.hooks = discoverHooks(this.#useClass);
48
60
  }
49
61
  }
50
62
  get className() {
51
63
  return this.name;
52
64
  }
53
65
  get name() {
54
- return nameOf(this.provide);
66
+ return nameOf(this.token);
55
67
  }
56
68
  get store() {
57
- return this._store;
69
+ return this.#store;
58
70
  }
59
71
  get path() {
60
72
  return this.store.get("path", "/");
@@ -75,7 +87,7 @@ export class Provider {
75
87
  if (this.isAsync()) {
76
88
  return ProviderScope.SINGLETON;
77
89
  }
78
- return this.get("scope");
90
+ return this.get("scope", ProviderScope.SINGLETON);
79
91
  }
80
92
  /**
81
93
  * Change the scope value of the provider.
@@ -96,14 +108,17 @@ export class Provider {
96
108
  set children(children) {
97
109
  this.store.set("childrenControllers", children);
98
110
  }
99
- get(key) {
100
- return this.store.get(key) || this._tokenStore.get(key);
111
+ getArgOpts(index) {
112
+ return this.store.get(`${DI_USE_PARAM_OPTIONS}:${index}`);
113
+ }
114
+ get(key, defaultValue) {
115
+ return this.store.get(key) || this.#tokenStore.get(key) || defaultValue;
101
116
  }
102
117
  isAsync() {
103
118
  return !!this.useAsyncFactory;
104
119
  }
105
120
  clone() {
106
- return new (classOf(this))(this._provide, this);
121
+ return new (classOf(this))(this.token, this);
107
122
  }
108
123
  /**
109
124
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../../src/common/domain/Provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../../src/common/domain/Provider.ts"],"names":[],"mappings":"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"}
@@ -18,9 +18,10 @@ import { invokeOptions, localsContainer } from "./localsContainer.js";
18
18
  * @decorator
19
19
  */
20
20
  export function inject(token, opts) {
21
- return injector().invoke(token, opts?.locals || localsContainer(), {
21
+ return injector().resolve(token, {
22
22
  ...opts,
23
- ...invokeOptions()
23
+ ...invokeOptions(),
24
+ locals: opts?.locals || localsContainer()
24
25
  });
25
26
  }
26
27
  //# sourceMappingURL=inject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../../src/common/fn/inject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,aAAa,EAAE,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAEpE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,MAAM,CAAI,KAAuB,EAAE,IAAqE;IACtH,OAAO,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,eAAe,EAAE,EAAE;QACjE,GAAG,IAAI;QACP,GAAG,aAAa,EAAE;KACnB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../../src/common/fn/inject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,aAAa,EAAE,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAEpE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,MAAM,CAAI,KAAuB,EAAE,IAAqE;IACtH,OAAO,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;QAC/B,GAAG,IAAI;QACP,GAAG,aAAa,EAAE;QAClB,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,eAAe,EAAE;KAC1C,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +1,15 @@
1
1
  import { injector } from "./injector.js";
2
2
  import { localsContainer } from "./localsContainer.js";
3
+ /**
4
+ * Injects multiple instances of a given token using the injector service.
5
+ * @param token - The injection token to resolve
6
+ * @param opts - Optional configuration for the injection
7
+ * @param opts.useOpts - Options for instance creation
8
+ * @param opts.rebuild - Whether to rebuild the instance
9
+ * @param opts.locals - Local container overrides
10
+ * @returns Array of resolved instances
11
+ */
3
12
  export function injectMany(token, opts) {
4
- return injector().getMany(token, opts?.locals || localsContainer(), opts);
13
+ return injector().getMany(token, { ...opts, locals: opts?.locals || localsContainer() });
5
14
  }
6
15
  //# sourceMappingURL=injectMany.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injectMany.js","sourceRoot":"","sources":["../../../../src/common/fn/injectMany.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAErD,MAAM,UAAU,UAAU,CAAI,KAAsB,EAAE,IAAqE;IACzH,OAAO,QAAQ,EAAE,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"injectMany.js","sourceRoot":"","sources":["../../../../src/common/fn/injectMany.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAI,KAAsB,EAAE,IAAqE;IACzH,OAAO,QAAQ,EAAE,CAAC,OAAO,CAAI,KAAK,EAAE,EAAC,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,eAAe,EAAE,EAAkB,CAAC,CAAC;AAC7G,CAAC"}
@@ -1,52 +1,6 @@
1
- import "../registries/ProviderRegistry.js";
2
1
  import { ProviderType } from "../domain/ProviderType.js";
3
- import { GlobalProviders } from "../registries/GlobalProviders.js";
4
- export function providerBuilder(props, baseOpts = {}) {
5
- return (token, options = {}) => {
6
- const provider = GlobalProviders.merge(token, {
7
- ...options,
8
- ...baseOpts,
9
- provide: token
10
- });
11
- return props.reduce((acc, prop) => {
12
- return {
13
- ...acc,
14
- [prop]: function (value) {
15
- provider[prop] = value;
16
- return this;
17
- }
18
- };
19
- }, {
20
- factory(factory) {
21
- provider.useFactory = factory;
22
- return this;
23
- },
24
- asyncFactory(asyncFactory) {
25
- provider.useAsyncFactory = asyncFactory;
26
- return this;
27
- },
28
- value(value) {
29
- provider.useValue = value;
30
- provider.type = ProviderType.VALUE;
31
- return this;
32
- },
33
- class(k) {
34
- provider.useClass = k;
35
- return this;
36
- },
37
- store() {
38
- return provider.store;
39
- },
40
- inspect() {
41
- return provider;
42
- },
43
- token() {
44
- return provider.token;
45
- }
46
- });
47
- };
48
- }
49
- const Props = ["type", "scope", "path", "alias", "hooks", "deps", "resolvers", "imports", "configuration"];
2
+ import { providerBuilder } from "../utils/providerBuilder.js";
3
+ const Props = ["type", "scope", "path", "alias", "hooks", "deps", "imports", "configuration", "priority"];
50
4
  export const injectable = providerBuilder(Props);
51
5
  export const interceptor = providerBuilder(Props, {
52
6
  type: ProviderType.INTERCEPTOR
@@ -1 +1 @@
1
- {"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../../../src/common/fn/injectable.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAM3C,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AAcjE,MAAM,UAAU,eAAe,CAA0C,KAAe,EAAE,WAA4C,EAAE;IACtI,OAAO,CACL,KAAY,EACZ,UAAuC,EAAE,EACiB,EAAE;QAC5D,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE;YAC5C,GAAG,OAAO;YACV,GAAG,QAAQ;YACX,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACZ,OAAO;gBACL,GAAG,GAAG;gBACN,CAAC,IAAI,CAAC,EAAE,UAAU,KAAU;oBACzB,QAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAChC,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;QACJ,CAAC,EACD;YACE,OAAO,CAAC,OAAY;gBAClB,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,YAAY,CAAC,YAAiB;gBAC5B,QAAQ,CAAC,eAAe,GAAG,YAAY,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,CAAC,KAAU;gBACd,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAC1B,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,CAAC,CAAM;gBACV,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK;gBACH,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,OAAO;gBACL,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,KAAK;gBACH,OAAO,QAAQ,CAAC,KAAc,CAAC;YACjC,CAAC;SAC0D,CAC9D,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAID,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAC3G,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAiC,KAAK,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAiC,KAAK,EAAE;IAChF,IAAI,EAAE,YAAY,CAAC,WAAW;CAC/B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAA+D,CAAC,GAAG,KAAK,EAAE,aAAa,CAAC,EAAE;IACjI,IAAI,EAAE,YAAY,CAAC,UAAU;CAC9B,CAAC,CAAC"}
1
+ {"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../../../src/common/fn/injectable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAI5D,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;AAC1G,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAiC,KAAK,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAiC,KAAK,EAAE;IAChF,IAAI,EAAE,YAAY,CAAC,WAAW;CAC/B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAA+D,CAAC,GAAG,KAAK,EAAE,aAAa,CAAC,EAAE;IACjI,IAAI,EAAE,YAAY,CAAC,UAAU;CAC9B,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { InjectorService } from "../services/InjectorService.js";
2
- let globalInjector;
2
+ let globalInjector = new InjectorService();
3
3
  /**
4
- * Create or return the existing injector service.
4
+ * Return the existing injector service.
5
5
  *
6
6
  * Example:
7
7
  *
@@ -14,23 +14,11 @@ let globalInjector;
14
14
  * }
15
15
  * ```
16
16
  */
17
- export function injector(opts) {
18
- if (!globalInjector || opts?.rebuild) {
19
- globalInjector = new InjectorService();
20
- if (opts && opts.logger) {
21
- globalInjector.logger = opts.logger;
22
- }
23
- if (opts?.settings) {
24
- globalInjector.settings.set(opts.settings);
25
- }
26
- }
17
+ export function injector() {
27
18
  return globalInjector;
28
19
  }
29
- export function hasInjector() {
30
- return !!globalInjector;
31
- }
32
20
  export async function destroyInjector() {
33
- await globalInjector?.destroy();
34
- globalInjector = undefined;
21
+ await globalInjector.destroy();
22
+ globalInjector = new InjectorService();
35
23
  }
36
24
  //# sourceMappingURL=injector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../../../src/common/fn/injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAE/D,IAAI,cAA2C,CAAC;AAGhD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAqB;IAC5C,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;QACrC,cAAc,GAAG,IAAI,eAAe,EAAE,CAAC;QAEvC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,CAAC;QAED,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;YACnB,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,CAAC,cAAc,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,cAAc,EAAE,OAAO,EAAE,CAAC;IAChC,cAAc,GAAG,SAAS,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../../../src/common/fn/injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAE/D,IAAI,cAAc,GAAoB,IAAI,eAAe,EAAE,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;IAC/B,cAAc,GAAG,IAAI,eAAe,EAAE,CAAC;AACzC,CAAC"}
@@ -1,19 +1,19 @@
1
1
  import { isFunction } from "@tsed/core";
2
+ import { inject } from "./inject.js";
2
3
  import { injector } from "./injector.js";
3
4
  /**
4
5
  * Lazy load a provider from his package and invoke only when the provider is used.
5
6
  */
6
7
  export async function lazyInject(factory) {
7
8
  const { default: token } = await factory();
8
- let instance = injector().get(token);
9
- if (!instance) {
10
- instance = await injector().invoke(token);
9
+ if (!injector().has(token)) {
10
+ const instance = await inject(token);
11
11
  const instanceWithHook = instance;
12
12
  if ("$onInit" in instanceWithHook && isFunction(instanceWithHook.$onInit)) {
13
13
  await instanceWithHook.$onInit();
14
14
  }
15
15
  }
16
- return instance;
16
+ return injector().get(token);
17
17
  }
18
18
  export async function optionalLazyInject(factory) {
19
19
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"lazyInject.js","sourceRoot":"","sources":["../../../../src/common/fn/lazyInject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAQ,OAAuD;IAC7F,MAAM,EAAC,OAAO,EAAE,KAAK,EAAC,GAAG,MAAM,OAAO,EAAE,CAAC;IAEzC,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAY,CAAC;IAEhD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,MAAM,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,gBAAgB,GAAG,QAAsD,CAAC;QAEhF,IAAI,SAAS,IAAI,gBAAgB,IAAI,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1E,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,QAAqC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAEE;IAEF,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"lazyInject.js","sourceRoot":"","sources":["../../../../src/common/fn/lazyInject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAQ,OAAuD;IAC7F,MAAM,EAAC,OAAO,EAAE,KAAK,EAAC,GAAG,MAAM,OAAO,EAAE,CAAC;IAEzC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,MAAM,gBAAgB,GAAG,QAAsD,CAAC;QAEhF,IAAI,SAAS,IAAI,gBAAgB,IAAI,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1E,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAA8B,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAEE;IAEF,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -29,7 +29,6 @@ export * from "./errors/InjectionError.js";
29
29
  export * from "./errors/InvalidPropertyTokenError.js";
30
30
  export * from "./fn/configuration.js";
31
31
  export * from "./fn/constant.js";
32
- export * from "./fn/events.js";
33
32
  export * from "./fn/inject.js";
34
33
  export * from "./fn/injectable.js";
35
34
  export * from "./fn/injectMany.js";
@@ -40,7 +39,6 @@ export * from "./fn/refValue.js";
40
39
  export * from "./interfaces/DIConfigurationOptions.js";
41
40
  export * from "./interfaces/DILogger.js";
42
41
  export * from "./interfaces/DILoggerOptions.js";
43
- export * from "./interfaces/DIResolver.js";
44
42
  export * from "./interfaces/ImportTokenProviderOpts.js";
45
43
  export * from "./interfaces/InterceptorContext.js";
46
44
  export * from "./interfaces/InterceptorMethods.js";
@@ -59,7 +57,8 @@ export * from "./services/DILogger.js";
59
57
  export * from "./services/InjectorService.js";
60
58
  export * from "./utils/colors.js";
61
59
  export * from "./utils/createContainer.js";
60
+ export * from "./utils/discoverHooks.js";
62
61
  export * from "./utils/getConfiguration.js";
63
62
  export * from "./utils/getConstructorDependencies.js";
64
- export * from "./utils/resolveControllers.js";
63
+ export * from "./utils/providerBuilder.js";
65
64
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wCAAwC,CAAC;AACvD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wCAAwC,CAAC;AACvD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC"}
@@ -34,6 +34,9 @@ export class GlobalProviderRegistry extends Map {
34
34
  * @param options
35
35
  */
36
36
  merge(target, options) {
37
+ if (options.global === false) {
38
+ return GlobalProviders.createProvider(target, options);
39
+ }
37
40
  const meta = this.createIfNotExists(target, options);
38
41
  Object.keys(options).forEach((key) => {
39
42
  meta[key] = options[key];
@@ -58,12 +61,6 @@ export class GlobalProviderRegistry extends Map {
58
61
  this.#settings.set(type, options);
59
62
  return this;
60
63
  }
61
- onInvoke(provider, locals, options) {
62
- const settings = this.#settings.get(provider.type);
63
- if (settings?.onInvoke) {
64
- settings.onInvoke(provider, locals, options);
65
- }
66
- }
67
64
  getRegistrySettings(target) {
68
65
  let type = ProviderType.PROVIDER;
69
66
  if (typeof target === "string") {
@@ -79,11 +76,10 @@ export class GlobalProviderRegistry extends Map {
79
76
  model: Provider
80
77
  });
81
78
  }
82
- createRegisterFn(type) {
83
- return (provider, instance) => {
84
- provider = Object.assign({ instance }, provider, { type });
85
- this.merge(provider.provide, provider);
86
- };
79
+ createProvider(key, options) {
80
+ const type = options.type || ProviderType.PROVIDER;
81
+ const { model = Provider } = this.#settings.get(type) || {};
82
+ return new model(key, options);
87
83
  }
88
84
  /**
89
85
  *
@@ -91,10 +87,8 @@ export class GlobalProviderRegistry extends Map {
91
87
  * @param options
92
88
  */
93
89
  createIfNotExists(key, options) {
94
- const type = options.type || ProviderType.PROVIDER;
95
90
  if (!this.has(key)) {
96
- const { model = Provider } = this.#settings.get(type) || {};
97
- const item = new model(key, options);
91
+ const item = this.createProvider(key, options);
98
92
  this.set(key, item);
99
93
  }
100
94
  return this.get(key);
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalProviders.js","sourceRoot":"","sources":["../../../../src/common/registries/GlobalProviders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GlobalProviders.js","sourceRoot":"","sources":["../../../../src/common/registries/GlobalProviders.ts"],"names":[],"mappings":"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"}