@tsed/di 8.0.0-beta.2 → 8.0.0-beta.4

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 (29) 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/controller.js +2 -5
  4. package/lib/esm/common/decorators/controller.js.map +1 -1
  5. package/lib/esm/common/decorators/injectable.js +3 -2
  6. package/lib/esm/common/decorators/injectable.js.map +1 -1
  7. package/lib/esm/common/decorators/interceptor.js +2 -2
  8. package/lib/esm/common/domain/ControllerProvider.js.map +1 -1
  9. package/lib/esm/common/domain/Provider.js +6 -1
  10. package/lib/esm/common/domain/Provider.js.map +1 -1
  11. package/lib/esm/common/domain/ProviderType.js +0 -2
  12. package/lib/esm/common/domain/ProviderType.js.map +1 -1
  13. package/lib/esm/common/fn/injectable.js +56 -5
  14. package/lib/esm/common/fn/injectable.js.map +1 -1
  15. package/lib/esm/common/registries/GlobalProviders.js +1 -5
  16. package/lib/esm/common/registries/GlobalProviders.js.map +1 -1
  17. package/lib/esm/common/registries/ProviderRegistry.js +2 -71
  18. package/lib/esm/common/registries/ProviderRegistry.js.map +1 -1
  19. package/lib/esm/node/services/DILogger.js +1 -4
  20. package/lib/esm/node/services/DILogger.js.map +1 -1
  21. package/lib/types/common/decorators/controller.d.ts +1 -5
  22. package/lib/types/common/decorators/interceptor.d.ts +2 -2
  23. package/lib/types/common/domain/ControllerProvider.d.ts +7 -3
  24. package/lib/types/common/domain/Provider.d.ts +1 -0
  25. package/lib/types/common/domain/ProviderType.d.ts +0 -2
  26. package/lib/types/common/fn/inject.d.ts +1 -1
  27. package/lib/types/common/fn/injectable.d.ts +23 -5
  28. package/lib/types/common/registries/ProviderRegistry.d.ts +1 -53
  29. package/package.json +7 -7
@@ -1,6 +1,6 @@
1
1
  import { isArrayOrArrayClass, useDecorators } from "@tsed/core";
2
2
  import { Children, Path } from "@tsed/schema";
