DefinitelyTyped/types/epilogue/index.d.ts
Leonard Hecker 3c7c5b79aa [bluebird] Restore assignability to native Promises (fixes #11027) (#34805)
* [bluebird] Rename import to Bluebird for tests

* [bluebird] Restore assignability to native Promises

* [bluebird] Upgrade TypeScript Versions of all dependents
2019-05-24 13:57:50 -07:00

200 lines
5.5 KiB
TypeScript

// Type definitions for epilogue 0.7
// Project: https://github.com/dchester/epilogue
// Definitions by: Satana Charuwichitratana <https://github.com/micksatana>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.2
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';
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 namespace Errors {
class EpilogueError extends Error {
constructor(status: number | EpilogueError, message?: string, errors?: string[], cause?: Error);
name: string;
message: string;
errors: string[];
status: number | EpilogueError;
cause: Error;
}
class NotFoundError extends EpilogueError {
constructor(message?: string, errors?: string[], cause?: Error);
}
class BadRequestError extends EpilogueError {
constructor(message?: string, errors?: string[], cause?: Error);
}
class ForbiddenError extends EpilogueError {
constructor(message?: string, errors?: string[], cause?: Error);
}
class RequestCompleted extends Error {
constructor();
}
}
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 | Errors.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 function initialize(options?: InitializeOptions): void;
export function resource(options?: ResourceOptions): Resource;