@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
45 lines • 7.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ContextUtils = void 0;
const execution_context_host_1 = require("./execution-context-host");
const constants_1 = require("./constants");
const shared_utils_1 = require("../utils/shared.utils");
class ContextUtils {
mapParamType(key) {
const keyPair = key.split(':');
return keyPair[0];
}
reflectCallbackParamTypes(instance, methodName) {
return Reflect.getMetadata(constants_1.PARAMTYPES_METADATA, instance, methodName);
}
reflectCallbackMetadata(instance, methodName, metadataKey) {
return Reflect.getMetadata(metadataKey, instance.constructor, methodName);
}
reflectPassThrough(instance, methodName) {
return Reflect.getMetadata(constants_1.RESPONSE_PASSTHROUGH_METADATA, instance.constructor, methodName);
}
getArgumentsLength(keys, metadata) {
return Math.max(...keys.map(key => metadata[key].index)) + 1;
}
createNullArray(length) {
return Array.apply(null, { length }).fill(undefined);
}
mergeParamsMetaTypes(paramsProperties, paramTypes) {
if (!paramTypes)
return paramsProperties;
return paramsProperties.map(param => (Object.assign(Object.assign({}, param), { metaType: paramTypes[param.index] })));
}
getCustomFactory(factory, data, contextFactory) {
return (0, shared_utils_1.isFunction)(factory)
? (...args) => factory(data, contextFactory(args)) : () => null;
}
getContextFactory(contextType, instance, callback) {
return (args) => {
const ctx = new execution_context_host_1.ExecutionContextHost(args, instance && instance.constructor, callback);
ctx.setType(contextType);
return ctx;
};
}
}
exports.ContextUtils = ContextUtils;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL2NvbnRleHQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQThEO0FBRTlELDJDQUErRTtBQUMvRSx3REFBaUQ7QUFZakQsTUFBYSxZQUFZO0lBQ2QsWUFBWSxDQUFDLEdBQVc7UUFDM0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU0seUJBQXlCLENBQUMsUUFBd0IsRUFBRSxVQUFrQjtRQUN6RSxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsK0JBQW1CLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSx1QkFBdUIsQ0FDMUIsUUFBd0IsRUFBRSxVQUFrQixFQUFFLFdBQW1CO1FBQ2pFLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sa0JBQWtCLENBQUMsUUFBd0IsRUFBRSxVQUFrQjtRQUNsRSxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQ3RCLHlDQUE2QixFQUFFLFFBQVEsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVNLGtCQUFrQixDQUFJLElBQWMsRUFBRSxRQUFXO1FBQ3BELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLGVBQWUsQ0FBQyxNQUFjO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBQyxNQUFNLEVBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sb0JBQW9CLENBQUMsZ0JBQW1DLEVBQUUsVUFBaUI7UUFDOUUsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLGdCQUFnQixDQUFDO1FBRXpDLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsaUNBQzlCLEtBQUssS0FDUixRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFDbkMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVNLGdCQUFnQixDQUNuQixPQUFxQyxFQUFFLElBQWEsRUFBRSxjQUF5RDtRQUMvRyxPQUFPLElBQUEseUJBQVUsRUFBQyxPQUFPLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUNuRixDQUFDO0lBRU0saUJBQWlCLENBQ3BCLFdBQWMsRUFBRSxRQUFpQixFQUFFLFFBQW1CO1FBRXRELE9BQU8sQ0FBQyxJQUFlLEVBQUUsRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLDZDQUFvQixDQUNoQyxJQUFJLEVBQ0osUUFBUSxJQUFLLFFBQVEsQ0FBQyxXQUE2QixFQUNuRCxRQUFRLENBQ1gsQ0FBQztZQUNGLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekIsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0o7QUF4REQsb0NBd0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFeGVjdXRpb25Db250ZXh0SG9zdH0gZnJvbSAnLi9leGVjdXRpb24tY29udGV4dC1ob3N0JztcbmltcG9ydCB7SGFuZGxlclRyYW5zZm9ybSwgVHlwZX0gZnJvbSBcIi4uL2NvbnRyYWN0c1wiO1xuaW1wb3J0IHtQQVJBTVRZUEVTX01FVEFEQVRBLCBSRVNQT05TRV9QQVNTVEhST1VHSF9NRVRBREFUQX0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQge2lzRnVuY3Rpb259IGZyb20gXCIuLi91dGlscy9zaGFyZWQudXRpbHNcIjtcbmltcG9ydCB7UGFyYW1EYXRhfSBmcm9tIFwiLi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHtDb250ZXh0VHlwZSwgQ29udHJvbGxlclR5cGV9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtUHJvcGVydGllczxUID0gYW55LCBJRXh0cmFjdG9yIGV4dGVuZHMgRnVuY3Rpb24gPSBhbnk+IHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIHR5cGU6IFQgfCBzdHJpbmc7XG4gICAgZGF0YTogUGFyYW1EYXRhO1xuICAgIGhhbmRsZXJzOiBIYW5kbGVyVHJhbnNmb3JtW107XG4gICAgZXh0cmFjdFZhbHVlOiBJRXh0cmFjdG9yO1xufVxuXG5leHBvcnQgY2xhc3MgQ29udGV4dFV0aWxzIHtcbiAgICBwdWJsaWMgbWFwUGFyYW1UeXBlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qga2V5UGFpciA9IGtleS5zcGxpdCgnOicpO1xuICAgICAgICByZXR1cm4ga2V5UGFpclswXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVmbGVjdENhbGxiYWNrUGFyYW1UeXBlcyhpbnN0YW5jZTogQ29udHJvbGxlclR5cGUsIG1ldGhvZE5hbWU6IHN0cmluZyk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoUEFSQU1UWVBFU19NRVRBREFUQSwgaW5zdGFuY2UsIG1ldGhvZE5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWZsZWN0Q2FsbGJhY2tNZXRhZGF0YTxUID0gYW55PihcbiAgICAgICAgaW5zdGFuY2U6IENvbnRyb2xsZXJUeXBlLCBtZXRob2ROYW1lOiBzdHJpbmcsIG1ldGFkYXRhS2V5OiBzdHJpbmcpOiBUIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIGluc3RhbmNlLmNvbnN0cnVjdG9yLCBtZXRob2ROYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVmbGVjdFBhc3NUaHJvdWdoKGluc3RhbmNlOiBDb250cm9sbGVyVHlwZSwgbWV0aG9kTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgICAgICAgUkVTUE9OU0VfUEFTU1RIUk9VR0hfTUVUQURBVEEsIGluc3RhbmNlLmNvbnN0cnVjdG9yLCBtZXRob2ROYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QXJndW1lbnRzTGVuZ3RoPFQ+KGtleXM6IHN0cmluZ1tdLCBtZXRhZGF0YTogVCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCguLi5rZXlzLm1hcChrZXkgPT4gbWV0YWRhdGFba2V5XS5pbmRleCkpICsgMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlTnVsbEFycmF5KGxlbmd0aDogbnVtYmVyKTogYW55W10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuYXBwbHkobnVsbCwge2xlbmd0aH0gYXMgYW55KS5maWxsKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG1lcmdlUGFyYW1zTWV0YVR5cGVzKHBhcmFtc1Byb3BlcnRpZXM6IFBhcmFtUHJvcGVydGllc1tdLCBwYXJhbVR5cGVzOiBhbnlbXSk6IChQYXJhbVByb3BlcnRpZXMgJiB7IG1ldGFUeXBlPzogYW55IH0pW10ge1xuICAgICAgICBpZiAoIXBhcmFtVHlwZXMpIHJldHVybiBwYXJhbXNQcm9wZXJ0aWVzO1xuXG4gICAgICAgIHJldHVybiBwYXJhbXNQcm9wZXJ0aWVzLm1hcChwYXJhbSA9PiAoe1xuICAgICAgICAgICAgLi4ucGFyYW0sXG4gICAgICAgICAgICBtZXRhVHlwZTogcGFyYW1UeXBlc1twYXJhbS5pbmRleF0sXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VzdG9tRmFjdG9yeShcbiAgICAgICAgZmFjdG9yeTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdm9pZCwgZGF0YTogdW5rbm93biwgY29udGV4dEZhY3Rvcnk6IChhcmdzOiB1bmtub3duW10pID0+IEV4ZWN1dGlvbkNvbnRleHRIb3N0KTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93biB7XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKGZhY3RvcnkpXG4gICAgICAgICAgICA/ICguLi5hcmdzOiB1bmtub3duW10pID0+IGZhY3RvcnkoZGF0YSwgY29udGV4dEZhY3RvcnkoYXJncykpIDogKCkgPT4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29udGV4dEZhY3Rvcnk8VCBleHRlbmRzIHN0cmluZyA9IENvbnRleHRUeXBlPihcbiAgICAgICAgY29udGV4dFR5cGU6IFQsIGluc3RhbmNlPzogb2JqZWN0LCBjYWxsYmFjaz86IEZ1bmN0aW9uKTogKGFyZ3M6IHVua25vd25bXSkgPT4gRXhlY3V0aW9uQ29udGV4dEhvc3Qge1xuXG4gICAgICAgIHJldHVybiAoYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSBuZXcgRXhlY3V0aW9uQ29udGV4dEhvc3QoXG4gICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSAmJiAoaW5zdGFuY2UuY29uc3RydWN0b3IgYXMgVHlwZTx1bmtub3duPiksXG4gICAgICAgICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY3R4LnNldFR5cGUoY29udGV4dFR5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIGN0eDtcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=