@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
@@ -1,4 +1,4 @@
1
- import { Type } from "@tsed/core";
1
+ import { Type } from "@tsed/core/types/Type.js";
2
2
  import type { Provider } from "../domain/Provider.js";
3
3
  /**
4
4
  * @ignore
@@ -1,4 +1,4 @@
1
- import { Type } from "@tsed/core";
1
+ import { Type } from "@tsed/core/types/Type.js";
2
2
  import { Provider } from "../domain/Provider.js";
3
3
  import { ProviderOpts } from "../interfaces/ProviderOpts.js";
4
4
  import { RegistrySettings } from "../interfaces/RegistrySettings.js";
@@ -1,4 +1,4 @@
1
- import { Env } from "@tsed/core";
1
+ import { Env } from "@tsed/core/types/Env.js";
2
2
  import type { DILoggerOptions } from "../interfaces/DILoggerOptions.js";
3
3
  import type { ImportTokenProviderOpts } from "../interfaces/ImportTokenProviderOpts.js";
4
4
  import type { TokenProvider } from "../interfaces/TokenProvider.js";
@@ -1,3 +1,3 @@
1
- import { Type } from "@tsed/core";
1
+ import { Type } from "@tsed/core/types/Type.js";
2
2
  import { Container } from "../domain/Container.js";
3
3
  export declare function createContainer(rootModule?: Type<any>): Container;
@@ -1,2 +1,2 @@
1
- import { type AbstractType, type Type } from "@tsed/core";
1
+ import { type AbstractType, type Type } from "@tsed/core/types/Type.js";
2
2
  export declare function discoverHooks(token: Type | AbstractType<any>): any;
@@ -1,3 +1,3 @@
1
- import { Type } from "@tsed/core";
1
+ import { Type } from "@tsed/core/types/Type.js";
2
2
  export declare function mergeMount(m1?: any, m2?: any): any;
3
3
  export declare function getConfiguration(module: Type<any>, configuration?: any): any;
@@ -1,5 +1,6 @@
1
1
  import "../registries/ProviderRegistry.js";
2
- import { Store, type Type } from "@tsed/core";
2
+ import { Store } from "@tsed/core/types/Store.js";
3
+ import { type Type } from "@tsed/core/types/Type.js";
3
4
  import type { ProviderOpts } from "../interfaces/ProviderOpts.js";
4
5
  import type { FactoryTokenProvider, TokenProvider } from "../interfaces/TokenProvider.js";
5
6
  type BaseMethodsProvider<TypeOf, BaseProvider, T extends object> = {
package/package.json CHANGED
@@ -2,24 +2,24 @@
2
2
  "name": "@tsed/di",
3
3
  "description": "DI module for Ts.ED Framework",
4
4
  "type": "module",
5
- "version": "8.9.5",
5
+ "version": "8.10.0-rc.2",
6
6
  "source": "./src/index.ts",
7
7
  "main": "./lib/esm/index.js",
8
8
  "module": "./lib/esm/index.js",
9
9
  "typings": "./lib/types/index.d.ts",
10
- "browser": "./lib/browser/di.umd.min.js",
10
+ "browser": "./lib/esm/browser/common/index.js",
11
11
  "exports": {
12
12
  ".": {
13
13
  "tsed-source": "./src/index.ts",
14
14
  "types": "./lib/types/index.d.ts",
15
- "browser": "./lib/browser/di.umd.min.js",
15
+ "browser": "./lib/browser/common/index.js",
16
16
  "import": "./lib/esm/index.js",
17
17
  "default": "./lib/esm/index.js"
18
18
  }
19
19
  },
20
20
  "scripts": {
21
21
  "build": "yarn barrels && yarn build:ts && yarn run build:browser",
22
- "build:browser": "webpack",
22
+ "build:browser": "vite build",
23
23
  "barrels": "barrels",
24
24
  "test": "vitest run",
25
25
  "build:ts": "tsc --build tsconfig.esm.json",
@@ -30,23 +30,21 @@
30
30
  "uuid": "^10.0.0"
31
31
  },
32
32
  "devDependencies": {
33
- "@tsed/barrels": "8.9.5",
34
- "@tsed/core": "8.9.5",
35
- "@tsed/hooks": "8.9.5",
33
+ "@tsed/barrels": "8.10.0-rc.2",
34
+ "@tsed/core": "8.10.0-rc.2",
35
+ "@tsed/hooks": "8.10.0-rc.2",
36
36
  "@tsed/logger": "^7.0.1",
37
- "@tsed/schema": "8.9.5",
38
- "@tsed/typescript": "8.9.5",
37
+ "@tsed/typescript": "8.10.0-rc.2",
39
38
  "cross-env": "7.0.3",
40
39
  "eslint": "9.12.0",
41
40
  "typescript": "5.4.5",
42
- "vitest": "3.1.4",
43
- "webpack": "^5.75.0"
41
+ "vite": "6.2.2",
42
+ "vitest": "3.1.4"
44
43
  },
45
44
  "peerDependencies": {
46
- "@tsed/core": ">=8.9.5",
47
- "@tsed/hooks": ">=8.9.5",
48
- "@tsed/logger": ">=7.0.1",
49
- "@tsed/schema": ">=8.9.5"
45
+ "@tsed/core": ">=8.0.0",
46
+ "@tsed/hooks": ">=8.0.0",
47
+ "@tsed/logger": ">=7.0.1"
50
48
  },
51
49
  "peerDependenciesMeta": {
52
50
  "@tsed/core": {
@@ -57,9 +55,6 @@
57
55
  },
58
56
  "@tsed/logger": {
59
57
  "optional": false
60
- },
61
- "@tsed/schema": {
62
- "optional": false
63
58
  }
64
59
  },
65
60
  "repository": "https://github.com/tsedio/tsed",
@@ -68,5 +63,8 @@
68
63
  },
69
64
  "homepage": "https://github.com/tsedio/tsed/tree/production/packages/di",
70
65
  "author": "Romain Lenzotti",
71
- "license": "MIT"
66
+ "license": "MIT",
67
+ "publishConfig": {
68
+ "tag": "rc"
69
+ }
72
70
  }
@@ -1,4 +1,5 @@
1
- import {isArray, type Type} from "@tsed/core";
1
+ import {type Type} from "@tsed/core/types/Type.js";
2
+ import {isArray} from "@tsed/core/utils/isArray.js";
2
3
 
3
4
  import {LocalsContainer} from "../domain/LocalsContainer.js";
4
5
  import {injector} from "../fn/injector.js";
@@ -1,9 +1,11 @@
1
- import {DecoratorParameters, decoratorTypeOf, DecoratorTypes} from "@tsed/core";
1
+ import {DecoratorParameters} from "@tsed/core/types/DecoratorParameters.js";
2
+ import {DecoratorTypes} from "@tsed/core/types/DecoratorTypes.js";
3
+ import {decoratorTypeOf} from "@tsed/core/utils/decoratorTypeOf.js";
2
4
 
3
5
  import {configuration} from "../fn/configuration.js";
4
6
  import {injectable} from "../fn/injectable.js";
5
7
  import {injector} from "../fn/injector.js";
6
- import {CONFIGURATION, DIConfiguration} from "../services/DIConfiguration.js";
8
+ import {DIConfiguration} from "../services/DIConfiguration.js";
7
9
  import {Inject} from "./inject.js";
8
10
 
9
11
  /**
@@ -1,4 +1,5 @@
1
- import {catchError, deepClone} from "@tsed/core";
1
+ import {catchError} from "@tsed/core/utils/catchError.js";
2
+ import {deepClone} from "@tsed/core/utils/deepClone.js";
2
3
 
3
4
  import {constant} from "../fn/constant.js";
4
5
 
@@ -36,7 +37,7 @@ export function bindConstant(target: any, propertyKey: string | symbol, expressi
36
37
  * ## Example
37
38
  *
38
39
  * ```typescript
39
- * import {Env} from "@tsed/core";
40
+ * import {Env} from "@tsed/core/domain/Env.js";
40
41
  * import {Constant, Value} from "@tsed/di";
41
42
  *
42
43
  * export class MyClass {
@@ -1,5 +1,8 @@
1
- import {isArrayOrArrayClass, Type, useDecorators} from "@tsed/core";
2
- import {Children, Path} from "@tsed/schema";
1
+ import {Store} from "@tsed/core/types/Store.js";
2
+ import {Type} from "@tsed/core/types/Type.js";
3
+ import {classOf} from "@tsed/core/utils/classOf.js";
4
+ import {isArrayOrArrayClass} from "@tsed/core/utils/isArray.js";
5
+ import {useDecorators} from "@tsed/core/utils/useDecorators.js";
3
6
 
4
7
  import type {ControllerMiddlewares} from "../domain/ControllerProvider.js";
5
8
  import {controller} from "../fn/injectable.js";
@@ -54,12 +57,17 @@ function mapOptions(options: any): ControllerOptions {
54
57
  export function Controller(options: PathType | ControllerOptions): ClassDecorator {
55
58
  const {children = [], path, ...opts} = mapOptions(options);
56
59
 
57
- return useDecorators(
58
- (target: Type) => {
59
- controller(target, opts);
60
- },
61
- // TODO @tsed/schema: remove this when we have a better solution
62
- path && Path(path as any),
63
- Children(...children)
64
- );
60
+ return useDecorators((target: Type) => {
61
+ const factory = controller(target, opts);
62
+
63
+ if (path) {
64
+ factory.store().set("path", path);
65
+ }
66
+
67
+ factory.store().set("childrenControllers", children);
68
+
69
+ children.forEach((childToken) => {
70
+ Store.from(childToken).set("parentController", classOf(target));
71
+ });
72
+ });
65
73
  }
@@ -1,4 +1,10 @@
1
- import {catchError, decoratorTypeOf, DecoratorTypes, isPromise, Metadata, Store, type Type} from "@tsed/core";
1
+ import {DecoratorTypes} from "@tsed/core/types/DecoratorTypes.js";
2
+ import {Metadata} from "@tsed/core/types/Metadata.js";
3
+ import {Store} from "@tsed/core/types/Store.js";
4
+ import {type Type} from "@tsed/core/types/Type.js";
5
+ import {catchError} from "@tsed/core/utils/catchError.js";
6
+ import {decoratorTypeOf} from "@tsed/core/utils/decoratorTypeOf.js";
7
+ import {isPromise} from "@tsed/core/utils/isPromise.js";
2
8
 
3
9
  import {DI_INJECTABLE_PROPS, DI_INVOKE_OPTIONS, DI_USE_OPTIONS} from "../constants/constants.js";
4
10
  import {InvalidPropertyTokenError} from "../errors/InvalidPropertyTokenError.js";
@@ -1,4 +1,11 @@
1
- import {classOf, decorateMethodsOf, DecoratorParameters, decoratorTypeOf, DecoratorTypes, nameOf, Store, Type} from "@tsed/core";
1
+ import {DecoratorParameters} from "@tsed/core/types/DecoratorParameters.js";
2
+ import {DecoratorTypes} from "@tsed/core/types/DecoratorTypes.js";
3
+ import {Store} from "@tsed/core/types/Store.js";
4
+ import {Type} from "@tsed/core/types/Type.js";
5
+ import {classOf} from "@tsed/core/utils/classOf.js";
6
+ import {decorateMethodsOf} from "@tsed/core/utils/decorateMethodsOf.js";
7
+ import {decoratorTypeOf} from "@tsed/core/utils/decoratorTypeOf.js";
8
+ import {nameOf} from "@tsed/core/utils/nameOf.js";
2
9
 
3
10
  import {DI_INTERCEPTOR_OPTIONS, DI_INVOKE_OPTIONS} from "../constants/constants.js";
4
11
  import {inject} from "../fn/inject.js";
@@ -1,4 +1,5 @@
1
- import {catchError, isFunction} from "@tsed/core";
1
+ import {catchError} from "@tsed/core/utils/catchError.js";
2
+ import {isFunction} from "@tsed/core/utils/isFunction.js";
2
3
 
3
4
  import {lazyInject, optionalLazyInject} from "../fn/lazyInject.js";
4
5
 
@@ -1,4 +1,4 @@
1
- import {useDecorators} from "@tsed/core";
1
+ import {useDecorators} from "@tsed/core/utils/useDecorators.js";
2
2
 
3
3
  import {ProviderScope} from "../domain/ProviderScope.js";
4
4
  import {ProviderType} from "../domain/ProviderType.js";
@@ -1,4 +1,4 @@
1
- import {classOf} from "@tsed/core";
1
+ import {classOf} from "@tsed/core/utils/classOf.js";
2
2
 
3
3
  import {DI_USE_PARAM_OPTIONS} from "../constants/constants.js";
4
4
  import {ProviderScope} from "../domain/ProviderScope.js";
@@ -1,4 +1,4 @@
1
- import {Type} from "@tsed/core";
1
+ import {Type} from "@tsed/core/types/Type.js";
2
2
 
3
3
  import {GlobalProviders} from "../registries/GlobalProviders.js";
4
4
 
@@ -1,4 +1,4 @@
1
- import {StoreSet} from "@tsed/core";
1
+ import {StoreSet} from "@tsed/core/decorators/storeSet.js";
2
2
 
3
3
  import {ProviderScope} from "../domain/ProviderScope.js";
4
4
 
@@ -1,4 +1,7 @@
1
- import {decoratorTypeOf, DecoratorTypes, Store, UnsupportedDecoratorType} from "@tsed/core";
1
+ import {UnsupportedDecoratorType} from "@tsed/core/errors/UnsupportedDecoratorType.js";
2
+ import {DecoratorTypes} from "@tsed/core/types/DecoratorTypes.js";
3
+ import {Store} from "@tsed/core/types/Store.js";
4
+ import {decoratorTypeOf} from "@tsed/core/utils/decoratorTypeOf.js";
2
5
 
3
6
  import {DI_USE_OPTIONS, DI_USE_PARAM_OPTIONS} from "../constants/constants.js";
4
7
 
@@ -1,4 +1,4 @@
1
- import {catchError} from "@tsed/core";
1
+ import {catchError} from "@tsed/core/utils/catchError.js";
2
2
 
3
3
  import {injector} from "../fn/injector.js";
4
4
 
@@ -24,7 +24,7 @@ export function bindValue(target: any, propertyKey: string | symbol, expression:
24
24
  * ## Example
25
25
  *
26
26
  * ```typescript
27
- * import {Env} from "@tsed/core";
27
+ * import {Env} from "@tsed/core/domain/Env.js";
28
28
  * import {Constant, Value} from "@tsed/di";
29
29
  *
30
30
  * export class MyClass {
@@ -1,4 +1,9 @@
1
- import {type AbstractType, classOf, getClassOrSymbol, isClass, nameOf, Store, Type} from "@tsed/core";
1
+ import {Store} from "@tsed/core/types/Store.js";
2
+ import {type AbstractType, Type} from "@tsed/core/types/Type.js";
3
+ import {classOf} from "@tsed/core/utils/classOf.js";
4
+ import {getClassOrSymbol} from "@tsed/core/utils/getClassOrSymbol.js";
5
+ import {isClass} from "@tsed/core/utils/isClass.js";
6
+ import {nameOf} from "@tsed/core/utils/nameOf.js";
2
7
 
3
8
  import {DI_USE_PARAM_OPTIONS} from "../constants/constants.js";
4
9
  import type {ProviderOpts} from "../interfaces/ProviderOpts.js";
@@ -1,4 +1,7 @@
1
- import {getConstructorArgNames, isClass, isString, nameOf} from "@tsed/core";
1
+ import {getConstructorArgNames} from "@tsed/core/utils/getConstructorArgNames.js";
2
+ import {isClass} from "@tsed/core/utils/isClass.js";
3
+ import {isString} from "@tsed/core/utils/isString.js";
4
+ import {nameOf} from "@tsed/core/utils/nameOf.js";
2
5
 
3
6
  import {TokenProvider} from "../interfaces/TokenProvider.js";
4
7
  import {colors} from "../utils/colors.js";
@@ -1,4 +1,5 @@
1
- import {classOf, nameOf} from "@tsed/core";
1
+ import {classOf} from "@tsed/core/utils/classOf.js";
2
+ import {nameOf} from "@tsed/core/utils/nameOf.js";
2
3
 
3
4
  export class InvalidPropertyTokenError extends Error {
4
5
  name = "INVALID_TOKEN_ERROR";
@@ -1,4 +1,4 @@
1
- import {Store} from "@tsed/core";
1
+ import {Store} from "@tsed/core/types/Store.js";
2
2
 
3
3
  import type {TokenProvider} from "../interfaces/TokenProvider.js";
4
4
  import {DIConfiguration} from "../services/DIConfiguration.js";
@@ -1,4 +1,4 @@
1
- import {isFunction} from "@tsed/core";
1
+ import {isFunction} from "@tsed/core/utils/isFunction.js";
2
2
 
3
3
  import type {TokenProvider} from "../interfaces/TokenProvider.js";
4
4
  import {inject} from "./inject.js";
@@ -1,4 +1,4 @@
1
- import {Type} from "@tsed/core";
1
+ import {Type} from "@tsed/core/types/Type.js";
2
2
 
3
3
  import type {Provider} from "../domain/Provider.js";
4
4
 
@@ -1,4 +1,5 @@
1
- import {getClassOrSymbol, Type} from "@tsed/core";
1
+ import {Type} from "@tsed/core/types/Type.js";
2
+ import {getClassOrSymbol} from "@tsed/core/utils/getClassOrSymbol.js";
2
3
 
3
4
  import {Provider} from "../domain/Provider.js";
4
5
  import {ProviderType} from "../domain/ProviderType.js";
@@ -1,4 +1,6 @@
1
- import {Env, getValue, setValue} from "@tsed/core";
1
+ import {Env} from "@tsed/core/types/Env.js";
2
+ import {getValue} from "@tsed/core/utils/getValue.js";
3
+ import {setValue} from "@tsed/core/utils/setValue.js";
2
4
 
3
5
  import type {DILoggerOptions} from "../interfaces/DILoggerOptions.js";
4
6
  import type {ImportTokenProviderOpts} from "../interfaces/ImportTokenProviderOpts.js";
@@ -1,4 +1,13 @@
1
- import {classOf, deepClone, deepMerge, isArray, isClass, isFunction, isInheritedFrom, isObject, isPromise, nameOf} from "@tsed/core";
1
+ import {classOf} from "@tsed/core/utils/classOf.js";
2
+ import {deepClone} from "@tsed/core/utils/deepClone.js";
3
+ import {deepMerge} from "@tsed/core/utils/deepMerge.js";
4
+ import {isArray} from "@tsed/core/utils/isArray.js";
5
+ import {isClass} from "@tsed/core/utils/isClass.js";
6
+ import {isFunction} from "@tsed/core/utils/isFunction.js";
7
+ import {isInheritedFrom} from "@tsed/core/utils/isInheritedFrom.js";
8
+ import {isObject} from "@tsed/core/utils/isObject.js";
9
+ import {isPromise} from "@tsed/core/utils/isPromise.js";
10
+ import {nameOf} from "@tsed/core/utils/nameOf.js";
2
11
  import {$alter, $asyncAlter, $asyncEmit, $emit, $off, $on} from "@tsed/hooks";
3
12
 
4
13
  import {DI_INVOKE_OPTIONS, DI_USE_PARAM_OPTIONS} from "../constants/constants.js";
@@ -1,4 +1,4 @@
1
- import {Type} from "@tsed/core";
1
+ import {Type} from "@tsed/core/types/Type.js";
2
2
 
3
3
  import {Container} from "../domain/Container.js";
4
4
  import {GlobalProviders} from "../registries/GlobalProviders.js";
@@ -1,4 +1,5 @@
1
- import {type AbstractType, methodsOf, type Type} from "@tsed/core";
1
+ import {type AbstractType, type Type} from "@tsed/core/types/Type.js";
2
+ import {methodsOf} from "@tsed/core/utils/methodsOf.js";
2
3
 
3
4
  export function discoverHooks(token: Type | AbstractType<any>) {
4
5
  return methodsOf(token).reduce((hooks, {propertyKey}) => {
@@ -1,4 +1,5 @@
1
- import {Store, Type} from "@tsed/core";
1
+ import {Store} from "@tsed/core/types/Store.js";
2
+ import {Type} from "@tsed/core/types/Type.js";
2
3
 
3
4
  export function mergeMount(m1: any = {}, m2: any = {}) {
4
5
  return Object.entries(m2).reduce((mount, [key, controllers]) => {
@@ -1,4 +1,4 @@
1
- import {Metadata} from "@tsed/core";
1
+ import {Metadata} from "@tsed/core/types/Metadata.js";
2
2
 
3
3
  export function getConstructorDependencies(target: any, propertyKey?: string | symbol | undefined) {
4
4
  return Metadata.getOwn("override:ctor:design:paramtypes", target, propertyKey) || [...Metadata.getParamTypes(target, propertyKey)] || [];
@@ -1,6 +1,7 @@
1
1
  import "../registries/ProviderRegistry.js";
2
2
 
3
- import {Store, type Type} from "@tsed/core";
3
+ import {Store} from "@tsed/core/types/Store.js";
4
+ import {type Type} from "@tsed/core/types/Type.js";
4
5
 
5
6
  import {ProviderType} from "../domain/ProviderType.js";
6
7
  import {injector} from "../fn/injector.js";
@@ -1,4 +1,4 @@
1
- import {catchError} from "@tsed/core";
1
+ import {catchError} from "@tsed/core/utils/catchError.js";
2
2
 
3
3
  import {DIContext} from "../domain/DIContext.js";
4
4
  import {context} from "../fn/context.js";
@@ -1,4 +1,7 @@
1
- import {Env, getValue, isClass, isObject} from "@tsed/core";
1
+ import {Env} from "@tsed/core/types/Env.js";
2
+ import {getValue} from "@tsed/core/utils/getValue.js";
3
+ import {isClass} from "@tsed/core/utils/isClass.js";
4
+ import {isObject} from "@tsed/core/utils/isObject.js";
2
5
  import {$log} from "@tsed/logger";
3
6
 
4
7
  import {cleanAllLocalsContainer, detachLocalsContainer, localsContainer} from "../../common/fn/localsContainer.js";
@@ -0,0 +1,45 @@
1
+ import {defineConfig} from "vite";
2
+ import {join} from "node:path";
3
+ import {extname, relative} from "path";
4
+ import {fileURLToPath} from "node:url";
5
+ import {globbySync} from "globby";
6
+
7
+ // https://vitejs.dev/config/
8
+ export default defineConfig({
9
+ plugins: [],
10
+ build: {
11
+ assetsInlineLimit: 0,
12
+ sourcemap: true,
13
+ outDir: "lib/browser",
14
+ lib: {
15
+ entry: join(import.meta.dirname, "src/common/index.ts"),
16
+ formats: ["es"]
17
+ },
18
+ rollupOptions: {
19
+ external: [/node_modules\/(.*)/, /^@tsed\//],
20
+ input: Object.fromEntries(
21
+ globbySync("src/common/**/*.ts", {
22
+ ignore: [
23
+ "**/*.spec.{ts,tsx}",
24
+ "**/*.stories.{ts,tsx}",
25
+ "**/__mocks__/**",
26
+ "**/__mock__/**",
27
+ "**/interfaces/**"
28
+ ]
29
+ }).map((file) => [
30
+ // The name of the entry point
31
+ // lib/nested/foo.ts becomes nested/foo
32
+ relative("src", file.slice(0, file.length - extname(file).length)),
33
+ // The absolute path to the entry file
34
+ // lib/nested/foo.ts becomes /project/lib/nested/foo.ts
35
+ fileURLToPath(new URL(file, import.meta.url))
36
+ ])
37
+ ),
38
+ output: {
39
+ assetFileNames: "assets/[name][extname]",
40
+ chunkFileNames: "chunks/[name].js",
41
+ entryFileNames: "[name].js"
42
+ }
43
+ }
44
+ }
45
+ });
@@ -1,2 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@tsed/core"),require("@tsed/hooks"),require("@tsed/schema")):"function"==typeof define&&define.amd?define(["@tsed/core","@tsed/hooks","@tsed/schema"],t):"object"==typeof exports?exports["@tsed/di"]=t(require("@tsed/core"),require("@tsed/hooks"),require("@tsed/schema")):e["@tsed/di"]=t(e["@tsed/core"],e["@tsed/hooks"],e["@tsed/schema"])}(self,((e,t,r)=>(()=>{"use strict";var s={414:t=>{t.exports=e},171:e=>{e.exports=t},538:e=>{e.exports=r}},o={};function n(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return s[e](r,r.exports,n),r.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};n.r(i),n.d(i,{AutoInjectable:()=>M,CONFIGURATION:()=>T,Configuration:()=>te,Constant:()=>oe,Container:()=>E,Controller:()=>ae,ControllerProvider:()=>_,DIConfiguration:()=>w,DI_INJECTABLE_PROPS:()=>c,DI_INTERCEPTOR_OPTIONS:()=>h,DI_INVOKE_OPTIONS:()=>a,DI_USE_OPTIONS:()=>u,DI_USE_PARAM_OPTIONS:()=>l,GlobalProviderRegistry:()=>v,GlobalProviders:()=>k,Inject:()=>ee,Injectable:()=>ce,InjectablePropertyType:()=>ne,InjectionError:()=>C,InjectorService:()=>N,Intercept:()=>he,Interceptor:()=>de,InvalidPropertyTokenError:()=>q,LOGGER:()=>Se,LazyInject:()=>ye,LocalsContainer:()=>y,Module:()=>Oe,OptionalLazyInject:()=>me,Opts:()=>ke,OverrideProvider:()=>Ee,Provider:()=>O,ProviderScope:()=>d,ProviderType:()=>p,Scope:()=>ve,Service:()=>Pe,UseOpts:()=>be,Value:()=>Ie,bindConstant:()=>se,bindIntercept:()=>le,bindValue:()=>Ce,cleanAllLocalsContainer:()=>Y,colors:()=>b,configuration:()=>L,constant:()=>re,controller:()=>K,createContainer:()=>I,destroyInjector:()=>$,detachLocalsContainer:()=>W,discoverHooks:()=>m,getConfiguration:()=>we,getConstructorDependencies:()=>R,getInterceptorOptions:()=>ue,inject:()=>X,injectMany:()=>Z,injectable:()=>U,injector:()=>D,interceptor:()=>G,invokeOptions:()=>J,lazyInject:()=>pe,localsContainer:()=>Q,mergeMount:()=>Te,optionalLazyInject:()=>fe,providerBuilder:()=>F,refValue:()=>Re,registerProvider:()=>x,setConstructorDependencies:()=>S});const a=Symbol("DI_INVOKE_OPTIONS"),c=Symbol("DI_INJECTABLE_PROPS"),u="DI_USE_OPTIONS",l="DI_USE_PARAM_OPTIONS",h="DI_INTERCEPTOR_OPTIONS";var d,p,f=n(414),g=n(171);class y extends Map{constructor(){super(...arguments),this.hooks=new g.Hooks}async destroy(){await this.hooks.asyncEmit("$onDestroy")}}function m(e){return(0,f.methodsOf)(e).reduce(((e,{propertyKey:t})=>{if(String(t).startsWith("$")){const r=(e,...r)=>e?.[t](...r);return{...e,[t]:r}}return e}),{})}!function(e){e.SINGLETON="singleton",e.REQUEST="request",e.INSTANCE="instance"}(d||(d={})),function(e){e.VALUE="value",e.PROVIDER="provider",e.MODULE="module",e.CONTROLLER="controller",e.INTERCEPTOR="interceptor",e.MIDDLEWARE="middleware"}(p||(p={}));class O{#e;#t;#r;#s;constructor(e,t={}){this.type=p.PROVIDER,this.hooks={},this.token=e,this.useClass=e,Object.assign(this,t),t instanceof O&&(this.#e=t.#e,this.#r=t.#r,this.#s=t.#s)}get token(){return this.#t}set token(e){e&&(this.#t=(0,f.getClassOrSymbol)(e),this.#s=this.#r=f.Store.from(e))}get provide(){return this.token}set provide(e){this.token=e}get useClass(){return this.#e}set useClass(e){(0,f.isClass)(e)&&(this.#e=(0,f.classOf)(e),this.#r=f.Store.from(e),this.hooks=m(this.#e))}get className(){return this.name}get name(){return(0,f.nameOf)(this.token)}get store(){return this.#r}get path(){return this.store.get("path","/")}set path(e){this.store.set("path",e)}get scope(){return this.isAsync()?d.SINGLETON:this.get("scope",d.SINGLETON)}set scope(e){this.store.set("scope",e)}get configuration(){return this.get("configuration")}set configuration(e){this.store.set("configuration",e)}get children(){return this.store.get("childrenControllers",[])}set children(e){this.store.set("childrenControllers",e)}getArgOpts(e){return this.store.get(`${l}:${e}`)}get(e,t){return this.store.get(e)||this.#s.get(e)||t}isAsync(){return!!this.useAsyncFactory}clone(){return new((0,f.classOf)(this))(this.token,this)}hasChildren(){return!!this.children.length}hasParent(){return!!this.store.get("parentController")}toString(){return["Token",this.name,this.useClass&&(0,f.nameOf)(this.useClass),this.useFactory&&"Factory",this.useValue&&"Value",this.useAsyncFactory&&"AsyncFactory"].filter(Boolean).join(":")}reset(){return this.useValue=void 0,this.useFactory=void 0,this.useAsyncFactory=void 0,this}}class v extends Map{#o=new Map;get(e){return super.get((0,f.getClassOrSymbol)(e))}has(e){return super.has((0,f.getClassOrSymbol)(e))}set(e,t){return super.set((0,f.getClassOrSymbol)(e),t),this}merge(e,t){if(!1===t.global)return k.createProvider(e,t);const r=this.createIfNotExists(e,t);return Object.keys(t).forEach((e=>{r[e]=t[e]})),this.set(e,r),r}delete(e){return super.delete((0,f.getClassOrSymbol)(e))}createRegistry(e,t,r={}){const s=this.getRegistrySettings(e);return r=Object.assign(s,{...r,model:t}),this.#o.set(e,r),this}getRegistrySettings(e){let t=p.PROVIDER;if("string"==typeof e)t=e;else{const r=this.get(e);r&&(t=r.type)}return this.#o.get(t)||{model:O}}createProvider(e,t){const r=t.type||p.PROVIDER,{model:s=O}=this.#o.get(r)||{};return new s(e,t)}createIfNotExists(e,t){if(!this.has(e)){const r=this.createProvider(e,t);this.set(e,r)}return this.get(e)}}const k=new v;class E extends Map{add(e,t={}){const r=k.get(e)?.clone()||new O(e);return Object.assign(r,t),super.set(e,r)}addProvider(e,t={}){return this.add(e,t)}hasProvider(e){return super.has(e)}setProvider(e,t){return super.set(e,t)}getProvider(e){return super.get(e)}getProviders(e){const t=[].concat(e).map(String);return[...this].reduce(((r,[s,o])=>t.includes(String(o.type))||!e?[...r,o]:r),[])}addProviders(e){e.forEach((e=>{this.hasProvider(e.token)||this.setProvider(e.token,e.clone())}))}}const P=e=>e=>(process.env.NO_COLOR,e),b={red:P(),yellow:P(),green:P()};class C extends Error{constructor(e,t){super((0,f.isString)(t)?t:""),this.name="INJECTION_ERROR",this.tokens=[],this.tokens=[e],t&&((0,f.isString)(t)?this.origin={message:t,stack:this.stack}:t.tokens?(this.tokens=this.tokens.concat(t.tokens),this.origin=t.origin):(this.origin=t,this.stack=t.stack));const r=this.origin?"\nOrigin: "+this.origin.message:"",s=this.tokens.map((e=>(0,f.nameOf)(e))).join(" > ");this.message=`Injection failed on ${s}${r}`}static throwInjectorError(e,t,r){throw t&&(0,f.isClass)(e)&&(r.message=function(e,t){let r="";const s=(0,f.getConstructorArgNames)(e).map(((e,s)=>(t.index===s&&(r=e,e=b.red(e)),`${e}: ${(0,f.nameOf)(t.deps[s])}`))).join(", "),o=(0,f.nameOf)(e)+"->constructor("+s+")",n=o.indexOf(r)-5;return"Unable to inject dependency. "+t.message+"\n\n"+o+"\n"+(n>-1?(e=>" ".repeat(e)+b.red("^"+"‾".repeat(r.length-1)))(n):"")}(e,{...t,message:r.message})),new C(e,r)}}function I(e){const t=new E(k.entries());return e&&t.delete(e),t}function R(e,t){return f.Metadata.getOwn("override:ctor:design:paramtypes",e,t)||[...f.Metadata.getParamTypes(e,t)]||[]}function S(e,t){f.Metadata.set("override:ctor:design:paramtypes",t,e)}const T=Symbol.for("CONFIGURATION");class w{constructor(e={}){this.default=new Map,this.map=new Map,Object.entries({imports:[],routes:[],logger:{},...e}).forEach((([e,t])=>{this.default.set(e,t)}))}get version(){return this.get("version")}set version(e){this.map.set("version",e)}get rootDir(){return this.get("rootDir")}set rootDir(e){this.map.set("rootDir",e)}get env(){return this.map.get("env")}set env(e){this.map.set("env",e)}get imports(){return this.get("imports")}set imports(e){this.map.set("imports",e)}get routes(){return this.get("routes")}set routes(e){this.map.set("routes",e)}get logger(){return this.get("logger")}set logger(e){const t={...this.logger,...e};this.map.set("logger",t)}get debug(){return"debug"===this.logger.level}set debug(e){this.logger={...this.logger,level:e?"debug":"info"}}forEach(e,t){return new Set([...Array.from(this.default.keys()),...Array.from(this.map.keys())]).forEach((t=>{e(this.getRaw(t),t,this.map)}),t)}set(e,t){return"string"==typeof e?Reflect.has(this,e)?this[e]=t:this.setRaw(e,t):Object.entries(e).forEach((([e,t])=>{this.set(e,t)})),this}setRaw(e,t){return(0,f.setValue)(this.map,e,t),this}get(e,t){return this.getRaw(e,t)}getRaw(e,t){const r=(0,f.getValue)(this.map,e);return void 0!==r?r:(0,f.getValue)(this.default,e,t)}}const A=["mount","imports"];class N extends E{#n;#i;constructor(){super(),this.logger=console,this.resolvedConfiguration=!1,this.#n=new y,this.#i=!1,this.#n.set(N,this),this.#n.set(w,new w)}get settings(){return this.#n.get(w)}set settings(e){this.#n.set(w,e)}isLoaded(){return this.#i}toArray(){return[...this.#n.values()]}get(e,t){return this.has(e)?this.#n.get(e):this.resolve(e,t)}getMany(e,t){return this.getProviders(e).map((e=>this.resolve(e.token,t)))}has(e){return void 0!==this.#n.get(e)}alias(e,t){return this.#n.set(t,this.#n.get(e)),this}resolve(e,t={}){let r=t.locals?t.locals.get(e):void 0;if(void 0!==r)return r;if(e===l)return t.useOpts;if(r=t.rebuild?void 0:this.#n.get(e),null!=r)return r;const s=this.ensureProvider(e);if(!s||t.rebuild)return r=this.invokeToken(e,t),s?this.setToCache(s,r):r;switch(r=this.invokeToken(e,t),s.scope){case d.SINGLETON:return t.rebuild||this.registerHooks(s,t),this.setToCache(s,r);case d.REQUEST:return t.locals&&(t.locals.set(s.token,r),this.registerHooks(s,t)),r}return r}invoke(e,t={}){return this.resolve(e,t)}async loadAsync(){for(const[,e]of this)!this.has(e.token)&&e.isAsync()&&await this.resolve(e.token)}loadSync(){for(const[,e]of this)this.has(e.token)||e.scope!==d.SINGLETON||this.resolve(e.token)}async load(e=I()){this.#i=!0,await(0,g.$asyncEmit)("$beforeInit"),await this.bootstrap(e),await this.loadAsync(),this.loadSync(),await(0,g.$asyncEmit)("$onInit")}async resolveConfiguration(){if(this.resolvedConfiguration)return;const e=new Map;super.forEach((t=>{t.configuration&&"server:module"!==t.type&&Object.entries(t.configuration).forEach((([t,r])=>{A.includes(t)||(r=e.has(t)?(0,f.deepMerge)(e.get(t),r):(0,f.deepClone)(r),e.set(t,r))}))})),e.forEach(((e,t)=>{this.settings.set(t,(0,f.deepMerge)(e,this.settings.get(t)))})),await(0,g.$asyncEmit)("$afterResolveConfiguration",this.settings),this.resolvedConfiguration=!0}emit(e,...t){return(0,g.$asyncEmit)(e,t)}alter(e,t,...r){return(0,g.$alter)(e,t,r)}alterAsync(e,t,...r){return(0,g.$asyncAlter)(e,t,r)}async destroy(){await(0,g.$asyncEmit)("$onDestroy"),this.#n.forEach(((e,t)=>{(0,g.$off)(t)}))}async bootstrap(e=I()){return this.addProviders(e),await this.resolveConfiguration(),this.resolveImportsProviders(),this}ensureProvider(e,t=!1){return this.hasProvider(e)||!k.has(e)&&!t||this.addProvider(e),this.getProvider(e)}invokeToken(e,t={}){const r=this.mapInvokeOptions(e,t);if(!r)return;const{token:s,deps:o,construct:n,imports:i,provider:c}=r;let u;(0,g.$emit)("$beforeInvoke",s,[r]),(0,g.$emit)(`$beforeInvoke:${String(c.type)}`,[r]);let l=!1;try{const e=e=>(r,s)=>(l={token:r,index:s,deps:o},(0,f.isArray)(r)?this.getMany(r[0],t):(0,f.isInheritedFrom)(r,O,1)?c:this.resolve(r,{parent:e,locals:t.locals,useOpts:c?.getArgOpts(s)||t.useOpts}));i.forEach(e());const r=o.map(e(s));l=!1,u=n(r)}catch(e){C.throwInjectorError(s,l,e)}if(void 0===u)throw new C(s,`Unable to create new instance from undefined value. Check your provider declaration for ${(0,f.nameOf)(s)}`);return u&&(0,f.isClass)((0,f.classOf)(u))&&Reflect.defineProperty(u,a,{get:()=>({rebuild:t.rebuild,locals:t.locals})}),(0,g.$emit)("$afterInvoke",s,[u,r]),u}resolveImportsProviders(){this.settings.imports=this.settings.imports?.filter((e=>(0,f.isObject)(e)&&"token"in e&&e.token!==N)).map((e=>{if((0,f.isObject)(e)&&"token"in e){const{token:t,...r}=e,s=this.ensureProvider(t,!0);if(s){if(s.useValue=void 0,s.useAsyncFactory=void 0,s.useFactory=void 0,"useClass"in r)return void(s.useClass=r.useClass);if("useFactory"in r)return void(s.useFactory=r.useFactory);if("useAsyncFactory"in r)return void(s.useAsyncFactory=r.useAsyncFactory);if("use"in r)return void(s.useValue=r.use)}}return e})).filter(Boolean)}mapInvokeOptions(e,t){const r=t.locals||new y;t.locals=r;let s,o,n=t.imports,i=t.deps;if(!e||e===Object)throw new Error("Given token is undefined. Could mean a circular dependency problem. Try to use @Inject(() => Token) to solve it.");if(o=this.hasProvider(e)?this.getProvider(e):new O(e),i=i||o.deps,n=n||o.imports,void 0!==o.useValue)s=()=>(0,f.isFunction)(o.useValue)?o.useValue():o.useValue;else if(o.useFactory)s=e=>o.useFactory(...e);else if(o.useAsyncFactory)s=async e=>(e=await Promise.all(e),o.useAsyncFactory(...e));else{if(!o.useClass)return!1;i=i||R(o.useClass),s=e=>new o.useClass(...e)}return{token:e,deps:i||[],imports:n||[],construct:s,provider:o,locals:r}}registerHooks(e,t){if(e.hooks){if(e.scope===d.REQUEST){if(t.locals&&e.hooks?.$onDestroy){const{locals:r}=t;t.locals.hooks.on("$onDestroy",((...t)=>e.hooks?.$onDestroy?.(r.get(e.token),...t)))}return}Object.entries(e.hooks).forEach((([t,r])=>{(0,g.$on)(t,e.token,((...t)=>r(this.#n.get(e.token),...t)))}))}}setToCache(e,t){const r=t=>{this.#n.set(e.token,t),e?.alias&&this.alias(e.token,e.alias)};return!("isAsync"in e)||e.isAsync()||(0,f.isPromise)(t)?(r(t),t=t.then((e=>(r(e),e)))):(r(t),t)}}let j=new N;function D(){return j}async function $(){await j.destroy(),j=new N}function M(){return e=>class extends e{constructor(...t){super(...function(e,t){const r=D(),s=new y,o=R(e),n=[],i=Math.max(o.length,t.length);for(let a=0;a<i;a++)if(void 0!==t[a])n.push(t[a]);else{const t=o[a],i=(0,f.isArray)(t)?r.getMany(t[0],{locals:s,parent:e}):r.invoke(t,{locals:s,parent:e});n.push(i)}return n}(e,t))}}}function L(e,t){if(e){const r=f.Store.from(e);return t&&r.set("configuration",t),r.get("configuration",t)}return D().settings}class _ extends O{constructor(e,t={}){super(e,t),this.type=p.CONTROLLER}get middlewares(){return Object.assign({use:[],useAfter:[],useBefore:[]},this.store.get("middlewares",{}))}set middlewares(e){const t=this.middlewares;Object.keys(e).forEach((r=>{((e,t,r)=>{t[e]=t[e].concat(r[e])})(r,t,e)})),this.store.set("middlewares",t)}}function x({token:e,provide:t,...r}){return U(e||t,{...r,token:e||t}).inspect()}function F(e,t={}){return(r,s={})=>{const o={global:!D().isLoaded(),...s,...t,token:r},n=k.merge(r,o);return o.global||D().setProvider(r,n),e.reduce(((e,t)=>({...e,[t]:function(e){return n[t]=e,this}})),{factory(e){return n.reset(),n.useFactory=e,this},asyncFactory(e){return n.reset(),n.useAsyncFactory=e,this},value(e){return n.reset(),n.useValue=e,n.type=p.VALUE,this},class(e){return n.reset(),n.useClass=e,this},store:()=>n.store,inspect:()=>n,token:()=>n.token})}}k.createRegistry(p.CONTROLLER,_);const V=["type","scope","path","alias","hooks","deps","imports","configuration","priority"],U=F(V),G=F(V,{type:p.INTERCEPTOR}),K=F([...V,"middlewares"],{type:p.CONTROLLER});class q extends Error{constructor(e,t){super(`Object isn't a valid token. Please check the token set on ${(0,f.nameOf)((0,f.classOf)(e))}.${t}.\n- Check that it is not a circular reference.\n- Check that the token (class or symbol) exists`),this.name="INVALID_TOKEN_ERROR"}}let H,z={};const B=[];function Q({providers:e,rebuild:t}={}){return H&&!e||(H=new y,e&&(e.forEach((e=>{H.set(e.token,e.use)})),H.set(N,D())),t&&(z.rebuild=t)),H}function J(){return{...z}}function W(){H&&B.push(H),H=void 0,z={}}function Y(){W(),B.map((e=>e.clear()))}function X(e,t){return D().resolve(e,{...t,...J(),locals:t?.locals||Q()})}function Z(e,t){return D().getMany(e,{...t,locals:t?.locals||Q()})}function ee(e,t={}){return t="function"==typeof t?{transform:t}:t,(r,s,o)=>{switch((0,f.decoratorTypeOf)([r,s,o])){case f.DecoratorTypes.PARAM_CTOR:e&&function(e,{target:t,propertyKey:r,parameterIndex:s}){const o=R(t,r),n=o[s];o[s]=n===Array?[e]:e,f.Metadata.setParamTypes(t,r,o),S(t,o)}(e,{target:r,propertyKey:s,parameterIndex:o});break;case f.DecoratorTypes.PROP:!function(e,t,{token:r,transform:s=e=>e,useOpts:o}){const n=Symbol();e[c]||Reflect.defineProperty(e,c,{value:new Set,enumerable:!1,configurable:!1}),e[c].add(t),(0,f.catchError)((()=>Reflect.deleteProperty(e,t))),Reflect.defineProperty(e,t,{get(){const i=function(e,t,r){const s=e||f.Metadata.getType(t,r);if(s===Object)throw new q(t,String(r));return s}(r,e,t),c=f.Metadata.getType(e,t),l={rebuild:!!this[a]?.rebuild,locals:this[a]?.locals,useOpts:o||f.Store.from(e,t).get(u)};return void 0===this[n]&&(this[n]=c===Array?Z(r,l):X(i,l)),[].concat(this[n]).forEach(((e,t)=>{(0,f.isPromise)(this[n])&&e.then((e=>{this[n][t]=e,c!==Array&&(this[n]=e)}))})),s(this[n],{self:this,target:e,propertyKey:t})}})}(r,s,{...t,token:e})}}}function te(e={}){return(...t)=>{switch((0,f.decoratorTypeOf)(t)){case f.DecoratorTypes.CLASS:L(t[0],e);break;default:case f.DecoratorTypes.PARAM_CTOR:return ee(w)(t[0],t[1],t[2])}}}function re(e,t){return D().settings.get(e,t)}function se(e,t,r,s){const o=Symbol();(0,f.catchError)((()=>Reflect.deleteProperty(e,t))),Reflect.defineProperty(e,t,{get(){if(void 0!==this[o])return this[o];const e=re(r,s);return this[o]=Object.freeze((0,f.deepClone)(e)),this[o]},set(e){void 0===(re(r,s)||this[o])&&void 0!==e&&(this[o]=e)},enumerable:!0,configurable:!0})}function oe(e,t){return(r,s)=>se(r,s,e,t)}U(te).factory((()=>D().settings));var ne,ie=n(538);function ae(e){const{children:t=[],path:r,...s}=function(e){return"string"==typeof e||e instanceof RegExp||(0,f.isArrayOrArrayClass)(e)?{path:e}:e}(e);return(0,f.useDecorators)((e=>{K(e,s)}),r&&(0,ie.Path)(r),(0,ie.Children)(...t))}function ce(e={}){return t=>{const r={...e,...e.token?{useClass:t}:{token:t}};U(r.token,r)}}function ue(e,t){return f.Store.fromMethod(e,t).get(h)}function le(e,t,r,s){const o=(0,f.classOf)(e),n=Reflect.getOwnPropertyDescriptor(o.prototype,t),i=n.value,c=Symbol();return f.Store.fromMethod(o,t).set(h,s),n.value=function(...e){const n=t=>{if(!t)return i.apply(this,e);throw t},u={target:o,propertyKey:t,args:e,options:s,next:n},l={rebuild:!!this[a]?.rebuild,locals:this[a]?.locals};return this[c]=this[c]||X(r,l),this[c].intercept({...u,options:s},n)},Reflect.deleteProperty(o.prototype,t),Reflect.defineProperty(o.prototype,t,n),n}function he(e,t){return(...r)=>{const[s,o]=r;switch((0,f.decoratorTypeOf)(r)){case f.DecoratorTypes.CLASS:(0,f.decorateMethodsOf)(s,he(e,t));break;case f.DecoratorTypes.METHOD:return le(s,o,e,t)}}}function de(){return ce({type:p.INTERCEPTOR})}async function pe(e){const{default:t}=await e();if(!D().has(t)){const e=await X(t);"$onInit"in e&&(0,f.isFunction)(e.$onInit)&&await e.$onInit()}return D().get(t)}async function fe(e){try{return await pe(e)}catch(e){return}}function ge(e,t=!1){function r(e,r){return async()=>{try{const{[e]:t}=await r();return{default:t}}catch(e){if(!t)throw e;return}}}return(0,f.isFunction)(e[0])?r("default",e[0]):r(e[0],e[1])}function ye(...e){let t=ge(e);return(e,r)=>{(0,f.catchError)((()=>Reflect.deleteProperty(e,r))),Reflect.defineProperty(e,r,{get:async()=>pe(t)})}}function me(...e){const t=ge(e,!0);return(e,r)=>{(0,f.catchError)((()=>Reflect.deleteProperty(e,r))),Reflect.defineProperty(e,r,{get:async()=>fe(t)})}}function Oe(e={}){const{scopes:t,imports:r,deps:s,scope:o,...n}=e;return(0,f.useDecorators)(te(n),ce({type:p.MODULE,scope:d.SINGLETON,imports:r,deps:s,injectable:!1}))}function ve(e=d.REQUEST){return(0,f.StoreSet)("scope",e)}function ke(e,t,r){ve(d.INSTANCE)((0,f.classOf)(e)),ee(l)(e,t,r)}function Ee(e){return t=>{k.get(e).useClass=t}}function Pe(){return ce()}function be(e){return(t,r,s)=>{switch((0,f.decoratorTypeOf)([t,r,s])){case f.DecoratorTypes.PARAM_CTOR:f.Store.from(t).merge(`${l}:${s}`,e);break;case f.DecoratorTypes.PROP:f.Store.from(t,r).set(u,e);break;default:throw new f.UnsupportedDecoratorType(be,[t,r,s])}}}function Ce(e,t,r,s){const o={get:()=>D().settings.get(r,s),set(e){D().settings.set(r,e)},enumerable:!0,configurable:!0};(0,f.catchError)((()=>Reflect.deleteProperty(e,t))),(0,f.catchError)((()=>Reflect.defineProperty(e,t,o)))}function Ie(e,t){return(r,s)=>Ce(r,s,e,t)}function Re(e,t){return Object.freeze({get value(){return D().settings.get(e,t)},set value(t){D().settings.set(e,t)}})}!function(e){e.METHOD="method",e.PROPERTY="property",e.CONSTANT="constant",e.VALUE="value",e.INTERCEPTOR="interceptor"}(ne||(ne={}));const Se=Symbol.for("LOGGER");function Te(e={},t={}){return Object.entries(t).reduce(((e,[t,r])=>({...e,[t]:(e[t]||[]).concat(r)})),e)}function we(e,t={}){const r=f.Store.from(e).get("configuration")||{};return{...r,...t,mount:Te(r.mount,t.mount)}}return U(Se).factory((()=>D().logger)),i})()));
2
- //# sourceMappingURL=di.umd.min.js.map