Skip to content

Commit

Permalink
chore: lint
Browse files Browse the repository at this point in the history
  • Loading branch information
jackey8616 committed Jan 24, 2024
1 parent cb9e7f0 commit b690434
Show file tree
Hide file tree
Showing 3 changed files with 112 additions and 113 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Request as ExRequest, Response as ExResponse } from 'express';
import { FieldErrors, HttpStatusCodeLiteral, TsoaResponse, ValidateError, ValidationService } from "@tsoa/runtime";
import { FieldErrors, HttpStatusCodeLiteral, TsoaResponse, ValidateError, ValidationService } from '@tsoa/runtime';

import { TemplateService, isController } from '../templateService';

Expand All @@ -25,71 +25,72 @@ export class ExpressTemplateService implements TemplateService<ExRequest, ExResp

// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa

this.returnHandler(response, headers, statusCode, data)
this.returnHandler(response, headers, statusCode, data);
})
.catch((error: any) => next(error));
}

returnHandler(response: any, headers: any = {}, statusCode?: number, data?: any) {
if (response.headersSent) {
return;
return;
}
Object.keys(headers).forEach((name: string) => {
response.set(name, headers[name]);
response.set(name, headers[name]);
});
if (data && typeof data.pipe === 'function' && data.readable && typeof data._read === 'function') {
response.status(statusCode || 200)
data.pipe(response);
response.status(statusCode || 200);
data.pipe(response);
} else if (data !== null && data !== undefined) {
response.status(statusCode || 200).json(data);
response.status(statusCode || 200).json(data);
} else {
response.status(statusCode || 204).end();
response.status(statusCode || 204).end();
}
}

