UNPKG

2.73 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const logger_1 = require("./logger");
4const map = new WeakMap();
5function 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}
19exports.injectable = injectable;
20function mock(replace, to) {
21 map.set(replace, to);
22}
23exports.mock = mock;
24const serviceMap = new WeakMap();
25function 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}
32exports.service = service;
33function setService(Class, instance) {
34 serviceMap.set(Class, instance);
35}
36exports.setService = setService;
37//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBcUM7QUFFckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7QUFDMUMsU0FBZ0IsVUFBVSxDQUFtQixNQUFTO0lBQ3JELE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ3hCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBVTtZQUNoQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxHQUFHLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3ZELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQWU7WUFDM0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxNQUFNLEdBQUcsR0FBRyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUN2RCxPQUFPLElBQUssR0FBMEMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2pFLENBQUM7S0FDRCxDQUFDLENBQUM7QUFDSixDQUFDO0FBYkQsZ0NBYUM7QUFFRCxTQUFnQixJQUFJLENBQW1CLE9BQVUsRUFBRSxFQUFVO0lBQzVELEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFGRCxvQkFFQztBQUVELE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO0FBQ2xELFNBQWdCLE9BQU8sQ0FBSSxLQUFrQztJQUM1RCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtRQUMzQixNQUFNLElBQUksa0JBQVMsQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUNwRTtJQUNELE9BQU8sUUFBYSxDQUFDO0FBQ3RCLENBQUM7QUFORCwwQkFNQztBQUNELFNBQWdCLFVBQVUsQ0FBSSxLQUFrQyxFQUFFLFFBQVc7SUFDNUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUZELGdDQUVDIn0=
\No newline at end of file