@vladbasin/strong-api-mapping
Version:
Strongly typed API models. Mapping & validation
33 lines • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mapPayloadToRawApiResponse = void 0;
const lodash_1 = require("lodash");
const _1 = require(".");
const mapPayloadToRawApiResponse = (payload) => {
const mappingsMetadata = (0, _1.getMappingMetadata)(payload);
const headers = {};
const multiValueHeaders = {};
let body;
mappingsMetadata.forEach(metadata => {
switch (metadata.source) {
case "header":
if ((0, lodash_1.isNil)(metadata.sourceKey)) {
throw new _1.InvalidMappingError(`Key is requred for mapping headers (property: "${metadata.propName}")`);
}
(0, _1.setKeyCaseBasedValue)(metadata.isArray ? multiValueHeaders : headers, metadata.sourceKey, metadata.isKeyCaseSensitive, payload[metadata.propName]);
break;
case "body":
body = JSON.stringify(payload[metadata.propName]);
break;
default:
throw new _1.InvalidMappingError(`Found "${metadata.source}" for property "${metadata.propName}". Response mapping may contain only headers or body`);
}
});
return {
headers,
multiValueHeaders,
body,
};
};
exports.mapPayloadToRawApiResponse = mapPayloadToRawApiResponse;
//# sourceMappingURL=mapPayloadToRawApiResponse.js.map