UNPKG

bguard

Version:

**bguard** is a powerful, flexible, and type-safe validation library for TypeScript. It allows developers to define validation schemas for their data structures and ensures that data conforms to the expected types and constraints.

52 lines (46 loc) 1.84 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _chunkAXKX5BGHjs = require('./chunk-AXKX5BGH.js'); // src/codeGen.ts function generateBaseType(schemaData) { if (schemaData.date) return "Date"; if (schemaData.strictType) { if (Array.isArray(schemaData.strictTypeValue)) return schemaData.strictTypeValue.join(" | "); return schemaData.strictTypeValue; } if (!schemaData.type.length) return ""; const joined = schemaData.type.join(" | "); return joined; } var INDENT_DEFAULT = ` `; function innerGenerator(schema, isProperty, indent = INDENT_DEFAULT) { const schemaData = schema[_chunkAXKX5BGHjs.ctxSymbol]; let code = ""; if (isProperty) { code = code + (schemaData.isOptional ? "?: " : ": "); } if (schemaData.array) { const innerArrayCode = innerGenerator(schemaData.array, false, indent + INDENT_DEFAULT); code = code + (innerArrayCode.includes("|") ? `(${innerArrayCode})[]` : `${innerArrayCode}[]`); } if (schemaData.object) { code = code + "{\n"; for (const [keyOfSchema, valueOfSchema] of Object.entries(schemaData.object)) { code = code + indent + keyOfSchema + innerGenerator(valueOfSchema, true, indent + INDENT_DEFAULT) + ";\n"; } code = code + indent.slice(0, -INDENT_DEFAULT.length) + "}"; } code = code + generateBaseType(schemaData); code = code + (schemaData.isNullable ? " | null" : ""); code = code + (schemaData.isOptional ? " | undefined" : ""); return code; } function codeGen(schema) { const result = innerGenerator(schema, false) + ";"; return result; } function codeGenWithName(typeName, schema) { const result = "type " + typeName + " = " + codeGen(schema) + "\n"; return result; } exports.codeGen = codeGen; exports.codeGenWithName = codeGenWithName; //# sourceMappingURL=chunk-WLPDAJB3.js.map