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.

228 lines 18.7 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = require("path"); const fs_extra_1 = require("fs-extra"); const api_1 = require("./api"); const Utils_1 = require("./api/Utils"); const currentWorkingDirectory = process.cwd(); const pkg = (() => { if ((0, fs_extra_1.existsSync)(`${__dirname}/package.json`)) { return require(`${__dirname}/package.json`); } const pkgPath = (0, path_1.join)(__dirname, '..', 'package.json'); if ((0, fs_extra_1.existsSync)(pkgPath)) { return require(pkgPath); } })(); const args = process.argv; if (args.includes('-v') || args.includes('--version')) { console.log(pkg.version); } else if (args.includes('-h') || args.includes('--help')) { console.log((0, Utils_1.getHelpText)()); } else { const openAPISpecificationFilePath = (() => { if (args.includes('-f') || args.includes('--file')) { const inputFilePath = (() => { if (args.includes('-f')) { return args[args.indexOf('-f') + 1]; } if (args.includes('--file')) { return args[args.indexOf('--file') + 1]; } })(); if (inputFilePath) { return (0, path_1.normalize)((0, path_1.join)(currentWorkingDirectory, inputFilePath)); } } return `${currentWorkingDirectory}/swagger`; })(); if (['.json', '.js', '.ts'].some((fileExtension) => (0, fs_extra_1.existsSync)(openAPISpecificationFilePath + fileExtension) || (0, fs_extra_1.existsSync)(openAPISpecificationFilePath + '/index' + fileExtension))) { const openAPISpecification = (() => { const obj = require(openAPISpecificationFilePath); if (obj.default) { return obj.default; } return obj; })(); const outputRootPath = (() => { if (args.includes('-o') || args.includes('--output')) { const outputDirectoryPath = (() => { if (args.includes('-o')) { return args[args.indexOf('-o') + 1]; } if (args.includes('--output')) { return args[args.indexOf('--output') + 1]; } })(); if (outputDirectoryPath) { return (0, path_1.normalize)((0, path_1.join)(currentWorkingDirectory, outputDirectoryPath)); } } return currentWorkingDirectory; })(); const options = { ...(() => { if (args.includes('-wIS') || args.includes('--write-internal-state')) { return { writeInternalState: true, }; } })(), ...(() => { if (args.includes('-rONS') || args.includes('--request-operation-name-source')) { try { const inputRequestOperationNameSource = (() => { if (args.includes('-rONS')) { return args[args.indexOf('-rONS') + 1]; } if (args.includes('--request-operation-name-source')) { return args[args.indexOf('--request-operation-name-source') + 1]; } })(); if (inputRequestOperationNameSource && !inputRequestOperationNameSource.match(/^-/g)) { const requestOperationNameSource = api_1.RequestOperationNameSourceValidationSchema.parse(inputRequestOperationNameSource); return { requestOperationNameSource, }; } } catch (err) { err; } } })(), ...(() => { if (args.includes('-gTC') || args.includes('--generate-tsed-controllers')) { return { generateTsEDControllers: true, }; } })(), ...(() => { if (args.includes('-tADIP') || args.includes('--tsed-authenticate-decorator-import-path')) { const tsEDAuthenticateDecoratorImportPath = (() => { if (args.includes('-tADIP')) { return args[args.indexOf('-tADIP') + 1]; } if (args.includes('--tsed-authenticate-decorator-import-path')) { return args[args.indexOf('--tsed-authenticate-decorator-import-path') + 1]; } })(); if (tsEDAuthenticateDecoratorImportPath && !tsEDAuthenticateDecoratorImportPath.match(/^-/g)) { return { tsEDAuthenticateDecoratorImportPath, }; } } })(), ...(() => { if (args.includes('-tAADIP') || args.includes('--tsed-authorize-decorator-import-path')) { const tsEDAuthorizeDecoratorImportPath = (() => { if (args.includes('-tAADIP')) { return args[args.indexOf('-tAADIP') + 1]; } if (args.includes('--tsed-authorize-decorator-import-path')) { return args[args.indexOf('--tsed-authorize-decorator-import-path') + 1]; } })(); if (tsEDAuthorizeDecoratorImportPath && !tsEDAuthorizeDecoratorImportPath.match(/^-/g)) { return { tsEDAuthorizeDecoratorImportPath, }; } } })(), ...(() => { if (args.includes('-tCNP') || args.includes('--tsed-controller-name-prefix')) { const tsedControllerNamePrefix = (() => { if (args.includes('-tCNP')) { return args[args.indexOf('-tCNP') + 1]; } if (args.includes('--tsed-controller-name-prefix')) { return args[args.indexOf('--tsed-controller-name-prefix') + 1]; } })(); if (tsedControllerNamePrefix && !tsedControllerNamePrefix.match(/^-/g)) { return { tsedControllerNamePrefix, }; } } })(), ...(() => { if (args.includes('-tCNS') || args.includes('--tsed-controller-name-suffix')) { const tsedControllerNameSuffix = (() => { if (args.includes('-tCNS')) { return args[args.indexOf('-tCNS') + 1]; } if (args.includes('--tsed-controller-name-suffix')) { return args[args.indexOf('--tsed-controller-name-suffix') + 1]; } })(); if (tsedControllerNameSuffix && !tsedControllerNameSuffix.match(/^-/g)) { return { tsedControllerNameSuffix, }; } } })(), ...(() => { if (args.includes('-niTFVS') || args.includes('--no-infer-type-from-validation-schema')) { return { inferTypeFromValidationSchema: false, }; } })(), ...(() => { if (args.includes('-pRH') || args.includes('--propagate-request-headers')) { return { propagateRequestHeaders: true, }; } })(), ...(() => { if (args.includes('-sN') || args.includes('--scope-name')) { const scopeName = (() => { if (args.includes('-sN')) { return args[args.indexOf('-sN') + 1]; } if (args.includes('--scope-name')) { return args[args.indexOf('--scope-name') + 1]; } })(); if (scopeName && !scopeName.match(/^-/g)) { return { scopeName, }; } } })(), }; (0, api_1.generateTypescriptAPI)({ openAPISpecification, outputRootPath, ...options, }); } else { console.log(`The file ${openAPISpecificationFilePath} does not exist.`); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXdpdGgtdHMtc3VwcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW4td2l0aC10cy1zdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLCtCQUF1QztBQUV2Qyx1Q0FBc0M7QUFFdEMsK0JBSWU7QUFDZix1Q0FBMEM7QUFFMUMsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7QUFFOUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUU7SUFDaEIsSUFBSSxJQUFBLHFCQUFVLEVBQUMsR0FBRyxTQUFTLGVBQWUsQ0FBQyxFQUFFO1FBQzNDLE9BQU8sT0FBTyxDQUFDLEdBQUcsU0FBUyxlQUFlLENBQUMsQ0FBQztLQUM3QztJQUNELE1BQU0sT0FBTyxHQUFHLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEQsSUFBSSxJQUFBLHFCQUFVLEVBQUMsT0FBTyxDQUFDLEVBQUU7UUFDdkIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDekI7QUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO0FBRUwsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUUxQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtJQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztDQUMxQjtLQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQ3pELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBQSxtQkFBVyxHQUFFLENBQUMsQ0FBQztDQUM1QjtLQUFNO0lBQ0wsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLEdBQUcs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