dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
60 lines (59 loc) • 2.64 kB
JavaScript
;
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;