responder(response: any): TsoaResponse<HttpStatusCodeLiteral, unknown> {
responder(response: any): TsoaResponse<HttpStatusCodeLiteral, unknown> {
return (status, data, headers) => {
this.returnHandler(response, headers, status, data);
this.returnHandler(response, headers, status, data);
};
}

getValidatedArgs(args: any, request: ExRequest, response: ExResponse): any[] {
const fieldErrors: FieldErrors = {};
const values = Object.keys(args).map((key) => {
const name = args[key].name;
switch (args[key].in) {
case 'request':
return request;
case 'query':
return this.validationService.ValidateParam(args[key], request.query[name], name, fieldErrors, undefined, this.minimalSwaggerConfig);
case 'queries':
return this.validationService.ValidateParam(args[key], request.query, name, fieldErrors, undefined, this.minimalSwaggerConfig);
case 'path':
return this.validationService.ValidateParam(args[key], request.params[name], name, fieldErrors, undefined, this.minimalSwaggerConfig);
case 'header':
return this.validationService.ValidateParam(args[key], request.header(name), name, fieldErrors, undefined, this.minimalSwaggerConfig);
case 'body':
return this.validationService.ValidateParam(args[key], request.body, name, fieldErrors, undefined, this.minimalSwaggerConfig);
case 'body-prop':
return this.validationService.ValidateParam(args[key], request.body[name], name, fieldErrors, 'body.', this.minimalSwaggerConfig);
case 'formData':
const files = Object.keys(args).filter((argKey) => args[argKey].dataType === 'file');
if (files.length > 0) {
const requestFiles = request.files as {[fileName: string]: Express.Multer.File[]};
const fileArgs = this.validationService.ValidateParam(args[key], requestFiles[name], name, fieldErrors, undefined, this.minimalSwaggerConfig);
return fileArgs.length === 1 ? fileArgs[0] : fileArgs;
} else if (args[key].dataType === 'array' && args[key].array.dataType === 'file') {
return this.validationService.ValidateParam(args[key], request.files, name, fieldErrors, undefined, this.minimalSwaggerConfig);
} else {
return this.validationService.ValidateParam(args[key], request.body[name], name, fieldErrors, undefined, this.minimalSwaggerConfig);
}
case 'res':
return this.responder(response);
const fieldErrors: FieldErrors = {};
const values = Object.keys(args).map(key => {
const name = args[key].name;
switch (args[key].in) {
case 'request':
return request;
case 'query':
return this.validationService.ValidateParam(args[key], request.query[name], name, fieldErrors, undefined, this.minimalSwaggerConfig);
case 'queries':
return this.validationService.ValidateParam(args[key], request.query, name, fieldErrors, undefined, this.minimalSwaggerConfig);
case 'path':
return this.validationService.ValidateParam(args[key], request.params[name], name, fieldErrors, undefined, this.minimalSwaggerConfig);
case 'header':
return this.validationService.ValidateParam(args[key], request.header(name), name, fieldErrors, undefined, this.minimalSwaggerConfig);
case 'body':
return this.validationService.ValidateParam(args[key], request.body, name, fieldErrors, undefined, this.minimalSwaggerConfig);
case 'body-prop':
return this.validationService.ValidateParam(args[key], request.body[name], name, fieldErrors, 'body.', this.minimalSwaggerConfig);
case 'formData': {
const formFiles = Object.keys(args).filter(argKey => args[argKey].dataType === 'file');
if (formFiles.length > 0) {
const requestFiles = request.files as { [fileName: string]: Express.Multer.File[] };
const fileArgs = this.validationService.ValidateParam(args[key], requestFiles[name], name, fieldErrors, undefined, this.minimalSwaggerConfig);
return fileArgs.length === 1 ? fileArgs[0] : fileArgs;
} else if (args[key].dataType === 'array' && args[key].array.dataType === 'file') {
return this.validationService.ValidateParam(args[key], request.files, name, fieldErrors, undefined, this.minimalSwaggerConfig);
} else {
return this.validationService.ValidateParam(args[key], request.body[name], name, fieldErrors, undefined, this.minimalSwaggerConfig);
}
}
case 'res':
return this.responder(response);
}
});

if (Object.keys(fieldErrors).length > 0) {
throw new ValidateError(fieldErrors, '');
throw new ValidateError(fieldErrors, '');
}
return values;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { ResponseToolkit as HReponse } from '@hapi/hapi';
import { boomify, isBoom, type Payload } from '@hapi/boom';
import { TsoaResponse, HttpStatusCodeLiteral, FieldErrors, ValidationService, ValidateError } from "@tsoa/runtime";
import { TsoaResponse, HttpStatusCodeLiteral, FieldErrors, ValidationService, ValidateError } from '@tsoa/runtime';

import { isController, TemplateService } from "../templateService";
import { isController, TemplateService } from '../templateService';

export class HapiTemplateService implements TemplateService<any, HReponse> {
private readonly validationService: ValidationService;
Expand All @@ -17,27 +17,27 @@ export class HapiTemplateService implements TemplateService<any, HReponse> {
promiseHandler(controllerObj: any, promise: any, request: any, successStatus: any, h: any) {
return Promise.resolve(promise)
.then((data: any) => {
let statusCode = successStatus;
let header;
let statusCode = successStatus;
let header;

if (isController(controllerObj)) {
header = controllerObj.getHeaders();
statusCode = controllerObj.getStatus() || statusCode;
}
return this.returnHandler(h, header, statusCode, data);
if (isController(controllerObj)) {
header = controllerObj.getHeaders();
statusCode = controllerObj.getStatus() || statusCode;
}
return this.returnHandler(h, header, statusCode, data);
})
.catch((error: any) => {
if (isBoom(error)) {
throw error;
}
if (isBoom(error)) {
throw error;
}

const boomErr = boomify(error instanceof Error ? error : new Error(error.message));
boomErr.output.statusCode = error.status || 500;
boomErr.output.payload = {
name: error.name,
message: error.message,
} as unknown as Payload;
throw boomErr;
const boomErr = boomify(error instanceof Error ? error : new Error(error.message));
boomErr.output.statusCode = error.status || 500;
boomErr.output.payload = {
name: error.name,
message: error.message,
} as unknown as Payload;
throw boomErr;
});
}

Expand All @@ -46,9 +46,7 @@ export class HapiTemplateService implements TemplateService<any, HReponse> {
return (h as any).__isTsoaResponded;
}

const response = data !== null && data !== undefined
? h.response(data).code(200)
: h.response("").code(204);
const response = data !== null && data !== undefined ? h.response(data).code(200) : h.response('').code(204);

Object.keys(headers).forEach((name: string) => {
response.header(name, headers[name]);
Expand All @@ -66,38 +64,37 @@ export class HapiTemplateService implements TemplateService<any, HReponse> {
responder(h: HReponse): TsoaResponse<HttpStatusCodeLiteral, unknown> {
return (status, data, headers) => {
this.returnHandler(h, headers, status, data);
};
};
}

getValidatedArgs(args: any, request: any, h: HReponse): any[] {
const errorFields: FieldErrors = {};
const values = Object.keys(args).map(key => {
const name = args[key].name;
switch (args[key].in) {
const name = args[key].name;
switch (args[key].in) {
case 'request':
return request;
return request;
case 'query':
return this.validationService.ValidateParam(args[key], request.query[name], name, errorFields, undefined, this.minimalSwaggerConfig)
return this.validationService.ValidateParam(args[key], request.query[name], name, errorFields, undefined, this.minimalSwaggerConfig);
case 'queries':
return this.validationService.ValidateParam(args[key], request.query, name, errorFields, undefined, this.minimalSwaggerConfig)
return this.validationService.ValidateParam(args[key], request.query, name, errorFields, undefined, this.minimalSwaggerConfig);
case 'path':
return this.validationService.ValidateParam(args[key], request.params[name], name, errorFields, undefined, this.minimalSwaggerConfig)
return this.validationService.ValidateParam(args[key], request.params[name], name, errorFields, undefined, this.minimalSwaggerConfig);
case 'header':
return this.validationService.ValidateParam(args[key], request.headers[name], name, errorFields, undefined, this.minimalSwaggerConfig);
return this.validationService.ValidateParam(args[key], request.headers[name], name, errorFields, undefined, this.minimalSwaggerConfig);
case 'body':
return this.validationService.ValidateParam(args[key], request.payload, name, errorFields, undefined, this.minimalSwaggerConfig);
return this.validationService.ValidateParam(args[key], request.payload, name, errorFields, undefined, this.minimalSwaggerConfig);
case 'body-prop':
return this.validationService.ValidateParam(args[key], request.payload[name], name, errorFields, 'body.', this.minimalSwaggerConfig);
return this.validationService.ValidateParam(args[key], request.payload[name], name, errorFields, 'body.', this.minimalSwaggerConfig);
case 'formData':
return this.validationService.ValidateParam(args[key], request.payload[name], name, errorFields, undefined, this.minimalSwaggerConfig);
return this.validationService.ValidateParam(args[key], request.payload[name], name, errorFields, undefined, this.minimalSwaggerConfig);
case 'res':
return this.responder(h);
}
return this.responder(h);
}
});
if (Object.keys(errorFields).length > 0) {
throw new ValidateError(errorFields, '');
throw new ValidateError(errorFields, '');
}
return values;
}

}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Context } from 'koa';
import { TsoaResponse, HttpStatusCodeLiteral, FieldErrors, ValidationService, ValidateError } from "@tsoa/runtime";
import { TemplateService, isController } from "../templateService";
import { TsoaResponse, HttpStatusCodeLiteral, FieldErrors, ValidationService, ValidateError } from '@tsoa/runtime';
import { TemplateService, isController } from '../templateService';

export class KoaTemplateService implements TemplateService<any, Context> {
private readonly validationService: ValidationService;
Expand All @@ -19,8 +19,8 @@ export class KoaTemplateService implements TemplateService<any, Context> {
let headers;

if (isController(controllerObj)) {
headers = controllerObj.getHeaders();
statusCode = controllerObj.getStatus() || statusCode;
headers = controllerObj.getHeaders();
statusCode = controllerObj.getStatus() || statusCode;
}
return this.returnHandler(context, headers, statusCode, data, next);
})
Expand All @@ -33,14 +33,14 @@ export class KoaTemplateService implements TemplateService<any, Context> {
returnHandler(context: Context, headers: any, statusCode?: number | undefined, data?: any, next?: any) {
if (!context.headerSent && !(context.response as any).__tsoaResponded) {
if (data !== null && data !== undefined) {
context.body = data;
context.status = 200;
context.body = data;
context.status = 200;
} else {
context.status = 204;
context.status = 204;
}

if (statusCode) {
context.status = statusCode;
context.status = statusCode;
}

context.set(headers);
Expand All @@ -49,49 +49,50 @@ export class KoaTemplateService implements TemplateService<any, Context> {
}
}

responder(context: any, next?: any): TsoaResponse<HttpStatusCodeLiteral, unknown> {
responder(context: any, next?: any): TsoaResponse<HttpStatusCodeLiteral, unknown> {
return (status, data, headers) => {
this.returnHandler(context, headers, status, data, next);
this.returnHandler(context, headers, status, data, next);
};
}

getValidatedArgs(args: any, request: any, context: Context, next: () => any): any[] {
const errorFields: FieldErrors = {};
const values = Object.keys(args).map(key => {
const name = args[key].name;
switch (args[key].in) {
const name = args[key].name;
switch (args[key].in) {
case 'request':
return context.request;
return context.request;
case 'query':
return this.validationService.ValidateParam(args[key], context.request.query[name], name, errorFields, undefined, this.minimalSwaggerConfig);
return this.validationService.ValidateParam(args[key], context.request.query[name], name, errorFields, undefined, this.minimalSwaggerConfig);
case 'queries':
return this.validationService.ValidateParam(args[key], context.request.query, name, errorFields, undefined, this.minimalSwaggerConfig);
return this.validationService.ValidateParam(args[key], context.request.query, name, errorFields, undefined, this.minimalSwaggerConfig);
case 'path':
return this.validationService.ValidateParam(args[key], context.params[name], name, errorFields, undefined, this.minimalSwaggerConfig);
return this.validationService.ValidateParam(args[key], context.params[name], name, errorFields, undefined, this.minimalSwaggerConfig);
case 'header':
return this.validationService.ValidateParam(args[key], context.request.headers[name], name, errorFields, undefined, this.minimalSwaggerConfig);
return this.validationService.ValidateParam(args[key], context.request.headers[name], name, errorFields, undefined, this.minimalSwaggerConfig);
case 'body':
return this.validationService.ValidateParam(args[key], (context.request as any).body, name, errorFields, undefined, this.minimalSwaggerConfig);
return this.validationService.ValidateParam(args[key], (context.request as any).body, name, errorFields, undefined, this.minimalSwaggerConfig);
case 'body-prop':
return this.validationService.ValidateParam(args[key], (context.request as any).body[name], name, errorFields, 'body.', this.minimalSwaggerConfig);
case 'formData':
const files = Object.keys(args).filter((argKey) => args[argKey].dataType === 'file');
return this.validationService.ValidateParam(args[key], (context.request as any).body[name], name, errorFields, 'body.', this.minimalSwaggerConfig);
case 'formData': {
const files = Object.keys(args).filter(argKey => args[argKey].dataType === 'file');
const contextRequest = context.request as any;
if (files.length > 0) {
const fileArgs = this.validationService.ValidateParam(args[key], contextRequest.files[name], name, errorFields, undefined, this.minimalSwaggerConfig);
return fileArgs.length === 1 ? fileArgs[0] : fileArgs;
} else if (args[key].dataType === 'array' && args[key].array.dataType === 'file') {
return this.validationService.ValidateParam(args[key], contextRequest.files, name, errorFields, undefined, this.minimalSwaggerConfig);
} else {
return this.validationService.ValidateParam(args[key], contextRequest.body[name], name, errorFields, undefined, this.minimalSwaggerConfig);
}
case 'res':
return this.responder(context, next);
if (files.length > 0) {
const fileArgs = this.validationService.ValidateParam(args[key], contextRequest.files[name], name, errorFields, undefined, this.minimalSwaggerConfig);
return fileArgs.length === 1 ? fileArgs[0] : fileArgs;
} else if (args[key].dataType === 'array' && args[key].array.dataType === 'file') {
return this.validationService.ValidateParam(args[key], contextRequest.files, name, errorFields, undefined, this.minimalSwaggerConfig);
} else {
return this.validationService.ValidateParam(args[key], contextRequest.body[name], name, errorFields, undefined, this.minimalSwaggerConfig);
}
}
case 'res':
return this.responder(context, next);
}
});
if (Object.keys(errorFields).length > 0) {
throw new ValidateError(errorFields, '');
throw new ValidateError(errorFields, '');
}
return values;
}
}
}

0 comments on commit b690434

Please sign in to comment.