@yaagoub/decorators
Version:
Angular decorators
34 lines • 5.97 kB
JavaScript
import { environment } from '../environments/environment';
import { getMetadata } from './metadata';
function getFromInstanceByArgsHeaderMetadata(instance, methodName, args) {
const headerMetadata = getMetadata(environment.METADATA_KEYS.METHOD.PARAMS.HEADER.PARAM, instance, methodName) || [];
if (!headerMetadata || headerMetadata.length === 0) {
return undefined;
}
const headers = {};
headerMetadata.forEach(header => {
if (header.key && header.index !== undefined) {
headers[header.key] = args[header.index];
}
});
return headers;
}
function getFromTargetDefaultHeadersMetadata(target) {
return getMetadata(environment.METADATA_KEYS.CLASS.DEFAULT.HEADERS, target);
}
function getFromInstanceHeaderMetadata(instance, methodName) {
return getMetadata(environment.METADATA_KEYS.METHOD.PARAMS.HEADER.METHOD, instance, methodName);
}
export function getHeadersMetadata(instance, target, methodName, args, headers) {
const instanceHeaders = getFromInstanceByArgsHeaderMetadata(instance, methodName, args) || {};
const targetHeaders = getFromTargetDefaultHeadersMetadata(target) || {};
const methodHeaders = getFromInstanceHeaderMetadata(instance, methodName) || {};
const methodArgsHeaders = headers || {};
return {
...targetHeaders,
...methodHeaders,
...methodArgsHeaders,
...instanceHeaders
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWZyb20tbWV0YWRhdGEtaGVhZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVjb3JhdG9ycy9zcmMvaHR0cC9tZXRhZGF0YS9nZXQtZnJvbS1tZXRhZGF0YS1oZWFkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBUXpDLFNBQVMsbUNBQW1DLENBQUMsUUFBYSxFQUFFLFVBQWtCLEVBQUUsSUFBVztJQUN6RixNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBcUIsSUFBSSxFQUFFLENBQUM7SUFDekksSUFBSSxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25ELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO0lBQzNDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDOUIsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFTLG1DQUFtQyxDQUFDLE1BQVc7SUFDdEQsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQXVDLENBQUM7QUFDcEgsQ0FBQztBQUVELFNBQVMsNkJBQTZCLENBQUMsUUFBYSxFQUFFLFVBQWtCO0lBQ3RFLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQXVDLENBQUM7QUFDeEksQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxRQUFhLEVBQUUsTUFBVyxFQUFFLFVBQWtCLEVBQUUsSUFBVyxFQUFFLE9BQWdDO0lBQzlILE1BQU0sZUFBZSxHQUFHLG1DQUFtQyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlGLE1BQU0sYUFBYSxHQUFHLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RSxNQUFNLGFBQWEsR0FBRyw2QkFBNkIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hGLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUV4QyxPQUFPO1FBQ0wsR0FBRyxhQUFhO1FBQ2hCLEdBQUcsYUFBYTtRQUNoQixHQUFHLGlCQUFpQjtRQUNwQixHQUFHLGVBQWU7S0FDbkIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBnZXRNZXRhZGF0YSB9IGZyb20gJy4vbWV0YWRhdGEnO1xuXG5leHBvcnQgdHlwZSBIZWFkZXJNZXRhZGF0YSA9IHtcbiAgdHlwZTogJ2hlYWRlcic7XG4gIGtleTogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBnZXRGcm9tSW5zdGFuY2VCeUFyZ3NIZWFkZXJNZXRhZGF0YShpbnN0YW5jZTogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGhlYWRlck1ldGFkYXRhID0gZ2V0TWV0YWRhdGEoZW52aXJvbm1lbnQuTUVUQURBVEFfS0VZUy5NRVRIT0QuUEFSQU1TLkhFQURFUi5QQVJBTSwgaW5zdGFuY2UsIG1ldGhvZE5hbWUpIGFzIEhlYWRlck1ldGFkYXRhW10gfHwgW107XG4gIGlmICghaGVhZGVyTWV0YWRhdGEgfHwgaGVhZGVyTWV0YWRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGhlYWRlck1ldGFkYXRhLmZvckVhY2goaGVhZGVyID0+IHtcbiAgICBpZiAoaGVhZGVyLmtleSAmJiBoZWFkZXIuaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGVhZGVyc1toZWFkZXIua2V5XSA9IGFyZ3NbaGVhZGVyLmluZGV4XTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBoZWFkZXJzO1xufVxuXG5mdW5jdGlvbiBnZXRGcm9tVGFyZ2V0RGVmYXVsdEhlYWRlcnNNZXRhZGF0YSh0YXJnZXQ6IGFueSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2V0TWV0YWRhdGEoZW52aXJvbm1lbnQuTUVUQURBVEFfS0VZUy5DTEFTUy5ERUZBVUxULkhFQURFUlMsIHRhcmdldCkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0RnJvbUluc3RhbmNlSGVhZGVyTWV0YWRhdGEoaW5zdGFuY2U6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRNZXRhZGF0YShlbnZpcm9ubWVudC5NRVRBREFUQV9LRVlTLk1FVEhPRC5QQVJBTVMuSEVBREVSLk1FVEhPRCwgaW5zdGFuY2UsIG1ldGhvZE5hbWUpIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJzTWV0YWRhdGEoaW5zdGFuY2U6IGFueSwgdGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10sIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IGluc3RhbmNlSGVhZGVycyA9IGdldEZyb21JbnN0YW5jZUJ5QXJnc0hlYWRlck1ldGFkYXRhKGluc3RhbmNlLCBtZXRob2ROYW1lLCBhcmdzKSB8fCB7fTtcbiAgY29uc3QgdGFyZ2V0SGVhZGVycyA9IGdldEZyb21UYXJnZXREZWZhdWx0SGVhZGVyc01ldGFkYXRhKHRhcmdldCkgfHwge307XG4gIGNvbnN0IG1ldGhvZEhlYWRlcnMgPSBnZXRGcm9tSW5zdGFuY2VIZWFkZXJNZXRhZGF0YShpbnN0YW5jZSwgbWV0aG9kTmFtZSkgfHwge307XG4gIGNvbnN0IG1ldGhvZEFyZ3NIZWFkZXJzID0gaGVhZGVycyB8fCB7fTtcblxuICByZXR1cm4ge1xuICAgIC4uLnRhcmdldEhlYWRlcnMsXG4gICAgLi4ubWV0aG9kSGVhZGVycyxcbiAgICAuLi5tZXRob2RBcmdzSGVhZGVycyxcbiAgICAuLi5pbnN0YW5jZUhlYWRlcnNcbiAgfTtcbn1cblxuXG4iXX0=