ts-ioc-container 22.2.1 → 22.3.1

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.
@@ -1,6 +1,8 @@
1
1
  import { IProvider, ResolveDependency, Tag } from './IProvider';
2
2
  import { ArgsFn } from './ArgsProvider';
3
3
  import { constructor } from '../utils';
4
+ export declare const perTags: (...tags: Tag[]) => ClassDecorator;
5
+ export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
4
6
  export declare class ProviderBuilder {
5
7
  private provider;
6
8
  static fromClass(Target: constructor<unknown>): ProviderBuilder;
@@ -13,5 +15,3 @@ export declare class ProviderBuilder {
13
15
  asSingleton(...tags: Tag[]): this;
14
16
  build(): IProvider<unknown>;
15
17
  }
16
- export declare const perTags: (...tags: Tag[]) => ClassDecorator;
17
- export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
@@ -25,21 +25,41 @@ 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.asSingleton = exports.perTags = exports.ProviderBuilder = void 0;
28
+ exports.ProviderBuilder = exports.asSingleton = exports.perTags = 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");
33
32
  var Provider_1 = require("./Provider");
34
- var MapperReflector_1 = require("../MapperReflector");
35
- var reflector = new MapperReflector_1.MapperReflector('provider');
33
+ var reflection_1 = require("../reflection");
34
+ var perTags = function () {
35
+ var tags = [];
36
+ for (var _i = 0; _i < arguments.length; _i++) {
37
+ tags[_i] = arguments[_i];
38
+ }
39
+ return (0, reflection_1.reduceProp)('provider', function (prev) { return function (builder) {
40
+ var _a;
41
+ return (_a = prev(builder)).perTags.apply(_a, __spreadArray([], __read(tags), false));
42
+ }; }, function (x) { return x; });
43
+ };
44
+ exports.perTags = perTags;
45
+ var asSingleton = function () {
46
+ var tags = [];
47
+ for (var _i = 0; _i < arguments.length; _i++) {
48
+ tags[_i] = arguments[_i];
49
+ }
50
+ return (0, reflection_1.reduceProp)('provider', function (prev) { return function (builder) {
51
+ var _a;
52
+ return (_a = prev(builder)).asSingleton.apply(_a, __spreadArray([], __read(tags), false));
53
+ }; }, function (x) { return x; });
54
+ };
55
+ exports.asSingleton = asSingleton;
36
56
  var ProviderBuilder = /** @class */ (function () {
37
57
  function ProviderBuilder(provider) {
38
58
  this.provider = provider;
39
59
  }
40
60
  ProviderBuilder.fromClass = function (Target) {
41
61
  var _a;
42
- var map = (_a = reflector.getMapper(Target)) !== null && _a !== void 0 ? _a : utils_1.identity;
62
+ var map = (_a = (0, reflection_1.getProp)(Target, 'provider')) !== null && _a !== void 0 ? _a : (function (x) { return x; });
43
63
  return map(new ProviderBuilder(new Provider_1.Provider(function (container) {
44
64
  var args = [];
45
65
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -91,24 +111,4 @@ var ProviderBuilder = /** @class */ (function () {
91
111
  return ProviderBuilder;
92
112
  }());
93
113
  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;
114
114
  //# sourceMappingURL=ProviderBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/provider/ProviderBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/provider/ProviderBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const setProp: <T>(key: string | symbol, value: T) => ClassDecorator;
2
+ export declare const reduceProp: <T>(key: string | symbol, fn: (acc: T) => T, init: T) => ClassDecorator;
3
+ export declare function getProp<T>(target: Object, key: string | symbol): T | undefined;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getProp = exports.reduceProp = exports.setProp = void 0;
4
+ var setProp = function (key, value) {
5
+ return function (target) {
6
+ Reflect.defineMetadata(key, value, target);
7
+ };
8
+ };
9
+ exports.setProp = setProp;
10
+ var reduceProp = function (key, fn, init) {
11
+ return function (target) {
12
+ var _a;
13
+ var current = (_a = Reflect.getOwnMetadata(key, target)) !== null && _a !== void 0 ? _a : init;
14
+ Reflect.defineMetadata(key, fn(current), target);
15
+ };
16
+ };
17
+ exports.reduceProp = reduceProp;
18
+ // eslint-disable-next-line @typescript-eslint/ban-types
19
+ function getProp(target, key) {
20
+ return Reflect.getOwnMetadata(key, target);
21
+ }
22
+ exports.getProp = getProp;
23
+ //# sourceMappingURL=reflection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflection.js","sourceRoot":"","sources":["../lib/reflection.ts"],"names":[],"mappings":";;;AAAO,IAAM,OAAO,GAChB,UAAI,GAAoB,EAAE,KAAQ;IAClC,OAAA,UAAC,MAAM;QACH,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;AAFD,CAEC,CAAC;AAJO,QAAA,OAAO,WAId;AAEC,IAAM,UAAU,GACnB,UAAI,GAAoB,EAAE,EAAiB,EAAE,IAAO;IACpD,OAAA,UAAC,MAAM;;QACH,IAAM,OAAO,GAAM,MAAA,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,mCAAI,IAAI,CAAC;QAC/D,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;AAHD,CAGC,CAAC;AALO,QAAA,UAAU,cAKjB;AAEN,wDAAwD;AACxD,SAAgB,OAAO,CAAI,MAAc,EAAE,GAAoB;IAC3D,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAM,CAAC;AACpD,CAAC;AAFD,0BAEC"}
@@ -1,20 +1,17 @@
1
- import { ProviderKey, ResolveDependency, Tag } from '../provider/IProvider';
1
+ import { ProviderKey, Tag } from '../provider/IProvider';
2
2
  import { ArgsFn } from '../provider/ArgsProvider';
3
3
  import { IContainer, IContainerModule } from '../container/IContainer';
4
4
  import { ProviderBuilder } from '../provider/ProviderBuilder';
5
5
  import { constructor } from '../utils';
6
+ export declare const forKey: (key: ProviderKey) => ClassDecorator;
6
7
  export declare class Registration implements IContainerModule {
8
+ private key;
7
9
  private providerBuilder;
8
- private key?;
9
10
  static fromClass<T>(Target: constructor<T>): Registration;
10
- static fromValue<T>(value: T): Registration;
11
- static fromFn<T>(fn: ResolveDependency<T>): Registration;
12
- constructor(providerBuilder: ProviderBuilder);
11
+ constructor(key: ProviderKey, providerBuilder: ProviderBuilder);
13
12
  withArgs(...extraArgs: unknown[]): this;
14
13
  withArgsFn(argsFn: ArgsFn): this;
15
14
  perTags(...tags: Tag[]): this;
16
15
  asSingleton(...tags: Tag[]): this;
17
- forKey(key: ProviderKey): this;
18
16
  applyTo(container: IContainer): void;
19
17
  }
20
- export declare const forKey: (key: ProviderKey) => ClassDecorator;
@@ -25,26 +25,24 @@ 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.Registration = void 0;
28
+ exports.Registration = exports.forKey = void 0;
29
29
  var RegistrationMissingKeyError_1 = require("./RegistrationMissingKeyError");
30
30
  var ProviderBuilder_1 = require("../provider/ProviderBuilder");
31
- var MapperReflector_1 = require("../MapperReflector");
32
- var utils_1 = require("../utils");
33
- var reflector = new MapperReflector_1.MapperReflector('registration');
31
+ var reflection_1 = require("../reflection");
32
+ var ts_constructor_injector_1 = require("ts-constructor-injector");
33
+ var forKey = function (key) { return (0, reflection_1.setProp)('provider-key', key); };
34
+ exports.forKey = forKey;
34
35
  var Registration = /** @class */ (function () {
35
- function Registration(providerBuilder) {
36
+ function Registration(key, providerBuilder) {
37
+ this.key = key;
36
38
  this.providerBuilder = providerBuilder;
37
39
  }
38
40
  Registration.fromClass = function (Target) {
39
- var _a;
40
- var map = (_a = reflector.getMapper(Target)) !== null && _a !== void 0 ? _a : utils_1.identity;
41
- return map(new Registration(ProviderBuilder_1.ProviderBuilder.fromClass(Target)));
42
- };
43
- Registration.fromValue = function (value) {
44
- return new Registration(ProviderBuilder_1.ProviderBuilder.fromValue(value));
45
- };
46
- Registration.fromFn = function (fn) {
47
- return new Registration(ProviderBuilder_1.ProviderBuilder.fromFn(fn));
41
+ var providerKey = (0, ts_constructor_injector_1.getProp)(Target, 'provider-key');
42
+ if (providerKey === undefined) {
43
+ throw new RegistrationMissingKeyError_1.RegistrationMissingKeyError("Pls provide provider key for " + Target.name);
44
+ }
45
+ return new Registration(providerKey, ProviderBuilder_1.ProviderBuilder.fromClass(Target));
48
46
  };
49
47
  Registration.prototype.withArgs = function () {
50
48
  var _a;
@@ -77,23 +75,10 @@ var Registration = /** @class */ (function () {
77
75
  this.providerBuilder = (_a = this.providerBuilder).asSingleton.apply(_a, __spreadArray([], __read(tags), false));
78
76
  return this;
79
77
  };
80
- Registration.prototype.forKey = function (key) {
81
- this.key = key;
82
- return this;
83
- };
84
78
  Registration.prototype.applyTo = function (container) {
85
- if (!this.key) {
86
- throw new RegistrationMissingKeyError_1.RegistrationMissingKeyError('Pls provide registration keys for current providerBuilder');
87
- }
88
79
  container.register(this.key, this.providerBuilder.build());
89
80
  };
90
81
  return Registration;
91
82
  }());
92
83
  exports.Registration = Registration;
93
- var forKey = function (key) {
94
- return function (target) {
95
- reflector.appendMapper(target, function (registration) { return registration.forKey(key); });
96
- };
97
- };
98
- exports.forKey = forKey;
99
84
  //# sourceMappingURL=Registration.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,6EAA4E;AAE5E,+DAA8D;AAE9D,4CAAwC;AACxC,mEAAkD;AAE3C,IAAM,MAAM,GAAG,UAAC,GAAgB,IAAqB,OAAA,IAAA,oBAAO,EAAC,cAAc,EAAE,GAAG,CAAC,EAA5B,CAA4B,CAAC;AAA5E,QAAA,MAAM,UAAsE;AAEzF;IASI,sBAAoB,GAAgB,EAAU,eAAgC;QAA1D,QAAG,GAAH,GAAG,CAAa;QAAU,oBAAe,GAAf,eAAe,CAAiB;IAAG,CAAC;IAR3E,sBAAS,GAAhB,UAAoB,MAAsB;QACtC,IAAM,WAAW,GAAG,IAAA,iCAAO,EAAc,MAAM,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,WAAW,KAAK,SAAS,EAAE;YAC3B,MAAM,IAAI,yDAA2B,CAAC,kCAAgC,MAAM,CAAC,IAAM,CAAC,CAAC;SACxF;QACD,OAAO,IAAI,YAAY,CAAC,WAAW,EAAE,iCAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,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,8BAAO,GAAP,UAAQ,SAAqB;QACzB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IACL,mBAAC;AAAD,CAAC,AAlCD,IAkCC;AAlCY,oCAAY"}
package/cjm/utils.d.ts CHANGED
@@ -1,6 +1,2 @@
1
1
  export declare type constructor<T> = new (...args: any[]) => T;
2
2
  export declare type MapFn<T> = (value: T) => T;
3
- declare type Fn<A, B> = (a: A) => B;
4
- export declare function pipe<A, B, C>(a: Fn<A, B>, b: Fn<B, C>): Fn<A, C>;
5
- export declare const identity: <T>(value: T) => T;
6
- export {};
package/cjm/utils.js CHANGED
@@ -1,10 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.identity = exports.pipe = void 0;
4
- function pipe(a, b) {
5
- return function (x) { return b(a(x)); };
6
- }
7
- exports.pipe = pipe;
8
- var identity = function (value) { return value; };
9
- exports.identity = identity;
10
3
  //# sourceMappingURL=utils.js.map
package/cjm/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":";;;AAMA,SAAgB,IAAI,CAAU,CAAW,EAAE,CAAW;IAClD,OAAO,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAP,CAAO,CAAC;AAC1B,CAAC;AAFD,oBAEC;AAEM,IAAM,QAAQ,GAAG,UAAI,KAAQ,IAAK,OAAA,KAAK,EAAL,CAAK,CAAC;AAAlC,QAAA,QAAQ,YAA0B"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":""}
@@ -1,6 +1,8 @@
1
1
  import { IProvider, ResolveDependency, Tag } from './IProvider';
2
2
  import { ArgsFn } from './ArgsProvider';
3
3
  import { constructor } from '../utils';
4
+ export declare const perTags: (...tags: Tag[]) => ClassDecorator;
5
+ export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
4
6
  export declare class ProviderBuilder {
5
7
  private provider;
6
8
  static fromClass(Target: constructor<unknown>): ProviderBuilder;
@@ -13,5 +15,3 @@ export declare class ProviderBuilder {
13
15
  asSingleton(...tags: Tag[]): this;
14
16
  build(): IProvider<unknown>;
15
17
  }
16
- export declare const perTags: (...tags: Tag[]) => ClassDecorator;
17
- export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
@@ -1,17 +1,17 @@
1
1
  import { ArgsProvider } from './ArgsProvider';
2
2
  import { TaggedProvider } from './TaggedProvider';
3
3
  import { SingletonProvider } from './SingletonProvider';
4
- import { identity } from '../utils';
5
4
  import { Provider } from './Provider';
6
- import { MapperReflector } from '../MapperReflector';
7
- const reflector = new MapperReflector('provider');
5
+ import { reduceProp, getProp } from '../reflection';
6
+ export const perTags = (...tags) => reduceProp('provider', (prev) => (builder) => prev(builder).perTags(...tags), (x) => x);
7
+ export const asSingleton = (...tags) => reduceProp('provider', (prev) => (builder) => prev(builder).asSingleton(...tags), (x) => x);
8
8
  export class ProviderBuilder {
9
9
  constructor(provider) {
10
10
  this.provider = provider;
11
11
  }
12
12
  static fromClass(Target) {
13
13
  var _a;
14
- const map = (_a = reflector.getMapper(Target)) !== null && _a !== void 0 ? _a : identity;
14
+ const map = (_a = getProp(Target, 'provider')) !== null && _a !== void 0 ? _a : ((x) => x);
15
15
  return map(new ProviderBuilder(new Provider((container, ...args) => container.resolve(Target, ...args))));
16
16
  }
17
17
  static fromValue(value) {
@@ -43,10 +43,4 @@ export class ProviderBuilder {
43
43
  return this.provider;
44
44
  }
45
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
- };
52
46
  //# 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;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"}
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;AACtC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAW,EAAkB,EAAE,CACtD,UAAU,CACN,UAAU,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,EACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CACX,CAAC;AAEN,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAW,EAAkB,EAAE,CAC1D,UAAU,CACN,UAAU,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,EACzD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CACX,CAAC;AAEN,MAAM,OAAO,eAAe;IAcxB,YAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAb3C,MAAM,CAAC,SAAS,CAAC,MAA4B;;QACzC,MAAM,GAAG,GAA2B,MAAA,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,mCAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,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"}
@@ -0,0 +1,3 @@
1
+ export declare const setProp: <T>(key: string | symbol, value: T) => ClassDecorator;
2
+ export declare const reduceProp: <T>(key: string | symbol, fn: (acc: T) => T, init: T) => ClassDecorator;
3
+ export declare function getProp<T>(target: Object, key: string | symbol): T | undefined;
@@ -0,0 +1,13 @@
1
+ export const setProp = (key, value) => (target) => {
2
+ Reflect.defineMetadata(key, value, target);
3
+ };
4
+ export const reduceProp = (key, fn, init) => (target) => {
5
+ var _a;
6
+ const current = (_a = Reflect.getOwnMetadata(key, target)) !== null && _a !== void 0 ? _a : init;
7
+ Reflect.defineMetadata(key, fn(current), target);
8
+ };
9
+ // eslint-disable-next-line @typescript-eslint/ban-types
10
+ export function getProp(target, key) {
11
+ return Reflect.getOwnMetadata(key, target);
12
+ }
13
+ //# sourceMappingURL=reflection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflection.js","sourceRoot":"","sources":["../lib/reflection.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAChB,CAAI,GAAoB,EAAE,KAAQ,EAAkB,EAAE,CACtD,CAAC,MAAM,EAAE,EAAE;IACP,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEN,MAAM,CAAC,MAAM,UAAU,GACnB,CAAI,GAAoB,EAAE,EAAiB,EAAE,IAAO,EAAkB,EAAE,CACxE,CAAC,MAAM,EAAE,EAAE;;IACP,MAAM,OAAO,GAAM,MAAA,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,mCAAI,IAAI,CAAC;IAC/D,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC,CAAC;AAEN,wDAAwD;AACxD,MAAM,UAAU,OAAO,CAAI,MAAc,EAAE,GAAoB;IAC3D,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAM,CAAC;AACpD,CAAC"}
@@ -1,20 +1,17 @@
1
- import { ProviderKey, ResolveDependency, Tag } from '../provider/IProvider';
1
+ import { ProviderKey, Tag } from '../provider/IProvider';
2
2
  import { ArgsFn } from '../provider/ArgsProvider';
3
3
  import { IContainer, IContainerModule } from '../container/IContainer';
4
4
  import { ProviderBuilder } from '../provider/ProviderBuilder';
5
5
  import { constructor } from '../utils';
6
+ export declare const forKey: (key: ProviderKey) => ClassDecorator;
6
7
  export declare class Registration implements IContainerModule {
8
+ private key;
7
9
  private providerBuilder;
8
- private key?;
9
10
  static fromClass<T>(Target: constructor<T>): Registration;
10
- static fromValue<T>(value: T): Registration;
11
- static fromFn<T>(fn: ResolveDependency<T>): Registration;
12
- constructor(providerBuilder: ProviderBuilder);
11
+ constructor(key: ProviderKey, providerBuilder: ProviderBuilder);
13
12
  withArgs(...extraArgs: unknown[]): this;
14
13
  withArgsFn(argsFn: ArgsFn): this;
15
14
  perTags(...tags: Tag[]): this;
16
15
  asSingleton(...tags: Tag[]): this;
17
- forKey(key: ProviderKey): this;
18
16
  applyTo(container: IContainer): void;
19
17
  }
20
- export declare const forKey: (key: ProviderKey) => ClassDecorator;
@@ -1,22 +1,19 @@
1
1
  import { RegistrationMissingKeyError } from './RegistrationMissingKeyError';
2
2
  import { ProviderBuilder } from '../provider/ProviderBuilder';
3
- import { MapperReflector } from '../MapperReflector';
4
- import { identity } from '../utils';
5
- const reflector = new MapperReflector('registration');
3
+ import { setProp } from '../reflection';
4
+ import { getProp } from 'ts-constructor-injector';
5
+ export const forKey = (key) => setProp('provider-key', key);
6
6
  export class Registration {
7
- constructor(providerBuilder) {
7
+ constructor(key, providerBuilder) {
8
+ this.key = key;
8
9
  this.providerBuilder = providerBuilder;
9
10
  }
10
11
  static fromClass(Target) {
11
- var _a;
12
- const map = (_a = reflector.getMapper(Target)) !== null && _a !== void 0 ? _a : identity;
13
- return map(new Registration(ProviderBuilder.fromClass(Target)));
14
- }
15
- static fromValue(value) {
16
- return new Registration(ProviderBuilder.fromValue(value));
17
- }
18
- static fromFn(fn) {
19
- return new Registration(ProviderBuilder.fromFn(fn));
12
+ const providerKey = getProp(Target, 'provider-key');
13
+ if (providerKey === undefined) {
14
+ throw new RegistrationMissingKeyError(`Pls provide provider key for ${Target.name}`);
15
+ }
16
+ return new Registration(providerKey, ProviderBuilder.fromClass(Target));
20
17
  }
21
18
  withArgs(...extraArgs) {
22
19
  this.providerBuilder = this.providerBuilder.withArgs(...extraArgs);
@@ -34,18 +31,8 @@ export class Registration {
34
31
  this.providerBuilder = this.providerBuilder.asSingleton(...tags);
35
32
  return this;
36
33
  }
37
- forKey(key) {
38
- this.key = key;
39
- return this;
40
- }
41
34
  applyTo(container) {
42
- if (!this.key) {
43
- throw new RegistrationMissingKeyError('Pls provide registration keys for current providerBuilder');
44
- }
45
35
  container.register(this.key, this.providerBuilder.build());
46
36
  }
47
37
  }
48
- export const forKey = (key) => (target) => {
49
- reflector.appendMapper(target, (registration) => registration.forKey(key));
50
- };
51
38
  //# sourceMappingURL=Registration.js.map
@@ -1 +1 @@
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"}
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;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAgB,EAAkB,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AAEzF,MAAM,OAAO,YAAY;IASrB,YAAoB,GAAgB,EAAU,eAAgC;QAA1D,QAAG,GAAH,GAAG,CAAa;QAAU,oBAAe,GAAf,eAAe,CAAiB;IAAG,CAAC;IARlF,MAAM,CAAC,SAAS,CAAI,MAAsB;QACtC,MAAM,WAAW,GAAG,OAAO,CAAc,MAAM,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,WAAW,KAAK,SAAS,EAAE;YAC3B,MAAM,IAAI,2BAA2B,CAAC,gCAAgC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACxF;QACD,OAAO,IAAI,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,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,OAAO,CAAC,SAAqB;QACzB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;CACJ"}
package/esm/utils.d.ts CHANGED
@@ -1,6 +1,2 @@
1
1
  export declare type constructor<T> = new (...args: any[]) => T;
2
2
  export declare type MapFn<T> = (value: T) => T;
3
- declare type Fn<A, B> = (a: A) => B;
4
- export declare function pipe<A, B, C>(a: Fn<A, B>, b: Fn<B, C>): Fn<A, C>;
5
- export declare const identity: <T>(value: T) => T;
6
- export {};
package/esm/utils.js CHANGED
@@ -1,5 +1,2 @@
1
- export function pipe(a, b) {
2
- return (x) => b(a(x));
3
- }
4
- export const identity = (value) => value;
1
+ export {};
5
2
  //# sourceMappingURL=utils.js.map
package/esm/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,IAAI,CAAU,CAAW,EAAE,CAAW;IAClD,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,KAAQ,EAAE,EAAE,CAAC,KAAK,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-ioc-container",
3
- "version": "22.2.1",
3
+ "version": "22.3.1",
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": "57f7be5e150ab43721db26cc15fdef9fa826952c"
51
+ "gitHead": "41e3da925e9eb8ad6a443d4dac971aa5f4423f96"
52
52
  }
@@ -1,7 +0,0 @@
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,20 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,7 +0,0 @@
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,15 +0,0 @@
1
- import { identity, pipe } from './utils';
2
- export class MapperReflector {
3
- constructor(metadataKey) {
4
- this.metadataKey = metadataKey;
5
- }
6
- getMapper(target) {
7
- return Reflect.getMetadata(this.metadataKey, target);
8
- }
9
- appendMapper(target, reducer) {
10
- var _a;
11
- const current = (_a = Reflect.getMetadata(this.metadataKey, target)) !== null && _a !== void 0 ? _a : identity;
12
- Reflect.defineMetadata(this.metadataKey, pipe(current, reducer), target);
13
- }
14
- }
15
- //# sourceMappingURL=MapperReflector.js.map
@@ -1 +0,0 @@
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"}