From 7ed15aaca202fe77af4ef72ea3a02493c4666ec9 Mon Sep 17 00:00:00 2001 From: Mick Charuwichitratana Date: Tue, 21 Nov 2017 10:23:58 +0700 Subject: [PATCH] Fixed errors in epilogue declaration file. --- types/epilogue/index.d.ts | 360 +++++++++++++++++------------------ types/epilogue/tsconfig.json | 1 + 2 files changed, 179 insertions(+), 182 deletions(-) diff --git a/types/epilogue/index.d.ts b/types/epilogue/index.d.ts index a077daed2d..a23221fd9f 100644 --- a/types/epilogue/index.d.ts +++ b/types/epilogue/index.d.ts @@ -4,188 +4,184 @@ // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.4 -/// -/// +import { + Sequelize, + AssociationOptions, + DataTypeAbstract, + DataTypeString, + DataTypeChar, + DataTypeText, + DataTypeNumber, + DataTypeInteger, + DataTypeBigInt, + DataTypeFloat, + DataTypeTime, + DataTypeDate, + DataTypeDateOnly, + DataTypeBoolean, + DataTypeNow, + DataTypeBlob, + DataTypeDecimal, + DataTypeUUID, + DataTypeUUIDv1, + DataTypeUUIDv4, + DataTypeHStore, + DataTypeJSONType, + DataTypeJSONB, + DataTypeVirtual, + DataTypeArray, + DataTypeEnum, + DataTypeRange, + DataTypeReal, + DataTypeDouble, + DataTypeGeometry +} from 'sequelize'; -declare module 'epilogue' { - import { - Sequelize, - AssociationOptions, - DataTypeAbstract, - DataTypeString, - DataTypeChar, - DataTypeText, - DataTypeNumber, - DataTypeInteger, - DataTypeBigInt, - DataTypeFloat, - DataTypeTime, - DataTypeDate, - DataTypeDateOnly, - DataTypeBoolean, - DataTypeNow, - DataTypeBlob, - DataTypeDecimal, - DataTypeUUID, - DataTypeUUIDv1, - DataTypeUUIDv4, - DataTypeHStore, - DataTypeJSONType, - DataTypeJSONB, - DataTypeVirtual, - DataTypeArray, - DataTypeEnum, - DataTypeRange, - DataTypeReal, - DataTypeDouble, - DataTypeGeometry - } from 'sequelize'; - import { Express, Request, Response } from 'express'; +import { Express, Request, Response } from 'express'; - export class Endpoint { - constructor(endpoint: string); - string: string; - attributes: string[]; - } - - export class Resource { - constructor(options: ResourceOptions); - app: Express; - sequelize: Sequelize; - model: any; - include: Array<{ model: any } | any | string>; - associationOptions: ResourceAssociationOptions; - readOnlyAttributes: string[]; - excludeAttributes: string[]; - attributes: string[]; - actions: string[]; - endpoints: { - singular: string; - plural: string; - }; - updateMethod: string; - pagination: boolean; - search: ResourceSearchOption; - sort: ResourceSortOption; - reloadInstances: boolean; - controllers: Controllers; - } - - export interface Controllers { - base: BaseController; - create: CreateController; - read: ReadController; - update: UpdateController; - delete: DeleteController; - list: ListController; - } - - export interface Errors { - NotFoundError: EpilogueError; - BadRequestError: EpilogueError; - EpilogueError: EpilogueError; - ForbiddenError: EpilogueError; - RequestCompleted: EpilogueError; - } - - export interface ResourceAssociationOptions extends AssociationOptions { - removeForeignKeys: boolean; - } - - export interface ResourceSearchOption { - param: string; - operator: string; - attributes: string[]; - } - - export interface ResourceSortOption { - param: string; - default: string; - } - - export interface InitializeOptions { - app: Express; - sequelize: Sequelize; - base?: string; - updateMethod?: string; - } - - export interface BaseContollerOptions { - endpoint: string; - model: any; - app: Express; - resource: Resource; - include: Array; - } - - export interface Context { - instance: Resource; - criteria: any; - attributes: any; - options: any; - continue: () => void; - skip: () => void; - stop: () => void; - error: (status: number | EpilogueError, message?: string, errorList?: string[], cause?: Error) => void; - } - - export class BaseController { - constructor(options: BaseContollerOptions); - endpoint: Endpoint; - model: any; - } - - export class CreateController extends BaseController { - write: (req: Request, res: Response, context: Context) => Promise<() => void>; - } - - export class ReadController extends BaseController { - fetch: (req: Request, res: Response, context: Context) => Promise<() => void>; - } - - export class UpdateController extends BaseController { - fetch: (req: Request, res: Response, context: Context) => Promise<() => void>; - write: (req: Request, res: Response, context: Context) => Promise<() => void>; - } - - export class DeleteController extends BaseController { - fetch: (req: Request, res: Response, context: Context) => Promise<() => void>; - write: (req: Request, res: Response, context: Context) => Promise<() => void>; - } - - export class ListController extends BaseController { - fetch: (req: Request, res: Response, context: Context) => Promise<() => void>; - _safeishParse: (value: any, type: DataTypeAbstract | DataTypeString | DataTypeChar | DataTypeText | DataTypeNumber | - DataTypeInteger | DataTypeBigInt | DataTypeFloat | DataTypeTime | DataTypeDate | DataTypeDateOnly | - DataTypeBoolean | DataTypeNow | DataTypeBlob | DataTypeDecimal | DataTypeUUID | DataTypeUUIDv1 | - DataTypeUUIDv4 | DataTypeHStore | DataTypeJSONType | DataTypeJSONB | DataTypeVirtual | - DataTypeArray | DataTypeEnum | DataTypeRange | DataTypeReal | DataTypeDouble | DataTypeGeometry, - sequelize: Sequelize) => any; - } - - export interface ResourceOptions { - model: any; - endpoints: string[]; - actions?: string[]; - include?: Array; - pagination?: boolean; - search?: ResourceSearchOption; - sort?: ResourceSortOption; - reloadInstances?: boolean; - associations?: AssociationOptions; - excludeAttributes?: string[]; - readOnlyAttributes?: string[]; - updateMethod?: string; - } - - export class EpilogueError extends Error { - name: string; - message: string; - errors: string[]; - status: EpilogueError | number; - cause: Error; - } - - function initialize(options: InitializeOptions): undefined; - function resource(options: ResourceOptions): Resource; +export class Endpoint { + constructor(endpoint: string); + string: string; + attributes: string[]; } + +export class Resource { + constructor(options: ResourceOptions); + app: Express; + sequelize: Sequelize; + model: any; + include: Array<{ model: any } | string>; + associationOptions: ResourceAssociationOptions; + readOnlyAttributes: string[]; + excludeAttributes: string[]; + attributes: string[]; + actions: string[]; + endpoints: { + singular: string; + plural: string; + }; + updateMethod: string; + pagination: boolean; + search: ResourceSearchOption; + sort: ResourceSortOption; + reloadInstances: boolean; + controllers: Controllers; +} + +export interface Controllers { + base: BaseController; + create: CreateController; + read: ReadController; + update: UpdateController; + delete: DeleteController; + list: ListController; +} + +export interface Errors { + NotFoundError: EpilogueError; + BadRequestError: EpilogueError; + EpilogueError: EpilogueError; + ForbiddenError: EpilogueError; + RequestCompleted: EpilogueError; +} + +export interface ResourceAssociationOptions extends AssociationOptions { + removeForeignKeys: boolean; +} + +export interface ResourceSearchOption { + param: string; + operator: string; + attributes: string[]; +} + +export interface ResourceSortOption { + param: string; + default: string; +} + +export interface InitializeOptions { + app: Express; + sequelize: Sequelize; + base?: string; + updateMethod?: string; +} + +export interface BaseContollerOptions { + endpoint: string; + model: any; + app: Express; + resource: Resource; + include: Array<{ model: any } | string>; +} + +export interface Context { + instance: Resource; + criteria: any; + attributes: any; + options: any; + continue: () => void; + skip: () => void; + stop: () => void; + error: (status: number | EpilogueError, message?: string, errorList?: string[], cause?: Error) => void; +} + +export class BaseController { + constructor(options: BaseContollerOptions); + endpoint: Endpoint; + model: any; +} + +export class CreateController extends BaseController { + write: (req: Request, res: Response, context: Context) => Promise<() => void>; +} + +export class ReadController extends BaseController { + fetch: (req: Request, res: Response, context: Context) => Promise<() => void>; +} + +export class UpdateController extends BaseController { + fetch: (req: Request, res: Response, context: Context) => Promise<() => void>; + write: (req: Request, res: Response, context: Context) => Promise<() => void>; +} + +export class DeleteController extends BaseController { + fetch: (req: Request, res: Response, context: Context) => Promise<() => void>; + write: (req: Request, res: Response, context: Context) => Promise<() => void>; +} + +export class ListController extends BaseController { + fetch: (req: Request, res: Response, context: Context) => Promise<() => void>; + _safeishParse: (value: any, type: DataTypeAbstract | DataTypeString | DataTypeChar | DataTypeText | DataTypeNumber | + DataTypeInteger | DataTypeBigInt | DataTypeFloat | DataTypeTime | DataTypeDate | DataTypeDateOnly | + DataTypeBoolean | DataTypeNow | DataTypeBlob | DataTypeDecimal | DataTypeUUID | DataTypeUUIDv1 | + DataTypeUUIDv4 | DataTypeHStore | DataTypeJSONType | DataTypeJSONB | DataTypeVirtual | + DataTypeArray | DataTypeEnum | DataTypeRange | DataTypeReal | DataTypeDouble | DataTypeGeometry, + sequelize: Sequelize) => any; +} + +export interface ResourceOptions { + model: any; + endpoints: string[]; + actions?: string[]; + include?: Array<{ model: any } | string>; + pagination?: boolean; + search?: ResourceSearchOption; + sort?: ResourceSortOption; + reloadInstances?: boolean; + associations?: AssociationOptions; + excludeAttributes?: string[]; + readOnlyAttributes?: string[]; + updateMethod?: string; +} + +export class EpilogueError extends Error { + name: string; + message: string; + errors: string[]; + status: EpilogueError | number; + cause: Error; +} + +export function initialize(options: InitializeOptions): undefined; +export function resource(options: ResourceOptions): Resource; diff --git a/types/epilogue/tsconfig.json b/types/epilogue/tsconfig.json index 4771e43ee9..593077c6bc 100644 --- a/types/epilogue/tsconfig.json +++ b/types/epilogue/tsconfig.json @@ -7,6 +7,7 @@ "noImplicitAny": true, "noImplicitThis": true, "strictNullChecks": true, + "strictFunctionTypes": false, "baseUrl": "../", "typeRoots": [ "../"