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": [
"../"