UNPKG

burdy

Version:

Open Source Headless Platform

106 lines (86 loc) 2.64 kB
import { Response } from 'express'; import React from 'react'; import {Connection, ConnectionOptions, EntitySchema} from 'typeorm'; import User from '../server/models/user.model'; import UserSession from '../server/models/user-session.model'; import Hooks from '../shared/features/hooks'; import SMTPTransport from "nodemailer/lib/smtp-transport"; import {Transporter} from "nodemailer"; import Mail from "nodemailer/lib/mailer"; import {IPermission} from "@shared/interfaces/permissions"; import { IDashboardLink, IDashboardSection } from '@admin/features/dashboard'; import Post from '@server/models/post.model'; import Asset from '@server/models/asset.model'; // Extensible types / declarations for hooks declare global { namespace Burdy { interface IActions { 'server/init': [Express]; 'api/init': [Express]; 'core/init': [void]; 'core/firstInit': [void]; // Database 'db/init': [Connection, ConnectionOptions]; // Mail 'mail/init': [Transporter]; 'mail/dispatched': [any]; // User 'user/postLogin': [User]; 'user/postLogout': [User]; 'user/postCreate': [User]; 'user/postDelete': [User]; 'user/postDeleteMany': [User[]]; 'public/getPost': [Post]; 'public/getAsset': [Asset]; [key: string]: any[]; } interface IFilters { 'server/notFound': [Response]; 'permissions/getAll': [IPermission[]]; // Auth 'auth/hasPermission': [boolean, User, Express.Request<any>]; 'auth/permissions': [string[], User] 'auth/getUser': [User, Express.Request<any>]; // Database 'db/options': [ConnectionOptions]; 'db/connection': [Connection]; 'db/models': [(Function|EntitySchema)[]]; // Mail 'mail/options': [SMTPTransport.Options]; 'mail/send': [Mail.Options]; // User 'user/getMany': [User[]]; 'user/get': [User]; // Content Types 'contentType/fields': [any[]]; [key: string]: any[]; } interface ISyncFilters { 'admin/field': [React.FC<any> | null, any]; 'dashboard/links': [IDashboardLink[]] 'dashboard/sections': [IDashboardSection[]] [key: string]: any[]; } } namespace Express { interface Request { data: { user?: User; session?: UserSession; [key: string]: any; }; validate: ( schema: any, type?: 'body' | 'query' | 'params' ) => Promise<void>; } namespace Multer { interface File { key?: string; } } } interface Window { Hooks: typeof Hooks; } }