3
- import { registerController } from "../registries/ProviderRegistry.js";
3
+ import { controller } from "../fn/injectable.js";
4
4
  function mapOptions(options) {
5
5
  if (typeof options === "string" || options instanceof RegExp || isArrayOrArrayClass(options)) {
6
6
  return {
@@ -40,10 +40,7 @@ function mapOptions(options) {
40
40
  export function Controller(options) {
41
41
  const { children = [], path, ...opts } = mapOptions(options);
42
42
  return useDecorators((target) => {
43
- registerController({
44
- provide: target,
45
- ...opts
46
- });
43
+ controller(target, opts);
47
44
  }, path && Path(path), Children(...children));
48
45
  }
49
46
  //# sourceMappingURL=controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../src/common/decorators/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAQ,aAAa,EAAC,MAAM,YAAY,CAAC;AACpE,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,mCAAmC,CAAC;AAgBrE,SAAS,UAAU,CAAC,OAAY;IAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,YAAY,MAAM,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7F,OAAO;YACL,IAAI,EAAE,OAAO;SACd,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,UAAU,CAAC,OAAqC;IAC9D,MAAM,EAAC,QAAQ,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAE3D,OAAO,aAAa,CAClB,CAAC,MAAY,EAAE,EAAE;QACf,kBAAkB,CAAC;YACjB,OAAO,EAAE,MAAM;YACf,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC,EACD,IAAI,IAAI,IAAI,CAAC,IAAW,CAAC,EACzB,QAAQ,CAAC,GAAG,QAAQ,CAAC,CACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../src/common/decorators/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAQ,aAAa,EAAC,MAAM,YAAY,CAAC;AACpE,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAW/C,SAAS,UAAU,CAAC,OAAY;IAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,YAAY,MAAM,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7F,OAAO;YACL,IAAI,EAAE,OAAO;SACd,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,UAAU,CAAC,OAAqC;IAC9D,MAAM,EAAC,QAAQ,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAE3D,OAAO,aAAa,CAClB,CAAC,MAAY,EAAE,EAAE;QACf,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC,EACD,IAAI,IAAI,IAAI,CAAC,IAAW,CAAC,EACzB,QAAQ,CAAC,GAAG,QAAQ,CAAC,CACtB,CAAC;AACJ,CAAC"}
@@ -19,10 +19,11 @@ import { injectable } from "../fn/injectable.js";
19
19
  */
20
20
  export function Injectable(options = {}) {
21
21
  return (target) => {
22
- injectable({
22
+ const opts = {
23
23
  ...options,
24
24
  ...(options.provide ? { useClass: target } : { provide: target })
25
- });
25
+ };
26
+ injectable(opts.provide, opts);
26
27
  };
27
28
  }
28
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,UAAU,CAAC;YACT,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,CAAC;IACL,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,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,8 +1,8 @@
1
1
  import { ProviderType } from "../domain/ProviderType.js";
2
2
  import { Injectable } from "./injectable.js";
3
3
  /**
4
- * The decorators `@Service()` declare a new service can be injected in other service or controller on there `constructor`.
5
- * All services annotated with `@Service()` are constructed one time.
4
+ * The decorators `@Interceptor()` declare a new service can be injected in other service or controller on there `constructor`.
5
+ * All services annotated with `@Interceptor()` are constructed one time.
6
6
  *
7
7
  * > `@Service()` use the `reflect-metadata` to collect and inject service on controllers or other services.
8
8
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ControllerProvider.js","sourceRoot":"","sources":["../../../../src/common/domain/ControllerProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAE/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,WAAkC;QAChD,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,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"}
@@ -9,7 +9,9 @@ export class Provider {
9
9
  this.type = ProviderType.PROVIDER;
10
10
  this.provide = token;
11
11
  this.useClass = token;
12
- Object.assign(this, options);
12
+ Object.assign(this, {
13
+ ...options
14
+ });
13
15
  }
14
16
  get token() {
15
17
  return this._provide;
@@ -91,6 +93,9 @@ export class Provider {
91
93
  get children() {
92
94
  return this.store.get("childrenControllers", []);
93
95
  }
96
+ set children(children) {
97
+ this.store.set("childrenControllers", children);
98
+ }
94
99
  get(key) {
95
100
  return this.store.get(key) || this._tokenStore.get(key);
96
101
  }
@@ -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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"}
@@ -1,8 +1,6 @@
1
1
  export var ProviderType;
2
2
  (function (ProviderType) {
3
3
  ProviderType["VALUE"] = "value";
4
- ProviderType["FACTORY"] = "factory";
5
- ProviderType["SERVICE"] = "service";
6
4
  ProviderType["PROVIDER"] = "provider";
7
5
  ProviderType["MODULE"] = "module";
8
6
  ProviderType["CONTROLLER"] = "controller";
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderType.js","sourceRoot":"","sources":["../../../../src/common/domain/ProviderType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YASX;AATD,WAAY,YAAY;IACtB,+BAAe,CAAA;IACf,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;IACjB,yCAAyB,CAAA;IACzB,2CAA2B,CAAA;IAC3B,yCAAyB,CAAA;AAC3B,CAAC,EATW,YAAY,KAAZ,YAAY,QASvB"}
1
+ {"version":3,"file":"ProviderType.js","sourceRoot":"","sources":["../../../../src/common/domain/ProviderType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,+BAAe,CAAA;IACf,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;IACjB,yCAAyB,CAAA;IACzB,2CAA2B,CAAA;IAC3B,yCAAyB,CAAA;AAC3B,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB"}
@@ -1,6 +1,57 @@
1
- import { registerProvider } from "../registries/ProviderRegistry.js";
2
- /**
3
- * @alias {registerProvider} Alias of registerProvider
4
- */
5
- export const injectable = registerProvider;
1
+ import "../registries/ProviderRegistry.js";
2
+ 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"];
50
+ export const injectable = providerBuilder(Props);
51
+ export const interceptor = providerBuilder(Props, {
52
+ type: ProviderType.INTERCEPTOR
53
+ });
54
+ export const controller = providerBuilder([...Props, "middlewares"], {
55
+ type: ProviderType.CONTROLLER
56
+ });
6
57
  //# sourceMappingURL=injectable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../../../src/common/fn/injectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,mCAAmC,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC"}
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;AAgBD,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"}
@@ -36,11 +36,7 @@ export class GlobalProviderRegistry extends Map {
36
36
  merge(target, options) {
37
37
  const meta = this.createIfNotExists(target, options);
38
38
  Object.keys(options).forEach((key) => {
39
- let value = options[key];
40
- // if (key === "type") {
41
- // value = String(value);
42
- // }
43
- meta[key] = value;
39
+ meta[key] = options[key];
44
40
  });
45
41
  this.set(target, meta);
46
42
  return meta;
@@ -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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"}
@@ -1,81 +1,12 @@
1
- import { Provider } from "../domain/Provider.js";
2
- import { ProviderScope } from "../domain/ProviderScope.js";
1
+ import { ControllerProvider } from "../domain/ControllerProvider.js";
3
2
  import { ProviderType } from "../domain/ProviderType.js";
4
3
  import { GlobalProviders } from "./GlobalProviders.js";
5
- /**
6
- *
7
- */
8
- GlobalProviders.createRegistry(ProviderType.CONTROLLER, Provider);
4
+ GlobalProviders.createRegistry(ProviderType.CONTROLLER, ControllerProvider);
9
5
  /**
10
6
  * Register a provider configuration.
11
7
  * @param {ProviderOpts<any>} provider
12
8
  */
13
9
  export function registerProvider(provider) {
14
- if (!provider.provide) {
15
- throw new Error("Provider.provide is required");
16
- }
17
10
  return GlobalProviders.merge(provider.provide, provider);
18
11
  }
19
- /**
20
- * Add a new value in the `ProviderRegistry`.
21
- *
22
- * #### Example with symbol definition
23
- *
24
- *
25
- * ```typescript
26
- * import {registerValue, InjectorService} from "@tsed/di";
27
- *
28
- * const MyValue = Symbol.from("MyValue")
29
- *
30
- * registerValue({token: MyValue, useValue: "myValue"});
31
- *
32
- * @Service()
33
- * export class OtherService {
34
- * constructor(@Inject(MyValue) myValue: string){
35
- * console.log(myValue); /// "myValue"
36
- * }
37
- * }
38
- * ```
39
- */
40
- export const registerValue = (provider, value) => {
41
- if (!provider.provide) {
42
- provider = {
43
- provide: provider
44
- };
45
- }
46
- provider = Object.assign({
47
- scope: ProviderScope.SINGLETON,
48
- useValue: value
49
- }, provider, { type: ProviderType.VALUE });
50
- GlobalProviders.merge(provider.provide, provider);
51
- };
52
- /**
53
- * Add a new controller in the `ProviderRegistry`. This controller will be built when `InjectorService` will be loaded.
54
- *
55
- * #### Example
56
- *
57
- * ```typescript
58
- * import {registerController, InjectorService} from "@tsed/di";
59
- *
60
- * export default class MyController {
61
- * constructor(){}
62
- * transform() {
63
- * return "test";
64
- * }
65
- * }
66
- *
67
- * registerController({provide: MyController});
68
- * // or
69
- * registerController(MyController);
70
- *
71
- * const injector = new InjectorService();
72
- * injector.load();
73
- *
74
- * const myController = injector.get<MyController>(MyController);
75
- * myController.getFoo(); // test
76
- * ```
77
- *
78
- * @param provider Provider configuration.
79
- */
80
- export const registerController = GlobalProviders.createRegisterFn(ProviderType.CONTROLLER);
81
12
  //# sourceMappingURL=ProviderRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderRegistry.js","sourceRoot":"","sources":["../../../../src/common/registries/ProviderRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAErD;;GAEG;AACH,eAAe,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAElE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAa,QAAqC;IAChF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAiC,EAAE,KAAW,EAAQ,EAAE;IACpF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,QAAQ,GAAG;YACT,OAAO,EAAE,QAAQ;SAClB,CAAC;IACJ,CAAC;IAED,QAAQ,GAAG,MAAM,CAAC,MAAM,CACtB;QACE,KAAK,EAAE,aAAa,CAAC,SAAS;QAC9B,QAAQ,EAAE,KAAK;KAChB,EACD,QAAQ,EACR,EAAC,IAAI,EAAE,YAAY,CAAC,KAAK,EAAC,CAC3B,CAAC;IACF,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"ProviderRegistry.js","sourceRoot":"","sources":["../../../../src/common/registries/ProviderRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAErD,eAAe,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAa,QAA2E;IACtH,OAAO,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC"}
@@ -1,8 +1,5 @@
1
1
  import { Logger } from "@tsed/logger";
2
2
  import { injectable } from "../../common/fn/injectable.js";
3
3
  import { logger } from "../fn/logger.js";
4
- injectable({
5
- provide: Logger,
6
- useFactory: logger
7
- });
4
+ injectable(Logger).factory(logger);
8
5
  //# sourceMappingURL=DILogger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DILogger.js","sourceRoot":"","sources":["../../../../src/node/services/DILogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAC,UAAU,EAAC,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,UAAU,CAAC;IACT,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,MAAM;CACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"DILogger.js","sourceRoot":"","sources":["../../../../src/node/services/DILogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAC,UAAU,EAAC,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC"}
@@ -1,11 +1,7 @@
1
1
  import { Type } from "@tsed/core";
2
+ import type { ControllerMiddlewares } from "../domain/ControllerProvider.js";
2
3
  import { ProviderOpts } from "../interfaces/ProviderOpts.js";
3
4
  export type PathType = string | RegExp | (string | RegExp)[];
4
- export interface ControllerMiddlewares {
5
- useBefore: any[];
6
- use: any[];
7
- useAfter: any[];
8
- }
9
5
  export interface ControllerOptions extends Partial<ProviderOpts<any>> {
10
6
  path?: PathType;
11
7
  children?: Type<any>[];
@@ -1,6 +1,6 @@
1
1
  /**
2
- * The decorators `@Service()` declare a new service can be injected in other service or controller on there `constructor`.
3
- * All services annotated with `@Service()` are constructed one time.
2
+ * The decorators `@Interceptor()` declare a new service can be injected in other service or controller on there `constructor`.
3
+ * All services annotated with `@Interceptor()` are constructed one time.
4
4
  *
5
5
  * > `@Service()` use the `reflect-metadata` to collect and inject service on controllers or other services.
6
6
  *
@@ -1,6 +1,10 @@
1
- import { ControllerMiddlewares } from "../decorators/controller.js";
2
1
  import { TokenProvider } from "../interfaces/TokenProvider.js";
3
2
  import { Provider } from "./Provider.js";
3
+ export interface ControllerMiddlewares {
4
+ useBefore: TokenProvider[];
5
+ use: TokenProvider[];
6
+ useAfter: TokenProvider[];
7
+ }
4
8
  export declare class ControllerProvider<T = any> extends Provider<T> {
5
9
  tokenRouter: string;
6
10
  constructor(provide: TokenProvider, options?: Partial<Provider>);
@@ -8,10 +12,10 @@ export declare class ControllerProvider<T = any> extends Provider<T> {
8
12
  *
9
13
  * @returns {any[]}
10
14
  */
11
- get middlewares(): ControllerMiddlewares;
15
+ get middlewares(): Partial<ControllerMiddlewares>;
12
16
  /**
13
17
  *
14
18
  * @param middlewares
15
19
  */
16
- set middlewares(middlewares: ControllerMiddlewares);
20
+ set middlewares(middlewares: Partial<ControllerMiddlewares>);
17
21
  }
@@ -54,6 +54,7 @@ export declare class Provider<T = any> implements ProviderOpts<T> {
54
54
  get configuration(): Partial<TsED.Configuration>;
55
55
  set configuration(configuration: Partial<TsED.Configuration>);
56
56
  get children(): TokenProvider[];
57
+ set children(children: TokenProvider[]);
57
58
  get(key: string): any;
58
59
  isAsync(): boolean;
59
60
  clone(): Provider;
@@ -1,7 +1,5 @@
1
1
  export declare enum ProviderType {
2
2
  VALUE = "value",
3
- FACTORY = "factory",
4
- SERVICE = "service",
5
3
  PROVIDER = "provider",
6
4
  MODULE = "module",
7
5
  CONTROLLER = "controller",
@@ -1,5 +1,5 @@
1
1
  import type { InvokeOptions } from "../interfaces/InvokeOptions.js";
2
- import { TokenProvider } from "../interfaces/TokenProvider.js";
2
+ import type { TokenProvider } from "../interfaces/TokenProvider.js";
3
3
  /**
4
4
  * Inject a provider to another provider.
5
5
  *
@@ -1,5 +1,23 @@
1
- import { registerProvider } from "../registries/ProviderRegistry.js";
2
- /**
3
- * @alias {registerProvider} Alias of registerProvider
4
- */
5
- export declare const injectable: typeof registerProvider;
1
+ import "../registries/ProviderRegistry.js";
2
+ import { Store, type Type } from "@tsed/core";
3
+ import { ControllerProvider } from "../domain/ControllerProvider.js";
4
+ import type { Provider } from "../domain/Provider.js";
5
+ import type { ProviderOpts } from "../interfaces/ProviderOpts.js";
6
+ import type { TokenProvider } from "../interfaces/TokenProvider.js";
7
+ type ProviderBuilder<Token extends TokenProvider, BaseProvider, T extends object> = {
8
+ [K in keyof T as T[K] extends (...args: any[]) => any ? never : K]: (value: T[K]) => ProviderBuilder<Token, BaseProvider, T>;
9
+ } & {
10
+ inspect(): BaseProvider;
11
+ store(): Store;
12
+ token(): Token;
13
+ factory(f: (...args: unknown[]) => unknown): ProviderBuilder<Token, BaseProvider, T>;
14
+ asyncFactory(f: (...args: unknown[]) => Promise<unknown>): ProviderBuilder<Token, BaseProvider, T>;
15
+ value(v: unknown): ProviderBuilder<Token, BaseProvider, T>;
16
+ class(c: Type): ProviderBuilder<Token, BaseProvider, T>;
17
+ };
18
+ export declare function providerBuilder<Provider, Picked extends keyof Provider>(props: string[], baseOpts?: Partial<ProviderOpts<Provider>>): <Token extends TokenProvider>(token: Token, options?: Partial<ProviderOpts<Type>>) => ProviderBuilder<Token, Provider, Pick<Provider, Picked>>;
19
+ type PickedProps = "scope" | "path" | "alias" | "useFactory" | "useAsyncFactory" | "useValue" | "useClass" | "hooks" | "deps" | "resolvers" | "imports" | "configuration";
20
+ export declare const injectable: <Token extends TokenProvider>(token: Token, options?: Partial<ProviderOpts<Type>>) => ProviderBuilder<Token, Provider<any>, Pick<Provider<any>, "type" | PickedProps>>;
21
+ export declare const interceptor: <Token extends TokenProvider>(token: Token, options?: Partial<ProviderOpts<Type>>) => ProviderBuilder<Token, Provider<any>, Pick<Provider<any>, "type" | PickedProps>>;
22
+ export declare const controller: <Token extends TokenProvider>(token: Token, options?: Partial<ProviderOpts<Type>>) => ProviderBuilder<Token, ControllerProvider<any>, Pick<ControllerProvider<any>, "children" | "middlewares" | PickedProps>>;
23
+ export {};
@@ -1,58 +1,6 @@
1
- import { Provider } from "../domain/Provider.js";
2
1
  import type { ProviderOpts } from "../interfaces/ProviderOpts.js";
3
2
  /**
4
3
  * Register a provider configuration.
5
4
  * @param {ProviderOpts<any>} provider
6
5
  */
7
- export declare function registerProvider<Type = any>(provider: Partial<ProviderOpts<Type>>): Provider<any>;
8
- /**
9
- * Add a new value in the `ProviderRegistry`.
10
- *
11
- * #### Example with symbol definition
12
- *
13
- *
14
- * ```typescript
15
- * import {registerValue, InjectorService} from "@tsed/di";
16
- *
17
- * const MyValue = Symbol.from("MyValue")
18
- *
19
- * registerValue({token: MyValue, useValue: "myValue"});
20
- *
21
- * @Service()
22
- * export class OtherService {
23
- * constructor(@Inject(MyValue) myValue: string){
24
- * console.log(myValue); /// "myValue"
25
- * }
26
- * }
27
- * ```
28
- */
29
- export declare const registerValue: (provider: any | ProviderOpts<any>, value?: any) => void;
30
- /**
31
- * Add a new controller in the `ProviderRegistry`. This controller will be built when `InjectorService` will be loaded.
32
- *
33
- * #### Example
34
- *
35
- * ```typescript
36
- * import {registerController, InjectorService} from "@tsed/di";
37
- *
38
- * export default class MyController {
39
- * constructor(){}
40
- * transform() {
41
- * return "test";
42
- * }
43
- * }
44
- *
45
- * registerController({provide: MyController});
46
- * // or
47
- * registerController(MyController);
48
- *
49
- * const injector = new InjectorService();
50
- * injector.load();
51
- *
52
- * const myController = injector.get<MyController>(MyController);
53
- * myController.getFoo(); // test
54
- * ```
55
- *
56
- * @param provider Provider configuration.
57
- */
58
- export declare const registerController: (provider: any, instance?: any) => void;
6
+ export declare function registerProvider<Type = any>(provider: Partial<ProviderOpts<Type>> & Pick<ProviderOpts<Type>, "provide">): import("../index.js").Provider<any>;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@tsed/di",
3
3
  "description": "DI module for Ts.ED Framework",
4
4
  "type": "module",
5
- "version": "8.0.0-beta.2",
5
+ "version": "8.0.0-beta.4",
6
6
  "source": "./src/index.ts",
7
7
  "main": "./lib/esm/index.js",
8
8
  "module": "./lib/esm/index.js",
@@ -29,11 +29,11 @@
29
29
  "uuid": "^10.0.0"
30
30
  },
31
31
  "devDependencies": {
32
- "@tsed/barrels": "8.0.0-beta.2",
33
- "@tsed/core": "8.0.0-beta.2",
32
+ "@tsed/barrels": "8.0.0-beta.4",
33
+ "@tsed/core": "8.0.0-beta.4",
34
34
  "@tsed/logger": "^6.7.8",
35
- "@tsed/schema": "8.0.0-beta.2",
36
- "@tsed/typescript": "8.0.0-beta.2",
35
+ "@tsed/schema": "8.0.0-beta.4",
36
+ "@tsed/typescript": "8.0.0-beta.4",
37
37
  "cross-env": "7.0.3",
38
38
  "eslint": "9.12.0",
39
39
  "typescript": "5.4.5",
@@ -41,9 +41,9 @@
41
41
  "webpack": "^5.75.0"
42
42
  },
43
43
  "peerDependencies": {
44
- "@tsed/core": "8.0.0-beta.2",
44
+ "@tsed/core": "8.0.0-beta.4",
45
45
  "@tsed/logger": ">=6.7.5",
46
- "@tsed/schema": "8.0.0-beta.2"
46
+ "@tsed/schema": "8.0.0-beta.4"
47
47
  },
48
48
  "peerDependenciesMeta": {
49
49
  "@tsed/core": {