Fixed errors in epilogue declaration file.

This commit is contained in:
Mick Charuwichitratana
2017-11-21 10:23:58 +07:00
parent 732e27b18d
commit 7ed15aaca2
2 changed files with 179 additions and 182 deletions
+178 -182
View File
@@ -4,188 +4,184 @@
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.4
/// <reference types="sequelize"/>
/// <reference types="express"/>
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<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<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;
}
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;
+1
View File
@@ -7,6 +7,7 @@
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": false,
"baseUrl": "../",
"typeRoots": [
"../"