UNPKG

dynamodb-toolbox

Version:

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

56 lines (55 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fromAnySchemaDTO = void 0; const index_js_1 = require("../../../../schema/any/index.js"); const jsonStringify_js_1 = require("../../../../transformers/jsonStringify.js"); const pipe_js_1 = require("../../../../transformers/pipe.js"); const transformer_js_1 = require("./transformer.js"); /** * @debt feature "handle transforms, defaults, links & validators" */ const fromAnySchemaDTO = ({ keyDefault, putDefault, updateDefault, keyLink, putLink, updateLink, transform, ...dto }) => { keyDefault; putDefault; updateDefault; keyLink; putLink; updateLink; transform; let schema = (0, index_js_1.any)(dto); if (transform !== undefined) { const transformer = fromAnySchemaTransformerDTO(transform); if (transformer !== null) { schema = schema.transform(transformer); } } return schema; }; exports.fromAnySchemaDTO = fromAnySchemaDTO; const fromAnySchemaTransformerDTO = (transformerDTO) => { try { switch (transformerDTO.transformerId) { case 'custom': return null; case 'jsonStringify': { const { space } = transformerDTO; return (0, jsonStringify_js_1.jsonStringify)({ space }); } case 'pipe': { const { transformers: transformerDTOs } = transformerDTO; const transformers = []; for (const transformerDTO of transformerDTOs) { const transformer = (0, transformer_js_1.fromTransformerDTO)(transformerDTO); if (transformer === null) { return null; } transformers.push(transformer); } return (0, pipe_js_1.pipe)(...transformers); } } } catch { return null; } };