UNPKG

@vladbasin/strong-api-mapping

Version:

Strongly typed API models. Mapping & validation

61 lines 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mapPayloadToRawApiRequest = void 0; const lodash_1 = require("lodash"); const _1 = require("."); const mapPayloadToRawApiRequest = (payload) => { const mappingsMetadata = (0, _1.getMappingMetadata)(payload); const headers = {}; const queryParams = {}; const pathParams = {}; const multiValueHeaders = {}; const multiValueQueryParams = {}; let body; const parametersMultiValueProps = { ["query"]: 'queryArray', ["header"]: 'headerArray', }; const parametersMap = { ["query"]: queryParams, ["path"]: pathParams, ["header"]: headers, [parametersMultiValueProps["query"]]: multiValueQueryParams, [parametersMultiValueProps["header"]]: multiValueHeaders, }; mappingsMetadata.forEach(metadata => { var _a; switch (metadata.source) { case "header": case "query": case "path": if ((0, lodash_1.isNil)(metadata.sourceKey)) { throw new _1.InvalidMappingError(`Key is requred for mapping this source (source: "${metadata.source}" property: "${metadata.propName}")`); } if (metadata.isArray) { if (metadata.source === "path") { throw new _1.InvalidMappingError(`Array is not supported for this source (source: "${metadata.source}" property: "${metadata.propName}")`); } (0, _1.setKeyCaseBasedValue)(parametersMap[parametersMultiValueProps[metadata.source]], metadata.sourceKey, metadata.isKeyCaseSensitive, (_a = payload[metadata.propName]) === null || _a === void 0 ? void 0 : _a.map(t => String(t))); } else if (payload[metadata.propName]) { (0, _1.setKeyCaseBasedValue)(parametersMap[metadata.source], metadata.sourceKey, metadata.isKeyCaseSensitive, String(payload[metadata.propName])); } break; case "body": body = JSON.stringify(payload[metadata.propName]); break; default: throw new _1.InvalidMappingError(`Unsupported source (source: "${metadata.source}", property = "${metadata.propName}")`); } }); return { headers, multiValueHeaders, body, queryParams, pathParams, multiValueQueryParams, }; }; exports.mapPayloadToRawApiRequest = mapPayloadToRawApiRequest; //# sourceMappingURL=mapPayloadToRawApiRequest.js.map