Archived
1
0
Fork 0

fix clientOnly code: remove CTX

This commit is contained in:
sup39 2020-05-20 05:54:19 +09:00
parent 3d2fea95cb
commit ed584b1f11
3 changed files with 34 additions and 24 deletions

11
dist/codegen.js vendored
View file

@ -6,12 +6,14 @@ var Config_1 = require("./Config");
var OpenAPI_1 = require("./OpenAPI");
var CodePrinter_1 = require("./CodePrinter");
function codegenIHandler(funcs, config, cp) {
var schemasName = config.schemasName, utilsTSPath = config.utilsTSPath;
var schemasName = config.schemasName, utilsTSPath = config.utilsTSPath, clientOnly = config.clientOnly;
// import
cp.writeln("import * as Schemas from './" + schemasName + "'");
cp.writeln('import {FullDate, StrictTypeParser as STP, APIPromise} ' +
("from '" + utilsTSPath + "'"));
if (!clientOnly) {
cp.writeln('import {RouterContext as CTX} from \'@koa/router\'');
}
cp.writeln('import {AxiosResponse} from \'axios\'');
// api req, res types
cp.writeln("export type TAPI = {", 1);
@ -58,6 +60,7 @@ function codegenIHandler(funcs, config, cp) {
// TAPI END
cp.writeln('}', -1);
// export IServerAPI
if (!clientOnly) {
cp.writeln('');
cp.writeln('type ValueOf<T> = T[keyof T];');
cp.writeln('type RServerAPI<T> = ValueOf<', 1);
@ -65,6 +68,7 @@ function codegenIHandler(funcs, config, cp) {
cp.writeln('export type IServerAPI<IState=any> = {[K in keyof TAPI]:', 1);
cp.writeln("(req: TAPI[K]['req'], state: IState, ctx: CTX) =>", 1);
cp.writeln("Promise<RServerAPI<TAPI[K]['res']>>}", -2, false);
}
// return
return cp.end();
}
@ -229,7 +233,8 @@ function codegenClientAPI(funcs, config, cp) {
var label = "ClientAPI[" + funcName + "][" + status_2 + "]";
cp.writeln(status_2 + ": x => " + schema.stp('x', label) + ",");
}
cp.writeln("} as TSTP<TAPI['" + funcName + "']['res']>,");
cp.writeln("} as TSTP<TAPI['" + funcName + "']['res']>,", -1);
cp.tab(1);
// kRsv
cp.writeln("[" + Object.keys(resTypes).filter(validateStatus).join(', ') + "]),", -1);
};
@ -238,7 +243,7 @@ function codegenClientAPI(funcs, config, cp) {
var _b = _a[_i], funcName = _b[0], func = _b[1];
_loop_1(funcName, func);
}
cp.writeln('}');
cp.writeln('}', -1);
return cp.end();
}
function codegenSchemas(schemas, config, cp) {

View file

@ -9,13 +9,15 @@ import {CodePrinter} from './CodePrinter';
function codegenIHandler(funcs: APIFuncs, config: Config, cp: CodePrinter) {
const {
schemasName, utilsTSPath,
schemasName, utilsTSPath, clientOnly,
} = config;
// import
cp.writeln(`import * as Schemas from './${schemasName}'`);
cp.writeln('import {FullDate, StrictTypeParser as STP, APIPromise} ' +
`from '${utilsTSPath}'`);
if (!clientOnly) {
cp.writeln('import {RouterContext as CTX} from \'@koa/router\'');
}
cp.writeln('import {AxiosResponse} from \'axios\'');
// api req, res types
cp.writeln(`export type TAPI = {`, 1);
@ -56,6 +58,7 @@ function codegenIHandler(funcs: APIFuncs, config: Config, cp: CodePrinter) {
// TAPI END
cp.writeln('}', -1);
// export IServerAPI
if (!clientOnly) {
cp.writeln('');
cp.writeln('type ValueOf<T> = T[keyof T];');
cp.writeln('type RServerAPI<T> = ValueOf<', 1);
@ -64,6 +67,7 @@ function codegenIHandler(funcs: APIFuncs, config: Config, cp: CodePrinter) {
cp.writeln('export type IServerAPI<IState=any> = {[K in keyof TAPI]:', 1);
cp.writeln(`(req: TAPI[K]['req'], state: IState, ctx: CTX) =>`, 1);
cp.writeln(`Promise<RServerAPI<TAPI[K]['res']>>}`, -2, false);
}
// return
return cp.end();
}
@ -223,13 +227,14 @@ function codegenClientAPI(funcs: APIFuncs, config: Config, cp: CodePrinter) {
const label = `ClientAPI[${funcName}][${status}]`;
cp.writeln(`${status}: x => ${schema.stp('x', label)},`);
}
cp.writeln(`} as TSTP<TAPI['${funcName}']['res']>,`);
cp.writeln(`} as TSTP<TAPI['${funcName}']['res']>,`, -1);
cp.tab(1);
// kRsv
cp.writeln(`[${
Object.keys(resTypes).filter(validateStatus).join(', ')
}]),`, -1);
}
cp.writeln('}');
cp.writeln('}', -1);
return cp.end();
}

View file

@ -1,6 +1,6 @@
{
"name": "@sup39/api-ts-gen",
"version": "2.0.3",
"version": "2.0.3-a",
"description": "OpenAPI code generator for TypeScript",
"main": "dist/index.js",
"types": "dist/index.d.ts",