Injector/Inject.js

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var object_hash_1 = __importDefault(require("object-hash"));
var ExpressTS_1 = __importDefault(require("../app/ExpressTS"));
/**
 * This decorator is used to inject a class.
 * @static
 * @param {Function} constructor
 * @memberof module:Injector
 * @return {any}
 * @example <caption>Example usage of [\@Inject]{@link Inject}.</caption>
 * // [InjectedClass]{@link module:Injector~InjectedClass} is optional, only if you want to use the onReady function.
 * [\@Inject]{@link Inject}
 * export default class ClassName implements [InjectedClass]{@link module:Injector~InjectedClass} {
 *    // Mandatory if you have [InjectedClass]{@link module:Injector~InjectedClass}.
 *    public async [onReady()]{@link module:Injector~InjectedClass.onReady}: Promise<void> {
 *
 *    }
 * }
 */
function Inject(constructor) {
    var injectionHash = (0, object_hash_1.default)(constructor);
    if (!ExpressTS_1.default.getData(injectionHash, 'injections')) {
        ExpressTS_1.default.setData(injectionHash, constructor, 'injections');
    }
    var _injected = function () { };
    ExpressTS_1.default.inject(_injected, constructor, 'class', injectionHash);
    return _injected;
}
exports.default = Inject;
//# sourceMappingURL=Inject.js.map