UNPKG

@vladbasin/strong-api-mapping

Version:

Strongly typed API models. Mapping & validation

33 lines 1.4 kB
"use strict"; 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