ts-ioc-container 22.1.1 → 22.2.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.
package/README.md CHANGED
@@ -107,7 +107,7 @@ const logger = container.resolve<ILogger>('ILogger');
107
107
  logger.info('Hello world');
108
108
  ```
109
109
 
110
- ### Registration Decorators
110
+ ## Decorators
111
111
 
112
112
  ```typescript
113
113
  import { asSingleton, perTags, forKey, by, Registration } from "ts-ioc-container";
@@ -0,0 +1,7 @@
1
+ import { constructor, MapFn } from './utils';
2
+ export declare class MapperReflector<P> {
3
+ private metadataKey;
4
+ constructor(metadataKey: string);
5
+ getMapper<T>(target: constructor<T>): MapFn<P> | undefined;
6
+ appendMapper(target: constructor<unknown>, reducer: MapFn<P>): void;
7
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MapperReflector = void 0;
4
+ var utils_1 = require("./utils");
5
+ var MapperReflector = /** @class */ (function () {
6
+ function MapperReflector(metadataKey) {
7
+ this.metadataKey = metadataKey;
8
+ }
9
+ MapperReflector.prototype.getMapper = function (target) {
10
+ return Reflect.getMetadata(this.metadataKey, target);
11
+ };
12
+ MapperReflector.prototype.appendMapper = function (target, reducer) {
13
+ var _a;
14
+ var current = (_a = Reflect.getMetadata(this.metadataKey, target)) !== null && _a !== void 0 ? _a : utils_1.identity;
15
+ Reflect.defineMetadata(this.metadataKey, (0, utils_1.pipe)(current, reducer), target);
16
+ };
17
+ return MapperReflector;
18
+ }());
19
+ exports.MapperReflector = MapperReflector;
20
+ //# sourceMappingURL=MapperReflector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapperReflector.js","sourceRoot":"","sources":["../lib/MapperReflector.ts"],"names":[],"mappings":";;;AAAA,iCAA6D;AAE7D;IACI,yBAAoB,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAC3C,mCAAS,GAAT,UAAa,MAAsB;QAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,sCAAY,GAAZ,UAAa,MAA4B,EAAE,OAAiB;;QACxD,IAAM,OAAO,GAAG,MAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,mCAAI,gBAAQ,CAAC;QAC1E,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAA,YAAI,EAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;IACL,sBAAC;AAAD,CAAC,AAVD,IAUC;AAVY,0CAAe"}
package/cjm/index.d.ts CHANGED
@@ -13,7 +13,7 @@ export { Provider } from './provider/Provider';
13
13
  export { ArgsFn } from './provider/ArgsProvider';
14
14
  export { AutoMockedContainer } from './container/AutoMockedContainer';
15
15
  export { ProviderKey } from './provider/IProvider';
16
- export { ProviderBuilder } from './provider/ProviderBuilder';
16
+ export { ProviderBuilder, perTags, asSingleton } from './provider/ProviderBuilder';
17
17
  export { isProviderKey } from './provider/IProvider';
18
- export { perTags, forKey, asSingleton, Registration } from './registration/Registration';
18
+ export { forKey, Registration } from './registration/Registration';
19
19
  export declare const by: <T>(key: InjectionToken<T>, ...args: unknown[]) => (l: IContainer) => T;
package/cjm/index.js CHANGED
@@ -25,7 +25,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  return to.concat(ar || Array.prototype.slice.call(from));
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.by = exports.Registration = exports.asSingleton = exports.forKey = exports.perTags = exports.isProviderKey = exports.ProviderBuilder = exports.AutoMockedContainer = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.ProviderNotFoundError = exports.Container = exports.EmptyContainer = void 0;
28
+ exports.by = exports.Registration = exports.forKey = exports.isProviderKey = exports.asSingleton = exports.perTags = exports.ProviderBuilder = exports.AutoMockedContainer = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.ProviderNotFoundError = exports.Container = exports.EmptyContainer = void 0;
29
29
  var EmptyContainer_1 = require("./container/EmptyContainer");
30
30
  Object.defineProperty(exports, "EmptyContainer", { enumerable: true, get: function () { return EmptyContainer_1.EmptyContainer; } });
31
31
  var Container_1 = require("./container/Container");
@@ -42,12 +42,12 @@ var AutoMockedContainer_1 = require("./container/AutoMockedContainer");
42
42
  Object.defineProperty(exports, "AutoMockedContainer", { enumerable: true, get: function () { return AutoMockedContainer_1.AutoMockedContainer; } });
43
43
  var ProviderBuilder_1 = require("./provider/ProviderBuilder");
44
44
  Object.defineProperty(exports, "ProviderBuilder", { enumerable: true, get: function () { return ProviderBuilder_1.ProviderBuilder; } });
45
+ Object.defineProperty(exports, "perTags", { enumerable: true, get: function () { return ProviderBuilder_1.perTags; } });
46
+ Object.defineProperty(exports, "asSingleton", { enumerable: true, get: function () { return ProviderBuilder_1.asSingleton; } });
45
47
  var IProvider_1 = require("./provider/IProvider");
46
48
  Object.defineProperty(exports, "isProviderKey", { enumerable: true, get: function () { return IProvider_1.isProviderKey; } });
47
49
  var Registration_1 = require("./registration/Registration");
48
- Object.defineProperty(exports, "perTags", { enumerable: true, get: function () { return Registration_1.perTags; } });
49
50
  Object.defineProperty(exports, "forKey", { enumerable: true, get: function () { return Registration_1.forKey; } });
50
- Object.defineProperty(exports, "asSingleton", { enumerable: true, get: function () { return Registration_1.asSingleton; } });
51
51
  Object.defineProperty(exports, "Registration", { enumerable: true, get: function () { return Registration_1.Registration; } });
52
52
  var by = function (key) {
53
53
  var args = [];
package/cjm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAIlB,0EAAyE;AAAhE,8HAAA,qBAAqB,OAAA;AAC9B,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,6EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAC/B,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AAEjB,uEAAsE;AAA7D,0HAAA,mBAAmB,OAAA;AAE5B,8DAA6D;AAApD,kHAAA,eAAe,OAAA;AACxB,kDAAqD;AAA5C,0GAAA,aAAa,OAAA;AACtB,4DAAyF;AAAhF,uGAAA,OAAO,OAAA;AAAE,sGAAA,MAAM,OAAA;AAAE,2GAAA,WAAW,OAAA;AAAE,4GAAA,YAAY,OAAA;AAE5C,IAAM,EAAE,GACX,UAAI,GAAsB;IAAE,cAAkB;SAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;QAAlB,6BAAkB;;IAC9C,OAAA,UAAC,CAAa;QACV,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAY,GAAG,UAAK,IAAI;IAAzB,CAA0B;AAD9B,CAC8B,CAAC;AAHtB,QAAA,EAAE,MAGoB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAIlB,0EAAyE;AAAhE,8HAAA,qBAAqB,OAAA;AAC9B,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,6EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAC/B,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AAEjB,uEAAsE;AAA7D,0HAAA,mBAAmB,OAAA;AAE5B,8DAAmF;AAA1E,kHAAA,eAAe,OAAA;AAAE,0GAAA,OAAO,OAAA;AAAE,8GAAA,WAAW,OAAA;AAC9C,kDAAqD;AAA5C,0GAAA,aAAa,OAAA;AACtB,4DAAmE;AAA1D,sGAAA,MAAM,OAAA;AAAE,4GAAA,YAAY,OAAA;AAEtB,IAAM,EAAE,GACX,UAAI,GAAsB;IAAE,cAAkB;SAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;QAAlB,6BAAkB;;IAC9C,OAAA,UAAC,CAAa;QACV,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAY,GAAG,UAAK,IAAI;IAAzB,CAA0B;AAD9B,CAC8B,CAAC;AAHtB,QAAA,EAAE,MAGoB"}
@@ -13,3 +13,5 @@ export declare class ProviderBuilder {
13
13
  asSingleton(...tags: Tag[]): this;
14
14
  build(): IProvider<unknown>;
15
15
  }
16
+ export declare const perTags: (...tags: Tag[]) => ClassDecorator;
17
+ export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
@@ -25,23 +25,28 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  return to.concat(ar || Array.prototype.slice.call(from));
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.ProviderBuilder = void 0;
28
+ exports.asSingleton = exports.perTags = exports.ProviderBuilder = void 0;
29
29
  var ArgsProvider_1 = require("./ArgsProvider");
30
30
  var TaggedProvider_1 = require("./TaggedProvider");
31
31
  var SingletonProvider_1 = require("./SingletonProvider");
32
+ var utils_1 = require("../utils");
32
33
  var Provider_1 = require("./Provider");
34
+ var MapperReflector_1 = require("../MapperReflector");
35
+ var reflector = new MapperReflector_1.MapperReflector('provider');
33
36
  var ProviderBuilder = /** @class */ (function () {
34
37
  function ProviderBuilder(provider) {
35
38
  this.provider = provider;
36
39
  }
37
40
  ProviderBuilder.fromClass = function (Target) {
38
- return new ProviderBuilder(new Provider_1.Provider(function (container) {
41
+ var _a;
42
+ var map = (_a = reflector.getMapper(Target)) !== null && _a !== void 0 ? _a : utils_1.identity;
43
+ return map(new ProviderBuilder(new Provider_1.Provider(function (container) {
39
44
  var args = [];
40
45
  for (var _i = 1; _i < arguments.length; _i++) {
41
46
  args[_i - 1] = arguments[_i];
42
47
  }
43
48
  return container.resolve.apply(container, __spreadArray([Target], __read(args), false));
44
- }));
49
+ })));
45
50
  };
46
51
  ProviderBuilder.fromValue = function (value) {
47
52
  return new ProviderBuilder(new Provider_1.Provider(function () { return value; }));
@@ -86,4 +91,24 @@ var ProviderBuilder = /** @class */ (function () {
86
91
  return ProviderBuilder;
87
92
  }());
88
93
  exports.ProviderBuilder = ProviderBuilder;
94
+ var perTags = function () {
95
+ var tags = [];
96
+ for (var _i = 0; _i < arguments.length; _i++) {
97
+ tags[_i] = arguments[_i];
98
+ }
99
+ return function (target) {
100
+ reflector.appendMapper(target, function (builder) { return builder.perTags.apply(builder, __spreadArray([], __read(tags), false)); });
101
+ };
102
+ };
103
+ exports.perTags = perTags;
104
+ var asSingleton = function () {
105
+ var tags = [];
106
+ for (var _i = 0; _i < arguments.length; _i++) {
107
+ tags[_i] = arguments[_i];
108
+ }
109
+ return function (target) {
110
+ reflector.appendMapper(target, function (builder) { return builder.asSingleton.apply(builder, __spreadArray([], __read(tags), false)); });
111
+ };
112
+ };
113
+ exports.asSingleton = asSingleton;
89
114
  //# sourceMappingURL=ProviderBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/provider/ProviderBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAAsD;AACtD,mDAAkD;AAClD,yDAAwD;AAExD,uCAAsC;AAEtC;IAaI,yBAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAZpC,yBAAS,GAAhB,UAAiB,MAA4B;QACzC,OAAO,IAAI,eAAe,CAAC,IAAI,mBAAQ,CAAC,UAAC,SAAS;YAAE,cAAO;iBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;gBAAP,6BAAO;;YAAK,OAAA,SAAS,CAAC,OAAO,OAAjB,SAAS,iBAAS,MAAM,UAAK,IAAI;QAAjC,CAAkC,CAAC,CAAC,CAAC;IACzG,CAAC;IAEM,yBAAS,GAAhB,UAAiB,KAAc;QAC3B,OAAO,IAAI,eAAe,CAAC,IAAI,mBAAQ,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,sBAAM,GAAb,UAAc,EAAqB;QAC/B,OAAO,IAAI,eAAe,CAAC,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAID,kCAAQ,GAAR;QAAS,mBAAuB;aAAvB,UAAuB,EAAvB,qBAAuB,EAAvB,IAAuB;YAAvB,8BAAuB;;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAU,GAAV,UAAW,MAAc;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAO,GAAP;QAAQ,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAW,GAAX;QAAY,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAK,GAAL;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACL,sBAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,0CAAe"}
1
+ {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/provider/ProviderBuilder.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,4 @@ export declare class Registration implements IContainerModule {
17
17
  forKey(key: ProviderKey): this;
18
18
  applyTo(container: IContainer): void;
19
19
  }
20
- export declare const perTags: (...tags: Tag[]) => ClassDecorator;
21
- export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
22
20
  export declare const forKey: (key: ProviderKey) => ClassDecorator;
@@ -25,19 +25,19 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  return to.concat(ar || Array.prototype.slice.call(from));
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.forKey = exports.asSingleton = exports.perTags = exports.Registration = void 0;
28
+ exports.forKey = exports.Registration = void 0;
29
29
  var RegistrationMissingKeyError_1 = require("./RegistrationMissingKeyError");
30
30
  var ProviderBuilder_1 = require("../provider/ProviderBuilder");
31
- var RegistrationReflector_1 = require("./RegistrationReflector");
31
+ var MapperReflector_1 = require("../MapperReflector");
32
32
  var utils_1 = require("../utils");
33
- var registrationReflector = new RegistrationReflector_1.RegistrationReflector();
33
+ var reflector = new MapperReflector_1.MapperReflector('registration');
34
34
  var Registration = /** @class */ (function () {
35
35
  function Registration(providerBuilder) {
36
36
  this.providerBuilder = providerBuilder;
37
37
  }
38
38
  Registration.fromClass = function (Target) {
39
39
  var _a;
40
- var map = (_a = registrationReflector.getMapper(Target)) !== null && _a !== void 0 ? _a : utils_1.identity;
40
+ var map = (_a = reflector.getMapper(Target)) !== null && _a !== void 0 ? _a : utils_1.identity;
41
41
  return map(new Registration(ProviderBuilder_1.ProviderBuilder.fromClass(Target)));
42
42
  };
43
43
  Registration.fromValue = function (value) {
@@ -90,29 +90,9 @@ var Registration = /** @class */ (function () {
90
90
  return Registration;
91
91
  }());
92
92
  exports.Registration = Registration;
93
- var perTags = function () {
94
- var tags = [];
95
- for (var _i = 0; _i < arguments.length; _i++) {
96
- tags[_i] = arguments[_i];
97
- }
98
- return function (target) {
99
- registrationReflector.appendMapper(target, function (registration) { return registration.perTags.apply(registration, __spreadArray([], __read(tags), false)); });
100
- };
101
- };
102
- exports.perTags = perTags;
103
- var asSingleton = function () {
104
- var tags = [];
105
- for (var _i = 0; _i < arguments.length; _i++) {
106
- tags[_i] = arguments[_i];
107
- }
108
- return function (target) {
109
- registrationReflector.appendMapper(target, function (registration) { return registration.asSingleton.apply(registration, __spreadArray([], __read(tags), false)); });
110
- };
111
- };
112
- exports.asSingleton = asSingleton;
113
93
  var forKey = function (key) {
114
94
  return function (target) {
115
- registrationReflector.appendMapper(target, function (registration) { return registration.forKey(key); });
95
+ reflector.appendMapper(target, function (registration) { return registration.forKey(key); });
116
96
  };
117
97
  };
118
98
  exports.forKey = forKey;
@@ -1 +1 @@
1
- {"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,6EAA4E;AAE5E,+DAA8D;AAC9D,iEAAgE;AAChE,kCAAiD;AAEjD,IAAM,qBAAqB,GAAG,IAAI,6CAAqB,EAAE,CAAC;AAE1D;IAgBI,sBAAoB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAAG,CAAC;IAbjD,sBAAS,GAAhB,UAAoB,MAAsB;;QACtC,IAAM,GAAG,GAAG,MAAA,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAI,gBAAQ,CAAC;QAChE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,iCAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAEM,sBAAS,GAAhB,UAAoB,KAAQ;QACxB,OAAO,IAAI,YAAY,CAAC,iCAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,mBAAM,GAAb,UAAiB,EAAwB;QACrC,OAAO,IAAI,YAAY,CAAC,iCAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAID,+BAAQ,GAAR;;QAAS,mBAAuB;aAAvB,UAAuB,EAAvB,qBAAuB,EAAvB,IAAuB;YAAvB,8BAAuB;;QAC5B,IAAI,CAAC,eAAe,GAAG,CAAA,KAAA,IAAI,CAAC,eAAe,CAAA,CAAC,QAAQ,oCAAI,SAAS,UAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAU,GAAV,UAAW,MAAc;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,8BAAO,GAAP;;QAAQ,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAClB,IAAI,CAAC,eAAe,GAAG,CAAA,KAAA,IAAI,CAAC,eAAe,CAAA,CAAC,OAAO,oCAAI,IAAI,UAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAW,GAAX;;QAAY,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QACtB,IAAI,CAAC,eAAe,GAAG,CAAA,KAAA,IAAI,CAAC,eAAe,CAAA,CAAC,WAAW,oCAAI,IAAI,UAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,6BAAM,GAAN,UAAO,GAAgB;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,8BAAO,GAAP,UAAQ,SAAqB;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,yDAA2B,CAAC,2DAA2D,CAAC,CAAC;SACtG;QACD,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IACL,mBAAC;AAAD,CAAC,AAjDD,IAiDC;AAjDY,oCAAY;AAmDlB,IAAM,OAAO,GAChB;IAAC,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IACf,OAAA,UAAC,MAAW;QACR,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,UAAC,YAAY,IAAK,OAAA,YAAY,CAAC,OAAO,OAApB,YAAY,2BAAY,IAAI,YAA5B,CAA6B,CAAC,CAAC;IAChG,CAAC;AAFD,CAEC,CAAC;AAJO,QAAA,OAAO,WAId;AAEC,IAAM,WAAW,GACpB;IAAC,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IACf,OAAA,UAAC,MAAW;QACR,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,UAAC,YAAY,IAAK,OAAA,YAAY,CAAC,WAAW,OAAxB,YAAY,2BAAgB,IAAI,YAAhC,CAAiC,CAAC,CAAC;IACpG,CAAC;AAFD,CAEC,CAAC;AAJO,QAAA,WAAW,eAIlB;AAEC,IAAM,MAAM,GACf,UAAC,GAAgB;IACjB,OAAA,UAAC,MAAW;QACR,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,UAAC,YAAY,IAAK,OAAA,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAxB,CAAwB,CAAC,CAAC;IAC3F,CAAC;AAFD,CAEC,CAAC;AAJO,QAAA,MAAM,UAIb"}
1
+ {"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,6EAA4E;AAE5E,+DAA8D;AAC9D,sDAAqD;AACrD,kCAAiD;AAEjD,IAAM,SAAS,GAAG,IAAI,iCAAe,CAAe,cAAc,CAAC,CAAC;AAEpE;IAgBI,sBAAoB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAAG,CAAC;IAbjD,sBAAS,GAAhB,UAAoB,MAAsB;;QACtC,IAAM,GAAG,GAAG,MAAA,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAI,gBAAQ,CAAC;QACpD,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,iCAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAEM,sBAAS,GAAhB,UAAoB,KAAQ;QACxB,OAAO,IAAI,YAAY,CAAC,iCAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,mBAAM,GAAb,UAAiB,EAAwB;QACrC,OAAO,IAAI,YAAY,CAAC,iCAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAID,+BAAQ,GAAR;;QAAS,mBAAuB;aAAvB,UAAuB,EAAvB,qBAAuB,EAAvB,IAAuB;YAAvB,8BAAuB;;QAC5B,IAAI,CAAC,eAAe,GAAG,CAAA,KAAA,IAAI,CAAC,eAAe,CAAA,CAAC,QAAQ,oCAAI,SAAS,UAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAU,GAAV,UAAW,MAAc;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,8BAAO,GAAP;;QAAQ,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAClB,IAAI,CAAC,eAAe,GAAG,CAAA,KAAA,IAAI,CAAC,eAAe,CAAA,CAAC,OAAO,oCAAI,IAAI,UAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAW,GAAX;;QAAY,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QACtB,IAAI,CAAC,eAAe,GAAG,CAAA,KAAA,IAAI,CAAC,eAAe,CAAA,CAAC,WAAW,oCAAI,IAAI,UAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,6BAAM,GAAN,UAAO,GAAgB;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,8BAAO,GAAP,UAAQ,SAAqB;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,yDAA2B,CAAC,2DAA2D,CAAC,CAAC;SACtG;QACD,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IACL,mBAAC;AAAD,CAAC,AAjDD,IAiDC;AAjDY,oCAAY;AAmDlB,IAAM,MAAM,GACf,UAAC,GAAgB;IACjB,OAAA,UAAC,MAAW;QACR,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,UAAC,YAAY,IAAK,OAAA,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAxB,CAAwB,CAAC,CAAC;IAC/E,CAAC;AAFD,CAEC,CAAC;AAJO,QAAA,MAAM,UAIb"}
@@ -0,0 +1,7 @@
1
+ import { constructor, MapFn } from './utils';
2
+ export declare class MapperReflector<P> {
3
+ private metadataKey;
4
+ constructor(metadataKey: string);
5
+ getMapper<T>(target: constructor<T>): MapFn<P> | undefined;
6
+ appendMapper(target: constructor<unknown>, reducer: MapFn<P>): void;
7
+ }
@@ -1,7 +1,7 @@
1
- import { identity, pipe } from '../utils';
2
- export class RegistrationReflector {
3
- constructor() {
4
- this.metadataKey = 'RegistrationReflector';
1
+ import { identity, pipe } from './utils';
2
+ export class MapperReflector {
3
+ constructor(metadataKey) {
4
+ this.metadataKey = metadataKey;
5
5
  }
6
6
  getMapper(target) {
7
7
  return Reflect.getMetadata(this.metadataKey, target);
@@ -12,4 +12,4 @@ export class RegistrationReflector {
12
12
  Reflect.defineMetadata(this.metadataKey, pipe(current, reducer), target);
13
13
  }
14
14
  }
15
- //# sourceMappingURL=RegistrationReflector.js.map
15
+ //# sourceMappingURL=MapperReflector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapperReflector.js","sourceRoot":"","sources":["../lib/MapperReflector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,QAAQ,EAAS,IAAI,EAAE,MAAM,SAAS,CAAC;AAE7D,MAAM,OAAO,eAAe;IACxB,YAAoB,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAC3C,SAAS,CAAI,MAAsB;QAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,YAAY,CAAC,MAA4B,EAAE,OAAiB;;QACxD,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,mCAAI,QAAQ,CAAC;QAC1E,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;CACJ"}
package/esm/index.d.ts CHANGED
@@ -13,7 +13,7 @@ export { Provider } from './provider/Provider';
13
13
  export { ArgsFn } from './provider/ArgsProvider';
14
14
  export { AutoMockedContainer } from './container/AutoMockedContainer';
15
15
  export { ProviderKey } from './provider/IProvider';
16
- export { ProviderBuilder } from './provider/ProviderBuilder';
16
+ export { ProviderBuilder, perTags, asSingleton } from './provider/ProviderBuilder';
17
17
  export { isProviderKey } from './provider/IProvider';
18
- export { perTags, forKey, asSingleton, Registration } from './registration/Registration';
18
+ export { forKey, Registration } from './registration/Registration';
19
19
  export declare const by: <T>(key: InjectionToken<T>, ...args: unknown[]) => (l: IContainer) => T;
package/esm/index.js CHANGED
@@ -5,8 +5,8 @@ export { MethodNotImplementedError } from './MethodNotImplementedError';
5
5
  export { ContainerDisposedError } from './container/ContainerDisposedError';
6
6
  export { Provider } from './provider/Provider';
7
7
  export { AutoMockedContainer } from './container/AutoMockedContainer';
8
- export { ProviderBuilder } from './provider/ProviderBuilder';
8
+ export { ProviderBuilder, perTags, asSingleton } from './provider/ProviderBuilder';
9
9
  export { isProviderKey } from './provider/IProvider';
10
- export { perTags, forKey, asSingleton, Registration } from './registration/Registration';
10
+ export { forKey, Registration } from './registration/Registration';
11
11
  export const by = (key, ...args) => (l) => l.resolve(key, ...args);
12
12
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEzF,MAAM,CAAC,MAAM,EAAE,GACX,CAAI,GAAsB,EAAE,GAAG,IAAe,EAAE,EAAE,CAClD,CAAC,CAAa,EAAE,EAAE,CACd,CAAC,CAAC,OAAO,CAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,CAAC,MAAM,EAAE,GACX,CAAI,GAAsB,EAAE,GAAG,IAAe,EAAE,EAAE,CAClD,CAAC,CAAa,EAAE,EAAE,CACd,CAAC,CAAC,OAAO,CAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC"}
@@ -13,3 +13,5 @@ export declare class ProviderBuilder {
13
13
  asSingleton(...tags: Tag[]): this;
14
14
  build(): IProvider<unknown>;
15
15
  }
16
+ export declare const perTags: (...tags: Tag[]) => ClassDecorator;
17
+ export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
@@ -1,13 +1,18 @@
1
1
  import { ArgsProvider } from './ArgsProvider';
2
2
  import { TaggedProvider } from './TaggedProvider';
3
3
  import { SingletonProvider } from './SingletonProvider';
4
+ import { identity } from '../utils';
4
5
  import { Provider } from './Provider';
6
+ import { MapperReflector } from '../MapperReflector';
7
+ const reflector = new MapperReflector('provider');
5
8
  export class ProviderBuilder {
6
9
  constructor(provider) {
7
10
  this.provider = provider;
8
11
  }
9
12
  static fromClass(Target) {
10
- return new ProviderBuilder(new Provider((container, ...args) => container.resolve(Target, ...args)));
13
+ var _a;
14
+ const map = (_a = reflector.getMapper(Target)) !== null && _a !== void 0 ? _a : identity;
15
+ return map(new ProviderBuilder(new Provider((container, ...args) => container.resolve(Target, ...args))));
11
16
  }
12
17
  static fromValue(value) {
13
18
  return new ProviderBuilder(new Provider(() => value));
@@ -38,4 +43,10 @@ export class ProviderBuilder {
38
43
  return this.provider;
39
44
  }
40
45
  }
46
+ export const perTags = (...tags) => (target) => {
47
+ reflector.appendMapper(target, (builder) => builder.perTags(...tags));
48
+ };
49
+ export const asSingleton = (...tags) => (target) => {
50
+ reflector.appendMapper(target, (builder) => builder.asSingleton(...tags));
51
+ };
41
52
  //# sourceMappingURL=ProviderBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/provider/ProviderBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,OAAO,eAAe;IAaxB,YAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAZ3C,MAAM,CAAC,SAAS,CAAC,MAA4B;QACzC,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzG,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAc;QAC3B,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,EAAqB;QAC/B,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAID,QAAQ,CAAC,GAAG,SAAoB;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,IAAW;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,GAAG,IAAW;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ"}
1
+ {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/provider/ProviderBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAe,QAAQ,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,SAAS,GAAG,IAAI,eAAe,CAAkB,UAAU,CAAC,CAAC;AAEnE,MAAM,OAAO,eAAe;IAcxB,YAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAb3C,MAAM,CAAC,SAAS,CAAC,MAA4B;;QACzC,MAAM,GAAG,GAAG,MAAA,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAI,QAAQ,CAAC;QACpD,OAAO,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAc;QAC3B,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,EAAqB;QAC/B,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAID,QAAQ,CAAC,GAAG,SAAoB;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,IAAW;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,GAAG,IAAW;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,OAAO,GAChB,CAAC,GAAG,IAAW,EAAkB,EAAE,CACnC,CAAC,MAAW,EAAE,EAAE;IACZ,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEN,MAAM,CAAC,MAAM,WAAW,GACpB,CAAC,GAAG,IAAW,EAAkB,EAAE,CACnC,CAAC,MAAW,EAAE,EAAE;IACZ,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9E,CAAC,CAAC"}
@@ -17,6 +17,4 @@ export declare class Registration implements IContainerModule {
17
17
  forKey(key: ProviderKey): this;
18
18
  applyTo(container: IContainer): void;
19
19
  }
20
- export declare const perTags: (...tags: Tag[]) => ClassDecorator;
21
- export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
22
20
  export declare const forKey: (key: ProviderKey) => ClassDecorator;
@@ -1,15 +1,15 @@
1
1
  import { RegistrationMissingKeyError } from './RegistrationMissingKeyError';
2
2
  import { ProviderBuilder } from '../provider/ProviderBuilder';
3
- import { RegistrationReflector } from './RegistrationReflector';
3
+ import { MapperReflector } from '../MapperReflector';
4
4
  import { identity } from '../utils';
5
- const registrationReflector = new RegistrationReflector();
5
+ const reflector = new MapperReflector('registration');
6
6
  export class Registration {
7
7
  constructor(providerBuilder) {
8
8
  this.providerBuilder = providerBuilder;
9
9
  }
10
10
  static fromClass(Target) {
11
11
  var _a;
12
- const map = (_a = registrationReflector.getMapper(Target)) !== null && _a !== void 0 ? _a : identity;
12
+ const map = (_a = reflector.getMapper(Target)) !== null && _a !== void 0 ? _a : identity;
13
13
  return map(new Registration(ProviderBuilder.fromClass(Target)));
14
14
  }
15
15
  static fromValue(value) {
@@ -45,13 +45,7 @@ export class Registration {
45
45
  container.register(this.key, this.providerBuilder.build());
46
46
  }
47
47
  }
48
- export const perTags = (...tags) => (target) => {
49
- registrationReflector.appendMapper(target, (registration) => registration.perTags(...tags));
50
- };
51
- export const asSingleton = (...tags) => (target) => {
52
- registrationReflector.appendMapper(target, (registration) => registration.asSingleton(...tags));
53
- };
54
48
  export const forKey = (key) => (target) => {
55
- registrationReflector.appendMapper(target, (registration) => registration.forKey(key));
49
+ reflector.appendMapper(target, (registration) => registration.forKey(key));
56
50
  };
57
51
  //# sourceMappingURL=Registration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAe,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,SAAS,GAAG,IAAI,eAAe,CAAe,cAAc,CAAC,CAAC;AAEpE,MAAM,OAAO,YAAY;IAgBrB,YAAoB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAAG,CAAC;IAbxD,MAAM,CAAC,SAAS,CAAI,MAAsB;;QACtC,MAAM,GAAG,GAAG,MAAA,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAI,QAAQ,CAAC;QACpD,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,SAAS,CAAI,KAAQ;QACxB,OAAO,IAAI,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,MAAM,CAAI,EAAwB;QACrC,OAAO,IAAI,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAID,QAAQ,CAAC,GAAG,SAAoB;QAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,IAAW;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,GAAG,IAAW;QACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAgB;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,SAAqB;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,2BAA2B,CAAC,2DAA2D,CAAC,CAAC;SACtG;QACD,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,MAAM,GACf,CAAC,GAAgB,EAAkB,EAAE,CACrC,CAAC,MAAW,EAAE,EAAE;IACZ,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-ioc-container",
3
- "version": "22.1.1",
3
+ "version": "22.2.0",
4
4
  "description": "Typescript IoC container",
5
5
  "author": "ibabkin <igba14@gmail.com>",
6
6
  "homepage": "https://github.com/IgorBabkin/ts-ioc-container/tree/master/packages/ts-ioc-container",
@@ -48,5 +48,5 @@
48
48
  "ts-jest": "27.0.5",
49
49
  "typescript": "4.4.3"
50
50
  },
51
- "gitHead": "2c8bdc577991d396195af7a164da4095f9f80200"
51
+ "gitHead": "ca0a2cddd0255fd1f1182793db1348ba064387e4"
52
52
  }
@@ -1,7 +0,0 @@
1
- import { constructor, MapFn } from '../utils';
2
- import { Registration } from './Registration';
3
- export declare class RegistrationReflector {
4
- private metadataKey;
5
- getMapper<T>(target: constructor<T>): MapFn<Registration> | undefined;
6
- appendMapper(target: constructor<unknown>, reducer: MapFn<Registration>): void;
7
- }
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RegistrationReflector = void 0;
4
- var utils_1 = require("../utils");
5
- var RegistrationReflector = /** @class */ (function () {
6
- function RegistrationReflector() {
7
- this.metadataKey = 'RegistrationReflector';
8
- }
9
- RegistrationReflector.prototype.getMapper = function (target) {
10
- return Reflect.getMetadata(this.metadataKey, target);
11
- };
12
- RegistrationReflector.prototype.appendMapper = function (target, reducer) {
13
- var _a;
14
- var current = (_a = Reflect.getMetadata(this.metadataKey, target)) !== null && _a !== void 0 ? _a : utils_1.identity;
15
- Reflect.defineMetadata(this.metadataKey, (0, utils_1.pipe)(current, reducer), target);
16
- };
17
- return RegistrationReflector;
18
- }());
19
- exports.RegistrationReflector = RegistrationReflector;
20
- //# sourceMappingURL=RegistrationReflector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RegistrationReflector.js","sourceRoot":"","sources":["../../lib/registration/RegistrationReflector.ts"],"names":[],"mappings":";;;AAAA,kCAA8D;AAG9D;IAAA;QACY,gBAAW,GAAG,uBAAuB,CAAC;IASlD,CAAC;IARG,yCAAS,GAAT,UAAa,MAAsB;QAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,4CAAY,GAAZ,UAAa,MAA4B,EAAE,OAA4B;;QACnE,IAAM,OAAO,GAAG,MAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,mCAAI,gBAAQ,CAAC;QAC1E,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAA,YAAI,EAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;IACL,4BAAC;AAAD,CAAC,AAVD,IAUC;AAVY,sDAAqB"}
@@ -1,7 +0,0 @@
1
- import { constructor, MapFn } from '../utils';
2
- import { Registration } from './Registration';
3
- export declare class RegistrationReflector {
4
- private metadataKey;
5
- getMapper<T>(target: constructor<T>): MapFn<Registration> | undefined;
6
- appendMapper(target: constructor<unknown>, reducer: MapFn<Registration>): void;
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"RegistrationReflector.js","sourceRoot":"","sources":["../../lib/registration/RegistrationReflector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,QAAQ,EAAS,IAAI,EAAE,MAAM,UAAU,CAAC;AAG9D,MAAM,OAAO,qBAAqB;IAAlC;QACY,gBAAW,GAAG,uBAAuB,CAAC;IASlD,CAAC;IARG,SAAS,CAAI,MAAsB;QAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,YAAY,CAAC,MAA4B,EAAE,OAA4B;;QACnE,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,mCAAI,QAAQ,CAAC;QAC1E,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;CACJ"}