UNPKG

csr-controller

Version:
52 lines (51 loc) 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.controllerRegistry = void 0; /** * Allows to register every controller database handler * * @returns Object with register and handle methods */ const controllerRegistry = () => { const routes = new Map(); /** * Register controller with database handlers * * @param controller * @param db Database handlers for controller and sub controllers * * @see {@link Controller} */ const register = (controller, db) => { const { index, create, destroy, read, update, ...rest } = db; // Create copy of controller so we won't delete original keys later const copy = { ...controller }; Object.keys(rest).forEach(k => { if (typeof rest[k] != 'object') return; // Remap properties const { index, read } = rest[k]; copy[k] = { ...copy[k], ...rest[k], index, read }; // Remap key name delete Object.assign(copy, { [copy[k].$url]: copy[k] })[k]; }); routes.set(copy.$url, { ...copy, index, create, destroy, read, update, }); return { register, handle }; }; /** * Handle and return routes * @returns Registered routes */ const handle = () => { return routes; }; return { register, handle }; }; exports.controllerRegistry = controllerRegistry;