UNPKG

@zeushq/nextjs-zapi

Version:

Next.js SDK for creating a Zeus API

87 lines (75 loc) 2.45 kB
import { listHandler as baseListHandler, showHandler as baseShowHandler, createHandler as baseCreateHandler, updateHandler as baseUpdateHandler, destroyHandler as baseDestroyHandler } from './zapi'; import { handlerFactory, listHandler, showHandler, createHandler, updateHandler, destroyHandler, Handlers, HandleResource, HandleList, HandleShow, HandleCreate, HandleUpdate, HandleDestroy, Resource, } from './handlers'; import { InitZeusRestResource, HandleZeusRestResource } from './instance'; import { ConfigParameters } from './config'; let instance: HandleZeusRestResource; function getInstance(): HandleZeusRestResource { if (instance) { return instance; } instance = initRestResource(); return instance; } export const initRestResource: InitZeusRestResource = () => { // const { baseConfig } = getConfig(config); // Init base layer (with base config) const baseHandleList = baseListHandler(); const baseHandleShow = baseShowHandler(); const baseHandleCreate = baseCreateHandler(); const baseHandleUpdate = baseUpdateHandler(); const baseHandleDestroy = baseDestroyHandler(); // Init Next layer (with next config) const handleList = listHandler(baseHandleList); const handleShow = showHandler(baseHandleShow); const handleCreate = createHandler(baseHandleCreate); const handleUpdate = updateHandler(baseHandleUpdate); const handleDestroy = destroyHandler(baseHandleDestroy); const handleResource = handlerFactory({ handleList, handleShow, handleCreate, handleUpdate, handleDestroy }); return { handleList, handleShow, handleCreate, handleUpdate, handleDestroy, handleResource }; }; export const handleList: HandleList = (...args) => getInstance().handleList(...args); export const handleShow: HandleShow = (...args) => getInstance().handleShow(...args); export const handleCreate: HandleCreate = (...args) => getInstance().handleCreate(...args); export const handleUpdate: HandleUpdate = (...args) => getInstance().handleUpdate(...args); export const handleDestroy: HandleDestroy = (...args) => getInstance().handleDestroy(...args); export const handleResource: HandleResource = (...args) => getInstance().handleResource(...args); export { useResource } from './frontend'; export { ConfigParameters, HandleResource, HandleList, HandleShow, HandleCreate, HandleUpdate, HandleDestroy, Handlers, Resource, };