UNPKG

admin-bro

Version:
154 lines (147 loc) 3.95 kB
import * as path from 'path' import { outPath as COMPONENT_BUNDLE_PATH } from './bundler/user-components-bundler' import AppController from './controllers/app-controller' import ApiController from './controllers/api-controller' const ASSETS_ROOT = `${__dirname}/../frontend/assets/` /** * Type representing the AdminBro.Router * @memberof AdminBro * @alias RouterType */ export type RouterType = { assets: Array<{ path: string; src: string; }>; routes: Array<{ method: string; path: string; Controller: any; action: string; contentType?: string; }>; } /** * Contains list of all routes grouped to `assets` and `routes`. * * ``` * { * assets: [{ * path: '/frontend/assets/app.min.js', * src: path.join(ASSETS_ROOT, 'scripts/app.min.js'), * }, ...], * routes: [{ * method: 'GET', * path: '/resources/{resourceId}', * Controller: ResourcesController, * action: 'index', * }, ...] * } * * ``` * * It is used by supported frameworks to render AdminBro pages. * * @private */ const Router: RouterType = { assets: [{ path: '/frontend/assets/icomoon.css', src: path.join(ASSETS_ROOT, 'styles/icomoon.css'), }, { path: '/frontend/assets/icomoon.eot', src: path.join(ASSETS_ROOT, 'fonts/icomoon.eot'), }, { path: '/frontend/assets/icomoon.svg', src: path.join(ASSETS_ROOT, 'fonts/icomoon.svg'), }, { path: '/frontend/assets/icomoon.ttf', src: path.join(ASSETS_ROOT, 'fonts/icomoon.ttf'), }, { path: '/frontend/assets/icomoon.woff', src: path.join(ASSETS_ROOT, 'fonts/icomoon.woff'), }, { path: '/frontend/assets/app.bundle.js', src: path.join(ASSETS_ROOT, 'scripts/app-bundle.js'), }, { path: '/frontend/assets/global.bundle.js', src: path.join(ASSETS_ROOT, 'scripts/global-bundle.js'), }, { path: '/frontend/assets/logo.svg', src: [ASSETS_ROOT, 'images/logo.svg'].join('/'), }, { path: '/frontend/assets/logo-mini.svg', src: [ASSETS_ROOT, 'images/logo-mini.svg'].join('/'), }], routes: [{ method: 'GET', path: '', Controller: AppController, action: 'index', }, { method: 'GET', path: '/resources/{resourceId}', Controller: AppController, action: 'resource', }, { method: 'GET', path: '/api/resources/{resourceId}/search/{query}', Controller: ApiController, action: 'search', }, { method: 'GET', path: '/resources/{resourceId}/actions/{action}', Controller: AppController, action: 'resourceAction', }, { method: 'GET', path: '/resources/{resourceId}/records/{recordId}/{action}', Controller: AppController, action: 'recordAction', }, { method: 'GET', path: '/api/resources/{resourceId}/actions/{action}', Controller: ApiController, action: 'resourceAction', }, { method: 'GET', path: '/api/resources/{resourceId}/records/{recordId}/{action}', Controller: ApiController, action: 'recordAction', }, { method: 'POST', path: '/api/resources/{resourceId}/actions/{action}', Controller: ApiController, action: 'resourceAction', }, { method: 'POST', path: '/api/resources/{resourceId}/records/{recordId}/{action}', Controller: ApiController, action: 'recordAction', }, { method: 'GET', path: '/api/resources/{resourceId}/search/', Controller: ApiController, action: 'search', }, { method: 'GET', path: '/api/dashboard', Controller: ApiController, action: 'dashboard', }], } if (process.env.NODE_ENV === 'production') { Router.assets.push({ path: '/frontend/assets/components.bundle.js', src: COMPONENT_BUNDLE_PATH, }) } else { Router.routes.push({ method: 'GET', path: '/frontend/assets/components.bundle.js', Controller: AppController, action: 'bundleComponents', contentType: 'text/javascript;charset=utf-8', }) } export default Router