@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
JavaScript
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,
}
};