@vladbasin/strong-api-mapping
Version:
Strongly typed API models. Mapping & validation
21 lines • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPayloadPropValue = void 0;
const lodash_1 = require("lodash");
const _1 = require(".");
const getPayloadPropValue = (parser, map, sourceKey, isKeyCaseSensitive, isArrayValueExpected) => {
const value = !(0, lodash_1.isNil)(sourceKey) ? (0, _1.getKeyCaseBasedValue)(map || {}, sourceKey, isKeyCaseSensitive) : map;
const parsedValue = parser(value);
if (!(0, lodash_1.isNil)(parsedValue)) {
const parsedValueIsArray = parsedValue.constructor.name === 'Array';
if (parsedValueIsArray && !isArrayValueExpected) {
throw new _1.InvalidMappingError(`Source key ${sourceKey} cannot be mapped: parsed value is array which is not expected`);
}
if (!parsedValueIsArray && isArrayValueExpected) {
throw new _1.InvalidMappingError(`Source key ${sourceKey} cannot be mapped: parsed value is expected to be array`);
}
}
return parsedValue;
};
exports.getPayloadPropValue = getPayloadPropValue;
//# sourceMappingURL=getPayloadPropValue.js.map