@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
JavaScript
;
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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