UNPKG

stepdad

Version:

Stupid simple and lightweight dependency injection

38 lines (37 loc) 1.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseFunctionParameterNames = exports.Param = void 0; const Param = (desc) => { return (target, name, index) => { let constructor = target.constructor; let definitions = (constructor.paramDefinitions = []); let type = Reflect.getMetadata("design:paramtypes", target, name); let name_fn = target[name] && getFunctionParameterName(target[name], index); console.log("desc: ", desc); console.log("type: ", type); //console.log("name: ", getFunctionParameterName(target[name], index)); console.log("definitions: ", definitions); definitions[index] = { type, index, name, name_fn, }; }; }; exports.Param = Param; function parseFunctionParameterNames(fn) { let groups = fn.toString().match(/^[^{=]*\(([\w\d$-,\s]*)\)/); return groups ? groups[1].trim().split(/\s*,\s*/) : undefined; } exports.parseFunctionParameterNames = parseFunctionParameterNames; const getFunctionParameterName = (fn, index) => { let paramNames; if (fn.__paramNames) { paramNames = fn.__paramNames; } else { paramNames = fn.__paramNames = parseFunctionParameterNames(fn); } return (paramNames && paramNames[index]) || `param${index}`; };