jswagger-generator
Version:
This is jswagger's generator package.
67 lines (57 loc) • 1.51 kB
text/typescript
import * as prettier from 'prettier';
import {
IOptions
} from './types';
import {
makeDefinitions
} from './definition-interface-generator';
import {
makeApiInterfaces
} from './api-interface-generator';
import {
OpenAPI2, OpenAPI3
} from 'jswagger-common';
export const WARNING_MESSAGE = `/**
* This file was auto-generated by jswagger-swagger.
* Do not make direct changes to the file.
*/
`;
const OUTPUT_HEADER = `import {
ApiRequestOptionsRX, ApiRequestOptionsRO, ApiRequestOptionsRR,
ApiRequestOptionsOX, ApiRequestOptionsOO, ApiRequestOptionsOR,
ApiRequestOptionsXX, ApiRequestOptionsXO, ApiRequestOptionsXR,
ApiResponse,
IApiSecurityContext,
internal
} from 'jswagger-client';
const toClassValue = internal.toClassValue;
const toJsonObject = internal.toJsonObject;
`;
function index(spec: OpenAPI2 | OpenAPI3, options?: IOptions) {
const output: string[] = [
WARNING_MESSAGE,
OUTPUT_HEADER
];
output.push(
makeDefinitions(spec, options)
);
output.push(
makeApiInterfaces(spec, options)
);
// Prettify output
let prettierOptions: prettier.Options = {
parser: 'typescript',
singleQuote: true,
jsxSingleQuote: true,
semi: true,
tabWidth: 2
};
if (options && options.prettierConfig) {
prettierOptions = {
...prettierOptions,
...options.prettierConfig
};
}
return prettier.format(output.join('\n'), prettierOptions);
}
export default index;