1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const logger_1 = require("./logger");
|
4 | const map = new WeakMap();
|
5 | function injectable(target) {
|
6 | return new Proxy(target, {
|
7 | get(_, key) {
|
8 | const instance = map.get(target);
|
9 | const obj = instance === undefined ? target : instance;
|
10 | return obj[key];
|
11 | },
|
12 | construct(_, args) {
|
13 | const instance = map.get(target);
|
14 | const obj = instance === undefined ? target : instance;
|
15 | return new obj(...args);
|
16 | },
|
17 | });
|
18 | }
|
19 | exports.injectable = injectable;
|
20 | function mock(replace, to) {
|
21 | map.set(replace, to);
|
22 | }
|
23 | exports.mock = mock;
|
24 | const serviceMap = new WeakMap();
|
25 | function service(Class) {
|
26 | const instance = serviceMap.get(Class);
|
27 | if (instance === undefined) {
|
28 | throw new logger_1.Exception(`Instance is not setted`, { name: Class.name });
|
29 | }
|
30 | return instance;
|
31 | }
|
32 | exports.service = service;
|
33 | function setService(Class, instance) {
|
34 | serviceMap.set(Class, instance);
|
35 | }
|
36 | exports.setService = setService;
|
37 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBcUM7QUFFckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7QUFDMUMsU0FBZ0IsVUFBVSxDQUFtQixNQUFTO0lBQ3JELE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ3hCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBVTtZQUNoQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxHQUFHLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3ZELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQWU7WUFDM0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxNQUFNLEdBQUcsR0FBRyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUN2RCxPQUFPLElBQUssR0FBMEMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2pFLENBQUM7S0FDRCxDQUFDLENBQUM7QUFDSixDQUFDO0FBYkQsZ0NBYUM7QUFFRCxTQUFnQixJQUFJLENBQW1CLE9BQVUsRUFBRSxFQUFVO0lBQzVELEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFGRCxvQkFFQztBQUVELE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO0FBQ2xELFNBQWdCLE9BQU8sQ0FBSSxLQUFrQztJQUM1RCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtRQUMzQixNQUFNLElBQUksa0JBQVMsQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUNwRTtJQUNELE9BQU8sUUFBYSxDQUFDO0FBQ3RCLENBQUM7QUFORCwwQkFNQztBQUNELFNBQWdCLFVBQVUsQ0FBSSxLQUFrQyxFQUFFLFFBQVc7SUFDNUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUZELGdDQUVDIn0= |
\ | No newline at end of file |