UNPKG

@tdsoft/express-routing-wrapper

Version:

Package gives you level of abstraction/wrapping of express router(s), endpoints and middlewares, additionally defining subrouters makes tree structure possible and easily discoverable by root router.

56 lines (53 loc) 2 kB
function TypeDef(initial) { Object.keys(initial).forEach(key => { this[key] = initial[key]; }); } TypeDef.prototype.description = function (desc) { return {...this, description: desc}; }; module.exports = { ApiDef: { req: { Body: (obj) => ({reqBody: obj}), Cookies: (obj) => ({reqCookies: obj}), DbModel: (name) => ({reqDbModel: name}), Headers: (obj) => ({reqHeaders: obj}), Path: (obj) => ({reqPath: obj}), Query: (obj) => ({reqQuery: obj}), }, res: { Body: (obj) => ({resBody: obj}), Cookies: (name) => ({resCookies: name}), DbModel: (name) => ({resDbModel: name}), }, Access: (level, cb) => ({access: {cb, level}}), Field: { String: new TypeDef({type: "string", required: false}), StringRequired: new TypeDef({type: "string", required: true}), Number: new TypeDef({type: "number", required: false}), NumberRequired: new TypeDef({type: "number", required: true}), Boolean: new TypeDef({type: "boolean", required: false}), BooleanRequired: new TypeDef({type: "boolean", required: true}), UUID: new TypeDef({type: "uuid", required: false}), UUIDRequired: new TypeDef({type: "uuid", required: true}), SortString: new TypeDef({type: "sort-string", required: false}), Object: new TypeDef({type: "object", required: false}), Array: (type) => [type], }, Cookie: { JWT: new TypeDef({type: "JWT", httpOnly: true}), Timestamp: new TypeDef({type: "Timestamp", httpOnly: false}), } }, ApiRouter: require("./ApiRouter"), ApiEndpoint: require("./ApiEndpoint"), ApiMiddleware: require("./ApiMiddleware"), ACCESS_LEVEL: { PUBLIC: 0, READONLY: 1, MUTABLE: 2, FULL: 3, ADMIN: 4, } };