UNPKG

dynamodb-toolbox

Version:

Lightweight and type-safe query builder for DynamoDB and TypeScript.

52 lines (51 loc) 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.applyCustomValidation = exports.isRequired = exports.defaultParseExtension = void 0; const index_js_1 = require("../../../errors/index.js"); const formatArrayPath_js_1 = require("../../../schema/actions/utils/formatArrayPath.js"); const isString_js_1 = require("../../../utils/validation/isString.js"); const defaultParseExtension = (_, input) => ({ isExtension: false, unextendedInput: input }); exports.defaultParseExtension = defaultParseExtension; const isRequired = (schema, mode) => { var _a, _b; switch (mode) { case 'put': return ((_a = schema.props) === null || _a === void 0 ? void 0 : _a.required) !== 'never'; case 'key': case 'update': return ((_b = schema.props) === null || _b === void 0 ? void 0 : _b.required) === 'always'; } }; exports.isRequired = isRequired; const getValidator = (schema, mode) => { if (schema.props.key) { return schema.props.keyValidator; } switch (mode) { case 'key': return schema.props.keyValidator; case 'put': return schema.props.putValidator; case 'update': return schema.props.updateValidator; } }; const applyCustomValidation = (schema, inputValue, options = {}) => { const { mode = 'put', valuePath } = options; const customValidator = getValidator(schema, mode); if (customValidator !== undefined) { const validationResult = customValidator(inputValue, schema); if (validationResult !== true) { const path = valuePath !== undefined ? (0, formatArrayPath_js_1.formatArrayPath)(valuePath) : undefined; throw new index_js_1.DynamoDBToolboxError('parsing.customValidationFailed', { message: `Custom validation${path !== undefined ? ` for attribute '${path}'` : ''} failed${(0, isString_js_1.isString)(validationResult) ? ` with message: ${validationResult}` : ''}.`, path, payload: { received: inputValue, validationResult } }); } } }; exports.applyCustomValidation = applyCustomValidation;