UNPKG

@digicms/cms

Version:

An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MySQL, MariaDB, PostgreSQL, SQLite

61 lines (51 loc) 1.79 kB
import { Service, GenericService } from '../core-api/service'; import { Controller, GenericController } from '../core-api/controller'; import { Middleware } from '../middlewares'; import { Policy } from '../core/registries/policies'; import { Strapi } from './core/strapi'; type ControllerConfig<T extends Controller = Controller> = T; type ServiceConfig = Service; type HandlerConfig = { auth?: false | { scope: string[] }; policies?: Array<string | Policy | { name: string; config: object }>; middlewares?: Array<string | Middleware | { name: string; config: object }>; }; type SingleTypeRouterConfig = { find?: HandlerConfig; update?: HandlerConfig; delete?: HandlerConfig; }; type CollectionTypeRouterConfig = { find?: HandlerConfig; findOne?: HandlerConfig; create?: HandlerConfig; update?: HandlerConfig; delete?: HandlerConfig; }; type RouterConfig = { prefix?: string; only?: string[]; except?: string[]; config: SingleTypeRouterConfig | CollectionTypeRouterConfig; }; interface Route { method: string; path: string; } interface Router { prefix: string; routes: Route[]; } type ControllerCallback<T extends GenericController = GenericController> = (params: { strapi: Strapi; }) => T; type ServiceCallback<T extends GenericService = GenericService> = (params: { strapi: Strapi }) => T; export function createCoreRouter(uid: string, cfg?: RouterConfig = {}): () => Router; export function createCoreController<T extends GenericController = GenericController>( uid: string, cfg?: ControllerCallback<T> | T = {} ): () => T & Controller; export function createCoreService<T extends GenericService = GenericService>( uid: string, cfg?: ServiceCallback<T> | T = {} ): () => T;