UNPKG

dynamodb-toolbox

Version:

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

60 lines (59 loc) 2.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkSchemaProps = exports.schemaRequiredPropSet = void 0; const index_js_1 = require("../../errors/index.js"); const isBoolean_js_1 = require("../../utils/validation/isBoolean.js"); const isString_js_1 = require("../../utils/validation/isString.js"); exports.schemaRequiredPropSet = new Set(['never', 'atLeastOnce', 'always']); /** * Validates an attribute shared properties * * @param props Schema Props * @param path Path of the instance in the related schema (string) * @return void */ const checkSchemaProps = (props, path) => { const { required, hidden, key, savedAs } = props; if (required !== undefined && !exports.schemaRequiredPropSet.has(required)) { throw new index_js_1.DynamoDBToolboxError('schema.invalidProp', { message: `Invalid prop type${path !== undefined ? ` at path '${path}'` : ''}. Property: 'required'. Expected: ${[...exports.schemaRequiredPropSet].join(', ')}. Received: ${String(required)}.`, path, payload: { propName: 'required', expected: [...exports.schemaRequiredPropSet].join(', '), received: required } }); } if (hidden !== undefined && !(0, isBoolean_js_1.isBoolean)(hidden)) { throw new index_js_1.DynamoDBToolboxError('schema.invalidProp', { message: `Invalid prop type${path !== undefined ? ` at path '${path}'` : ''}. Property: 'hidden'. Expected: boolean. Received: ${String(hidden)}.`, path, payload: { propName: 'hidden', received: hidden } }); } if (key !== undefined && !(0, isBoolean_js_1.isBoolean)(key)) { throw new index_js_1.DynamoDBToolboxError('schema.invalidProp', { message: `Invalid prop type${path !== undefined ? ` at path '${path}'` : ''}. Property: 'key'. Expected: boolean. Received: ${String(key)}.`, path, payload: { propName: 'key', received: key } }); } if (savedAs !== undefined && !(0, isString_js_1.isString)(savedAs)) { throw new index_js_1.DynamoDBToolboxError('schema.invalidProp', { message: `Invalid prop type${path !== undefined ? ` at path '${path}'` : ''}. Property: 'savedAs'. Expected: string. Received: ${String(savedAs)}.`, path, payload: { propName: 'savedAs', received: savedAs } }); } }; exports.checkSchemaProps = checkSchemaProps;