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