UNPKG

@infinite-debugger/swagger-to-ts

Version:

swagger-to-ts is a powerful library that allows you to generate TypeScript code from Swagger documentation or OpenAPI specifications. It simplifies the process of integrating API definitions into your TypeScript projects, saving you time and effort.

119 lines 8.2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateStringSchemaCode = void 0; const pluralize_1 = __importDefault(require("pluralize")); const models_1 = require("../../models"); const Utils_1 = require("../Utils"); /** * Generates string schema code for a given schema * * @param options The options to generate string schema code * @returns The generated string schema code */ const generateStringSchemaCode = ({ schema, propertyName, schemaName, generatedVariables, generateTsEDControllers, imports, }) => { const enumTypeName = pluralize_1.default .singular(`${schemaName} ${propertyName}`) .toPascalCase(); const enumValuesName = `${enumTypeName.toCamelCase()}Options`; let propertyType = `string`; const zodCodeString = (() => { if (schema.enum && schema.enum.length > 0) { if (schema.enum.length === 1) { propertyType = JSON.stringify(schema.enum[0]); return `z.literal(${propertyType})`; } generatedVariables[enumValuesName] = `export const ${enumValuesName} = ${JSON.stringify(schema.enum)} as const`; generatedVariables[enumTypeName] = `export type ${enumTypeName} = (typeof ${enumValuesName})[number]`; return `z.enum(${enumValuesName})`; } else { let validationCode = `z.string()`; if (schema.minLength != null) { validationCode += `.min(${schema.minLength})`; } if (schema.maxLength != null) { validationCode += `.max(${schema.maxLength})`; } return validationCode; } })(); const baseTsedPropertyDecorators = []; if (schema.enum && schema.enum.length > 0) { if (generateTsEDControllers) { (0, Utils_1.addModuleImport)({ imports, importName: 'Enum', importFilePath: models_1.TSED_SCHEMA_LIBRARY_PATH, }); } if (schema.enum.length === 1) { return { decorators: [...baseTsedPropertyDecorators, `@Enum(${propertyType})`], propertyType, zodCodeString, }; } return { decorators: [ ...baseTsedPropertyDecorators, `@Enum(...${enumValuesName})`, ], propertyType: enumTypeName, zodCodeString, }; } if (schema.format) { switch (schema.format) { case 'date-time': baseTsedPropertyDecorators.push(`@DateTime()`); if (generateTsEDControllers) { (0, Utils_1.addModuleImport)({ imports, importName: 'DateTime', importFilePath: models_1.TSED_SCHEMA_LIBRARY_PATH, }); } break; case 'date': baseTsedPropertyDecorators.push(`@DateFormat()`); if (generateTsEDControllers) { (0, Utils_1.addModuleImport)({ imports, importName: 'DateFormat', importFilePath: models_1.TSED_SCHEMA_LIBRARY_PATH, }); } break; } } if (schema.minLength != null) { baseTsedPropertyDecorators.push(`@MinLength(${schema.minLength})`); if (generateTsEDControllers) { (0, Utils_1.addModuleImport)({ imports, importName: 'MinLength', importFilePath: models_1.TSED_SCHEMA_LIBRARY_PATH, }); } } if (schema.maxLength != null) { baseTsedPropertyDecorators.push(`@MaxLength(${schema.maxLength})`); if (generateTsEDControllers) { (0, Utils_1.addModuleImport)({ imports, importName: 'MaxLength', importFilePath: models_1.TSED_SCHEMA_LIBRARY_PATH, }); } } return { decorators: baseTsedPropertyDecorators, propertyType, zodCodeString, }; }; exports.generateStringSchemaCode = generateStringSchemaCode; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RyaW5nU2NoZW1hQ29kZUdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvTW9kZWxDb2RlR2VuZXJhdG9yL1N0cmluZ1NjaGVtYUNvZGVHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMERBQWtDO0FBRWxDLHlDQUF3RDtBQUV4RCxvQ0FBMkM7QUFHM0M7Ozs7O0dBS0c7QUFDSSxNQUFNLHdCQUF3QixHQUVqQyxDQUFDLEVBQ0gsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixPQUFPLEdBQ1IsRUFBRSxFQUFFO0lBQ0gsTUFBTSxZQUFZLEdBQUcsbUJBQVM7U0FDM0IsUUFBUSxDQUFDLEdBQUcsVUFBVSxJQUFJLFlBQVksRUFBRSxDQUFDO1NBQ3pDLFlBQVksRUFBRSxDQUFDO0lBQ2xCLE1BQU0sY0FBYyxHQUFHLEdBQUcsWUFBWSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUM7SUFDOUQsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDO0lBRTVCLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQzFCLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzVCLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUMsT0FBTyxhQUFhLFlBQVksR0FBRyxDQUFDO2FBQ3JDO1lBQ0Qsa0JBQWtCLENBQ2hCLGNBQWMsQ0FDZixHQUFHLGdCQUFnQixjQUFjLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FDcEQsTUFBTSxDQUFDLElBQUksQ0FDWixXQUFXLENBQUM7WUFFYixrQkFB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