routup 0.13.0 → 0.13.1

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2021-2022 Peter Placzek
3
+ Copyright (c) 2022-present Peter Placzek
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1,3 +1,3 @@
1
- import { Next, Response } from '@routup/core';
1
+ import type { Next, Response } from '@routup/core';
2
2
  export declare function processHandlerExecutionOutput(res: Response, next: Next, output?: unknown): void;
3
3
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/handler/utils.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAQ,MAAM,cAAc,CAAC;AAGpD,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,QAiBxF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/handler/utils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAInD,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,QAiBxF"}
package/dist/index.cjs CHANGED
@@ -359,8 +359,7 @@ class Router {
359
359
  return;
360
360
  }
361
361
  if (typeof err !== 'undefined') {
362
- res.statusCode = http.BadRequestErrorOptions.statusCode;
363
- res.statusMessage = http.BadRequestErrorOptions.message;
362
+ res.statusCode = 400;
364
363
  res.end();
365
364
  return;
366
365
  }
@@ -370,7 +369,7 @@ class Router {
370
369
  core.send(res, options);
371
370
  return;
372
371
  }
373
- res.statusCode = http.NotFoundErrorOptions.statusCode;
372
+ res.statusCode = 404;
374
373
  res.end();
375
374
  };
376
375
  let path = meta.path || core.useRequestPath(req);
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/utils/is-instance.ts","../src/utils/path.ts","../src/utils/promise.ts","../src/utils/request.ts","../src/handler/utils.ts","../src/path/matcher.ts","../src/layer/module.ts","../src/layer/utils.ts","../src/route/module.ts","../src/route/utils.ts","../src/router/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isInstance(input: unknown, name: string) {\n return (\n typeof input === 'object' &&\n input !== null &&\n (input as { '@instanceof': symbol })['@instanceof'] === Symbol.for(name)\n );\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { Path } from '../type';\n\nexport function isPath(input: unknown) : input is Path {\n return typeof input === 'string' || input instanceof RegExp;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from 'smob';\n\nexport function isPromise(p: unknown) : p is Promise<unknown> {\n return isObject(p) &&\n (\n p instanceof Promise ||\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof p.then === 'function'\n );\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { GatewayTimeoutErrorOptions } from '@ebec/http';\nimport { Next, Response } from '@routup/core';\n\n/* istanbul ignore next */\nexport function createRequestTimeout(res: Response, timeout: number, done?: Next) {\n const instance = setTimeout(() => {\n res.statusCode = GatewayTimeoutErrorOptions.statusCode;\n res.statusMessage = GatewayTimeoutErrorOptions.message;\n\n res.end();\n }, timeout);\n\n res.once('close', () => {\n clearTimeout(instance);\n\n if (typeof done === 'function') {\n done();\n }\n });\n\n res.once('error', (e) => {\n clearTimeout(instance);\n\n if (typeof done === 'function') {\n done(e);\n }\n });\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { Next, Response, send } from '@routup/core';\nimport { isPromise } from '../utils';\n\nexport function processHandlerExecutionOutput(res: Response, next: Next, output?: unknown) {\n if (isPromise(output)) {\n output\n .then((r) => {\n if (typeof r !== 'undefined') {\n send(res, r);\n }\n\n return r;\n })\n .catch(next);\n return;\n }\n\n if (typeof output !== 'undefined') {\n send(res, output);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n Key, pathToRegexp,\n} from 'path-to-regexp';\nimport { Path } from '../type';\nimport { PathMatcherExecResult, PathMatcherOptions } from './type';\n\nfunction decodeParam(val: unknown) {\n /* istanbul ignore next */\n if (typeof val !== 'string' || val.length === 0) {\n return val;\n }\n\n return decodeURIComponent(val);\n}\n\nexport class PathMatcher {\n path: Path;\n\n regexp : RegExp;\n\n regexpKeys : Key[] = [];\n\n regexpOptions: PathMatcherOptions;\n\n constructor(path: Path, options?: PathMatcherOptions) {\n this.path = path;\n this.regexpOptions = options || {};\n\n if (path instanceof RegExp) {\n this.regexp = path;\n } else {\n this.regexp = pathToRegexp(path, this.regexpKeys, options);\n }\n }\n\n test(path: string) {\n const fastSlash = this.path === '/' && this.regexpOptions.end === false;\n if (fastSlash) {\n return true;\n }\n\n return this.regexp.test(path);\n }\n\n exec(path: string) : PathMatcherExecResult | undefined {\n let match : RegExpExecArray | null = null;\n\n const fastSlash = this.path === '/' && this.regexpOptions.end === false;\n if (fastSlash) {\n return {\n path: '/',\n params: {},\n };\n }\n\n match = this.regexp.exec(path);\n\n if (!match) {\n return undefined;\n }\n\n if (this.path instanceof RegExp) {\n return {\n path,\n params: {\n 0: decodeParam(match[0]),\n },\n };\n }\n\n const output : Record<string, unknown> = {};\n\n for (let i = 1; i < match.length; i++) {\n const key = this.regexpKeys[i - 1];\n const prop = key.name;\n const val = decodeParam(match[i]);\n\n if (typeof val !== 'undefined') {\n output[prop] = val;\n }\n }\n\n return {\n path: match[0],\n params: output,\n };\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BadRequestError } from '@ebec/http';\nimport {\n Next, Request, Response, setRequestMountPath, setRequestParams,\n} from '@routup/core';\nimport { processHandlerExecutionOutput } from '../handler';\nimport { PathMatcher } from '../path';\nimport {\n DispatcherMeta,\n} from '../type';\nimport { LayerOptions } from './type';\n\nexport class Layer {\n readonly '@instanceof' = Symbol.for('Layer');\n\n protected fn : CallableFunction;\n\n protected pathMatcher : PathMatcher;\n\n // --------------------------------------------------\n\n constructor(\n options: LayerOptions,\n fn: CallableFunction,\n ) {\n this.pathMatcher = new PathMatcher(options.path, options.pathMatcher);\n this.fn = fn;\n }\n\n // --------------------------------------------------\n\n isError() {\n return this.fn.length === 4;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: CallableFunction\n ) : void;\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: CallableFunction,\n err: Error,\n ) : void;\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: Next,\n err?: Error,\n ) : void {\n setRequestParams(req, meta.params || {});\n setRequestMountPath(req, meta.mountPath || '/');\n\n if (typeof err !== 'undefined') {\n if (this.fn.length === 4) {\n try {\n this.fn(err, req, res, next);\n } catch (e) {\n /* istanbul ignore next */\n /* istanbul ignore next */\n if (e instanceof Error) {\n next(e);\n } else {\n next(new BadRequestError({\n message: 'The request could not be processed by the error handler.',\n }));\n }\n }\n\n return;\n }\n\n /* istanbul ignore next */\n next(err);\n /* istanbul ignore next */\n return;\n }\n\n /* istanbul ignore next */\n if (this.fn.length > 3) {\n next();\n return;\n }\n\n try {\n const output = this.fn(req, res, next);\n\n processHandlerExecutionOutput(res, next, output);\n } catch (e) {\n /* istanbul ignore next */\n if (e instanceof Error) {\n next(e);\n } else {\n next(new BadRequestError({\n message: 'The request could not be processed by the handler.',\n }));\n }\n }\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n return this.pathMatcher.test(path);\n }\n\n exec(path: string) {\n return this.pathMatcher.exec(path);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isInstance } from '../utils';\nimport { Layer } from './module';\n\nexport function isLayerInstance(input: unknown) : input is Layer {\n return isInstance(input, 'Layer');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty, merge } from 'smob';\nimport {\n Handler, Method, Next, Request, Response,\n} from '@routup/core';\nimport { Layer } from '../layer';\nimport { PathMatcher, PathMatcherOptions } from '../path';\nimport {\n DispatcherMeta,\n Path,\n} from '../type';\nimport { RouteOptions } from './type';\n\nexport class Route {\n readonly '@instanceof' = Symbol.for('Route');\n\n public path : Path;\n\n protected pathMatcher : PathMatcher;\n\n protected pathMatcherOptions : PathMatcherOptions;\n\n protected layers : Record<string, Layer[]> = {};\n\n // --------------------------------------------------\n\n constructor(options: RouteOptions) {\n this.path = options.path;\n\n this.pathMatcherOptions = {\n end: true,\n strict: this.isStrictPath(),\n ...options.pathMatcher,\n };\n this.pathMatcher = new PathMatcher(this.path, this.pathMatcherOptions);\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n return this.pathMatcher.test(path);\n }\n\n matchMethod(method: string) : boolean {\n let name = method.toLowerCase();\n\n if (\n name === Method.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = Method.GET;\n }\n\n return Object.prototype.hasOwnProperty.call(this.layers, name);\n }\n\n // --------------------------------------------------\n\n getMethods() : string[] {\n const keys = Object.keys(this.layers);\n\n if (\n hasOwnProperty(this.layers, Method.GET) &&\n !hasOwnProperty(this.layers, Method.HEAD)\n ) {\n keys.push(Method.HEAD);\n }\n\n return keys;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n done: Next,\n ) : void {\n /* istanbul ignore next */\n if (!req.method) {\n done();\n return;\n }\n\n let name = req.method.toLowerCase();\n\n if (\n name === Method.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = Method.GET;\n }\n\n const layers = this.layers[name];\n\n /* istanbul ignore next */\n if (\n typeof layers === 'undefined' ||\n layers.length === 0 ||\n typeof meta.path === 'undefined'\n ) {\n done();\n\n return;\n }\n\n const layerMeta : DispatcherMeta = {\n ...meta,\n };\n\n const output = this.pathMatcher.exec(meta.path);\n if (output) {\n layerMeta.params = merge({}, (meta.params || {}), output.params);\n }\n\n let index = -1;\n\n const next = (err?: Error) : void => {\n index++;\n\n if (index >= layers.length) {\n setImmediate(done, err);\n return;\n }\n\n const layer = layers[index];\n if (\n err &&\n !layer.isError()\n ) {\n next(err);\n return;\n }\n\n layer.dispatch(req, res, { ...layerMeta }, next);\n };\n\n next();\n }\n\n // --------------------------------------------------\n\n register(method: `${Method}`, ...handlers: Handler[]) {\n this.layers[method] = [];\n\n for (let i = 0; i < handlers.length; i++) {\n const layer = new Layer(\n {\n path: this.path,\n pathMatcher: this.pathMatcherOptions,\n },\n handlers[i],\n );\n\n this.layers[method].push(layer);\n }\n }\n\n get(...handlers: Handler[]) {\n return this.register(Method.GET, ...handlers);\n }\n\n post(...handlers: Handler[]) {\n return this.register(Method.POST, ...handlers);\n }\n\n put(...handlers: Handler[]) {\n return this.register(Method.PUT, ...handlers);\n }\n\n patch(...handlers: Handler[]) {\n return this.register(Method.PATCH, ...handlers);\n }\n\n delete(...handlers: Handler[]) {\n return this.register(Method.DELETE, ...handlers);\n }\n\n head(...handlers: Handler[]) {\n return this.register(Method.HEAD, ...handlers);\n }\n\n options(...handlers: Handler[]) {\n return this.register(Method.OPTIONS, ...handlers);\n }\n\n // --------------------------------------------------\n\n private isStrictPath() {\n return typeof this.path !== 'string' ||\n (this.path !== '/' && this.path.length !== 0);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isInstance } from '../utils';\nimport { Route } from './module';\n\nexport function isRouteInstance(input: unknown) : input is Route {\n return isInstance(input, 'Route');\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n BadRequestErrorOptions,\n NotFoundErrorOptions,\n} from '@ebec/http';\nimport { RequestListener, createServer } from 'node:http';\nimport { merge, mergeArrays } from 'smob';\nimport {\n ErrorHandler,\n Handler,\n HeaderName,\n Method,\n Next,\n Request,\n Response,\n cleanDoubleSlashes,\n send,\n useRequestPath,\n withLeadingSlash,\n withoutTrailingSlash,\n} from '@routup/core';\nimport { PathMatcher, PathMatcherOptions } from '../path';\nimport {\n createRequestTimeout,\n isInstance,\n isPath,\n\n} from '../utils';\nimport { Layer, isLayerInstance } from '../layer';\nimport { Route, isRouteInstance } from '../route';\nimport {\n DispatcherMeta,\n Path,\n} from '../type';\nimport { RouterOptions } from './type';\n\nexport function isRouterInstance(input: unknown) : input is Router {\n return isInstance(input, 'Router');\n}\n\nexport class Router {\n readonly '@instanceof' = Symbol.for('Router');\n\n /**\n * Array of mounted layers, routes & routers.\n *\n * @protected\n */\n protected stack : (Router | Route | Layer)[] = [];\n\n /**\n * Mount path of instance\n *\n * @protected\n */\n protected path : Path | undefined;\n\n /**\n * Path matcher for the current mount path.\n *\n * @protected\n */\n protected pathMatcher : PathMatcher | undefined;\n\n /**\n * Path matcher options.\n *\n * @protected\n */\n protected pathMatcherOptions : PathMatcherOptions;\n\n /**\n * Is this the root instance?\n *\n * @protected\n */\n protected isRoot : boolean | undefined;\n\n /**\n * Timeout before the router decides to abort the request.\n *\n * @protected\n */\n protected timeout: number | undefined;\n\n // --------------------------------------------------\n\n constructor(ctx?: RouterOptions) {\n ctx = ctx || {};\n\n this.pathMatcherOptions = {\n end: false,\n sensitive: true,\n ...(ctx.pathMatcher || {}),\n };\n\n this.timeout = ctx.timeout;\n\n this.setPath(ctx.path || '/');\n }\n\n // --------------------------------------------------\n\n setPathMatcherOptions(input: PathMatcherOptions) {\n this.pathMatcherOptions = input;\n\n if (this.pathMatcher) {\n this.pathMatcher.regexpOptions = this.pathMatcherOptions;\n }\n }\n\n setPath(value: Path) {\n if (value === '/' || !isPath(value)) {\n this.path = '/';\n return;\n }\n\n if (typeof value === 'string') {\n this.path = withLeadingSlash(withoutTrailingSlash(`${value}`));\n } else {\n this.path = value;\n }\n\n this.pathMatcher = new PathMatcher(this.path, this.pathMatcherOptions);\n }\n\n // --------------------------------------------------\n\n createListener() : RequestListener {\n this.isRoot = true;\n\n return (req, res) => {\n this.dispatch(req, res);\n };\n }\n\n /* istanbul ignore next */\n listen(port: number) {\n const server = createServer(this.createListener());\n return server.listen(port);\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n if (this.pathMatcher) {\n return this.pathMatcher.test(path);\n }\n\n return true;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta?: DispatcherMeta,\n done?: Next,\n ) : void {\n let index = -1;\n\n meta = meta || {};\n\n let allowedMethods : string[] = [];\n\n if (\n this.isRoot &&\n typeof this.timeout === 'number'\n ) {\n createRequestTimeout(res, this.timeout, done);\n }\n\n const fn = (err?: Error) => {\n /* istanbul ignore if */\n if (!this.isRoot) {\n if (typeof done !== 'undefined') {\n setImmediate(() => done(err));\n }\n\n return;\n }\n\n if (typeof err !== 'undefined') {\n res.statusCode = BadRequestErrorOptions.statusCode;\n res.statusMessage = BadRequestErrorOptions.message;\n\n res.end();\n\n return;\n }\n\n if (\n req.method &&\n req.method.toLowerCase() === Method.OPTIONS\n ) {\n const options = allowedMethods\n .map((key) => key.toUpperCase())\n .join(',');\n\n res.setHeader(HeaderName.ALLOW, options);\n send(res, options);\n\n return;\n }\n\n res.statusCode = NotFoundErrorOptions.statusCode;\n res.end();\n };\n\n let path = meta.path || useRequestPath(req);\n\n if (this.pathMatcher) {\n const output = this.pathMatcher.exec(path);\n if (typeof output !== 'undefined') {\n meta.mountPath = cleanDoubleSlashes(`${meta.mountPath || ''}/${output.path}`);\n\n if (path === output.path) {\n path = '/';\n } else {\n path = withLeadingSlash(path.substring(output.path.length));\n }\n\n meta.params = merge(meta.params || {}, output.params);\n }\n }\n\n meta.path = path;\n\n if (!meta.mountPath) {\n meta.mountPath = '/';\n }\n\n const next = (err?: Error) : void => {\n if (index >= this.stack.length) {\n setImmediate(fn, err);\n return;\n }\n\n let layer : Route | Router | Layer | undefined;\n let match = false;\n\n while (!match && index < this.stack.length) {\n index++;\n\n layer = this.stack[index];\n\n if (isLayerInstance(layer)) {\n if (!layer.isError() && err) {\n continue;\n }\n\n match = layer.matchPath(path);\n }\n\n if (isRouterInstance(layer)) {\n match = layer.matchPath(path);\n }\n\n if (isRouteInstance(layer)) {\n match = layer.matchPath(path);\n\n if (\n req.method &&\n !layer.matchMethod(req.method)\n ) {\n match = false;\n\n if (req.method.toLowerCase() === Method.OPTIONS) {\n allowedMethods = mergeArrays(\n allowedMethods,\n layer.getMethods(),\n true,\n );\n }\n }\n }\n }\n\n if (!match || !layer) {\n setImmediate(fn, err);\n return;\n }\n\n const layerMeta : DispatcherMeta = { ...meta };\n\n if (isLayerInstance(layer)) {\n const output = layer.exec(path);\n\n if (output) {\n layerMeta.params = merge(output.params, layerMeta.params || {});\n layerMeta.mountPath = cleanDoubleSlashes(`${layerMeta.mountPath || ''}/${output.path}`);\n }\n }\n\n if (err) {\n if (\n isLayerInstance(layer) &&\n layer.isError()\n ) {\n layer.dispatch(req, res, layerMeta, next, err);\n return;\n }\n\n /* istanbul ignore next */\n setImmediate(next, err);\n return;\n }\n\n layer.dispatch(req, res, layerMeta, next);\n };\n\n next();\n }\n\n /* istanbul ignore next */\n dispatchAsync(\n req: Request,\n res: Response,\n ) : Promise<void> {\n return new Promise((resolve, reject) => {\n this.dispatch(req, res, {}, (err?: Error) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve();\n });\n });\n }\n\n // --------------------------------------------------\n\n route(\n path: Path,\n ) : Route {\n if (\n typeof path === 'string' &&\n path.length > 0\n ) {\n path = withLeadingSlash(path);\n }\n\n const index = this.stack.findIndex(\n (item) => isRouteInstance(item) && item.path === path,\n );\n\n if (index !== -1) {\n return this.stack[index] as Route;\n }\n\n const route = new Route({\n path,\n pathMatcher: {\n sensitive: this.pathMatcherOptions.sensitive,\n },\n });\n this.stack.push(route);\n\n return route;\n }\n\n delete(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.delete(...handlers);\n\n return this;\n }\n\n get(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.get(...handlers);\n\n return this;\n }\n\n post(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.post(...handlers);\n\n return this;\n }\n\n put(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.put(...handlers);\n\n return this;\n }\n\n patch(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.patch(...handlers);\n\n return this;\n }\n\n head(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.head(...handlers);\n\n return this;\n }\n\n options(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.options(...handlers);\n\n return this;\n }\n\n // --------------------------------------------------\n\n use(router: Router) : this;\n\n use(handler: Handler) : this;\n\n use(handler: ErrorHandler) : this;\n\n use(path: Path, router: Router) : this;\n\n use(path: Path, handler: Handler) : this;\n\n use(path: Path, handler: ErrorHandler) : this;\n\n use(...input: unknown[]) : this {\n /* istanbul ignore next */\n if (input.length === 0) {\n return this;\n }\n\n let path : Path | undefined;\n\n if (isPath(input[0])) {\n path = input.shift() as Path;\n }\n\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n if (isRouterInstance(item)) {\n if (path) {\n item.setPath(path);\n }\n item.setPathMatcherOptions(this.pathMatcherOptions);\n this.stack.push(item);\n continue;\n }\n\n if (typeof item === 'function') {\n this.stack.push(new Layer({\n path: path || '/',\n pathMatcher: {\n strict: false,\n end: false,\n sensitive: this.pathMatcherOptions.sensitive,\n },\n }, item));\n }\n }\n\n return this;\n }\n}\n"],"names":["isInstance","input","name","Symbol","for","isPath","RegExp","isPromise","p","isObject","Promise","then","createRequestTimeout","res","timeout","done","instance","setTimeout","statusCode","GatewayTimeoutErrorOptions","statusMessage","message","end","once","clearTimeout","e","processHandlerExecutionOutput","next","output","r","send","catch","decodeParam","val","length","decodeURIComponent","PathMatcher","test","path","fastSlash","regexpOptions","regexp","exec","match","params","undefined","i","key","regexpKeys","prop","constructor","options","pathToRegexp","Layer","isError","fn","dispatch","req","meta","err","setRequestParams","setRequestMountPath","mountPath","Error","BadRequestError","matchPath","pathMatcher","isLayerInstance","Route","matchMethod","method","toLowerCase","Method","HEAD","hasOwnProperty","layers","GET","Object","prototype","call","getMethods","keys","push","layerMeta","merge","index","setImmediate","layer","register","handlers","pathMatcherOptions","get","post","POST","put","PUT","patch","PATCH","delete","DELETE","head","OPTIONS","isStrictPath","strict","isRouteInstance","isRouterInstance","Router","setPathMatcherOptions","setPath","value","withLeadingSlash","withoutTrailingSlash","createListener","isRoot","listen","port","server","createServer","allowedMethods","BadRequestErrorOptions","map","toUpperCase","join","setHeader","HeaderName","ALLOW","NotFoundErrorOptions","useRequestPath","cleanDoubleSlashes","substring","stack","mergeArrays","dispatchAsync","resolve","reject","route","findIndex","item","sensitive","use","shift","ctx"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/utils/is-instance.ts","../src/utils/path.ts","../src/utils/promise.ts","../src/utils/request.ts","../src/handler/utils.ts","../src/path/matcher.ts","../src/layer/module.ts","../src/layer/utils.ts","../src/route/module.ts","../src/route/utils.ts","../src/router/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isInstance(input: unknown, name: string) {\n return (\n typeof input === 'object' &&\n input !== null &&\n (input as { '@instanceof': symbol })['@instanceof'] === Symbol.for(name)\n );\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Path } from '../type';\n\nexport function isPath(input: unknown) : input is Path {\n return typeof input === 'string' || input instanceof RegExp;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from 'smob';\n\nexport function isPromise(p: unknown) : p is Promise<unknown> {\n return isObject(p) &&\n (\n p instanceof Promise ||\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof p.then === 'function'\n );\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { GatewayTimeoutErrorOptions } from '@ebec/http';\nimport type { Next, Response } from '@routup/core';\n\n/* istanbul ignore next */\nexport function createRequestTimeout(res: Response, timeout: number, done?: Next) {\n const instance = setTimeout(() => {\n res.statusCode = GatewayTimeoutErrorOptions.statusCode;\n res.statusMessage = GatewayTimeoutErrorOptions.message;\n\n res.end();\n }, timeout);\n\n res.once('close', () => {\n clearTimeout(instance);\n\n if (typeof done === 'function') {\n done();\n }\n });\n\n res.once('error', (e) => {\n clearTimeout(instance);\n\n if (typeof done === 'function') {\n done(e);\n }\n });\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Next, Response } from '@routup/core';\nimport { send } from '@routup/core';\nimport { isPromise } from '../utils';\n\nexport function processHandlerExecutionOutput(res: Response, next: Next, output?: unknown) {\n if (isPromise(output)) {\n output\n .then((r) => {\n if (typeof r !== 'undefined') {\n send(res, r);\n }\n\n return r;\n })\n .catch(next);\n return;\n }\n\n if (typeof output !== 'undefined') {\n send(res, output);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Key } from 'path-to-regexp';\nimport { pathToRegexp } from 'path-to-regexp';\nimport type { Path } from '../type';\nimport type { PathMatcherExecResult, PathMatcherOptions } from './type';\n\nfunction decodeParam(val: unknown) {\n /* istanbul ignore next */\n if (typeof val !== 'string' || val.length === 0) {\n return val;\n }\n\n return decodeURIComponent(val);\n}\n\nexport class PathMatcher {\n path: Path;\n\n regexp : RegExp;\n\n regexpKeys : Key[] = [];\n\n regexpOptions: PathMatcherOptions;\n\n constructor(path: Path, options?: PathMatcherOptions) {\n this.path = path;\n this.regexpOptions = options || {};\n\n if (path instanceof RegExp) {\n this.regexp = path;\n } else {\n this.regexp = pathToRegexp(path, this.regexpKeys, options);\n }\n }\n\n test(path: string) {\n const fastSlash = this.path === '/' && this.regexpOptions.end === false;\n if (fastSlash) {\n return true;\n }\n\n return this.regexp.test(path);\n }\n\n exec(path: string) : PathMatcherExecResult | undefined {\n let match : RegExpExecArray | null = null;\n\n const fastSlash = this.path === '/' && this.regexpOptions.end === false;\n if (fastSlash) {\n return {\n path: '/',\n params: {},\n };\n }\n\n match = this.regexp.exec(path);\n\n if (!match) {\n return undefined;\n }\n\n if (this.path instanceof RegExp) {\n return {\n path,\n params: {\n 0: decodeParam(match[0]),\n },\n };\n }\n\n const output : Record<string, unknown> = {};\n\n for (let i = 1; i < match.length; i++) {\n const key = this.regexpKeys[i - 1];\n const prop = key.name;\n const val = decodeParam(match[i]);\n\n if (typeof val !== 'undefined') {\n output[prop] = val;\n }\n }\n\n return {\n path: match[0],\n params: output,\n };\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BadRequestError } from '@ebec/http';\nimport type { Next, Request, Response } from '@routup/core';\nimport { setRequestMountPath, setRequestParams } from '@routup/core';\nimport { processHandlerExecutionOutput } from '../handler';\nimport { PathMatcher } from '../path';\nimport type {\n DispatcherMeta,\n} from '../type';\nimport type { LayerOptions } from './type';\n\nexport class Layer {\n readonly '@instanceof' = Symbol.for('Layer');\n\n protected fn : CallableFunction;\n\n protected pathMatcher : PathMatcher;\n\n // --------------------------------------------------\n\n constructor(\n options: LayerOptions,\n fn: CallableFunction,\n ) {\n this.pathMatcher = new PathMatcher(options.path, options.pathMatcher);\n this.fn = fn;\n }\n\n // --------------------------------------------------\n\n isError() {\n return this.fn.length === 4;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: CallableFunction\n ) : void;\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: CallableFunction,\n err: Error,\n ) : void;\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: Next,\n err?: Error,\n ) : void {\n setRequestParams(req, meta.params || {});\n setRequestMountPath(req, meta.mountPath || '/');\n\n if (typeof err !== 'undefined') {\n if (this.fn.length === 4) {\n try {\n this.fn(err, req, res, next);\n } catch (e) {\n /* istanbul ignore next */\n /* istanbul ignore next */\n if (e instanceof Error) {\n next(e);\n } else {\n next(new BadRequestError({\n message: 'The request could not be processed by the error handler.',\n }));\n }\n }\n\n return;\n }\n\n /* istanbul ignore next */\n next(err);\n /* istanbul ignore next */\n return;\n }\n\n /* istanbul ignore next */\n if (this.fn.length > 3) {\n next();\n return;\n }\n\n try {\n const output = this.fn(req, res, next);\n\n processHandlerExecutionOutput(res, next, output);\n } catch (e) {\n /* istanbul ignore next */\n if (e instanceof Error) {\n next(e);\n } else {\n next(new BadRequestError({\n message: 'The request could not be processed by the handler.',\n }));\n }\n }\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n return this.pathMatcher.test(path);\n }\n\n exec(path: string) {\n return this.pathMatcher.exec(path);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isInstance } from '../utils';\nimport type { Layer } from './module';\n\nexport function isLayerInstance(input: unknown) : input is Layer {\n return isInstance(input, 'Layer');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty, merge } from 'smob';\nimport type {\n Handler, Next, Request, Response,\n} from '@routup/core';\nimport { Method } from '@routup/core';\nimport { Layer } from '../layer';\nimport type { PathMatcherOptions } from '../path';\nimport { PathMatcher } from '../path';\nimport type {\n DispatcherMeta,\n Path,\n} from '../type';\nimport type { RouteOptions } from './type';\n\nexport class Route {\n readonly '@instanceof' = Symbol.for('Route');\n\n public path : Path;\n\n protected pathMatcher : PathMatcher;\n\n protected pathMatcherOptions : PathMatcherOptions;\n\n protected layers : Record<string, Layer[]> = {};\n\n // --------------------------------------------------\n\n constructor(options: RouteOptions) {\n this.path = options.path;\n\n this.pathMatcherOptions = {\n end: true,\n strict: this.isStrictPath(),\n ...options.pathMatcher,\n };\n this.pathMatcher = new PathMatcher(this.path, this.pathMatcherOptions);\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n return this.pathMatcher.test(path);\n }\n\n matchMethod(method: string) : boolean {\n let name = method.toLowerCase();\n\n if (\n name === Method.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = Method.GET;\n }\n\n return Object.prototype.hasOwnProperty.call(this.layers, name);\n }\n\n // --------------------------------------------------\n\n getMethods() : string[] {\n const keys = Object.keys(this.layers);\n\n if (\n hasOwnProperty(this.layers, Method.GET) &&\n !hasOwnProperty(this.layers, Method.HEAD)\n ) {\n keys.push(Method.HEAD);\n }\n\n return keys;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n done: Next,\n ) : void {\n /* istanbul ignore next */\n if (!req.method) {\n done();\n return;\n }\n\n let name = req.method.toLowerCase();\n\n if (\n name === Method.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = Method.GET;\n }\n\n const layers = this.layers[name];\n\n /* istanbul ignore next */\n if (\n typeof layers === 'undefined' ||\n layers.length === 0 ||\n typeof meta.path === 'undefined'\n ) {\n done();\n\n return;\n }\n\n const layerMeta : DispatcherMeta = {\n ...meta,\n };\n\n const output = this.pathMatcher.exec(meta.path);\n if (output) {\n layerMeta.params = merge({}, (meta.params || {}), output.params);\n }\n\n let index = -1;\n\n const next = (err?: Error) : void => {\n index++;\n\n if (index >= layers.length) {\n setImmediate(done, err);\n return;\n }\n\n const layer = layers[index];\n if (\n err &&\n !layer.isError()\n ) {\n next(err);\n return;\n }\n\n layer.dispatch(req, res, { ...layerMeta }, next);\n };\n\n next();\n }\n\n // --------------------------------------------------\n\n register(method: `${Method}`, ...handlers: Handler[]) {\n this.layers[method] = [];\n\n for (let i = 0; i < handlers.length; i++) {\n const layer = new Layer(\n {\n path: this.path,\n pathMatcher: this.pathMatcherOptions,\n },\n handlers[i],\n );\n\n this.layers[method].push(layer);\n }\n }\n\n get(...handlers: Handler[]) {\n return this.register(Method.GET, ...handlers);\n }\n\n post(...handlers: Handler[]) {\n return this.register(Method.POST, ...handlers);\n }\n\n put(...handlers: Handler[]) {\n return this.register(Method.PUT, ...handlers);\n }\n\n patch(...handlers: Handler[]) {\n return this.register(Method.PATCH, ...handlers);\n }\n\n delete(...handlers: Handler[]) {\n return this.register(Method.DELETE, ...handlers);\n }\n\n head(...handlers: Handler[]) {\n return this.register(Method.HEAD, ...handlers);\n }\n\n options(...handlers: Handler[]) {\n return this.register(Method.OPTIONS, ...handlers);\n }\n\n // --------------------------------------------------\n\n private isStrictPath() {\n return typeof this.path !== 'string' ||\n (this.path !== '/' && this.path.length !== 0);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isInstance } from '../utils';\nimport type { Route } from './module';\n\nexport function isRouteInstance(input: unknown) : input is Route {\n return isInstance(input, 'Route');\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n BadRequestErrorOptions,\n NotFoundErrorOptions,\n} from '@ebec/http';\nimport type { RequestListener } from 'node:http';\nimport { createServer } from 'node:http';\nimport { merge, mergeArrays } from 'smob';\nimport type {\n ErrorHandler,\n Handler,\n Next,\n Request,\n Response,\n} from '@routup/core';\nimport {\n HeaderName,\n Method,\n cleanDoubleSlashes,\n send,\n useRequestPath,\n withLeadingSlash,\n withoutTrailingSlash,\n} from '@routup/core';\nimport type { PathMatcherOptions } from '../path';\nimport { PathMatcher } from '../path';\nimport {\n createRequestTimeout,\n isInstance,\n isPath,\n\n} from '../utils';\nimport { Layer, isLayerInstance } from '../layer';\nimport { Route, isRouteInstance } from '../route';\nimport type {\n DispatcherMeta,\n Path,\n} from '../type';\nimport type { RouterOptions } from './type';\n\nexport function isRouterInstance(input: unknown) : input is Router {\n return isInstance(input, 'Router');\n}\n\nexport class Router {\n readonly '@instanceof' = Symbol.for('Router');\n\n /**\n * Array of mounted layers, routes & routers.\n *\n * @protected\n */\n protected stack : (Router | Route | Layer)[] = [];\n\n /**\n * Mount path of instance\n *\n * @protected\n */\n protected path : Path | undefined;\n\n /**\n * Path matcher for the current mount path.\n *\n * @protected\n */\n protected pathMatcher : PathMatcher | undefined;\n\n /**\n * Path matcher options.\n *\n * @protected\n */\n protected pathMatcherOptions : PathMatcherOptions;\n\n /**\n * Is this the root instance?\n *\n * @protected\n */\n protected isRoot : boolean | undefined;\n\n /**\n * Timeout before the router decides to abort the request.\n *\n * @protected\n */\n protected timeout: number | undefined;\n\n // --------------------------------------------------\n\n constructor(ctx?: RouterOptions) {\n ctx = ctx || {};\n\n this.pathMatcherOptions = {\n end: false,\n sensitive: true,\n ...(ctx.pathMatcher || {}),\n };\n\n this.timeout = ctx.timeout;\n\n this.setPath(ctx.path || '/');\n }\n\n // --------------------------------------------------\n\n setPathMatcherOptions(input: PathMatcherOptions) {\n this.pathMatcherOptions = input;\n\n if (this.pathMatcher) {\n this.pathMatcher.regexpOptions = this.pathMatcherOptions;\n }\n }\n\n setPath(value: Path) {\n if (value === '/' || !isPath(value)) {\n this.path = '/';\n return;\n }\n\n if (typeof value === 'string') {\n this.path = withLeadingSlash(withoutTrailingSlash(`${value}`));\n } else {\n this.path = value;\n }\n\n this.pathMatcher = new PathMatcher(this.path, this.pathMatcherOptions);\n }\n\n // --------------------------------------------------\n\n createListener() : RequestListener {\n this.isRoot = true;\n\n return (req, res) => {\n this.dispatch(req, res);\n };\n }\n\n /* istanbul ignore next */\n listen(port: number) {\n const server = createServer(this.createListener());\n return server.listen(port);\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n if (this.pathMatcher) {\n return this.pathMatcher.test(path);\n }\n\n return true;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta?: DispatcherMeta,\n done?: Next,\n ) : void {\n let index = -1;\n\n meta = meta || {};\n\n let allowedMethods : string[] = [];\n\n if (\n this.isRoot &&\n typeof this.timeout === 'number'\n ) {\n createRequestTimeout(res, this.timeout, done);\n }\n\n const fn = (err?: Error) => {\n /* istanbul ignore if */\n if (!this.isRoot) {\n if (typeof done !== 'undefined') {\n setImmediate(() => done(err));\n }\n\n return;\n }\n\n if (typeof err !== 'undefined') {\n res.statusCode = 400;\n res.end();\n\n return;\n }\n\n if (\n req.method &&\n req.method.toLowerCase() === Method.OPTIONS\n ) {\n const options = allowedMethods\n .map((key) => key.toUpperCase())\n .join(',');\n\n res.setHeader(HeaderName.ALLOW, options);\n send(res, options);\n\n return;\n }\n\n res.statusCode = 404;\n res.end();\n };\n\n let path = meta.path || useRequestPath(req);\n\n if (this.pathMatcher) {\n const output = this.pathMatcher.exec(path);\n if (typeof output !== 'undefined') {\n meta.mountPath = cleanDoubleSlashes(`${meta.mountPath || ''}/${output.path}`);\n\n if (path === output.path) {\n path = '/';\n } else {\n path = withLeadingSlash(path.substring(output.path.length));\n }\n\n meta.params = merge(meta.params || {}, output.params);\n }\n }\n\n meta.path = path;\n\n if (!meta.mountPath) {\n meta.mountPath = '/';\n }\n\n const next = (err?: Error) : void => {\n if (index >= this.stack.length) {\n setImmediate(fn, err);\n return;\n }\n\n let layer : Route | Router | Layer | undefined;\n let match = false;\n\n while (!match && index < this.stack.length) {\n index++;\n\n layer = this.stack[index];\n\n if (isLayerInstance(layer)) {\n if (!layer.isError() && err) {\n continue;\n }\n\n match = layer.matchPath(path);\n }\n\n if (isRouterInstance(layer)) {\n match = layer.matchPath(path);\n }\n\n if (isRouteInstance(layer)) {\n match = layer.matchPath(path);\n\n if (\n req.method &&\n !layer.matchMethod(req.method)\n ) {\n match = false;\n\n if (req.method.toLowerCase() === Method.OPTIONS) {\n allowedMethods = mergeArrays(\n allowedMethods,\n layer.getMethods(),\n true,\n );\n }\n }\n }\n }\n\n if (!match || !layer) {\n setImmediate(fn, err);\n return;\n }\n\n const layerMeta : DispatcherMeta = { ...meta };\n\n if (isLayerInstance(layer)) {\n const output = layer.exec(path);\n\n if (output) {\n layerMeta.params = merge(output.params, layerMeta.params || {});\n layerMeta.mountPath = cleanDoubleSlashes(`${layerMeta.mountPath || ''}/${output.path}`);\n }\n }\n\n if (err) {\n if (\n isLayerInstance(layer) &&\n layer.isError()\n ) {\n layer.dispatch(req, res, layerMeta, next, err);\n return;\n }\n\n /* istanbul ignore next */\n setImmediate(next, err);\n return;\n }\n\n layer.dispatch(req, res, layerMeta, next);\n };\n\n next();\n }\n\n /* istanbul ignore next */\n dispatchAsync(\n req: Request,\n res: Response,\n ) : Promise<void> {\n return new Promise((resolve, reject) => {\n this.dispatch(req, res, {}, (err?: Error) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve();\n });\n });\n }\n\n // --------------------------------------------------\n\n route(\n path: Path,\n ) : Route {\n if (\n typeof path === 'string' &&\n path.length > 0\n ) {\n path = withLeadingSlash(path);\n }\n\n const index = this.stack.findIndex(\n (item) => isRouteInstance(item) && item.path === path,\n );\n\n if (index !== -1) {\n return this.stack[index] as Route;\n }\n\n const route = new Route({\n path,\n pathMatcher: {\n sensitive: this.pathMatcherOptions.sensitive,\n },\n });\n this.stack.push(route);\n\n return route;\n }\n\n delete(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.delete(...handlers);\n\n return this;\n }\n\n get(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.get(...handlers);\n\n return this;\n }\n\n post(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.post(...handlers);\n\n return this;\n }\n\n put(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.put(...handlers);\n\n return this;\n }\n\n patch(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.patch(...handlers);\n\n return this;\n }\n\n head(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.head(...handlers);\n\n return this;\n }\n\n options(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.options(...handlers);\n\n return this;\n }\n\n // --------------------------------------------------\n\n use(router: Router) : this;\n\n use(handler: Handler) : this;\n\n use(handler: ErrorHandler) : this;\n\n use(path: Path, router: Router) : this;\n\n use(path: Path, handler: Handler) : this;\n\n use(path: Path, handler: ErrorHandler) : this;\n\n use(...input: unknown[]) : this {\n /* istanbul ignore next */\n if (input.length === 0) {\n return this;\n }\n\n let path : Path | undefined;\n\n if (isPath(input[0])) {\n path = input.shift() as Path;\n }\n\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n if (isRouterInstance(item)) {\n if (path) {\n item.setPath(path);\n }\n item.setPathMatcherOptions(this.pathMatcherOptions);\n this.stack.push(item);\n continue;\n }\n\n if (typeof item === 'function') {\n this.stack.push(new Layer({\n path: path || '/',\n pathMatcher: {\n strict: false,\n end: false,\n sensitive: this.pathMatcherOptions.sensitive,\n },\n }, item));\n }\n }\n\n return this;\n }\n}\n"],"names":["isInstance","input","name","Symbol","for","isPath","RegExp","isPromise","p","isObject","Promise","then","createRequestTimeout","res","timeout","done","instance","setTimeout","statusCode","GatewayTimeoutErrorOptions","statusMessage","message","end","once","clearTimeout","e","processHandlerExecutionOutput","next","output","r","send","catch","decodeParam","val","length","decodeURIComponent","PathMatcher","test","path","fastSlash","regexpOptions","regexp","exec","match","params","undefined","i","key","regexpKeys","prop","constructor","options","pathToRegexp","Layer","isError","fn","dispatch","req","meta","err","setRequestParams","setRequestMountPath","mountPath","Error","BadRequestError","matchPath","pathMatcher","isLayerInstance","Route","matchMethod","method","toLowerCase","Method","HEAD","hasOwnProperty","layers","GET","Object","prototype","call","getMethods","keys","push","layerMeta","merge","index","setImmediate","layer","register","handlers","pathMatcherOptions","get","post","POST","put","PUT","patch","PATCH","delete","DELETE","head","OPTIONS","isStrictPath","strict","isRouteInstance","isRouterInstance","Router","setPathMatcherOptions","setPath","value","withLeadingSlash","withoutTrailingSlash","createListener","isRoot","listen","port","server","createServer","allowedMethods","map","toUpperCase","join","setHeader","HeaderName","ALLOW","useRequestPath","cleanDoubleSlashes","substring","stack","mergeArrays","dispatchAsync","resolve","reject","route","findIndex","item","sensitive","use","shift","ctx"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { send, setRequestParams, setRequestMountPath, Method, withLeadingSlash, withoutTrailingSlash, useRequestPath, cleanDoubleSlashes, HeaderName } from '@routup/core';
2
2
  export * from '@routup/core';
3
3
  import { isObject, hasOwnProperty, merge, mergeArrays } from 'smob';
4
- import { GatewayTimeoutErrorOptions, BadRequestError, BadRequestErrorOptions, NotFoundErrorOptions } from '@ebec/http';
4
+ import { GatewayTimeoutErrorOptions, BadRequestError } from '@ebec/http';
5
5
  import { pathToRegexp } from 'path-to-regexp';
6
6
  import { createServer } from 'node:http';
7
7
 
@@ -358,8 +358,7 @@ class Router {
358
358
  return;
359
359
  }
360
360
  if (typeof err !== 'undefined') {
361
- res.statusCode = BadRequestErrorOptions.statusCode;
362
- res.statusMessage = BadRequestErrorOptions.message;
361
+ res.statusCode = 400;
363
362
  res.end();
364
363
  return;
365
364
  }
@@ -369,7 +368,7 @@ class Router {
369
368
  send(res, options);
370
369
  return;
371
370
  }
372
- res.statusCode = NotFoundErrorOptions.statusCode;
371
+ res.statusCode = 404;
373
372
  res.end();
374
373
  };
375
374
  let path = meta.path || useRequestPath(req);
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/utils/is-instance.ts","../src/utils/path.ts","../src/utils/promise.ts","../src/utils/request.ts","../src/handler/utils.ts","../src/path/matcher.ts","../src/layer/module.ts","../src/layer/utils.ts","../src/route/module.ts","../src/route/utils.ts","../src/router/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isInstance(input: unknown, name: string) {\n return (\n typeof input === 'object' &&\n input !== null &&\n (input as { '@instanceof': symbol })['@instanceof'] === Symbol.for(name)\n );\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { Path } from '../type';\n\nexport function isPath(input: unknown) : input is Path {\n return typeof input === 'string' || input instanceof RegExp;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from 'smob';\n\nexport function isPromise(p: unknown) : p is Promise<unknown> {\n return isObject(p) &&\n (\n p instanceof Promise ||\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof p.then === 'function'\n );\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { GatewayTimeoutErrorOptions } from '@ebec/http';\nimport { Next, Response } from '@routup/core';\n\n/* istanbul ignore next */\nexport function createRequestTimeout(res: Response, timeout: number, done?: Next) {\n const instance = setTimeout(() => {\n res.statusCode = GatewayTimeoutErrorOptions.statusCode;\n res.statusMessage = GatewayTimeoutErrorOptions.message;\n\n res.end();\n }, timeout);\n\n res.once('close', () => {\n clearTimeout(instance);\n\n if (typeof done === 'function') {\n done();\n }\n });\n\n res.once('error', (e) => {\n clearTimeout(instance);\n\n if (typeof done === 'function') {\n done(e);\n }\n });\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { Next, Response, send } from '@routup/core';\nimport { isPromise } from '../utils';\n\nexport function processHandlerExecutionOutput(res: Response, next: Next, output?: unknown) {\n if (isPromise(output)) {\n output\n .then((r) => {\n if (typeof r !== 'undefined') {\n send(res, r);\n }\n\n return r;\n })\n .catch(next);\n return;\n }\n\n if (typeof output !== 'undefined') {\n send(res, output);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n Key, pathToRegexp,\n} from 'path-to-regexp';\nimport { Path } from '../type';\nimport { PathMatcherExecResult, PathMatcherOptions } from './type';\n\nfunction decodeParam(val: unknown) {\n /* istanbul ignore next */\n if (typeof val !== 'string' || val.length === 0) {\n return val;\n }\n\n return decodeURIComponent(val);\n}\n\nexport class PathMatcher {\n path: Path;\n\n regexp : RegExp;\n\n regexpKeys : Key[] = [];\n\n regexpOptions: PathMatcherOptions;\n\n constructor(path: Path, options?: PathMatcherOptions) {\n this.path = path;\n this.regexpOptions = options || {};\n\n if (path instanceof RegExp) {\n this.regexp = path;\n } else {\n this.regexp = pathToRegexp(path, this.regexpKeys, options);\n }\n }\n\n test(path: string) {\n const fastSlash = this.path === '/' && this.regexpOptions.end === false;\n if (fastSlash) {\n return true;\n }\n\n return this.regexp.test(path);\n }\n\n exec(path: string) : PathMatcherExecResult | undefined {\n let match : RegExpExecArray | null = null;\n\n const fastSlash = this.path === '/' && this.regexpOptions.end === false;\n if (fastSlash) {\n return {\n path: '/',\n params: {},\n };\n }\n\n match = this.regexp.exec(path);\n\n if (!match) {\n return undefined;\n }\n\n if (this.path instanceof RegExp) {\n return {\n path,\n params: {\n 0: decodeParam(match[0]),\n },\n };\n }\n\n const output : Record<string, unknown> = {};\n\n for (let i = 1; i < match.length; i++) {\n const key = this.regexpKeys[i - 1];\n const prop = key.name;\n const val = decodeParam(match[i]);\n\n if (typeof val !== 'undefined') {\n output[prop] = val;\n }\n }\n\n return {\n path: match[0],\n params: output,\n };\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BadRequestError } from '@ebec/http';\nimport {\n Next, Request, Response, setRequestMountPath, setRequestParams,\n} from '@routup/core';\nimport { processHandlerExecutionOutput } from '../handler';\nimport { PathMatcher } from '../path';\nimport {\n DispatcherMeta,\n} from '../type';\nimport { LayerOptions } from './type';\n\nexport class Layer {\n readonly '@instanceof' = Symbol.for('Layer');\n\n protected fn : CallableFunction;\n\n protected pathMatcher : PathMatcher;\n\n // --------------------------------------------------\n\n constructor(\n options: LayerOptions,\n fn: CallableFunction,\n ) {\n this.pathMatcher = new PathMatcher(options.path, options.pathMatcher);\n this.fn = fn;\n }\n\n // --------------------------------------------------\n\n isError() {\n return this.fn.length === 4;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: CallableFunction\n ) : void;\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: CallableFunction,\n err: Error,\n ) : void;\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: Next,\n err?: Error,\n ) : void {\n setRequestParams(req, meta.params || {});\n setRequestMountPath(req, meta.mountPath || '/');\n\n if (typeof err !== 'undefined') {\n if (this.fn.length === 4) {\n try {\n this.fn(err, req, res, next);\n } catch (e) {\n /* istanbul ignore next */\n /* istanbul ignore next */\n if (e instanceof Error) {\n next(e);\n } else {\n next(new BadRequestError({\n message: 'The request could not be processed by the error handler.',\n }));\n }\n }\n\n return;\n }\n\n /* istanbul ignore next */\n next(err);\n /* istanbul ignore next */\n return;\n }\n\n /* istanbul ignore next */\n if (this.fn.length > 3) {\n next();\n return;\n }\n\n try {\n const output = this.fn(req, res, next);\n\n processHandlerExecutionOutput(res, next, output);\n } catch (e) {\n /* istanbul ignore next */\n if (e instanceof Error) {\n next(e);\n } else {\n next(new BadRequestError({\n message: 'The request could not be processed by the handler.',\n }));\n }\n }\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n return this.pathMatcher.test(path);\n }\n\n exec(path: string) {\n return this.pathMatcher.exec(path);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isInstance } from '../utils';\nimport { Layer } from './module';\n\nexport function isLayerInstance(input: unknown) : input is Layer {\n return isInstance(input, 'Layer');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty, merge } from 'smob';\nimport {\n Handler, Method, Next, Request, Response,\n} from '@routup/core';\nimport { Layer } from '../layer';\nimport { PathMatcher, PathMatcherOptions } from '../path';\nimport {\n DispatcherMeta,\n Path,\n} from '../type';\nimport { RouteOptions } from './type';\n\nexport class Route {\n readonly '@instanceof' = Symbol.for('Route');\n\n public path : Path;\n\n protected pathMatcher : PathMatcher;\n\n protected pathMatcherOptions : PathMatcherOptions;\n\n protected layers : Record<string, Layer[]> = {};\n\n // --------------------------------------------------\n\n constructor(options: RouteOptions) {\n this.path = options.path;\n\n this.pathMatcherOptions = {\n end: true,\n strict: this.isStrictPath(),\n ...options.pathMatcher,\n };\n this.pathMatcher = new PathMatcher(this.path, this.pathMatcherOptions);\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n return this.pathMatcher.test(path);\n }\n\n matchMethod(method: string) : boolean {\n let name = method.toLowerCase();\n\n if (\n name === Method.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = Method.GET;\n }\n\n return Object.prototype.hasOwnProperty.call(this.layers, name);\n }\n\n // --------------------------------------------------\n\n getMethods() : string[] {\n const keys = Object.keys(this.layers);\n\n if (\n hasOwnProperty(this.layers, Method.GET) &&\n !hasOwnProperty(this.layers, Method.HEAD)\n ) {\n keys.push(Method.HEAD);\n }\n\n return keys;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n done: Next,\n ) : void {\n /* istanbul ignore next */\n if (!req.method) {\n done();\n return;\n }\n\n let name = req.method.toLowerCase();\n\n if (\n name === Method.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = Method.GET;\n }\n\n const layers = this.layers[name];\n\n /* istanbul ignore next */\n if (\n typeof layers === 'undefined' ||\n layers.length === 0 ||\n typeof meta.path === 'undefined'\n ) {\n done();\n\n return;\n }\n\n const layerMeta : DispatcherMeta = {\n ...meta,\n };\n\n const output = this.pathMatcher.exec(meta.path);\n if (output) {\n layerMeta.params = merge({}, (meta.params || {}), output.params);\n }\n\n let index = -1;\n\n const next = (err?: Error) : void => {\n index++;\n\n if (index >= layers.length) {\n setImmediate(done, err);\n return;\n }\n\n const layer = layers[index];\n if (\n err &&\n !layer.isError()\n ) {\n next(err);\n return;\n }\n\n layer.dispatch(req, res, { ...layerMeta }, next);\n };\n\n next();\n }\n\n // --------------------------------------------------\n\n register(method: `${Method}`, ...handlers: Handler[]) {\n this.layers[method] = [];\n\n for (let i = 0; i < handlers.length; i++) {\n const layer = new Layer(\n {\n path: this.path,\n pathMatcher: this.pathMatcherOptions,\n },\n handlers[i],\n );\n\n this.layers[method].push(layer);\n }\n }\n\n get(...handlers: Handler[]) {\n return this.register(Method.GET, ...handlers);\n }\n\n post(...handlers: Handler[]) {\n return this.register(Method.POST, ...handlers);\n }\n\n put(...handlers: Handler[]) {\n return this.register(Method.PUT, ...handlers);\n }\n\n patch(...handlers: Handler[]) {\n return this.register(Method.PATCH, ...handlers);\n }\n\n delete(...handlers: Handler[]) {\n return this.register(Method.DELETE, ...handlers);\n }\n\n head(...handlers: Handler[]) {\n return this.register(Method.HEAD, ...handlers);\n }\n\n options(...handlers: Handler[]) {\n return this.register(Method.OPTIONS, ...handlers);\n }\n\n // --------------------------------------------------\n\n private isStrictPath() {\n return typeof this.path !== 'string' ||\n (this.path !== '/' && this.path.length !== 0);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isInstance } from '../utils';\nimport { Route } from './module';\n\nexport function isRouteInstance(input: unknown) : input is Route {\n return isInstance(input, 'Route');\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n BadRequestErrorOptions,\n NotFoundErrorOptions,\n} from '@ebec/http';\nimport { RequestListener, createServer } from 'node:http';\nimport { merge, mergeArrays } from 'smob';\nimport {\n ErrorHandler,\n Handler,\n HeaderName,\n Method,\n Next,\n Request,\n Response,\n cleanDoubleSlashes,\n send,\n useRequestPath,\n withLeadingSlash,\n withoutTrailingSlash,\n} from '@routup/core';\nimport { PathMatcher, PathMatcherOptions } from '../path';\nimport {\n createRequestTimeout,\n isInstance,\n isPath,\n\n} from '../utils';\nimport { Layer, isLayerInstance } from '../layer';\nimport { Route, isRouteInstance } from '../route';\nimport {\n DispatcherMeta,\n Path,\n} from '../type';\nimport { RouterOptions } from './type';\n\nexport function isRouterInstance(input: unknown) : input is Router {\n return isInstance(input, 'Router');\n}\n\nexport class Router {\n readonly '@instanceof' = Symbol.for('Router');\n\n /**\n * Array of mounted layers, routes & routers.\n *\n * @protected\n */\n protected stack : (Router | Route | Layer)[] = [];\n\n /**\n * Mount path of instance\n *\n * @protected\n */\n protected path : Path | undefined;\n\n /**\n * Path matcher for the current mount path.\n *\n * @protected\n */\n protected pathMatcher : PathMatcher | undefined;\n\n /**\n * Path matcher options.\n *\n * @protected\n */\n protected pathMatcherOptions : PathMatcherOptions;\n\n /**\n * Is this the root instance?\n *\n * @protected\n */\n protected isRoot : boolean | undefined;\n\n /**\n * Timeout before the router decides to abort the request.\n *\n * @protected\n */\n protected timeout: number | undefined;\n\n // --------------------------------------------------\n\n constructor(ctx?: RouterOptions) {\n ctx = ctx || {};\n\n this.pathMatcherOptions = {\n end: false,\n sensitive: true,\n ...(ctx.pathMatcher || {}),\n };\n\n this.timeout = ctx.timeout;\n\n this.setPath(ctx.path || '/');\n }\n\n // --------------------------------------------------\n\n setPathMatcherOptions(input: PathMatcherOptions) {\n this.pathMatcherOptions = input;\n\n if (this.pathMatcher) {\n this.pathMatcher.regexpOptions = this.pathMatcherOptions;\n }\n }\n\n setPath(value: Path) {\n if (value === '/' || !isPath(value)) {\n this.path = '/';\n return;\n }\n\n if (typeof value === 'string') {\n this.path = withLeadingSlash(withoutTrailingSlash(`${value}`));\n } else {\n this.path = value;\n }\n\n this.pathMatcher = new PathMatcher(this.path, this.pathMatcherOptions);\n }\n\n // --------------------------------------------------\n\n createListener() : RequestListener {\n this.isRoot = true;\n\n return (req, res) => {\n this.dispatch(req, res);\n };\n }\n\n /* istanbul ignore next */\n listen(port: number) {\n const server = createServer(this.createListener());\n return server.listen(port);\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n if (this.pathMatcher) {\n return this.pathMatcher.test(path);\n }\n\n return true;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta?: DispatcherMeta,\n done?: Next,\n ) : void {\n let index = -1;\n\n meta = meta || {};\n\n let allowedMethods : string[] = [];\n\n if (\n this.isRoot &&\n typeof this.timeout === 'number'\n ) {\n createRequestTimeout(res, this.timeout, done);\n }\n\n const fn = (err?: Error) => {\n /* istanbul ignore if */\n if (!this.isRoot) {\n if (typeof done !== 'undefined') {\n setImmediate(() => done(err));\n }\n\n return;\n }\n\n if (typeof err !== 'undefined') {\n res.statusCode = BadRequestErrorOptions.statusCode;\n res.statusMessage = BadRequestErrorOptions.message;\n\n res.end();\n\n return;\n }\n\n if (\n req.method &&\n req.method.toLowerCase() === Method.OPTIONS\n ) {\n const options = allowedMethods\n .map((key) => key.toUpperCase())\n .join(',');\n\n res.setHeader(HeaderName.ALLOW, options);\n send(res, options);\n\n return;\n }\n\n res.statusCode = NotFoundErrorOptions.statusCode;\n res.end();\n };\n\n let path = meta.path || useRequestPath(req);\n\n if (this.pathMatcher) {\n const output = this.pathMatcher.exec(path);\n if (typeof output !== 'undefined') {\n meta.mountPath = cleanDoubleSlashes(`${meta.mountPath || ''}/${output.path}`);\n\n if (path === output.path) {\n path = '/';\n } else {\n path = withLeadingSlash(path.substring(output.path.length));\n }\n\n meta.params = merge(meta.params || {}, output.params);\n }\n }\n\n meta.path = path;\n\n if (!meta.mountPath) {\n meta.mountPath = '/';\n }\n\n const next = (err?: Error) : void => {\n if (index >= this.stack.length) {\n setImmediate(fn, err);\n return;\n }\n\n let layer : Route | Router | Layer | undefined;\n let match = false;\n\n while (!match && index < this.stack.length) {\n index++;\n\n layer = this.stack[index];\n\n if (isLayerInstance(layer)) {\n if (!layer.isError() && err) {\n continue;\n }\n\n match = layer.matchPath(path);\n }\n\n if (isRouterInstance(layer)) {\n match = layer.matchPath(path);\n }\n\n if (isRouteInstance(layer)) {\n match = layer.matchPath(path);\n\n if (\n req.method &&\n !layer.matchMethod(req.method)\n ) {\n match = false;\n\n if (req.method.toLowerCase() === Method.OPTIONS) {\n allowedMethods = mergeArrays(\n allowedMethods,\n layer.getMethods(),\n true,\n );\n }\n }\n }\n }\n\n if (!match || !layer) {\n setImmediate(fn, err);\n return;\n }\n\n const layerMeta : DispatcherMeta = { ...meta };\n\n if (isLayerInstance(layer)) {\n const output = layer.exec(path);\n\n if (output) {\n layerMeta.params = merge(output.params, layerMeta.params || {});\n layerMeta.mountPath = cleanDoubleSlashes(`${layerMeta.mountPath || ''}/${output.path}`);\n }\n }\n\n if (err) {\n if (\n isLayerInstance(layer) &&\n layer.isError()\n ) {\n layer.dispatch(req, res, layerMeta, next, err);\n return;\n }\n\n /* istanbul ignore next */\n setImmediate(next, err);\n return;\n }\n\n layer.dispatch(req, res, layerMeta, next);\n };\n\n next();\n }\n\n /* istanbul ignore next */\n dispatchAsync(\n req: Request,\n res: Response,\n ) : Promise<void> {\n return new Promise((resolve, reject) => {\n this.dispatch(req, res, {}, (err?: Error) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve();\n });\n });\n }\n\n // --------------------------------------------------\n\n route(\n path: Path,\n ) : Route {\n if (\n typeof path === 'string' &&\n path.length > 0\n ) {\n path = withLeadingSlash(path);\n }\n\n const index = this.stack.findIndex(\n (item) => isRouteInstance(item) && item.path === path,\n );\n\n if (index !== -1) {\n return this.stack[index] as Route;\n }\n\n const route = new Route({\n path,\n pathMatcher: {\n sensitive: this.pathMatcherOptions.sensitive,\n },\n });\n this.stack.push(route);\n\n return route;\n }\n\n delete(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.delete(...handlers);\n\n return this;\n }\n\n get(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.get(...handlers);\n\n return this;\n }\n\n post(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.post(...handlers);\n\n return this;\n }\n\n put(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.put(...handlers);\n\n return this;\n }\n\n patch(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.patch(...handlers);\n\n return this;\n }\n\n head(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.head(...handlers);\n\n return this;\n }\n\n options(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.options(...handlers);\n\n return this;\n }\n\n // --------------------------------------------------\n\n use(router: Router) : this;\n\n use(handler: Handler) : this;\n\n use(handler: ErrorHandler) : this;\n\n use(path: Path, router: Router) : this;\n\n use(path: Path, handler: Handler) : this;\n\n use(path: Path, handler: ErrorHandler) : this;\n\n use(...input: unknown[]) : this {\n /* istanbul ignore next */\n if (input.length === 0) {\n return this;\n }\n\n let path : Path | undefined;\n\n if (isPath(input[0])) {\n path = input.shift() as Path;\n }\n\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n if (isRouterInstance(item)) {\n if (path) {\n item.setPath(path);\n }\n item.setPathMatcherOptions(this.pathMatcherOptions);\n this.stack.push(item);\n continue;\n }\n\n if (typeof item === 'function') {\n this.stack.push(new Layer({\n path: path || '/',\n pathMatcher: {\n strict: false,\n end: false,\n sensitive: this.pathMatcherOptions.sensitive,\n },\n }, item));\n }\n }\n\n return this;\n }\n}\n"],"names":["isInstance","input","name","Symbol","for","isPath","RegExp","isPromise","p","isObject","Promise","then","createRequestTimeout","res","timeout","done","instance","setTimeout","statusCode","GatewayTimeoutErrorOptions","statusMessage","message","end","once","clearTimeout","e","processHandlerExecutionOutput","next","output","r","send","catch","decodeParam","val","length","decodeURIComponent","PathMatcher","test","path","fastSlash","regexpOptions","regexp","exec","match","params","undefined","i","key","regexpKeys","prop","constructor","options","pathToRegexp","Layer","isError","fn","dispatch","req","meta","err","setRequestParams","setRequestMountPath","mountPath","Error","BadRequestError","matchPath","pathMatcher","isLayerInstance","Route","matchMethod","method","toLowerCase","Method","HEAD","hasOwnProperty","layers","GET","Object","prototype","call","getMethods","keys","push","layerMeta","merge","index","setImmediate","layer","register","handlers","pathMatcherOptions","get","post","POST","put","PUT","patch","PATCH","delete","DELETE","head","OPTIONS","isStrictPath","strict","isRouteInstance","isRouterInstance","Router","setPathMatcherOptions","setPath","value","withLeadingSlash","withoutTrailingSlash","createListener","isRoot","listen","port","server","createServer","allowedMethods","BadRequestErrorOptions","map","toUpperCase","join","setHeader","HeaderName","ALLOW","NotFoundErrorOptions","useRequestPath","cleanDoubleSlashes","substring","stack","mergeArrays","dispatchAsync","resolve","reject","route","findIndex","item","sensitive","use","shift","ctx"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/utils/is-instance.ts","../src/utils/path.ts","../src/utils/promise.ts","../src/utils/request.ts","../src/handler/utils.ts","../src/path/matcher.ts","../src/layer/module.ts","../src/layer/utils.ts","../src/route/module.ts","../src/route/utils.ts","../src/router/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isInstance(input: unknown, name: string) {\n return (\n typeof input === 'object' &&\n input !== null &&\n (input as { '@instanceof': symbol })['@instanceof'] === Symbol.for(name)\n );\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Path } from '../type';\n\nexport function isPath(input: unknown) : input is Path {\n return typeof input === 'string' || input instanceof RegExp;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from 'smob';\n\nexport function isPromise(p: unknown) : p is Promise<unknown> {\n return isObject(p) &&\n (\n p instanceof Promise ||\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof p.then === 'function'\n );\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { GatewayTimeoutErrorOptions } from '@ebec/http';\nimport type { Next, Response } from '@routup/core';\n\n/* istanbul ignore next */\nexport function createRequestTimeout(res: Response, timeout: number, done?: Next) {\n const instance = setTimeout(() => {\n res.statusCode = GatewayTimeoutErrorOptions.statusCode;\n res.statusMessage = GatewayTimeoutErrorOptions.message;\n\n res.end();\n }, timeout);\n\n res.once('close', () => {\n clearTimeout(instance);\n\n if (typeof done === 'function') {\n done();\n }\n });\n\n res.once('error', (e) => {\n clearTimeout(instance);\n\n if (typeof done === 'function') {\n done(e);\n }\n });\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Next, Response } from '@routup/core';\nimport { send } from '@routup/core';\nimport { isPromise } from '../utils';\n\nexport function processHandlerExecutionOutput(res: Response, next: Next, output?: unknown) {\n if (isPromise(output)) {\n output\n .then((r) => {\n if (typeof r !== 'undefined') {\n send(res, r);\n }\n\n return r;\n })\n .catch(next);\n return;\n }\n\n if (typeof output !== 'undefined') {\n send(res, output);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Key } from 'path-to-regexp';\nimport { pathToRegexp } from 'path-to-regexp';\nimport type { Path } from '../type';\nimport type { PathMatcherExecResult, PathMatcherOptions } from './type';\n\nfunction decodeParam(val: unknown) {\n /* istanbul ignore next */\n if (typeof val !== 'string' || val.length === 0) {\n return val;\n }\n\n return decodeURIComponent(val);\n}\n\nexport class PathMatcher {\n path: Path;\n\n regexp : RegExp;\n\n regexpKeys : Key[] = [];\n\n regexpOptions: PathMatcherOptions;\n\n constructor(path: Path, options?: PathMatcherOptions) {\n this.path = path;\n this.regexpOptions = options || {};\n\n if (path instanceof RegExp) {\n this.regexp = path;\n } else {\n this.regexp = pathToRegexp(path, this.regexpKeys, options);\n }\n }\n\n test(path: string) {\n const fastSlash = this.path === '/' && this.regexpOptions.end === false;\n if (fastSlash) {\n return true;\n }\n\n return this.regexp.test(path);\n }\n\n exec(path: string) : PathMatcherExecResult | undefined {\n let match : RegExpExecArray | null = null;\n\n const fastSlash = this.path === '/' && this.regexpOptions.end === false;\n if (fastSlash) {\n return {\n path: '/',\n params: {},\n };\n }\n\n match = this.regexp.exec(path);\n\n if (!match) {\n return undefined;\n }\n\n if (this.path instanceof RegExp) {\n return {\n path,\n params: {\n 0: decodeParam(match[0]),\n },\n };\n }\n\n const output : Record<string, unknown> = {};\n\n for (let i = 1; i < match.length; i++) {\n const key = this.regexpKeys[i - 1];\n const prop = key.name;\n const val = decodeParam(match[i]);\n\n if (typeof val !== 'undefined') {\n output[prop] = val;\n }\n }\n\n return {\n path: match[0],\n params: output,\n };\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BadRequestError } from '@ebec/http';\nimport type { Next, Request, Response } from '@routup/core';\nimport { setRequestMountPath, setRequestParams } from '@routup/core';\nimport { processHandlerExecutionOutput } from '../handler';\nimport { PathMatcher } from '../path';\nimport type {\n DispatcherMeta,\n} from '../type';\nimport type { LayerOptions } from './type';\n\nexport class Layer {\n readonly '@instanceof' = Symbol.for('Layer');\n\n protected fn : CallableFunction;\n\n protected pathMatcher : PathMatcher;\n\n // --------------------------------------------------\n\n constructor(\n options: LayerOptions,\n fn: CallableFunction,\n ) {\n this.pathMatcher = new PathMatcher(options.path, options.pathMatcher);\n this.fn = fn;\n }\n\n // --------------------------------------------------\n\n isError() {\n return this.fn.length === 4;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: CallableFunction\n ) : void;\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: CallableFunction,\n err: Error,\n ) : void;\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n next: Next,\n err?: Error,\n ) : void {\n setRequestParams(req, meta.params || {});\n setRequestMountPath(req, meta.mountPath || '/');\n\n if (typeof err !== 'undefined') {\n if (this.fn.length === 4) {\n try {\n this.fn(err, req, res, next);\n } catch (e) {\n /* istanbul ignore next */\n /* istanbul ignore next */\n if (e instanceof Error) {\n next(e);\n } else {\n next(new BadRequestError({\n message: 'The request could not be processed by the error handler.',\n }));\n }\n }\n\n return;\n }\n\n /* istanbul ignore next */\n next(err);\n /* istanbul ignore next */\n return;\n }\n\n /* istanbul ignore next */\n if (this.fn.length > 3) {\n next();\n return;\n }\n\n try {\n const output = this.fn(req, res, next);\n\n processHandlerExecutionOutput(res, next, output);\n } catch (e) {\n /* istanbul ignore next */\n if (e instanceof Error) {\n next(e);\n } else {\n next(new BadRequestError({\n message: 'The request could not be processed by the handler.',\n }));\n }\n }\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n return this.pathMatcher.test(path);\n }\n\n exec(path: string) {\n return this.pathMatcher.exec(path);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isInstance } from '../utils';\nimport type { Layer } from './module';\n\nexport function isLayerInstance(input: unknown) : input is Layer {\n return isInstance(input, 'Layer');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty, merge } from 'smob';\nimport type {\n Handler, Next, Request, Response,\n} from '@routup/core';\nimport { Method } from '@routup/core';\nimport { Layer } from '../layer';\nimport type { PathMatcherOptions } from '../path';\nimport { PathMatcher } from '../path';\nimport type {\n DispatcherMeta,\n Path,\n} from '../type';\nimport type { RouteOptions } from './type';\n\nexport class Route {\n readonly '@instanceof' = Symbol.for('Route');\n\n public path : Path;\n\n protected pathMatcher : PathMatcher;\n\n protected pathMatcherOptions : PathMatcherOptions;\n\n protected layers : Record<string, Layer[]> = {};\n\n // --------------------------------------------------\n\n constructor(options: RouteOptions) {\n this.path = options.path;\n\n this.pathMatcherOptions = {\n end: true,\n strict: this.isStrictPath(),\n ...options.pathMatcher,\n };\n this.pathMatcher = new PathMatcher(this.path, this.pathMatcherOptions);\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n return this.pathMatcher.test(path);\n }\n\n matchMethod(method: string) : boolean {\n let name = method.toLowerCase();\n\n if (\n name === Method.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = Method.GET;\n }\n\n return Object.prototype.hasOwnProperty.call(this.layers, name);\n }\n\n // --------------------------------------------------\n\n getMethods() : string[] {\n const keys = Object.keys(this.layers);\n\n if (\n hasOwnProperty(this.layers, Method.GET) &&\n !hasOwnProperty(this.layers, Method.HEAD)\n ) {\n keys.push(Method.HEAD);\n }\n\n return keys;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta: DispatcherMeta,\n done: Next,\n ) : void {\n /* istanbul ignore next */\n if (!req.method) {\n done();\n return;\n }\n\n let name = req.method.toLowerCase();\n\n if (\n name === Method.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = Method.GET;\n }\n\n const layers = this.layers[name];\n\n /* istanbul ignore next */\n if (\n typeof layers === 'undefined' ||\n layers.length === 0 ||\n typeof meta.path === 'undefined'\n ) {\n done();\n\n return;\n }\n\n const layerMeta : DispatcherMeta = {\n ...meta,\n };\n\n const output = this.pathMatcher.exec(meta.path);\n if (output) {\n layerMeta.params = merge({}, (meta.params || {}), output.params);\n }\n\n let index = -1;\n\n const next = (err?: Error) : void => {\n index++;\n\n if (index >= layers.length) {\n setImmediate(done, err);\n return;\n }\n\n const layer = layers[index];\n if (\n err &&\n !layer.isError()\n ) {\n next(err);\n return;\n }\n\n layer.dispatch(req, res, { ...layerMeta }, next);\n };\n\n next();\n }\n\n // --------------------------------------------------\n\n register(method: `${Method}`, ...handlers: Handler[]) {\n this.layers[method] = [];\n\n for (let i = 0; i < handlers.length; i++) {\n const layer = new Layer(\n {\n path: this.path,\n pathMatcher: this.pathMatcherOptions,\n },\n handlers[i],\n );\n\n this.layers[method].push(layer);\n }\n }\n\n get(...handlers: Handler[]) {\n return this.register(Method.GET, ...handlers);\n }\n\n post(...handlers: Handler[]) {\n return this.register(Method.POST, ...handlers);\n }\n\n put(...handlers: Handler[]) {\n return this.register(Method.PUT, ...handlers);\n }\n\n patch(...handlers: Handler[]) {\n return this.register(Method.PATCH, ...handlers);\n }\n\n delete(...handlers: Handler[]) {\n return this.register(Method.DELETE, ...handlers);\n }\n\n head(...handlers: Handler[]) {\n return this.register(Method.HEAD, ...handlers);\n }\n\n options(...handlers: Handler[]) {\n return this.register(Method.OPTIONS, ...handlers);\n }\n\n // --------------------------------------------------\n\n private isStrictPath() {\n return typeof this.path !== 'string' ||\n (this.path !== '/' && this.path.length !== 0);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isInstance } from '../utils';\nimport type { Route } from './module';\n\nexport function isRouteInstance(input: unknown) : input is Route {\n return isInstance(input, 'Route');\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n BadRequestErrorOptions,\n NotFoundErrorOptions,\n} from '@ebec/http';\nimport type { RequestListener } from 'node:http';\nimport { createServer } from 'node:http';\nimport { merge, mergeArrays } from 'smob';\nimport type {\n ErrorHandler,\n Handler,\n Next,\n Request,\n Response,\n} from '@routup/core';\nimport {\n HeaderName,\n Method,\n cleanDoubleSlashes,\n send,\n useRequestPath,\n withLeadingSlash,\n withoutTrailingSlash,\n} from '@routup/core';\nimport type { PathMatcherOptions } from '../path';\nimport { PathMatcher } from '../path';\nimport {\n createRequestTimeout,\n isInstance,\n isPath,\n\n} from '../utils';\nimport { Layer, isLayerInstance } from '../layer';\nimport { Route, isRouteInstance } from '../route';\nimport type {\n DispatcherMeta,\n Path,\n} from '../type';\nimport type { RouterOptions } from './type';\n\nexport function isRouterInstance(input: unknown) : input is Router {\n return isInstance(input, 'Router');\n}\n\nexport class Router {\n readonly '@instanceof' = Symbol.for('Router');\n\n /**\n * Array of mounted layers, routes & routers.\n *\n * @protected\n */\n protected stack : (Router | Route | Layer)[] = [];\n\n /**\n * Mount path of instance\n *\n * @protected\n */\n protected path : Path | undefined;\n\n /**\n * Path matcher for the current mount path.\n *\n * @protected\n */\n protected pathMatcher : PathMatcher | undefined;\n\n /**\n * Path matcher options.\n *\n * @protected\n */\n protected pathMatcherOptions : PathMatcherOptions;\n\n /**\n * Is this the root instance?\n *\n * @protected\n */\n protected isRoot : boolean | undefined;\n\n /**\n * Timeout before the router decides to abort the request.\n *\n * @protected\n */\n protected timeout: number | undefined;\n\n // --------------------------------------------------\n\n constructor(ctx?: RouterOptions) {\n ctx = ctx || {};\n\n this.pathMatcherOptions = {\n end: false,\n sensitive: true,\n ...(ctx.pathMatcher || {}),\n };\n\n this.timeout = ctx.timeout;\n\n this.setPath(ctx.path || '/');\n }\n\n // --------------------------------------------------\n\n setPathMatcherOptions(input: PathMatcherOptions) {\n this.pathMatcherOptions = input;\n\n if (this.pathMatcher) {\n this.pathMatcher.regexpOptions = this.pathMatcherOptions;\n }\n }\n\n setPath(value: Path) {\n if (value === '/' || !isPath(value)) {\n this.path = '/';\n return;\n }\n\n if (typeof value === 'string') {\n this.path = withLeadingSlash(withoutTrailingSlash(`${value}`));\n } else {\n this.path = value;\n }\n\n this.pathMatcher = new PathMatcher(this.path, this.pathMatcherOptions);\n }\n\n // --------------------------------------------------\n\n createListener() : RequestListener {\n this.isRoot = true;\n\n return (req, res) => {\n this.dispatch(req, res);\n };\n }\n\n /* istanbul ignore next */\n listen(port: number) {\n const server = createServer(this.createListener());\n return server.listen(port);\n }\n\n // --------------------------------------------------\n\n matchPath(path: string) : boolean {\n if (this.pathMatcher) {\n return this.pathMatcher.test(path);\n }\n\n return true;\n }\n\n // --------------------------------------------------\n\n dispatch(\n req: Request,\n res: Response,\n meta?: DispatcherMeta,\n done?: Next,\n ) : void {\n let index = -1;\n\n meta = meta || {};\n\n let allowedMethods : string[] = [];\n\n if (\n this.isRoot &&\n typeof this.timeout === 'number'\n ) {\n createRequestTimeout(res, this.timeout, done);\n }\n\n const fn = (err?: Error) => {\n /* istanbul ignore if */\n if (!this.isRoot) {\n if (typeof done !== 'undefined') {\n setImmediate(() => done(err));\n }\n\n return;\n }\n\n if (typeof err !== 'undefined') {\n res.statusCode = 400;\n res.end();\n\n return;\n }\n\n if (\n req.method &&\n req.method.toLowerCase() === Method.OPTIONS\n ) {\n const options = allowedMethods\n .map((key) => key.toUpperCase())\n .join(',');\n\n res.setHeader(HeaderName.ALLOW, options);\n send(res, options);\n\n return;\n }\n\n res.statusCode = 404;\n res.end();\n };\n\n let path = meta.path || useRequestPath(req);\n\n if (this.pathMatcher) {\n const output = this.pathMatcher.exec(path);\n if (typeof output !== 'undefined') {\n meta.mountPath = cleanDoubleSlashes(`${meta.mountPath || ''}/${output.path}`);\n\n if (path === output.path) {\n path = '/';\n } else {\n path = withLeadingSlash(path.substring(output.path.length));\n }\n\n meta.params = merge(meta.params || {}, output.params);\n }\n }\n\n meta.path = path;\n\n if (!meta.mountPath) {\n meta.mountPath = '/';\n }\n\n const next = (err?: Error) : void => {\n if (index >= this.stack.length) {\n setImmediate(fn, err);\n return;\n }\n\n let layer : Route | Router | Layer | undefined;\n let match = false;\n\n while (!match && index < this.stack.length) {\n index++;\n\n layer = this.stack[index];\n\n if (isLayerInstance(layer)) {\n if (!layer.isError() && err) {\n continue;\n }\n\n match = layer.matchPath(path);\n }\n\n if (isRouterInstance(layer)) {\n match = layer.matchPath(path);\n }\n\n if (isRouteInstance(layer)) {\n match = layer.matchPath(path);\n\n if (\n req.method &&\n !layer.matchMethod(req.method)\n ) {\n match = false;\n\n if (req.method.toLowerCase() === Method.OPTIONS) {\n allowedMethods = mergeArrays(\n allowedMethods,\n layer.getMethods(),\n true,\n );\n }\n }\n }\n }\n\n if (!match || !layer) {\n setImmediate(fn, err);\n return;\n }\n\n const layerMeta : DispatcherMeta = { ...meta };\n\n if (isLayerInstance(layer)) {\n const output = layer.exec(path);\n\n if (output) {\n layerMeta.params = merge(output.params, layerMeta.params || {});\n layerMeta.mountPath = cleanDoubleSlashes(`${layerMeta.mountPath || ''}/${output.path}`);\n }\n }\n\n if (err) {\n if (\n isLayerInstance(layer) &&\n layer.isError()\n ) {\n layer.dispatch(req, res, layerMeta, next, err);\n return;\n }\n\n /* istanbul ignore next */\n setImmediate(next, err);\n return;\n }\n\n layer.dispatch(req, res, layerMeta, next);\n };\n\n next();\n }\n\n /* istanbul ignore next */\n dispatchAsync(\n req: Request,\n res: Response,\n ) : Promise<void> {\n return new Promise((resolve, reject) => {\n this.dispatch(req, res, {}, (err?: Error) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve();\n });\n });\n }\n\n // --------------------------------------------------\n\n route(\n path: Path,\n ) : Route {\n if (\n typeof path === 'string' &&\n path.length > 0\n ) {\n path = withLeadingSlash(path);\n }\n\n const index = this.stack.findIndex(\n (item) => isRouteInstance(item) && item.path === path,\n );\n\n if (index !== -1) {\n return this.stack[index] as Route;\n }\n\n const route = new Route({\n path,\n pathMatcher: {\n sensitive: this.pathMatcherOptions.sensitive,\n },\n });\n this.stack.push(route);\n\n return route;\n }\n\n delete(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.delete(...handlers);\n\n return this;\n }\n\n get(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.get(...handlers);\n\n return this;\n }\n\n post(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.post(...handlers);\n\n return this;\n }\n\n put(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.put(...handlers);\n\n return this;\n }\n\n patch(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.patch(...handlers);\n\n return this;\n }\n\n head(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.head(...handlers);\n\n return this;\n }\n\n options(path: Path, ...handlers: Handler[]) : this {\n const route = this.route(path);\n route.options(...handlers);\n\n return this;\n }\n\n // --------------------------------------------------\n\n use(router: Router) : this;\n\n use(handler: Handler) : this;\n\n use(handler: ErrorHandler) : this;\n\n use(path: Path, router: Router) : this;\n\n use(path: Path, handler: Handler) : this;\n\n use(path: Path, handler: ErrorHandler) : this;\n\n use(...input: unknown[]) : this {\n /* istanbul ignore next */\n if (input.length === 0) {\n return this;\n }\n\n let path : Path | undefined;\n\n if (isPath(input[0])) {\n path = input.shift() as Path;\n }\n\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n if (isRouterInstance(item)) {\n if (path) {\n item.setPath(path);\n }\n item.setPathMatcherOptions(this.pathMatcherOptions);\n this.stack.push(item);\n continue;\n }\n\n if (typeof item === 'function') {\n this.stack.push(new Layer({\n path: path || '/',\n pathMatcher: {\n strict: false,\n end: false,\n sensitive: this.pathMatcherOptions.sensitive,\n },\n }, item));\n }\n }\n\n return this;\n }\n}\n"],"names":["isInstance","input","name","Symbol","for","isPath","RegExp","isPromise","p","isObject","Promise","then","createRequestTimeout","res","timeout","done","instance","setTimeout","statusCode","GatewayTimeoutErrorOptions","statusMessage","message","end","once","clearTimeout","e","processHandlerExecutionOutput","next","output","r","send","catch","decodeParam","val","length","decodeURIComponent","PathMatcher","test","path","fastSlash","regexpOptions","regexp","exec","match","params","undefined","i","key","regexpKeys","prop","constructor","options","pathToRegexp","Layer","isError","fn","dispatch","req","meta","err","setRequestParams","setRequestMountPath","mountPath","Error","BadRequestError","matchPath","pathMatcher","isLayerInstance","Route","matchMethod","method","toLowerCase","Method","HEAD","hasOwnProperty","layers","GET","Object","prototype","call","getMethods","keys","push","layerMeta","merge","index","setImmediate","layer","register","handlers","pathMatcherOptions","get","post","POST","put","PUT","patch","PATCH","delete","DELETE","head","OPTIONS","isStrictPath","strict","isRouteInstance","isRouterInstance","Router","setPathMatcherOptions","setPath","value","withLeadingSlash","withoutTrailingSlash","createListener","isRoot","listen","port","server","createServer","allowedMethods","map","toUpperCase","join","setHeader","HeaderName","ALLOW","useRequestPath","cleanDoubleSlashes","substring","stack","mergeArrays","dispatchAsync","resolve","reject","route","findIndex","item","sensitive","use","shift","ctx"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { Request, Response } from '@routup/core';
1
+ import type { Request, Response } from '@routup/core';
2
2
  import { PathMatcher } from '../path';
3
- import { DispatcherMeta } from '../type';
4
- import { LayerOptions } from './type';
3
+ import type { DispatcherMeta } from '../type';
4
+ import type { LayerOptions } from './type';
5
5
  export declare class Layer {
6
6
  readonly '@instanceof': symbol;
7
7
  protected fn: CallableFunction;
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/layer/module.ts"],"names":[],"mappings":"AAQA,OAAO,EACG,OAAO,EAAE,QAAQ,EAC1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EACH,cAAc,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,KAAK;IACd,QAAQ,CAAC,aAAa,SAAuB;IAE7C,SAAS,CAAC,EAAE,EAAG,gBAAgB,CAAC;IAEhC,SAAS,CAAC,WAAW,EAAG,WAAW,CAAC;gBAKhC,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,gBAAgB;IAQxB,OAAO;IAMP,QAAQ,CACJ,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,gBAAgB,GACtB,IAAI;IAER,QAAQ,CACJ,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE,KAAK,GACV,IAAI;IA6DR,SAAS,CAAC,IAAI,EAAE,MAAM,GAAI,OAAO;IAIjC,IAAI,CAAC,IAAI,EAAE,MAAM;CAGpB"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/layer/module.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAQ,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EACR,cAAc,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,qBAAa,KAAK;IACd,QAAQ,CAAC,aAAa,SAAuB;IAE7C,SAAS,CAAC,EAAE,EAAG,gBAAgB,CAAC;IAEhC,SAAS,CAAC,WAAW,EAAG,WAAW,CAAC;gBAKhC,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,gBAAgB;IAQxB,OAAO;IAMP,QAAQ,CACJ,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,gBAAgB,GACtB,IAAI;IAER,QAAQ,CACJ,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE,KAAK,GACV,IAAI;IA6DR,SAAS,CAAC,IAAI,EAAE,MAAM,GAAI,OAAO;IAIjC,IAAI,CAAC,IAAI,EAAE,MAAM;CAGpB"}
@@ -1,5 +1,5 @@
1
- import { PathMatcherOptions } from '../path';
2
- import { Path } from '../type';
1
+ import type { PathMatcherOptions } from '../path';
2
+ import type { Path } from '../type';
3
3
  export type LayerOptions = {
4
4
  path: Path;
5
5
  pathMatcher: PathMatcherOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/layer/type.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,IAAI,CAAC;IAEX,WAAW,EAAE,kBAAkB,CAAA;CAClC,CAAC"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/layer/type.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,IAAI,CAAC;IAEX,WAAW,EAAE,kBAAkB,CAAA;CAClC,CAAC"}
@@ -1,3 +1,3 @@
1
- import { Layer } from './module';
1
+ import type { Layer } from './module';
2
2
  export declare function isLayerInstance(input: unknown): input is Layer;
3
3
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/layer/utils.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,KAAK,CAE/D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/layer/utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,KAAK,CAE/D"}
@@ -1,6 +1,6 @@
1
- import { Key } from 'path-to-regexp';
2
- import { Path } from '../type';
3
- import { PathMatcherExecResult, PathMatcherOptions } from './type';
1
+ import type { Key } from 'path-to-regexp';
2
+ import type { Path } from '../type';
3
+ import type { PathMatcherExecResult, PathMatcherOptions } from './type';
4
4
  export declare class PathMatcher {
5
5
  path: Path;
6
6
  regexp: RegExp;
@@ -1 +1 @@
1
- {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/path/matcher.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,GAAG,EACN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAWnE,qBAAa,WAAW;IACpB,IAAI,EAAE,IAAI,CAAC;IAEX,MAAM,EAAG,MAAM,CAAC;IAEhB,UAAU,EAAG,GAAG,EAAE,CAAM;IAExB,aAAa,EAAE,kBAAkB,CAAC;gBAEtB,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAWpD,IAAI,CAAC,IAAI,EAAE,MAAM;IASjB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAI,qBAAqB,GAAG,SAAS;CA2CzD"}
1
+ {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/path/matcher.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAWxE,qBAAa,WAAW;IACpB,IAAI,EAAE,IAAI,CAAC;IAEX,MAAM,EAAG,MAAM,CAAC;IAEhB,UAAU,EAAG,GAAG,EAAE,CAAM;IAExB,aAAa,EAAE,kBAAkB,CAAC;gBAEtB,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAWpD,IAAI,CAAC,IAAI,EAAE,MAAM;IASjB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAI,qBAAqB,GAAG,SAAS;CA2CzD"}
@@ -1,4 +1,4 @@
1
- import { ParseOptions, TokensToRegexpOptions } from 'path-to-regexp';
1
+ import type { ParseOptions, TokensToRegexpOptions } from 'path-to-regexp';
2
2
  export type PathMatcherOptions = TokensToRegexpOptions & ParseOptions;
3
3
  export type PathMatcherExecResult = {
4
4
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/path/type.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG,YAAY,CAAC;AAEtE,MAAM,MAAM,qBAAqB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC9B,CAAC"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/path/type.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE1E,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG,YAAY,CAAC;AAEtE,MAAM,MAAM,qBAAqB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC9B,CAAC"}
@@ -1,8 +1,10 @@
1
- import { Handler, Method, Next, Request, Response } from '@routup/core';
1
+ import type { Handler, Next, Request, Response } from '@routup/core';
2
+ import { Method } from '@routup/core';
2
3
  import { Layer } from '../layer';
3
- import { PathMatcher, PathMatcherOptions } from '../path';
4
- import { DispatcherMeta, Path } from '../type';
5
- import { RouteOptions } from './type';
4
+ import type { PathMatcherOptions } from '../path';
5
+ import { PathMatcher } from '../path';
6
+ import type { DispatcherMeta, Path } from '../type';
7
+ import type { RouteOptions } from './type';
6
8
  export declare class Route {
7
9
  readonly '@instanceof': symbol;
8
10
  path: Path;
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/route/module.ts"],"names":[],"mappings":"AAQA,OAAO,EACH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAC3C,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EACH,cAAc,EACd,IAAI,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,KAAK;IACd,QAAQ,CAAC,aAAa,SAAuB;IAEtC,IAAI,EAAG,IAAI,CAAC;IAEnB,SAAS,CAAC,WAAW,EAAG,WAAW,CAAC;IAEpC,SAAS,CAAC,kBAAkB,EAAG,kBAAkB,CAAC;IAElD,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAM;gBAIpC,OAAO,EAAE,YAAY;IAajC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAI,OAAO;IAIjC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAI,OAAO;IAerC,UAAU,IAAK,MAAM,EAAE;IAevB,QAAQ,CACJ,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,IAAI,GACV,IAAI;IAiER,QAAQ,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE;IAgBpD,GAAG,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI1B,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI3B,GAAG,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI1B,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI5B,MAAM,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI7B,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI3B,OAAO,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAM9B,OAAO,CAAC,YAAY;CAIvB"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/route/module.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACR,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EACnC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EACR,cAAc,EACd,IAAI,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,qBAAa,KAAK;IACd,QAAQ,CAAC,aAAa,SAAuB;IAEtC,IAAI,EAAG,IAAI,CAAC;IAEnB,SAAS,CAAC,WAAW,EAAG,WAAW,CAAC;IAEpC,SAAS,CAAC,kBAAkB,EAAG,kBAAkB,CAAC;IAElD,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAM;gBAIpC,OAAO,EAAE,YAAY;IAajC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAI,OAAO;IAIjC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAI,OAAO;IAerC,UAAU,IAAK,MAAM,EAAE;IAevB,QAAQ,CACJ,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,IAAI,GACV,IAAI;IAiER,QAAQ,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE;IAgBpD,GAAG,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI1B,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI3B,GAAG,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI1B,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI5B,MAAM,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI7B,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI3B,OAAO,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAM9B,OAAO,CAAC,YAAY;CAIvB"}
@@ -1,5 +1,5 @@
1
- import { ParseOptions, TokensToRegexpOptions } from 'path-to-regexp';
2
- import { Path } from '../type';
1
+ import type { ParseOptions, TokensToRegexpOptions } from 'path-to-regexp';
2
+ import type { Path } from '../type';
3
3
  export type RouteOptions = {
4
4
  path: Path;
5
5
  pathMatcher: TokensToRegexpOptions & ParseOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/route/type.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,IAAI,CAAC;IAEX,WAAW,EAAE,qBAAqB,GAAG,YAAY,CAAA;CACpD,CAAC"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/route/type.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,IAAI,CAAC;IAEX,WAAW,EAAE,qBAAqB,GAAG,YAAY,CAAA;CACpD,CAAC"}
@@ -1,3 +1,3 @@
1
- import { Route } from './module';
1
+ import type { Route } from './module';
2
2
  export declare function isRouteInstance(input: unknown): input is Route;
3
3
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/route/utils.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,KAAK,CAE/D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/route/utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,KAAK,CAE/D"}
@@ -1,11 +1,12 @@
1
1
  /// <reference types="node" />
2
- import { RequestListener } from 'node:http';
3
- import { ErrorHandler, Handler, Next, Request, Response } from '@routup/core';
4
- import { PathMatcher, PathMatcherOptions } from '../path';
2
+ import type { RequestListener } from 'node:http';
3
+ import type { ErrorHandler, Handler, Next, Request, Response } from '@routup/core';
4
+ import type { PathMatcherOptions } from '../path';
5
+ import { PathMatcher } from '../path';
5
6
  import { Layer } from '../layer';
6
7
  import { Route } from '../route';
7
- import { DispatcherMeta, Path } from '../type';
8
- import { RouterOptions } from './type';
8
+ import type { DispatcherMeta, Path } from '../type';
9
+ import type { RouterOptions } from './type';
9
10
  export declare function isRouterInstance(input: unknown): input is Router;
10
11
  export declare class Router {
11
12
  readonly '@instanceof': symbol;
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/router/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/router/module.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { PathMatcherOptions } from '../path';
2
- import { Path } from '../type';
1
+ import type { PathMatcherOptions } from '../path';
2
+ import type { Path } from '../type';
3
3
  export type RouterOptions = {
4
4
  /**
5
5
  * The path the router is mounted on.
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/router/type.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG;IACxB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ;;;;OAIG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAEhC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/router/type.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,MAAM,aAAa,GAAG;IACxB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ;;;;OAIG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAEhC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -1,3 +1,3 @@
1
- import { Path } from '../type';
1
+ import type { Path } from '../type';
2
2
  export declare function isPath(input: unknown): input is Path;
3
3
  //# sourceMappingURL=path.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,IAAI,CAErD"}
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,IAAI,CAErD"}
@@ -1,3 +1,3 @@
1
- import { Next, Response } from '@routup/core';
1
+ import type { Next, Response } from '@routup/core';
2
2
  export declare function createRequestTimeout(res: Response, timeout: number, done?: Next): void;
3
3
  //# sourceMappingURL=request.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG9C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,QAuB/E"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGnD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,QAuB/E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "routup",
3
- "version": "0.13.0",
3
+ "version": "0.13.1",
4
4
  "description": "Routup is a minimalistic http based routing framework.",
5
5
  "exports": {
6
6
  "./package.json": "./package.json",
@@ -53,14 +53,14 @@
53
53
  "@routup/core": ">=0.6.0 <1.0.0"
54
54
  },
55
55
  "dependencies": {
56
- "@ebec/http": "^0.1.0",
56
+ "@ebec/http": "^0.2.2",
57
57
  "path-to-regexp": "^6.2.1",
58
- "smob": "^0.0.7"
58
+ "smob": "^0.1.0"
59
59
  },
60
60
  "devDependencies": {
61
- "@routup/core": "^0.7.0",
61
+ "@routup/core": "^0.7.1",
62
62
  "@types/supertest": "^2.0.12",
63
63
  "supertest": "^6.3.3"
64
64
  },
65
- "gitHead": "47afe964634e822705d3a22d59b5910bcf9bb1d0"
65
+ "gitHead": "37a5962f64df5d5bc8c83926be8411360634052d"
66
66
  }