@devbro/neko-router 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CompiledRoute.mjs +23 -49
- package/dist/CompiledRoute.mjs.map +1 -1
- package/dist/Controller.mjs +14 -35
- package/dist/Controller.mjs.map +1 -1
- package/dist/Middleware.mjs.map +1 -1
- package/dist/MiddlewareFactory.mjs +1 -1
- package/dist/MiddlewareFactory.mjs.map +1 -1
- package/dist/Route.mjs +2 -1
- package/dist/Route.mjs.map +1 -1
- package/dist/Router.mjs +7 -30
- package/dist/Router.mjs.map +1 -1
- package/dist/helpers.mjs +16 -40
- package/dist/helpers.mjs.map +1 -1
- package/dist/index.js +460 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -8
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -3
- package/dist/CompiledRoute.d.ts +0 -22
- package/dist/CompiledRoute.js +0 -161
- package/dist/CompiledRoute.js.map +0 -1
- package/dist/Controller.d.ts +0 -42
- package/dist/Controller.js +0 -154
- package/dist/Controller.js.map +0 -1
- package/dist/Middleware-C8dxjlFD.d.ts +0 -30
- package/dist/Middleware.d.ts +0 -2
- package/dist/Middleware.js +0 -35
- package/dist/Middleware.js.map +0 -1
- package/dist/MiddlewareFactory.d.ts +0 -8
- package/dist/MiddlewareFactory.js +0 -42
- package/dist/MiddlewareFactory.js.map +0 -1
- package/dist/Route.d.ts +0 -40
- package/dist/Route.js +0 -138
- package/dist/Route.js.map +0 -1
- package/dist/Router.d.ts +0 -19
- package/dist/Router.js +0 -119
- package/dist/Router.js.map +0 -1
- package/dist/helpers.d.ts +0 -6
- package/dist/helpers.js +0 -70
- package/dist/helpers.js.map +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/types.d.ts +0 -2
- package/dist/types.js +0 -17
- package/dist/types.js.map +0 -1
package/dist/CompiledRoute.mjs
CHANGED
|
@@ -1,34 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var fulfilled = (value) => {
|
|
4
|
-
try {
|
|
5
|
-
step(generator.next(value));
|
|
6
|
-
} catch (e) {
|
|
7
|
-
reject(e);
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
var rejected = (value) => {
|
|
11
|
-
try {
|
|
12
|
-
step(generator.throw(value));
|
|
13
|
-
} catch (e) {
|
|
14
|
-
reject(e);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
import { Middleware } from "./Middleware";
|
|
22
|
-
import { MiddlewareFactory } from "./MiddlewareFactory";
|
|
1
|
+
import { Middleware } from "./Middleware.mjs";
|
|
2
|
+
import { MiddlewareFactory } from "./MiddlewareFactory.mjs";
|
|
23
3
|
class CompiledRoute {
|
|
24
4
|
constructor(route, request, response, globalMiddlewares = []) {
|
|
25
5
|
this.route = route;
|
|
26
6
|
this.request = request;
|
|
27
7
|
this.response = response;
|
|
28
8
|
this.globalMiddlewares = globalMiddlewares;
|
|
29
|
-
this.middlewares = [];
|
|
30
9
|
this.prepareMiddlewares();
|
|
31
10
|
}
|
|
11
|
+
middlewares = [];
|
|
32
12
|
getMiddlewares() {
|
|
33
13
|
return this.middlewares;
|
|
34
14
|
}
|
|
@@ -49,10 +29,8 @@ class CompiledRoute {
|
|
|
49
29
|
isClass(func) {
|
|
50
30
|
return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
|
|
51
31
|
}
|
|
52
|
-
run() {
|
|
53
|
-
return
|
|
54
|
-
return yield this.runMiddlewares(this.middlewares, this.request, this.response);
|
|
55
|
-
});
|
|
32
|
+
async run() {
|
|
33
|
+
return await this.runMiddlewares(this.middlewares, this.request, this.response);
|
|
56
34
|
}
|
|
57
35
|
prepareOutputJsonFormat(obj) {
|
|
58
36
|
function traverse(value) {
|
|
@@ -106,29 +84,25 @@ class CompiledRoute {
|
|
|
106
84
|
res.end();
|
|
107
85
|
}
|
|
108
86
|
}
|
|
109
|
-
runMiddlewares(middlewares, req, res) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
yield me.processResponseBody(res, controller_rc);
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
const middleware = middlewares[index++];
|
|
121
|
-
if (middleware instanceof Middleware) {
|
|
122
|
-
yield middleware.call(req, res, next);
|
|
123
|
-
} else if (typeof middleware === "function") {
|
|
124
|
-
yield middleware(req, res, next);
|
|
125
|
-
} else {
|
|
126
|
-
throw new Error("does not know how to run middleware");
|
|
127
|
-
}
|
|
128
|
-
});
|
|
87
|
+
async runMiddlewares(middlewares, req, res) {
|
|
88
|
+
let index = 0;
|
|
89
|
+
const me = this;
|
|
90
|
+
async function next() {
|
|
91
|
+
if (index >= middlewares.length) {
|
|
92
|
+
const controller_rc = await me.route.callHanlder(req, res);
|
|
93
|
+
await me.processResponseBody(res, controller_rc);
|
|
94
|
+
return;
|
|
129
95
|
}
|
|
130
|
-
|
|
131
|
-
|
|
96
|
+
const middleware = middlewares[index++];
|
|
97
|
+
if (middleware instanceof Middleware) {
|
|
98
|
+
await middleware.call(req, res, next);
|
|
99
|
+
} else if (typeof middleware === "function") {
|
|
100
|
+
await middleware(req, res, next);
|
|
101
|
+
} else {
|
|
102
|
+
throw new Error("does not know how to run middleware");
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
await next();
|
|
132
106
|
}
|
|
133
107
|
}
|
|
134
108
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/CompiledRoute.
|
|
1
|
+
{"version":3,"sources":["../src/CompiledRoute.mts"],"sourcesContent":["import { Middleware } from './Middleware.mjs';\nimport { MiddlewareFactory } from './MiddlewareFactory.mjs';\nimport { Route } from './Route.mjs';\nimport { HandlerType, MiddlewareProvider } from './types.mjs';\nimport { LexerToken, Request, Response } from './types.mjs';\n\nexport class CompiledRoute {\n constructor(\n public route: Route,\n public request: Request,\n public response: Response,\n public globalMiddlewares: MiddlewareProvider[] = []\n ) {\n this.prepareMiddlewares();\n }\n\n private middlewares: Middleware[] = [];\n\n getMiddlewares() {\n return this.middlewares;\n }\n\n private prepareMiddlewares() {\n this.middlewares = [];\n for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {\n if (middleware instanceof Middleware) {\n this.middlewares.push(middleware);\n } else if (this.isClass(middleware)) {\n this.middlewares.push((middleware as any).getInstance({}));\n } else if (typeof middleware === 'function') {\n this.middlewares.push(MiddlewareFactory.create(middleware as HandlerType));\n } else {\n throw new Error('Invalid middleware type');\n }\n }\n }\n\n isClass(func: any) {\n return typeof func === 'function' && /^class\\s/.test(Function.prototype.toString.call(func));\n }\n\n async run() {\n return await this.runMiddlewares(this.middlewares, this.request, this.response);\n }\n\n prepareOutputJsonFormat<T>(obj: object | Array<any>): T {\n function traverse(value: any): any {\n if (!value || typeof value !== 'object') {\n return value;\n }\n\n if (typeof value.toJson === 'function') {\n return traverse(value.toJson());\n }\n\n if (Array.isArray(value)) {\n return value.map(traverse);\n }\n\n const result: Record<string, any> = {};\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n result[key] = traverse(value[key]);\n }\n }\n return result;\n }\n\n return traverse(obj);\n }\n\n convertToString(obj: any) {\n if (typeof obj === 'string') {\n return obj;\n } else if (obj instanceof Buffer) {\n return obj.toString();\n } else if (typeof obj === 'object') {\n return JSON.stringify(this.prepareOutputJsonFormat(obj));\n }\n return String(obj);\n }\n\n processResponseBody(res: Response, controller_rc: any) {\n if (controller_rc && res.writableEnded) {\n throw new Error('cannot write to response, response has already ended');\n }\n\n if (res.writableEnded) {\n return;\n }\n\n if (controller_rc) {\n const header_content_type = res.getHeader('Content-Type');\n if (!header_content_type && typeof controller_rc === 'object') {\n res.setHeader('Content-Type', 'application/json');\n } else if (!header_content_type) {\n res.setHeader('Content-Type', 'text/plain');\n }\n\n res.end(this.convertToString(controller_rc));\n return;\n } else {\n res.statusCode = [200].includes(res.statusCode) ? 204 : res.statusCode;\n res.end();\n }\n }\n\n async runMiddlewares(middlewares: Middleware[], req: Request, res: Response) {\n let index = 0;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n\n async function next() {\n if (index >= middlewares.length) {\n const controller_rc = await me.route.callHanlder(req, res);\n await me.processResponseBody(res, controller_rc);\n return;\n }\n\n const middleware: Middleware | any = middlewares[index++];\n\n if (middleware instanceof Middleware) {\n await middleware.call(req, res, next);\n } else if (typeof middleware === 'function') {\n await middleware(req, res, next);\n } else {\n throw new Error('does not know how to run middleware');\n }\n }\n\n await next();\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/Controller.mjs
CHANGED
|
@@ -1,29 +1,10 @@
|
|
|
1
|
-
var __async = (__this, __arguments, generator) => {
|
|
2
|
-
return new Promise((resolve, reject) => {
|
|
3
|
-
var fulfilled = (value) => {
|
|
4
|
-
try {
|
|
5
|
-
step(generator.next(value));
|
|
6
|
-
} catch (e) {
|
|
7
|
-
reject(e);
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
var rejected = (value) => {
|
|
11
|
-
try {
|
|
12
|
-
step(generator.throw(value));
|
|
13
|
-
} catch (e) {
|
|
14
|
-
reject(e);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
1
|
class BaseController {
|
|
2
|
+
static basePath = "";
|
|
3
|
+
static baseMiddlewares;
|
|
22
4
|
static getInstance() {
|
|
23
5
|
return new this();
|
|
24
6
|
}
|
|
25
7
|
}
|
|
26
|
-
BaseController.basePath = "";
|
|
27
8
|
function Controller(path, options = {}) {
|
|
28
9
|
return function(target) {
|
|
29
10
|
target.routes = target.routes || [];
|
|
@@ -44,20 +25,18 @@ function createHttpDecorator(data) {
|
|
|
44
25
|
const originalMethod = descriptor.value;
|
|
45
26
|
const paramKeys = Reflect.ownKeys(target.constructor);
|
|
46
27
|
const methodName = propertyKey.toString();
|
|
47
|
-
descriptor.value = function(...args) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
args[paramIndex] = yield method();
|
|
57
|
-
}
|
|
28
|
+
descriptor.value = async function(...args) {
|
|
29
|
+
const paramCustomKeys = paramKeys.filter(
|
|
30
|
+
(key) => typeof key === "string" && key.startsWith(`${methodName}:`) && key.endsWith(":custom")
|
|
31
|
+
);
|
|
32
|
+
for (const paramKey of paramCustomKeys) {
|
|
33
|
+
const paramIndex = parseInt(paramKey.split(":")[1]);
|
|
34
|
+
let method = Reflect.get(target.constructor, paramKey.toString());
|
|
35
|
+
if (typeof paramIndex === "number" && typeof method === "function") {
|
|
36
|
+
args[paramIndex] = await method();
|
|
58
37
|
}
|
|
59
|
-
|
|
60
|
-
|
|
38
|
+
}
|
|
39
|
+
return originalMethod.apply(this, args);
|
|
61
40
|
};
|
|
62
41
|
};
|
|
63
42
|
}
|
|
@@ -105,7 +84,7 @@ function Options(data = {}) {
|
|
|
105
84
|
}
|
|
106
85
|
function createParamDecorator(func) {
|
|
107
86
|
return function MyParamDecorator(target, propertyKey, parameterIndex) {
|
|
108
|
-
Reflect.set(target.constructor, `${propertyKey
|
|
87
|
+
Reflect.set(target.constructor, `${propertyKey?.toString()}:${parameterIndex}:custom`, func);
|
|
109
88
|
};
|
|
110
89
|
}
|
|
111
90
|
export {
|
package/dist/Controller.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Controller.
|
|
1
|
+
{"version":3,"sources":["../src/Controller.mts"],"sourcesContent":["import { ControllerDecoratorOptions, HttpMethod, MiddlewareProvider } from './types.mjs';\nimport { Middleware } from './Middleware.mjs';\n\nexport class BaseController {\n declare static routes: {\n methods: HttpMethod[];\n path: string;\n handler: string;\n middlewares: MiddlewareProvider[];\n }[];\n static basePath: string = '';\n static baseMiddlewares: MiddlewareProvider[];\n\n static getInstance() {\n return new this();\n }\n}\n\nexport function Controller(path: string, options: ControllerDecoratorOptions = {}): ClassDecorator {\n return function (target: any) {\n (target as any).routes = (target as any).routes || [];\n (target as any).basePath = path;\n (target as any).baseMiddlewares = options.middlewares || [];\n };\n}\n\nfunction createHttpDecorator(data: {\n methods: HttpMethod[];\n path: string;\n middlewares: MiddlewareProvider[];\n}): MethodDecorator {\n return function (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) {\n const ctor = target.constructor;\n if (!ctor.routes) ctor.routes = [];\n ctor.routes.push({\n methods: data.methods,\n path: data.path,\n handler: propertyKey,\n middlewares: data.middlewares || [],\n });\n\n const originalMethod = descriptor.value!;\n const paramKeys = Reflect.ownKeys(target.constructor);\n const methodName = propertyKey.toString();\n\n descriptor.value = async function (...args: any[]) {\n const paramCustomKeys = paramKeys.filter(\n (key) =>\n typeof key === 'string' && key.startsWith(`${methodName}:`) && key.endsWith(':custom')\n );\n for (const paramKey of paramCustomKeys) {\n const paramIndex = parseInt((paramKey as string).split(':')[1]);\n let method = Reflect.get(target.constructor, paramKey.toString());\n if (typeof paramIndex === 'number' && typeof method === 'function') {\n args[paramIndex] = await method();\n }\n }\n\n return originalMethod.apply(this, args);\n };\n };\n}\n\nexport function Get(\n data: { path?: string; middlewares?: MiddlewareProvider[] } = {}\n): MethodDecorator {\n return createHttpDecorator({\n methods: ['GET', 'HEAD'],\n path: data.path || '/',\n middlewares: data.middlewares || [],\n });\n}\n\nexport function Post(\n data: { path?: string; middlewares?: MiddlewareProvider[] } = {}\n): MethodDecorator {\n return createHttpDecorator({\n methods: ['POST'],\n path: data.path || '/',\n middlewares: data.middlewares || [],\n });\n}\n\nexport function Put(\n data: { path?: string; middlewares?: MiddlewareProvider[] } = {}\n): MethodDecorator {\n return createHttpDecorator({\n methods: ['PUT'],\n path: data.path || '/',\n middlewares: data.middlewares || [],\n });\n}\n\nexport function Patch(\n data: { path?: string; middlewares?: MiddlewareProvider[] } = {}\n): MethodDecorator {\n return createHttpDecorator({\n methods: ['PATCH'],\n path: data.path || '/',\n middlewares: data.middlewares || [],\n });\n}\n\nexport function Delete(\n data: { path?: string; middlewares?: MiddlewareProvider[] } = {}\n): MethodDecorator {\n return createHttpDecorator({\n methods: ['DELETE'],\n path: data.path || '/',\n middlewares: data.middlewares || [],\n });\n}\n\nexport function Options(\n data: { path?: string; middlewares?: MiddlewareProvider[] } = {}\n): MethodDecorator {\n return createHttpDecorator({\n methods: ['OPTIONS'],\n path: data.path || '/',\n middlewares: data.middlewares || [],\n });\n}\n\nexport function createParamDecorator(func: () => Promise<any> | (() => any)): ParameterDecorator {\n return function MyParamDecorator(\n target: Object,\n propertyKey: string | symbol | undefined,\n parameterIndex: number\n ) {\n Reflect.set(target.constructor, `${propertyKey?.toString()}:${parameterIndex}:custom`, func);\n };\n}\n"],"mappings":"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","names":[]}
|
package/dist/Middleware.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Middleware.
|
|
1
|
+
{"version":3,"sources":["../src/Middleware.mts"],"sourcesContent":["import { LexerToken, Request, Response } from './types.mjs';\n\nexport abstract class Middleware {\n protected constructor(params: any = {}) {}\n static getInstance(params: any): Middleware {\n throw new Error('Method not implemented. Please implement a static getInstance method.');\n }\n\n abstract call(req: Request, res: Response, next: () => Promise<void>): Promise<void>;\n}\n"],"mappings":"AAEO,MAAe,WAAW;AAAA,EACrB,YAAY,SAAc,CAAC,GAAG;AAAA,EAAC;AAAA,EACzC,OAAO,YAAY,QAAyB;AAC1C,UAAM,IAAI,MAAM,uEAAuE;AAAA,EACzF;AAGF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MiddlewareFactory.
|
|
1
|
+
{"version":3,"sources":["../src/MiddlewareFactory.mts"],"sourcesContent":["import { Middleware } from './Middleware.mjs';\nimport { HandlerType, LexerToken, Request, Response } from './types.mjs';\n\nexport class MiddlewareFactory {\n public static create(func: HandlerType): Middleware {\n const cls = class extends Middleware {\n call(req: Request, res: Response, next: () => Promise<void>): Promise<void> {\n return func(req, res, next);\n }\n constructor(params: any = {}) {\n super(params);\n }\n };\n\n return new cls();\n }\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAGpB,MAAM,kBAAkB;AAAA,EAC7B,OAAc,OAAO,MAA+B;AAClD,UAAM,MAAM,cAAc,WAAW;AAAA,MACnC,KAAK,KAAc,KAAe,MAA0C;AAC1E,eAAO,KAAK,KAAK,KAAK,IAAI;AAAA,MAC5B;AAAA,MACA,YAAY,SAAc,CAAC,GAAG;AAC5B,cAAM,MAAM;AAAA,MACd;AAAA,IACF;AAEA,WAAO,IAAI,IAAI;AAAA,EACjB;AACF;","names":[]}
|
package/dist/Route.mjs
CHANGED
|
@@ -3,9 +3,10 @@ class Route {
|
|
|
3
3
|
this.methods = methods;
|
|
4
4
|
this.path = path;
|
|
5
5
|
this.handler = handler;
|
|
6
|
-
this.middlewares = [];
|
|
7
6
|
this.urlRegex = this.pathToRegex(path);
|
|
8
7
|
}
|
|
8
|
+
middlewares = [];
|
|
9
|
+
urlRegex;
|
|
9
10
|
pathToRegex(path) {
|
|
10
11
|
const lex = this.lexUrlPath(path);
|
|
11
12
|
return this.tokensToRegex(lex);
|
package/dist/Route.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Route.
|
|
1
|
+
{"version":3,"sources":["../src/Route.mts"],"sourcesContent":["import { Middleware } from './Middleware.mjs';\nimport { MiddlewareFactory } from './MiddlewareFactory.mjs';\nimport { HandlerType, HttpMethod, MiddlewareProvider } from './types.mjs';\nimport { LexerToken, Request, Response } from './types.mjs';\n\nexport class Route {\n private middlewares: MiddlewareProvider[] = [];\n private urlRegex: RegExp;\n constructor(\n public methods: HttpMethod[],\n public path: string,\n public handler: HandlerType\n ) {\n this.urlRegex = this.pathToRegex(path);\n }\n pathToRegex(path: string): RegExp {\n const lex = this.lexUrlPath(path);\n return this.tokensToRegex(lex);\n }\n\n lexUrlPath(path: string) {\n const tokens = [];\n let i = 0;\n\n while (i < path.length) {\n const char = path[i];\n\n if (char === '/') {\n tokens.push({ type: 'SLASH', value: '/' });\n i++;\n } else if (char === ':') {\n let start = i + 1;\n while (start < path.length && /[a-zA-Z0-9_]/.test(path[start])) {\n start++;\n }\n tokens.push({ type: 'PARAM', value: path.slice(i + 1, start) });\n i = start;\n } else if (char === '*') {\n let start = i + 1;\n while (start < path.length && /[a-zA-Z0-9_]/.test(path[start])) {\n start++;\n }\n tokens.push({ type: 'WILDCARD', value: path.slice(i + 1, start) });\n i = start;\n } else {\n let start = i;\n while (start < path.length && !['/', ':', '*'].includes(path[start])) {\n start++;\n }\n tokens.push({ type: 'TEXT', value: path.slice(i, start) });\n i = start;\n }\n }\n\n return tokens;\n }\n tokensToRegex(tokens: LexerToken[]) {\n const regexParts = [];\n\n for (const token of tokens) {\n if (token.type === 'SLASH') {\n regexParts.push('\\\\/');\n } else if (token.type === 'PARAM') {\n regexParts.push(`(?<${token.value}>[^\\\\/]+)`);\n } else if (token.type === 'WILDCARD') {\n regexParts.push('(.+)');\n } else if (token.type === 'TEXT') {\n regexParts.push(token.value.replace(/[-\\/\\\\^$.*+?()[\\]{}|]/g, '\\\\$&'));\n }\n }\n\n if (regexParts.length > 0 && regexParts[regexParts.length - 1] === '\\\\/') {\n regexParts[regexParts.length - 1] = '\\\\/?';\n } else {\n regexParts.push('\\\\/?');\n }\n\n return new RegExp(`^${regexParts.join('')}$`);\n }\n\n /**\n * to evaludate if request is a match for this route\n * @param request http request\n * @returns return true if route is a match for this request\n */\n test(request: Request) {\n if (this.methods.indexOf(request.method as HttpMethod) === -1) {\n return false;\n }\n const url = new URL(request.url || '/', 'http://localhost');\n return this.testPath(url.pathname);\n }\n\n testPath(pathname: string) {\n return this.urlRegex.test(pathname);\n }\n\n /**\n * returns details of the match, otherwise it returns false\n * @param request the request to match\n * @returns object cotaining details of match including matched params\n */\n match(request: Request) {\n if (this.methods.indexOf(request.method as HttpMethod) === -1) {\n return false;\n }\n\n const url = new URL(request.url || '/', 'http://localhost');\n\n const r = this.urlRegex.exec(url.pathname);\n if (!r) {\n return false;\n }\n\n return {\n url,\n params: r.groups || {},\n };\n }\n\n addMiddleware(middlewares: MiddlewareProvider | MiddlewareProvider[]) {\n this.middlewares = this.middlewares.concat(middlewares);\n return this;\n }\n\n getMiddlewares() {\n return this.middlewares;\n }\n\n callHanlder(request: Request, response: Response) {\n return this.handler(request, response);\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/Router.mjs
CHANGED
|
@@ -1,31 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var fulfilled = (value) => {
|
|
4
|
-
try {
|
|
5
|
-
step(generator.next(value));
|
|
6
|
-
} catch (e) {
|
|
7
|
-
reject(e);
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
var rejected = (value) => {
|
|
11
|
-
try {
|
|
12
|
-
step(generator.throw(value));
|
|
13
|
-
} catch (e) {
|
|
14
|
-
reject(e);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
import { CompiledRoute } from "./CompiledRoute";
|
|
22
|
-
import { Route } from "./Route";
|
|
1
|
+
import { CompiledRoute } from "./CompiledRoute.mjs";
|
|
2
|
+
import { Route } from "./Route.mjs";
|
|
23
3
|
import path from "path";
|
|
24
4
|
class Router {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.routes = [];
|
|
28
|
-
}
|
|
5
|
+
middlewares = [];
|
|
6
|
+
routes = [];
|
|
29
7
|
addRoute(methods, path2, handler) {
|
|
30
8
|
const route = new Route(methods, path2, handler);
|
|
31
9
|
this.routes.push(route);
|
|
@@ -38,10 +16,10 @@ class Router {
|
|
|
38
16
|
const basePath = controller.basePath || "";
|
|
39
17
|
for (const route of controller.routes) {
|
|
40
18
|
const urlPath = path.join(basePath, route.path);
|
|
41
|
-
this.addRoute(route.methods, urlPath, (req, res) =>
|
|
19
|
+
this.addRoute(route.methods, urlPath, async (req, res) => {
|
|
42
20
|
const controllerInstance = controller.getInstance();
|
|
43
|
-
return
|
|
44
|
-
})
|
|
21
|
+
return await controllerInstance[route.handler]();
|
|
22
|
+
}).addMiddleware([...controller.baseMiddlewares, ...route.middlewares]);
|
|
45
23
|
}
|
|
46
24
|
}
|
|
47
25
|
addGlobalMiddleware(middlewares) {
|
|
@@ -74,7 +52,6 @@ class Router {
|
|
|
74
52
|
if (!match) {
|
|
75
53
|
return void 0;
|
|
76
54
|
}
|
|
77
|
-
request.query = Object.fromEntries(match.url.searchParams.entries());
|
|
78
55
|
request.params = match.params;
|
|
79
56
|
return new CompiledRoute(route, request, response, this.middlewares);
|
|
80
57
|
}
|
package/dist/Router.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Router.
|
|
1
|
+
{"version":3,"sources":["../src/Router.mts"],"sourcesContent":["import { CompiledRoute } from './CompiledRoute.mjs';\nimport { BaseController } from './Controller.mjs';\nimport { Middleware } from './Middleware.mjs';\nimport { MiddlewareFactory } from './MiddlewareFactory.mjs';\nimport { Route } from './Route.mjs';\nimport { HandlerType, HttpMethod, MiddlewareProvider } from './types.mjs';\nimport { LexerToken, Request, Response } from './types.mjs';\nimport path from 'path';\n\nexport class Router {\n private middlewares: MiddlewareProvider[] = [];\n routes: Route[] = [];\n addRoute(methods: HttpMethod[], path: string, handler: HandlerType) {\n const route: Route = new Route(methods, path, handler);\n this.routes.push(route);\n return route;\n }\n\n getMiddlewares() {\n return [...this.middlewares];\n }\n\n addController(controller: typeof BaseController) {\n const basePath = controller.basePath || '';\n for (const route of controller.routes) {\n const urlPath = path.join(basePath, route.path);\n this.addRoute(route.methods, urlPath, async (req: Request, res: Response) => {\n const controllerInstance = controller.getInstance();\n // @ts-ignore\n return await controllerInstance[route.handler]();\n }).addMiddleware([...controller.baseMiddlewares, ...route.middlewares]);\n }\n }\n\n addGlobalMiddleware(middlewares: MiddlewareProvider | MiddlewareProvider[]) {\n this.middlewares = this.middlewares.concat(middlewares);\n }\n\n resolve(request: Request): Route | undefined {\n for (const route of this.routes) {\n if (route.test(request)) {\n return route;\n }\n }\n return undefined;\n }\n\n resolveMultiple(request: Request): Route[] {\n const rc: Route[] = [];\n const url = new URL(request.url || '/', 'http://localhost');\n for (const route of this.routes) {\n if (route.testPath(url.pathname)) {\n rc.push(route);\n }\n }\n return rc;\n }\n\n getCompiledRoute(request: Request, response: Response) {\n const route = this.resolve(request);\n if (!route) {\n return undefined;\n }\n const match = route.match(request);\n if (!match) {\n return undefined;\n }\n\n request.params = match.params;\n return new CompiledRoute(route, request, response, this.middlewares);\n }\n}\n"],"mappings":"AAAA,SAAS,qBAAqB;AAI9B,SAAS,aAAa;AAGtB,OAAO,UAAU;AAEV,MAAM,OAAO;AAAA,EACV,cAAoC,CAAC;AAAA,EAC7C,SAAkB,CAAC;AAAA,EACnB,SAAS,SAAuBA,OAAc,SAAsB;AAClE,UAAM,QAAe,IAAI,MAAM,SAASA,OAAM,OAAO;AACrD,SAAK,OAAO,KAAK,KAAK;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,iBAAiB;AACf,WAAO,CAAC,GAAG,KAAK,WAAW;AAAA,EAC7B;AAAA,EAEA,cAAc,YAAmC;AAC/C,UAAM,WAAW,WAAW,YAAY;AACxC,eAAW,SAAS,WAAW,QAAQ;AACrC,YAAM,UAAU,KAAK,KAAK,UAAU,MAAM,IAAI;AAC9C,WAAK,SAAS,MAAM,SAAS,SAAS,OAAO,KAAc,QAAkB;AAC3E,cAAM,qBAAqB,WAAW,YAAY;AAElD,eAAO,MAAM,mBAAmB,MAAM,OAAO,EAAE;AAAA,MACjD,CAAC,EAAE,cAAc,CAAC,GAAG,WAAW,iBAAiB,GAAG,MAAM,WAAW,CAAC;AAAA,IACxE;AAAA,EACF;AAAA,EAEA,oBAAoB,aAAwD;AAC1E,SAAK,cAAc,KAAK,YAAY,OAAO,WAAW;AAAA,EACxD;AAAA,EAEA,QAAQ,SAAqC;AAC3C,eAAW,SAAS,KAAK,QAAQ;AAC/B,UAAI,MAAM,KAAK,OAAO,GAAG;AACvB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,gBAAgB,SAA2B;AACzC,UAAM,KAAc,CAAC;AACrB,UAAM,MAAM,IAAI,IAAI,QAAQ,OAAO,KAAK,kBAAkB;AAC1D,eAAW,SAAS,KAAK,QAAQ;AAC/B,UAAI,MAAM,SAAS,IAAI,QAAQ,GAAG;AAChC,WAAG,KAAK,KAAK;AAAA,MACf;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,iBAAiB,SAAkB,UAAoB;AACrD,UAAM,QAAQ,KAAK,QAAQ,OAAO;AAClC,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AACA,UAAM,QAAQ,MAAM,MAAM,OAAO;AACjC,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,YAAQ,SAAS,MAAM;AACvB,WAAO,IAAI,cAAc,OAAO,SAAS,UAAU,KAAK,WAAW;AAAA,EACrE;AACF;","names":["path"]}
|
package/dist/helpers.mjs
CHANGED
|
@@ -1,44 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
import { Middleware } from "./Middleware";
|
|
22
|
-
function runNext(middlewares, req, res, final) {
|
|
23
|
-
return __async(this, null, function* () {
|
|
24
|
-
let index = 0;
|
|
25
|
-
function next() {
|
|
26
|
-
return __async(this, null, function* () {
|
|
27
|
-
if (index >= middlewares.length) {
|
|
28
|
-
return yield final(req, res);
|
|
29
|
-
}
|
|
30
|
-
const middleware = middlewares[index++];
|
|
31
|
-
if (middleware instanceof Middleware) {
|
|
32
|
-
yield middleware.call(req, res, next);
|
|
33
|
-
} else if (typeof middleware === "function") {
|
|
34
|
-
yield middleware(req, res, next);
|
|
35
|
-
} else {
|
|
36
|
-
throw new Error("does not know how to run middleware");
|
|
37
|
-
}
|
|
38
|
-
});
|
|
1
|
+
import { Middleware } from "./Middleware.mjs";
|
|
2
|
+
async function runNext(middlewares, req, res, final) {
|
|
3
|
+
let index = 0;
|
|
4
|
+
async function next() {
|
|
5
|
+
if (index >= middlewares.length) {
|
|
6
|
+
return await final(req, res);
|
|
7
|
+
}
|
|
8
|
+
const middleware = middlewares[index++];
|
|
9
|
+
if (middleware instanceof Middleware) {
|
|
10
|
+
await middleware.call(req, res, next);
|
|
11
|
+
} else if (typeof middleware === "function") {
|
|
12
|
+
await middleware(req, res, next);
|
|
13
|
+
} else {
|
|
14
|
+
throw new Error("does not know how to run middleware");
|
|
39
15
|
}
|
|
40
|
-
|
|
41
|
-
|
|
16
|
+
}
|
|
17
|
+
await next();
|
|
42
18
|
}
|
|
43
19
|
export {
|
|
44
20
|
runNext
|
package/dist/helpers.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/helpers.
|
|
1
|
+
{"version":3,"sources":["../src/helpers.mts"],"sourcesContent":["import { Middleware } from './Middleware.mjs';\nimport { Request, Response } from './types.mjs';\n\nexport async function runNext(\n middlewares: Middleware[],\n req: Request,\n res: Response,\n final: (request: Request, response: Response) => Promise<void>\n) {\n let index = 0;\n\n async function next() {\n if (index >= middlewares.length) {\n return await final(req, res);\n }\n\n const middleware: Middleware | any = middlewares[index++];\n\n if (middleware instanceof Middleware) {\n await middleware.call(req, res, next);\n } else if (typeof middleware === 'function') {\n await middleware(req, res, next);\n } else {\n throw new Error('does not know how to run middleware');\n }\n }\n\n await next();\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAG3B,eAAsB,QACpB,aACA,KACA,KACA,OACA;AACA,MAAI,QAAQ;AAEZ,iBAAe,OAAO;AACpB,QAAI,SAAS,YAAY,QAAQ;AAC/B,aAAO,MAAM,MAAM,KAAK,GAAG;AAAA,IAC7B;AAEA,UAAM,aAA+B,YAAY,OAAO;AAExD,QAAI,sBAAsB,YAAY;AACpC,YAAM,WAAW,KAAK,KAAK,KAAK,IAAI;AAAA,IACtC,WAAW,OAAO,eAAe,YAAY;AAC3C,YAAM,WAAW,KAAK,KAAK,IAAI;AAAA,IACjC,OAAO;AACL,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAAA,EACF;AAEA,QAAM,KAAK;AACb;","names":[]}
|