routup 1.0.2 → 2.0.0
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/README.md +92 -8
- package/dist/dispatcher/adapters/index.d.ts +3 -0
- package/dist/dispatcher/adapters/node/index.d.ts +1 -0
- package/dist/dispatcher/adapters/node/module.d.ts +6 -0
- package/dist/dispatcher/adapters/raw/module.d.ts +4 -0
- package/dist/dispatcher/adapters/raw/type.d.ts +18 -0
- package/dist/dispatcher/adapters/web/index.d.ts +2 -0
- package/dist/dispatcher/adapters/web/module.d.ts +5 -0
- package/dist/dispatcher/adapters/web/type.d.ts +3 -0
- package/dist/dispatcher/index.d.ts +3 -0
- package/dist/dispatcher/type.d.ts +30 -0
- package/dist/dispatcher/utils.d.ts +4 -0
- package/dist/error.d.ts +1 -0
- package/dist/index.cjs +1075 -538
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -5
- package/dist/index.mjs +1054 -509
- package/dist/index.mjs.map +1 -1
- package/dist/layer/module.d.ts +5 -4
- package/dist/layer/type.d.ts +1 -2
- package/dist/layer/utils.d.ts +1 -1
- package/dist/path/index.d.ts +1 -0
- package/dist/path/matcher.d.ts +1 -2
- package/dist/path/type.d.ts +1 -0
- package/dist/path/utils.d.ts +2 -0
- package/dist/{helpers/request → request/helpers}/body.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/cache.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/cookie.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/env.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/header-accept-charset.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/header-accept-language.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/header-accept.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/header-content-type.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/header.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/hostname.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/index.d.ts +1 -0
- package/dist/{helpers/request → request/helpers}/ip.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/mount-path.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/negotiator.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/params.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/path.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/protocol.d.ts +1 -1
- package/dist/{helpers/request → request/helpers}/query.d.ts +1 -1
- package/dist/request/helpers/router.d.ts +3 -0
- package/dist/request/index.d.ts +3 -0
- package/dist/request/module.d.ts +4 -0
- package/dist/request/types.d.ts +9 -0
- package/dist/{helpers/response → response/helpers}/cache.d.ts +1 -1
- package/dist/response/helpers/gone.d.ts +2 -0
- package/dist/{helpers/response → response/helpers}/header-attachment.d.ts +1 -1
- package/dist/{helpers/response → response/helpers}/header-content-type.d.ts +1 -1
- package/dist/{helpers/response → response/helpers}/header.d.ts +1 -1
- package/dist/{helpers/response → response/helpers}/index.d.ts +3 -0
- package/dist/{helpers/response → response/helpers}/send-accepted.d.ts +2 -2
- package/dist/{helpers/response → response/helpers}/send-created.d.ts +2 -2
- package/dist/response/helpers/send-file.d.ts +17 -0
- package/dist/{helpers/response → response/helpers}/send-format.d.ts +1 -1
- package/dist/response/helpers/send-redirect.d.ts +2 -0
- package/dist/response/helpers/send-stream.d.ts +2 -0
- package/dist/response/helpers/send-web-blob.d.ts +2 -0
- package/dist/response/helpers/send-web-response.d.ts +2 -0
- package/dist/response/helpers/send.d.ts +2 -0
- package/dist/response/helpers/utils.d.ts +2 -0
- package/dist/response/index.d.ts +2 -0
- package/dist/response/module.d.ts +2 -0
- package/dist/route/module.d.ts +6 -5
- package/dist/route/type.d.ts +1 -1
- package/dist/route/utils.d.ts +1 -1
- package/dist/router/index.d.ts +0 -1
- package/dist/router/module.d.ts +13 -32
- package/dist/router/utils.d.ts +1 -0
- package/dist/router-options/index.d.ts +2 -0
- package/dist/router-options/module.d.ts +4 -0
- package/dist/router-options/transform.d.ts +2 -0
- package/dist/router-options/type.d.ts +50 -0
- package/dist/types.d.ts +19 -0
- package/dist/utils/cookie.d.ts +1 -0
- package/dist/utils/etag/module.d.ts +4 -3
- package/dist/utils/etag/type.d.ts +1 -1
- package/dist/utils/header.d.ts +3 -0
- package/dist/utils/index.d.ts +4 -1
- package/dist/utils/path.d.ts +5 -2
- package/dist/utils/stream.d.ts +8 -0
- package/dist/utils/web.d.ts +3 -0
- package/package.json +17 -16
- package/dist/config/module.d.ts +0 -8
- package/dist/config/type.d.ts +0 -34
- package/dist/handler/index.d.ts +0 -1
- package/dist/handler/utils.d.ts +0 -2
- package/dist/helpers/index.d.ts +0 -2
- package/dist/helpers/response/send-file.d.ts +0 -9
- package/dist/helpers/response/send-redirect.d.ts +0 -2
- package/dist/helpers/response/send-stream.d.ts +0 -4
- package/dist/helpers/response/send.d.ts +0 -2
- package/dist/helpers/response/utils.d.ts +0 -3
- package/dist/router/type.d.ts +0 -24
- package/dist/type.d.ts +0 -24
- package/dist/utils/request.d.ts +0 -2
- /package/dist/{config → dispatcher/adapters/raw}/index.d.ts +0 -0
- /package/dist/{helpers/request → request/helpers}/header-accept-encoding.d.ts +0 -0
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/utils/etag/module.ts","../src/utils/object.ts","../src/utils/etag/utils.ts","../src/utils/trust-proxy/module.ts","../src/utils/is-instance.ts","../src/utils/mime.ts","../src/utils/path.ts","../src/utils/promise.ts","../src/utils/request.ts","../src/utils/url.ts","../src/config/module.ts","../src/constants.ts","../src/helpers/request/body.ts","../src/helpers/request/cache.ts","../src/helpers/request/cookie.ts","../src/helpers/request/env.ts","../src/helpers/request/header.ts","../src/helpers/request/negotiator.ts","../src/helpers/request/header-accept.ts","../src/helpers/request/header-accept-charset.ts","../src/helpers/request/header-accept-encoding.ts","../src/helpers/request/header-accept-language.ts","../src/helpers/request/header-content-type.ts","../src/helpers/request/hostname.ts","../src/helpers/request/ip.ts","../src/helpers/request/mount-path.ts","../src/helpers/request/params.ts","../src/helpers/request/path.ts","../src/helpers/request/protocol.ts","../src/helpers/request/query.ts","../src/helpers/response/cache.ts","../src/helpers/response/header.ts","../src/helpers/response/utils.ts","../src/helpers/response/header-attachment.ts","../src/helpers/response/header-content-type.ts","../src/helpers/response/send.ts","../src/helpers/response/send-accepted.ts","../src/helpers/response/send-created.ts","../src/helpers/response/send-stream.ts","../src/helpers/response/send-file.ts","../src/helpers/response/send-format.ts","../src/helpers/response/send-redirect.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":["import crypto from 'node:crypto';\nimport { Stats } from 'node:fs';\nimport type { EtagOptions } from './type';\n\n/**\n * Determine if object is a Stats object.\n *\n * @param {object} obj\n * @return {boolean}\n * @api private\n */\nfunction isStatsObject(obj: unknown) : obj is Stats {\n /* istanbul ignore next */\n if (\n typeof Stats === 'function' &&\n obj instanceof Stats\n ) {\n return true;\n }\n\n // quack quack\n return !!obj && typeof obj === 'object' &&\n 'ctime' in obj && Object.prototype.toString.call(obj.ctime) === '[object Date]' &&\n 'mtime' in obj && Object.prototype.toString.call(obj.mtime) === '[object Date]' &&\n 'ino' in obj && typeof obj.ino === 'number' &&\n 'size' in obj && typeof obj.size === 'number';\n}\n\n/**\n * Generate an ETag.\n */\nexport function generateETag(input: string | Buffer | Stats) : string {\n if (isStatsObject(input)) {\n const mtime = input.mtime.getTime().toString(16);\n const size = input.size.toString(16);\n\n return `\"${size}-${mtime}\"`;\n }\n\n if (input.length === 0) {\n // fast-path empty\n return '\"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk\"';\n }\n\n const entity = Buffer.isBuffer(input) ?\n input.toString('utf-8') :\n input;\n\n // compute hash of entity\n const hash = crypto\n .createHash('sha1')\n .update(entity, 'utf8')\n .digest('base64')\n .substring(0, 27);\n\n return `\"${entity.length.toString(16)}-${hash}\"`;\n}\n\n/**\n * Create a simple ETag.\n */\nexport function createEtag(\n input: string | Buffer | Stats,\n options?: EtagOptions,\n) : string {\n options = options || {};\n\n const weak = typeof options.weak === 'boolean' ?\n options.weak :\n isStatsObject(input);\n\n // generate entity tag\n const tag = generateETag(input);\n\n return weak ?\n `W/${tag}` :\n tag;\n}\n","export function isObject(item: unknown) : item is Record<string, any> {\n return (\n !!item &&\n typeof item === 'object' &&\n !Array.isArray(item)\n );\n}\n","import { merge } from 'smob';\nimport { isObject } from '../object';\nimport { createEtag } from './module';\nimport type { EtagFn, EtagOptions } from './type';\n\nexport function buildEtagFn(input?: boolean | EtagOptions | EtagFn) : EtagFn {\n if (typeof input === 'function') {\n return input;\n }\n\n input = input ?? true;\n\n if (input === false) {\n return () => undefined;\n }\n\n let options : EtagOptions = {\n weak: true,\n };\n\n if (isObject(input)) {\n options = merge(input, options);\n }\n\n return (body: any, encoding?: BufferEncoding, size?: number) => {\n const buff = Buffer.isBuffer(body) ?\n body :\n Buffer.from(body, encoding);\n\n if (typeof options.threshold !== 'undefined') {\n size = size ?? Buffer.byteLength(buff);\n\n if (size <= options.threshold) {\n return undefined;\n }\n }\n\n return createEtag(buff, options);\n };\n}\n","import proxyAddr from 'proxy-addr';\nimport type { TrustProxyFn } from './type';\n\nexport function buildTrustProxyFn(\n input?: boolean | number | string | string[] | TrustProxyFn,\n) : TrustProxyFn {\n if (typeof input === 'function') {\n return input;\n }\n\n if (input === true) {\n return () => true;\n }\n\n if (typeof input === 'number') {\n return (_address, hop) => hop < (input as number);\n }\n\n if (typeof input === 'string') {\n input = input.split(',')\n .map((value) => value.trim());\n }\n\n return proxyAddr.compile(input || []);\n}\n","export 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","import { get, getType } from 'mime-explorer';\n\nexport function getMimeType(type: string) : string | undefined {\n if (type.indexOf('/') !== -1) {\n return type;\n }\n\n return getType(type);\n}\n\nexport function getCharsetForMimeType(type: string) : string | undefined {\n if ((/^text\\/|^application\\/(javascript|json)/).test(type)) {\n return 'utf-8';\n }\n\n const meta = get(type);\n if (\n meta &&\n meta.charset\n ) {\n return meta.charset.toLowerCase();\n }\n\n return undefined;\n}\n","import type { Path } from '../type';\n\nexport function isPath(input: unknown) : input is Path {\n return typeof input === 'string' || input instanceof RegExp;\n}\n","import { isObject } from './object';\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","import { GatewayTimeoutErrorOptions } from '@ebec/http';\nimport type { Next, Response } from '../type';\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 /* istanbul ignore next */\n if (typeof done === 'function') {\n done();\n }\n });\n\n /* istanbul ignore next */\n res.once('error', (e) => {\n clearTimeout(instance);\n\n if (typeof done === 'function') {\n done(e);\n }\n });\n}\n","const TRAILING_SLASH_RE = /\\/$|\\/\\?/;\n\nexport function hasTrailingSlash(input = '', queryParams = false): boolean {\n if (!queryParams) {\n return input.endsWith('/');\n }\n\n return TRAILING_SLASH_RE.test(input);\n}\n\nexport function withoutTrailingSlash(input = '', queryParams = false): string {\n if (!queryParams) {\n return (hasTrailingSlash(input) ? input.slice(0, -1) : input) || '/';\n }\n\n if (!hasTrailingSlash(input, true)) {\n return input || '/';\n }\n\n const [s0, ...s] = input.split('?');\n\n return (s0.slice(0, -1) || '/') + (s.length ? `?${s.join('?')}` : '');\n}\n\nexport function withTrailingSlash(input = '', queryParams = false): string {\n if (!queryParams) {\n return input.endsWith('/') ? input : (`${input}/`);\n }\n\n if (hasTrailingSlash(input, true)) {\n return input || '/';\n }\n\n const [s0, ...s] = input.split('?');\n return `${s0}/${s.length ? `?${s.join('?')}` : ''}`;\n}\n\nexport function hasLeadingSlash(input = ''): boolean {\n return input.startsWith('/');\n}\n\nexport function withoutLeadingSlash(input = ''): string {\n return (hasLeadingSlash(input) ? input.substr(1) : input) || '/';\n}\n\nexport function withLeadingSlash(input = ''): string {\n return hasLeadingSlash(input) ? input : (`/${input}`);\n}\n\nexport function cleanDoubleSlashes(input = ''): string {\n return input.split('://')\n .map((str) => str.replace(/\\/{2,}/g, '/'))\n .join('://');\n}\n","import type { FlattenObject } from 'continu';\nimport { Continu } from 'continu';\nimport process from 'node:process';\nimport zod from 'zod';\nimport type {\n EtagInput,\n TrustProxyInput,\n} from '../utils';\nimport {\n buildEtagFn,\n buildTrustProxyFn,\n} from '../utils';\nimport type { Options, OptionsInput } from './type';\n\nlet instance : Continu<Options, OptionsInput> | undefined;\n\nexport function buildConfig() {\n return new Continu<Options, OptionsInput>({\n defaults: {\n env: process.env.NODE_ENV || 'development',\n trustProxy: () => false,\n subdomainOffset: 2,\n etag: buildEtagFn(),\n proxyIpMax: 0,\n },\n transformers: {\n etag: (value) => buildEtagFn(value as EtagInput),\n trustProxy: (value) => buildTrustProxyFn(value as TrustProxyInput),\n },\n validators: {\n env: (value) => zod.string().safeParse(value),\n trustProxy: (value) => zod.any().safeParse(value),\n subdomainOffset: (value) => zod.number().nonnegative().safeParse(value),\n etag: (value) => zod.any().safeParse(value),\n proxyIpMax: (value) => zod.number().nonnegative().safeParse(value),\n },\n });\n}\n\nexport function useConfig() {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = buildConfig();\n\n return instance;\n}\n\nexport function setConfig(config: Continu<Options, OptionsInput>) {\n instance = config;\n}\n\nexport function setConfigOption<K extends keyof FlattenObject<OptionsInput>>(\n key: K,\n value: FlattenObject<OptionsInput>[K],\n) {\n const config = useConfig();\n\n config.setRaw(key, value);\n\n return config.get();\n}\n\nexport function getConfigOption(key: keyof FlattenObject<OptionsInput>) {\n const config = useConfig();\n\n return config.get(key);\n}\n","export enum MethodName {\n GET = 'get',\n POST = 'post',\n PUT = 'put',\n PATCH = 'patch',\n DELETE = 'delete',\n OPTIONS = 'options',\n HEAD = 'head',\n}\n\nexport enum HeaderName {\n ACCEPT = 'accept',\n ACCEPT_CHARSET = 'accept-charset',\n ACCEPT_ENCODING = 'accept-encoding',\n ACCEPT_LANGUAGE = 'accept-language',\n ACCEPT_RANGES = 'accept-ranges',\n ALLOW = 'allow',\n CACHE_CONTROL = 'cache-control',\n CONTENT_DISPOSITION = 'content-disposition',\n CONTENT_ENCODING = 'content-encoding',\n CONTENT_LENGTH = 'content-length',\n CONTENT_RANGE = 'content-range',\n CONTENT_TYPE = 'content-type',\n COOKIE = 'cookie',\n ETag = 'etag',\n HOST = 'host',\n IF_MODIFIED_SINCE = 'if-modified-since',\n IF_NONE_MATCH = 'if-none-match',\n LAST_MODIFIED = 'last-modified',\n LOCATION = 'location',\n RANGE = 'range',\n RATE_LIMIT_LIMIT = 'ratelimit-limit',\n RATE_LIMIT_REMAINING = 'ratelimit-remaining',\n RATE_LIMIT_RESET = 'ratelimit-reset',\n RETRY_AFTER = 'retry-after',\n SET_COOKIE = 'set-cookie',\n TRANSFER_ENCODING = 'transfer-encoding',\n X_FORWARDED_HOST = 'x-forwarded-host',\n X_FORWARDED_FOR = 'x-forwarded-for',\n X_FORWARDED_PROTO = 'x-forwarded-proto',\n}\n","import { merge } from 'smob';\nimport type { Request } from '../../type';\nimport { isObject } from '../../utils';\n\nconst BodySymbol = Symbol.for('ReqBody');\n\nexport function useRequestBody(req: Request) : Record<string, any>;\nexport function useRequestBody(req: Request, key: string) : any | undefined;\nexport function useRequestBody(req: Request, key?: string) {\n let body : Record<string, any> | undefined;\n\n /* istanbul ignore next */\n if ('body' in req) {\n body = (req as any).body;\n }\n\n if (BodySymbol in req) {\n if (body) {\n body = merge(\n {},\n (req as any)[BodySymbol],\n body,\n );\n } else {\n body = (req as any)[BodySymbol];\n }\n }\n\n if (body) {\n if (typeof key === 'string') {\n return body[key];\n }\n\n return body;\n }\n\n return typeof key === 'string' ?\n undefined :\n {};\n}\n\nexport function hasRequestBody(req: Request) : boolean {\n return 'body' in req || BodySymbol in req;\n}\n\nexport function setRequestBody(req: Request, key: string, value: unknown) : void;\nexport function setRequestBody(req: Request, record: Record<string, any>) : void;\nexport function setRequestBody(req: Request, key: Record<string, any> | string, value?: unknown) : void {\n if (isObject(key)) {\n (req as any)[BodySymbol] = key;\n return;\n }\n\n (req as any)[BodySymbol] = {\n [key]: value,\n };\n}\n\nexport function extendRequestBody(req: Request, key: string, value: unknown) : void;\nexport function extendRequestBody(req: Request, record: Record<string, any>) : void;\nexport function extendRequestBody(req: Request, key: Record<string, any> | string, value?: unknown) : void {\n if (hasRequestBody(req)) {\n const body = useRequestBody(req);\n\n // body can not be merged :/\n if (!isObject(body)) {\n return;\n }\n\n if (isObject(key)) {\n (req as any)[BodySymbol] = merge({}, key, body);\n } else {\n body[key] = value;\n (req as any)[BodySymbol] = body;\n }\n\n return;\n }\n\n if (isObject(key)) {\n setRequestBody(req, key);\n\n return;\n }\n\n setRequestBody(req, key, value);\n}\n","import { HeaderName } from '../../constants';\nimport type { Request } from '../../type';\n\nexport function isRequestCacheable(req: Request, modifiedTime: string | Date) : boolean {\n const modifiedSince = req.headers[HeaderName.IF_MODIFIED_SINCE];\n if (!modifiedSince) {\n return false;\n }\n\n modifiedTime = typeof modifiedTime === 'string' ?\n new Date(modifiedTime) :\n modifiedTime;\n\n return new Date(modifiedSince) >= modifiedTime;\n}\n","import { merge } from 'smob';\nimport type { Request } from '../../type';\nimport { isObject } from '../../utils';\n\nconst CookieSymbol = Symbol.for('ReqCookie');\n\nexport function useRequestCookies(\n req: Request,\n) : Record<string, string> {\n if (CookieSymbol in req) {\n return (req as any)[CookieSymbol];\n }\n\n return {};\n}\n\nexport function hasRequestCookies(req: Request) {\n return CookieSymbol in req &&\n isObject((req as any)[CookieSymbol]);\n}\n\nexport function useRequestCookie(req: Request, name: string) : string | undefined {\n return useRequestCookies(req)[name];\n}\n\nexport function setRequestCookies(req: Request, key: string, value: unknown) : void;\nexport function setRequestCookies(req: Request, record: Record<string, any>) : void;\nexport function setRequestCookies(req: Request, key: Record<string, any> | string, value?: unknown) : void {\n if (isObject(key)) {\n (req as any)[CookieSymbol] = key;\n return;\n }\n\n (req as any)[CookieSymbol] = {\n [key]: value,\n };\n}\n\nexport function extendRequestCookies(req: Request, key: string, value: string) : void;\nexport function extendRequestCookies(req: Request, record: Record<string, any>) : void;\nexport function extendRequestCookies(\n req: Request,\n key: string | Record<string, any>,\n value?: string,\n) {\n if (hasRequestCookies(req)) {\n const cookies = useRequestCookies(req);\n\n if (isObject(key)) {\n (req as any)[CookieSymbol] = merge({}, key, cookies);\n } else {\n cookies[key] = value as string;\n (req as any)[CookieSymbol] = cookies;\n }\n\n (req as any)[CookieSymbol] = merge((req as any)[CookieSymbol], cookies);\n\n return;\n }\n\n if (isObject(key)) {\n setRequestCookies(req, key);\n\n return;\n }\n\n setRequestCookies(req, key, value);\n}\n","import { hasOwnProperty, merge } from 'smob';\nimport type { Request } from '../../type';\n\nconst envSymbol = Symbol.for('ReqEnv');\n\nexport function setRequestEnv(req: Request, key: string, value: unknown) : void;\nexport function setRequestEnv(req: Request, record: Record<string, any>, append?: boolean) : void;\nexport function setRequestEnv(req: Request, key: Record<string, any> | string, value?: boolean | unknown) : void {\n if (envSymbol in req) {\n if (typeof key === 'object') {\n if (value) {\n (req as any)[envSymbol] = merge((req as any)[envSymbol], key);\n } else {\n (req as any)[envSymbol] = key;\n }\n } else {\n (req as any)[envSymbol][key] = value;\n }\n\n return;\n }\n\n if (typeof key === 'object') {\n (req as any)[envSymbol] = key;\n return;\n }\n\n (req as any)[envSymbol] = {\n [key]: value,\n };\n}\n\nexport function useRequestEnv(req: Request) : Record<string, any>;\nexport function useRequestEnv(req: Request, key: string) : unknown | undefined;\nexport function useRequestEnv(req: Request, key?: string) {\n if (envSymbol in req) {\n if (typeof key === 'string') {\n return (req as any)[envSymbol][key];\n }\n\n return (req as any)[envSymbol];\n }\n\n if (typeof key === 'string') {\n return undefined;\n }\n\n return {};\n}\n\nexport function unsetRequestEnv(req: Request, key: string) {\n if (envSymbol in req) {\n if (hasOwnProperty((req as any)[envSymbol], key)) {\n delete (req as any)[envSymbol][key];\n }\n }\n}\n","import type { IncomingHttpHeaders } from 'node:http';\nimport type { Request } from '../../type';\n\nexport function getRequestHeader<K extends keyof IncomingHttpHeaders>(\n req: Request,\n name: K,\n) : IncomingHttpHeaders[K] {\n return req.headers[name];\n}\n\nexport function setRequestHeader<K extends keyof IncomingHttpHeaders>(\n req: Request,\n name: K,\n value: IncomingHttpHeaders[K],\n) {\n req.headers[name] = value;\n}\n","import Negotiator from 'negotiator';\nimport type { Request } from '../../type';\n\nconst NegotiatorSymbol = Symbol.for('ReqNegotiator');\n\nexport function useRequestNegotiator(req: Request) : Negotiator {\n if (NegotiatorSymbol in req) {\n return (req as any)[NegotiatorSymbol];\n }\n\n return new Negotiator(req);\n}\n","import type { Request } from '../../type';\nimport { HeaderName } from '../../constants';\nimport { getMimeType } from '../../utils';\nimport { getRequestHeader } from './header';\nimport { useRequestNegotiator } from './negotiator';\n\nexport function getRequestAcceptableContentTypes(req: Request) : string[] {\n const negotiator = useRequestNegotiator(req);\n\n return negotiator.mediaTypes();\n}\n\nexport function getRequestAcceptableContentType(req: Request, input?: string | string[]) : string | undefined {\n input = input || [];\n\n const items = Array.isArray(input) ? input : [input];\n\n if (items.length === 0) {\n return getRequestAcceptableContentTypes(req).shift();\n }\n\n const header = getRequestHeader(req, HeaderName.ACCEPT);\n if (!header) {\n return items[0];\n }\n\n let polluted = false;\n const mimeTypes : string[] = [];\n for (let i = 0; i < items.length; i++) {\n const mimeType = getMimeType(items[i]);\n if (mimeType) {\n mimeTypes.push(mimeType);\n } else {\n polluted = true;\n }\n }\n\n const negotiator = useRequestNegotiator(req);\n const matches = negotiator.mediaTypes(mimeTypes);\n if (matches.length > 0) {\n if (polluted) {\n return items[0];\n }\n\n return items[mimeTypes.indexOf(matches[0])];\n }\n\n return undefined;\n}\n","import type { Request } from '../../type';\nimport { useRequestNegotiator } from './negotiator';\n\nexport function getRequestAcceptableCharsets(req: Request) : string[] {\n const negotiator = useRequestNegotiator(req);\n\n return negotiator.charsets();\n}\n\nexport function getRequestAcceptableCharset(req: Request, input: string | string[]) : string | undefined {\n input = input || [];\n\n const items = Array.isArray(input) ? input : [input];\n\n if (items.length === 0) {\n return getRequestAcceptableCharsets(req).shift();\n }\n\n const negotiator = useRequestNegotiator(req);\n return negotiator.charsets(items).shift() || undefined;\n}\n","import type { IncomingMessage } from 'node:http';\nimport { useRequestNegotiator } from './negotiator';\n\nexport function getRequestAcceptableEncodings(req: IncomingMessage) : string[] {\n const negotiator = useRequestNegotiator(req);\n return negotiator.encodings();\n}\n\nexport function getRequestAcceptableEncoding(req: IncomingMessage, input: string | string[]) : string | undefined {\n input = input || [];\n\n const items = Array.isArray(input) ? input : [input];\n\n if (items.length === 0) {\n return getRequestAcceptableEncodings(req).shift();\n }\n\n const negotiator = useRequestNegotiator(req);\n return negotiator.encodings(items).shift() || undefined;\n}\n","import type { Request } from '../../type';\nimport { useRequestNegotiator } from './negotiator';\n\nexport function getRequestAcceptableLanguages(req: Request) : string[] {\n const negotiator = useRequestNegotiator(req);\n return negotiator.languages();\n}\n\nexport function getRequestAcceptableLanguage(req: Request, input?: string | string[]) : string | undefined {\n input = input || [];\n\n const items = Array.isArray(input) ? input : [input];\n\n if (items.length === 0) {\n return getRequestAcceptableLanguages(req).shift();\n }\n\n const negotiator = useRequestNegotiator(req);\n return negotiator.languages(items).shift() || undefined;\n}\n","import { HeaderName } from '../../constants';\nimport type { Request } from '../../type';\nimport { getMimeType } from '../../utils';\nimport { getRequestHeader } from './header';\n\nexport function matchRequestContentType(req: Request, contentType: string) : boolean {\n const header = getRequestHeader(req, HeaderName.CONTENT_TYPE);\n if (!header) {\n return true;\n }\n\n /* istanbul ignore next */\n if (Array.isArray(header)) {\n if (header.length === 0) {\n return true;\n }\n\n return header[0] === getMimeType(contentType);\n }\n\n return header.split('; ').shift() === getMimeType(contentType);\n}\n","import type { Request } from '../../type';\nimport { useConfig } from '../../config';\nimport { HeaderName } from '../../constants';\nimport type { TrustProxyFn, TrustProxyInput } from '../../utils';\nimport { buildTrustProxyFn } from '../../utils';\n\ntype RequestHostNameOptions = {\n trustProxy?: TrustProxyInput\n};\n\nexport function getRequestHostName(req: Request, options?: RequestHostNameOptions) : string | undefined {\n options = options || {};\n\n let trustProxy : TrustProxyFn;\n if (typeof options.trustProxy !== 'undefined') {\n trustProxy = buildTrustProxyFn(options.trustProxy);\n } else {\n const config = useConfig();\n trustProxy = config.get('trustProxy');\n }\n\n let hostname = req.headers[HeaderName.X_FORWARDED_HOST];\n if (!hostname || !req.socket.remoteAddress || !trustProxy(req.socket.remoteAddress, 0)) {\n hostname = req.headers[HeaderName.HOST];\n } else {\n hostname = Array.isArray(hostname) ? hostname.pop() : hostname;\n if (hostname && hostname.indexOf(',') !== -1) {\n hostname = hostname.substring(0, hostname.indexOf(',')).trimEnd();\n }\n }\n\n if (!hostname) {\n return undefined;\n }\n\n // IPv6 literal support\n const offset = hostname[0] === '[' ?\n hostname.indexOf(']') + 1 :\n 0;\n const index = hostname.indexOf(':', offset);\n\n return index !== -1 ?\n hostname.substring(0, index) :\n hostname;\n}\n","import proxyAddr from 'proxy-addr';\nimport type { Request } from '../../type';\nimport { useConfig } from '../../config';\nimport type { TrustProxyFn, TrustProxyInput } from '../../utils';\nimport { buildTrustProxyFn } from '../../utils';\n\ntype RequestIpOptions = {\n trustProxy?: TrustProxyInput\n};\n\nexport function getRequestIP(req: Request, options?: RequestIpOptions) : string {\n options = options || {};\n\n let trustProxy : TrustProxyFn;\n if (typeof options.trustProxy !== 'undefined') {\n trustProxy = buildTrustProxyFn(options.trustProxy);\n } else {\n const config = useConfig();\n trustProxy = config.get('trustProxy');\n }\n\n return proxyAddr(req, trustProxy);\n}\n","import type { Request } from '../../type';\n\nconst ReqMountPathSymbol = Symbol.for('ReqMountPath');\n\nexport function useRequestMountPath(req: Request) : string {\n if (ReqMountPathSymbol in req) {\n return (req as any)[ReqMountPathSymbol];\n }\n\n return '/';\n}\n\nexport function setRequestMountPath(req: Request, basePath: string) {\n (req as any)[ReqMountPathSymbol] = basePath;\n}\n","import type { Request } from '../../type';\n\nconst ParamsSymbol = Symbol.for('ReqParams');\n\nexport function useRequestParams(req: Request) : Record<string, any> {\n /* istanbul ignore next */\n if ('params' in req) {\n return (req as any).params;\n }\n\n if (ParamsSymbol in req) {\n return (req as any)[ParamsSymbol];\n }\n\n return {};\n}\n\nexport function useRequestParam(req: Request, key: string) : any {\n return useRequestParams(req)[key];\n}\n\nexport function setRequestParams(\n req: Request,\n data: Record<string, any>,\n) {\n (req as any)[ParamsSymbol] = data;\n}\n\nexport function setRequestParam(\n req: Request,\n key: string,\n value: any,\n) {\n const params = useRequestParams(req);\n params[key] = value;\n\n setRequestParams(req, params);\n}\n","import { URL } from 'node:url';\nimport type { Request } from '../../type';\n\nconst PathSymbol = Symbol.for('ReqPath');\n\nexport function useRequestPath(req: Request) : string {\n if ('path' in req) {\n return (req as any).path;\n }\n\n if (PathSymbol in req) {\n return (req as any)[PathSymbol];\n }\n\n if (typeof req.url === 'undefined') {\n return '/';\n }\n\n const parsed = new URL(req.url, 'http://localhost/');\n\n (req as any)[PathSymbol] = parsed.pathname;\n\n return (req as any)[PathSymbol];\n}\n","import { hasOwnProperty } from 'smob';\nimport { useConfig } from '../../config';\nimport { HeaderName } from '../../constants';\nimport type { Request } from '../../type';\nimport type { TrustProxyFn, TrustProxyInput } from '../../utils';\nimport { buildTrustProxyFn } from '../../utils';\n\ntype RequestProtocolOptions = {\n trustProxy?: TrustProxyInput,\n default?: string\n};\n\nexport function getRequestProtocol(\n req: Request,\n options?: RequestProtocolOptions,\n) : string {\n options = options || {};\n\n let trustProxy : TrustProxyFn;\n if (typeof options.trustProxy !== 'undefined') {\n trustProxy = buildTrustProxyFn(options.trustProxy);\n } else {\n const config = useConfig();\n trustProxy = config.get('trustProxy');\n }\n\n let protocol : string | undefined = options.default;\n /* istanbul ignore next */\n if (\n hasOwnProperty(req.socket, 'encrypted') &&\n !!req.socket.encrypted\n ) {\n protocol = 'https';\n } else if (!protocol) {\n protocol = 'http';\n }\n\n if (!req.socket.remoteAddress || !trustProxy(req.socket.remoteAddress, 0)) {\n return protocol;\n }\n\n let header = req.headers[HeaderName.X_FORWARDED_PROTO];\n /* istanbul ignore next */\n if (Array.isArray(header)) {\n header = header.pop();\n }\n\n if (!header) {\n return protocol;\n }\n\n const index = header.indexOf(',');\n\n return index !== -1 ?\n header.substring(0, index).trim() :\n header.trim();\n}\n","import { merge } from 'smob';\nimport { isObject } from '../../utils';\nimport type { Request } from '../../type';\n\nconst QuerySymbol = Symbol.for('ReqQuery');\n\nexport function useRequestQuery(req: Request) : Record<string, any>;\nexport function useRequestQuery(req: Request, key: string) : any;\nexport function useRequestQuery(req: Request, key?: string) {\n /* istanbul ignore if */\n if ('query' in req) {\n if (typeof key === 'string') {\n return (req as any).query[key];\n }\n\n return (req as any).query;\n }\n\n if (QuerySymbol in req) {\n if (typeof key === 'string') {\n return (req as any)[QuerySymbol][key];\n }\n\n return (req as any)[QuerySymbol];\n }\n\n return typeof key === 'string' ?\n undefined :\n {};\n}\n\nexport function hasRequestQuery(req: Request) : boolean {\n return (\n (QuerySymbol in req) &&\n isObject((req as any)[QuerySymbol])\n ) ||\n (\n ('query' in req) &&\n isObject(req.query)\n );\n}\n\nexport function setRequestQuery(req: Request, key: string, value: unknown) : void;\nexport function setRequestQuery(req: Request, record: Record<string, any>) : void;\nexport function setRequestQuery(req: Request, key: Record<string, any> | string, value?: unknown) : void {\n if (isObject(key)) {\n (req as any)[QuerySymbol] = key;\n return;\n }\n\n (req as any)[QuerySymbol] = {\n [key]: value,\n };\n}\n\nexport function extendRequestQuery(req: Request, key: string, value: unknown) : void;\nexport function extendRequestQuery(req: Request, record: Record<string, any>) : void;\nexport function extendRequestQuery(req: Request, key: Record<string, any> | string, value?: unknown) : void {\n if (hasRequestQuery(req)) {\n const query = useRequestQuery(req);\n\n if (isObject(key)) {\n (req as any)[QuerySymbol] = merge({}, key, query);\n } else {\n query[key] = value;\n (req as any)[QuerySymbol] = query;\n }\n\n return;\n }\n\n if (isObject(key)) {\n setRequestQuery(req, key);\n return;\n }\n\n setRequestQuery(req, key, value);\n}\n","import type { Response } from '../../type';\n\nexport type ResponseCacheHeadersOptions = {\n maxAge?: number,\n modifiedTime?: string | Date,\n cacheControls?: string[]\n};\n\nexport function setResponseCacheHeaders(res: Response, options?: ResponseCacheHeadersOptions) {\n options = options || {};\n\n const cacheControls = ['public'].concat(options.cacheControls || []);\n\n if (options.maxAge !== undefined) {\n cacheControls.push(`max-age=${+options.maxAge}`, `s-maxage=${+options.maxAge}`);\n }\n\n if (options.modifiedTime) {\n const modifiedTime = typeof options.modifiedTime === 'string' ?\n new Date(options.modifiedTime) :\n options.modifiedTime;\n\n res.setHeader('last-modified', modifiedTime.toUTCString());\n }\n\n res.setHeader('cache-control', cacheControls.join(', '));\n}\n","import type { OutgoingHttpHeader } from 'node:http';\nimport type { Response } from '../../type';\n\nexport function appendResponseHeader(\n res: Response,\n name: string,\n value: OutgoingHttpHeader,\n) {\n let header = res.getHeader(name);\n if (!header) {\n res.setHeader(name, value);\n\n return;\n }\n\n if (!Array.isArray(header)) {\n header = [header.toString()];\n }\n\n res.setHeader(name, [...header, value] as readonly string[]);\n}\n\nexport function appendResponseHeaderDirective(\n res: Response,\n name: string,\n value: OutgoingHttpHeader,\n) {\n let header = res.getHeader(name);\n if (!header) {\n if (Array.isArray(value)) {\n res.setHeader(name, value.join('; '));\n return;\n }\n\n res.setHeader(name, value);\n return;\n }\n\n if (!Array.isArray(header)) {\n if (typeof header === 'string') {\n // split header by directive(s)\n header = header.split('; ');\n }\n\n if (typeof header === 'number') {\n header = [header.toString()];\n }\n }\n\n if (Array.isArray(value)) {\n header.push(...value);\n } else {\n header.push(`${value}`);\n }\n\n header = [...new Set(header)];\n\n res.setHeader(name, header.join('; '));\n}\n","import path from 'node:path';\nimport { HeaderName } from '../../constants';\nimport type { Response } from '../../type';\nimport { getCharsetForMimeType, getMimeType } from '../../utils';\n\nexport function setResponseContentTypeByFileName(res: Response, fileName: string) {\n const ext = path.extname(fileName);\n if (ext) {\n let type = getMimeType(ext.substring(1));\n if (type) {\n const charset = getCharsetForMimeType(type);\n if (charset) {\n type += `; charset=${charset}`;\n }\n res.setHeader(HeaderName.CONTENT_TYPE, type);\n }\n }\n}\n\n/* istanbul ignore next */\nexport function onResponseFinished(\n res: Response,\n cb: (err?: Error) => void,\n) {\n let called : boolean;\n\n const callCallback = (err?: Error) => {\n if (called) return;\n\n called = true;\n\n cb(err);\n };\n\n res.on('finish', () => {\n callCallback();\n });\n\n res.on('close', () => {\n callCallback();\n });\n\n res.on('error', (err) => {\n callCallback(err);\n });\n}\n","import { HeaderName } from '../../constants';\nimport type { Response } from '../../type';\nimport { setResponseContentTypeByFileName } from './utils';\n\nexport function setResponseHeaderAttachment(res: Response, filename?: string) {\n if (typeof filename === 'string') {\n setResponseContentTypeByFileName(res, filename);\n }\n\n res.setHeader(\n HeaderName.CONTENT_DISPOSITION,\n `attachment${filename ? `; filename=\"${filename}\"` : ''}`,\n );\n}\n","import { HeaderName } from '../../constants';\nimport type { Response } from '../../type';\nimport { getMimeType } from '../../utils';\n\nexport function setResponseHeaderContentType(res: Response, input: string, ifNotExists?: boolean) {\n if (ifNotExists) {\n const header = res.getHeader(HeaderName.CONTENT_TYPE);\n if (header) {\n return;\n }\n }\n\n const contentType = getMimeType(input);\n if (contentType) {\n res.setHeader(HeaderName.CONTENT_TYPE, contentType);\n }\n}\n","import { useConfig } from '../../config';\nimport { HeaderName } from '../../constants';\nimport type { Response } from '../../type';\nimport { appendResponseHeaderDirective } from './header';\nimport { setResponseHeaderContentType } from './header-content-type';\n\nexport function send(res: Response, chunk?: any) {\n switch (typeof chunk) {\n case 'string': {\n setResponseHeaderContentType(res, 'html', true);\n break;\n }\n case 'boolean':\n case 'number':\n case 'object': {\n if (chunk === null) {\n chunk = '';\n } else if (Buffer.isBuffer(chunk)) {\n setResponseHeaderContentType(res, 'bin', true);\n } else {\n chunk = JSON.stringify(chunk);\n\n setResponseHeaderContentType(res, 'application/json', true);\n }\n break;\n }\n }\n\n let encoding : BufferEncoding | undefined;\n\n if (typeof chunk === 'string') {\n res.setHeader(HeaderName.CONTENT_ENCODING, 'utf-8');\n\n appendResponseHeaderDirective(res, HeaderName.CONTENT_TYPE, 'charset=utf-8');\n\n encoding = 'utf-8';\n }\n\n // populate Content-Length\n let len : number | undefined;\n if (chunk !== undefined) {\n if (Buffer.isBuffer(chunk)) {\n // get length of Buffer\n len = chunk.length;\n } else if (chunk.length < 1000) {\n // just calculate length when no ETag + small chunk\n len = Buffer.byteLength(chunk, encoding);\n } else {\n // convert chunk to Buffer and calculate\n chunk = Buffer.from(chunk, encoding);\n encoding = undefined;\n len = chunk.length;\n }\n\n res.setHeader(HeaderName.CONTENT_LENGTH, `${len}`);\n }\n\n const config = useConfig();\n const etagFn = config.get('etag');\n\n if (\n typeof len !== 'undefined'\n ) {\n const chunkHash = etagFn(chunk, encoding, len);\n if (typeof chunkHash === 'string') {\n res.setHeader(HeaderName.ETag, chunkHash);\n\n if (res.req.headers[HeaderName.IF_NONE_MATCH] === chunkHash) {\n res.statusCode = 304;\n }\n }\n }\n\n // strip irrelevant headers\n if (res.statusCode === 204 || res.statusCode === 304) {\n res.removeHeader(HeaderName.CONTENT_TYPE);\n res.removeHeader(HeaderName.CONTENT_LENGTH);\n res.removeHeader(HeaderName.TRANSFER_ENCODING);\n chunk = '';\n }\n\n // alter headers for 205\n if (res.statusCode === 205) {\n res.setHeader(HeaderName.CONTENT_LENGTH, 0);\n res.removeHeader(HeaderName.TRANSFER_ENCODING);\n chunk = '';\n }\n\n if (res.req.method === 'HEAD') {\n // skip body for HEAD\n res.end();\n\n return;\n }\n\n if (typeof encoding !== 'undefined') {\n res.end(chunk, encoding);\n return;\n }\n\n res.end(chunk);\n}\n","import type { Response } from '../../type';\nimport { send } from './send';\n\nexport function sendAccepted(res: Response, chunk?: any) {\n res.statusCode = 202;\n res.statusMessage = 'Accepted';\n\n return send(res, chunk);\n}\n","import type { Response } from '../../type';\nimport { send } from './send';\n\nexport function sendCreated(res: Response, chunk?: any) {\n res.statusCode = 201;\n res.statusMessage = 'Created';\n\n return send(res, chunk);\n}\n","import type { Readable } from 'node:stream';\nimport type { Response } from '../../type';\n\nexport function sendStream(res: Response, stream: Readable, fn?: CallableFunction) {\n stream.on('open', () => {\n stream.pipe(res);\n });\n\n /* istanbul ignore next */\n stream.on('error', (err) => {\n if (typeof fn === 'function') {\n fn(err);\n } else {\n res.statusCode = 400;\n res.end();\n }\n });\n\n stream.on('close', () => {\n if (typeof fn === 'function') {\n fn();\n } else {\n res.end();\n }\n });\n}\n","import type { Stats } from 'node:fs';\nimport { createReadStream, stat } from 'node:fs';\nimport path from 'node:path';\nimport { HeaderName } from '../../constants';\nimport type { Response } from '../../type';\nimport { setResponseHeaderAttachment } from './header-attachment';\nimport { sendStream } from './send-stream';\nimport { setResponseContentTypeByFileName } from './utils';\n\ntype ReadStreamOptions = {\n end?: number,\n\n start?: number | undefined;\n};\n\nexport type SendFileOptions = {\n stats?: Stats,\n filePath: string,\n attachment?: boolean\n};\n\nfunction resolveStats(\n options: SendFileOptions,\n cb: (err: Error | null, stats: Stats) => void,\n) {\n if (options.stats) {\n cb(null, options.stats);\n return;\n }\n\n stat(options.filePath, (err, stats) => cb(err, stats));\n}\n\nexport function sendFile(res: Response, filePath: string | SendFileOptions, fn?: CallableFunction) {\n let options : SendFileOptions;\n\n if (typeof filePath === 'string') {\n options = {\n filePath,\n };\n } else {\n options = filePath;\n }\n\n const fileName = path.basename(options.filePath);\n\n if (options.attachment) {\n const dispositionHeader = res.getHeader(HeaderName.CONTENT_DISPOSITION);\n if (!dispositionHeader) {\n setResponseHeaderAttachment(res, fileName);\n }\n } else {\n setResponseContentTypeByFileName(res, fileName);\n }\n\n resolveStats(options, (err, stats) => {\n /* istanbul ignore next */\n if (err) {\n if (typeof fn === 'function') {\n fn(err);\n } else {\n res.statusCode = 404;\n res.end();\n }\n\n return;\n }\n\n const streamOptions : ReadStreamOptions = {};\n\n const rangeHeader = res.req.headers[HeaderName.RANGE];\n if (rangeHeader) {\n const [x, y] = rangeHeader.replace('bytes=', '')\n .split('-');\n\n streamOptions.end = Math.min(\n parseInt(y, 10) || stats.size - 1,\n stats.size - 1,\n );\n\n streamOptions.start = parseInt(x, 10) || 0;\n\n if (streamOptions.end >= stats.size) {\n streamOptions.end = stats.size - 1;\n }\n\n if (streamOptions.start >= stats.size) {\n res.setHeader(HeaderName.CONTENT_RANGE, `bytes */${stats.size}`);\n res.statusCode = 416;\n res.end();\n return;\n }\n\n res.setHeader(HeaderName.CONTENT_RANGE, `bytes ${streamOptions.start}-${streamOptions.end}/${stats.size}`);\n res.setHeader(HeaderName.CONTENT_LENGTH, (streamOptions.end - streamOptions.start + 1));\n } else {\n res.setHeader(HeaderName.CONTENT_LENGTH, stats.size);\n }\n\n res.setHeader(HeaderName.ACCEPT_RANGES, 'bytes');\n res.setHeader(HeaderName.LAST_MODIFIED, stats.mtime.toUTCString());\n res.setHeader(HeaderName.ETag, `W/\"${stats.size}-${stats.mtime.getTime()}\"`);\n\n sendStream(res, createReadStream(options.filePath, streamOptions), fn);\n });\n}\n","import type { Response } from '../../type';\nimport { getRequestAcceptableContentType } from '../request';\n\ntype ResponseFormats = {\n default: () => void,\n [key: string]: () => void\n};\n\nexport function sendFormat(res: Response, input: ResponseFormats) {\n const { default: formatDefault, ...formats } = input;\n\n const contentTypes = Object.keys(formats);\n\n const contentType = getRequestAcceptableContentType(res.req, contentTypes);\n if (contentType) {\n formats[contentType]();\n\n return;\n }\n\n formatDefault();\n}\n","import type { Response } from '../../type';\nimport { send } from './send';\n\nexport function sendRedirect(res: Response, location: string, statusCode = 302) {\n res.statusCode = statusCode;\n res.setHeader('location', location);\n\n const encodedLoc = location.replace(/\"/g, '%22');\n const html = `<!DOCTYPE html><html><head><meta http-equiv=\"refresh\" content=\"0; url=${encodedLoc}\"></head></html>`;\n\n return send(res, html);\n}\n","import type { Next, Response } from '../type';\nimport { send } from '../helpers';\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","import 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","import { BadRequestError } from '@ebec/http';\nimport { setRequestMountPath, setRequestParams } from '../helpers';\nimport type {\n DispatcherMeta, Next, Request,\n Response,\n} from '../type';\nimport { processHandlerExecutionOutput } from '../handler';\nimport { PathMatcher } from '../path';\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","import { isInstance } from '../utils';\nimport type { Layer } from './module';\n\nexport function isLayerInstance(input: unknown) : input is Layer {\n return isInstance(input, 'Layer');\n}\n","import { hasOwnProperty, merge } from 'smob';\nimport { MethodName } from '../constants';\nimport type {\n DispatcherMeta, Handler, Next, Path,\n\n Request,\n Response,\n} from '../type';\nimport { Layer } from '../layer';\nimport type { PathMatcherOptions } from '../path';\nimport { PathMatcher } from '../path';\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 === MethodName.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = MethodName.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, MethodName.GET) &&\n !hasOwnProperty(this.layers, MethodName.HEAD)\n ) {\n keys.push(MethodName.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 === MethodName.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = MethodName.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: `${MethodName}`, ...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(MethodName.GET, ...handlers);\n }\n\n post(...handlers: Handler[]) {\n return this.register(MethodName.POST, ...handlers);\n }\n\n put(...handlers: Handler[]) {\n return this.register(MethodName.PUT, ...handlers);\n }\n\n patch(...handlers: Handler[]) {\n return this.register(MethodName.PATCH, ...handlers);\n }\n\n delete(...handlers: Handler[]) {\n return this.register(MethodName.DELETE, ...handlers);\n }\n\n head(...handlers: Handler[]) {\n return this.register(MethodName.HEAD, ...handlers);\n }\n\n options(...handlers: Handler[]) {\n return this.register(MethodName.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","import { isInstance } from '../utils';\nimport type { Route } from './module';\n\nexport function isRouteInstance(input: unknown) : input is Route {\n return isInstance(input, 'Route');\n}\n","import type { RequestListener } from 'node:http';\nimport { createServer } from 'node:http';\nimport { distinctArray, merge } from 'smob';\nimport type {\n DispatcherMeta,\n ErrorHandler,\n Handler,\n Next,\n Path,\n\n Request,\n Response,\n} from '../type';\nimport {\n HeaderName,\n MethodName,\n} from '../constants';\nimport {\n send,\n useRequestPath,\n} from '../helpers';\nimport {\n cleanDoubleSlashes,\n createRequestTimeout,\n isInstance,\n\n isPath,\n withLeadingSlash,\n withoutTrailingSlash,\n\n} from '../utils';\nimport type { PathMatcherOptions } from '../path';\nimport { PathMatcher } from '../path';\nimport { Layer, isLayerInstance } from '../layer';\nimport { Route, isRouteInstance } from '../route';\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() === MethodName.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() === MethodName.OPTIONS) {\n allowedMethods = distinctArray(merge(\n allowedMethods,\n layer.getMethods(),\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":["isStatsObject","obj","Stats","Object","prototype","toString","call","ctime","mtime","ino","size","generateETag","input","getTime","length","entity","Buffer","isBuffer","hash","crypto","createHash","update","digest","substring","createEtag","options","weak","tag","isObject","item","Array","isArray","buildEtagFn","undefined","merge","body","encoding","buff","from","threshold","byteLength","buildTrustProxyFn","_address","hop","split","map","value","trim","proxyAddr","compile","isInstance","name","Symbol","for","getMimeType","type","indexOf","getType","getCharsetForMimeType","test","meta","get","charset","toLowerCase","isPath","RegExp","isPromise","p","Promise","then","createRequestTimeout","res","timeout","done","instance","setTimeout","statusCode","GatewayTimeoutErrorOptions","statusMessage","message","end","once","clearTimeout","e","TRAILING_SLASH_RE","hasTrailingSlash","queryParams","endsWith","withoutTrailingSlash","slice","s0","s","join","withTrailingSlash","hasLeadingSlash","startsWith","withoutLeadingSlash","substr","withLeadingSlash","cleanDoubleSlashes","str","replace","buildConfig","Continu","defaults","env","process","NODE_ENV","trustProxy","subdomainOffset","etag","proxyIpMax","transformers","validators","zod","string","safeParse","any","number","nonnegative","useConfig","setConfig","config","setConfigOption","key","setRaw","getConfigOption","MethodName","GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD","HeaderName","ACCEPT","ACCEPT_CHARSET","ACCEPT_ENCODING","ACCEPT_LANGUAGE","ACCEPT_RANGES","ALLOW","CACHE_CONTROL","CONTENT_DISPOSITION","CONTENT_ENCODING","CONTENT_LENGTH","CONTENT_RANGE","CONTENT_TYPE","COOKIE","ETag","HOST","IF_MODIFIED_SINCE","IF_NONE_MATCH","LAST_MODIFIED","LOCATION","RANGE","RATE_LIMIT_LIMIT","RATE_LIMIT_REMAINING","RATE_LIMIT_RESET","RETRY_AFTER","SET_COOKIE","TRANSFER_ENCODING","X_FORWARDED_HOST","X_FORWARDED_FOR","X_FORWARDED_PROTO","BodySymbol","useRequestBody","req","hasRequestBody","setRequestBody","extendRequestBody","isRequestCacheable","modifiedTime","modifiedSince","headers","Date","CookieSymbol","useRequestCookies","hasRequestCookies","useRequestCookie","setRequestCookies","extendRequestCookies","cookies","envSymbol","setRequestEnv","useRequestEnv","unsetRequestEnv","hasOwnProperty","getRequestHeader","setRequestHeader","NegotiatorSymbol","useRequestNegotiator","Negotiator","getRequestAcceptableContentTypes","negotiator","mediaTypes","getRequestAcceptableContentType","items","shift","header","polluted","mimeTypes","i","mimeType","push","matches","getRequestAcceptableCharsets","charsets","getRequestAcceptableCharset","getRequestAcceptableEncodings","encodings","getRequestAcceptableEncoding","getRequestAcceptableLanguages","languages","getRequestAcceptableLanguage","matchRequestContentType","contentType","getRequestHostName","hostname","socket","remoteAddress","pop","trimEnd","offset","index","getRequestIP","ReqMountPathSymbol","useRequestMountPath","setRequestMountPath","basePath","ParamsSymbol","useRequestParams","params","useRequestParam","setRequestParams","data","setRequestParam","PathSymbol","useRequestPath","path","url","parsed","URL","pathname","getRequestProtocol","protocol","default","encrypted","QuerySymbol","useRequestQuery","query","hasRequestQuery","setRequestQuery","extendRequestQuery","setResponseCacheHeaders","cacheControls","concat","maxAge","setHeader","toUTCString","appendResponseHeader","getHeader","appendResponseHeaderDirective","Set","setResponseContentTypeByFileName","fileName","ext","extname","onResponseFinished","cb","called","callCallback","err","on","setResponseHeaderAttachment","filename","setResponseHeaderContentType","ifNotExists","send","chunk","JSON","stringify","len","etagFn","chunkHash","removeHeader","method","sendAccepted","sendCreated","sendStream","stream","fn","pipe","resolveStats","stats","stat","filePath","sendFile","basename","attachment","dispositionHeader","streamOptions","rangeHeader","x","y","Math","min","parseInt","start","createReadStream","sendFormat","formatDefault","formats","contentTypes","keys","sendRedirect","location","encodedLoc","html","processHandlerExecutionOutput","next","output","r","catch","decodeParam","val","decodeURIComponent","PathMatcher","fastSlash","regexpOptions","regexp","exec","match","regexpKeys","prop","constructor","pathToRegexp","Layer","isError","dispatch","mountPath","Error","BadRequestError","matchPath","pathMatcher","isLayerInstance","Route","matchMethod","layers","getMethods","layerMeta","setImmediate","layer","register","handlers","pathMatcherOptions","post","put","patch","delete","head","isStrictPath","strict","isRouteInstance","isRouterInstance","Router","setPathMatcherOptions","setPath","createListener","isRoot","listen","port","server","createServer","allowedMethods","toUpperCase","stack","distinctArray","dispatchAsync","resolve","reject","route","findIndex","sensitive","use","ctx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/response/helpers/cache.ts","../src/response/helpers/gone.ts","../src/response/helpers/header.ts","../src/utils/cookie.ts","../src/utils/header.ts","../src/utils/object.ts","../src/utils/etag/module.ts","../src/utils/etag/utils.ts","../src/utils/trust-proxy/module.ts","../src/utils/is-instance.ts","../src/utils/mime.ts","../src/utils/path.ts","../src/utils/promise.ts","../src/utils/stream.ts","../src/utils/url.ts","../src/utils/web.ts","../src/response/helpers/utils.ts","../src/response/helpers/header-attachment.ts","../src/response/helpers/header-content-type.ts","../src/router-options/module.ts","../src/request/helpers/body.ts","../src/request/helpers/cache.ts","../src/request/helpers/cookie.ts","../src/request/helpers/env.ts","../src/request/helpers/header.ts","../src/request/helpers/negotiator.ts","../src/request/helpers/header-accept.ts","../src/request/helpers/header-accept-charset.ts","../src/request/helpers/header-accept-encoding.ts","../src/request/helpers/header-accept-language.ts","../src/request/helpers/header-content-type.ts","../src/request/helpers/router.ts","../src/request/helpers/hostname.ts","../src/request/helpers/ip.ts","../src/request/helpers/mount-path.ts","../src/request/helpers/params.ts","../src/request/helpers/path.ts","../src/request/helpers/protocol.ts","../src/request/helpers/query.ts","../src/response/helpers/send.ts","../src/response/helpers/send-accepted.ts","../src/response/helpers/send-created.ts","../src/response/helpers/send-stream.ts","../src/response/helpers/send-file.ts","../src/response/helpers/send-format.ts","../src/response/helpers/send-redirect.ts","../src/response/helpers/send-web-response.ts","../src/response/helpers/send-web-blob.ts","../src/response/module.ts","../src/dispatcher/adapters/node/module.ts","../src/request/module.ts","../src/dispatcher/adapters/raw/module.ts","../src/dispatcher/adapters/web/module.ts","../src/dispatcher/utils.ts","../src/error.ts","../src/path/matcher.ts","../src/path/utils.ts","../src/layer/module.ts","../src/layer/utils.ts","../src/route/module.ts","../src/route/utils.ts","../src/router-options/transform.ts","../src/router/utils.ts","../src/router/module.ts"],"sourcesContent":["export enum MethodName {\n GET = 'get',\n POST = 'post',\n PUT = 'put',\n PATCH = 'patch',\n DELETE = 'delete',\n OPTIONS = 'options',\n HEAD = 'head',\n}\n\nexport enum HeaderName {\n ACCEPT = 'accept',\n ACCEPT_CHARSET = 'accept-charset',\n ACCEPT_ENCODING = 'accept-encoding',\n ACCEPT_LANGUAGE = 'accept-language',\n ACCEPT_RANGES = 'accept-ranges',\n ALLOW = 'allow',\n CACHE_CONTROL = 'cache-control',\n CONTENT_DISPOSITION = 'content-disposition',\n CONTENT_ENCODING = 'content-encoding',\n CONTENT_LENGTH = 'content-length',\n CONTENT_RANGE = 'content-range',\n CONTENT_TYPE = 'content-type',\n COOKIE = 'cookie',\n ETag = 'etag',\n HOST = 'host',\n IF_MODIFIED_SINCE = 'if-modified-since',\n IF_NONE_MATCH = 'if-none-match',\n LAST_MODIFIED = 'last-modified',\n LOCATION = 'location',\n RANGE = 'range',\n RATE_LIMIT_LIMIT = 'ratelimit-limit',\n RATE_LIMIT_REMAINING = 'ratelimit-remaining',\n RATE_LIMIT_RESET = 'ratelimit-reset',\n RETRY_AFTER = 'retry-after',\n SET_COOKIE = 'set-cookie',\n TRANSFER_ENCODING = 'transfer-encoding',\n X_FORWARDED_HOST = 'x-forwarded-host',\n X_FORWARDED_FOR = 'x-forwarded-for',\n X_FORWARDED_PROTO = 'x-forwarded-proto',\n}\n","import type { Response } from '../../types';\n\nexport type ResponseCacheHeadersOptions = {\n maxAge?: number,\n modifiedTime?: string | Date,\n cacheControls?: string[]\n};\n\nexport function setResponseCacheHeaders(res: Response, options?: ResponseCacheHeadersOptions) {\n options = options || {};\n\n const cacheControls = ['public'].concat(options.cacheControls || []);\n\n if (options.maxAge !== undefined) {\n cacheControls.push(`max-age=${+options.maxAge}`, `s-maxage=${+options.maxAge}`);\n }\n\n if (options.modifiedTime) {\n const modifiedTime = typeof options.modifiedTime === 'string' ?\n new Date(options.modifiedTime) :\n options.modifiedTime;\n\n res.setHeader('last-modified', modifiedTime.toUTCString());\n }\n\n res.setHeader('cache-control', cacheControls.join(', '));\n}\n","import type { Response } from '../../types';\n\nconst GoneSymbol = Symbol.for('ResGone');\nexport function isResponseGone(res: Response) {\n if (res.headersSent || res.writableEnded) {\n return true;\n }\n\n if (GoneSymbol in res) {\n return (res as any)[GoneSymbol];\n }\n\n return false;\n}\n","import type { OutgoingHttpHeader } from 'node:http';\n\nimport type { Response } from '../../types';\n\nexport function appendResponseHeader(\n res: Response,\n name: string,\n value: OutgoingHttpHeader,\n) {\n let header = res.getHeader(name);\n if (!header) {\n res.setHeader(name, value);\n\n return;\n }\n\n if (!Array.isArray(header)) {\n header = [header.toString()];\n }\n\n res.setHeader(name, [...header, value] as readonly string[]);\n}\n\nexport function appendResponseHeaderDirective(\n res: Response,\n name: string,\n value: OutgoingHttpHeader,\n) {\n let header = res.getHeader(name);\n if (!header) {\n if (Array.isArray(value)) {\n res.setHeader(name, value.join('; '));\n return;\n }\n\n res.setHeader(name, value);\n return;\n }\n\n if (!Array.isArray(header)) {\n if (typeof header === 'string') {\n // split header by directive(s)\n header = header.split('; ');\n }\n\n if (typeof header === 'number') {\n header = [header.toString()];\n }\n }\n\n if (Array.isArray(value)) {\n header.push(...value);\n } else {\n header.push(`${value}`);\n }\n\n header = [...new Set(header)];\n\n res.setHeader(name, header.join('; '));\n}\n","/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n\n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nexport function splitCookiesString(input?: string | string[]) : string[] {\n if (Array.isArray(input)) {\n return input.flatMap((el) => splitCookiesString(el));\n }\n\n if (typeof input !== 'string') {\n return [];\n }\n\n const cookiesStrings = [];\n let pos = 0;\n let start;\n let ch;\n let lastComma;\n let nextStart;\n let cookiesSeparatorFound;\n\n const skipWhitespace = () => {\n while (pos < input.length && /\\s/.test(input.charAt(pos))) {\n pos += 1;\n }\n return pos < input.length;\n };\n\n const notSpecialChar = () => {\n ch = input.charAt(pos);\n\n return ch !== '=' && ch !== ';' && ch !== ',';\n };\n\n while (pos < input.length) {\n start = pos;\n cookiesSeparatorFound = false;\n\n while (skipWhitespace()) {\n ch = input.charAt(pos);\n if (ch === ',') {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n\n skipWhitespace();\n nextStart = pos;\n\n while (pos < input.length && notSpecialChar()) {\n pos += 1;\n }\n\n // currently special character\n if (pos < input.length && input.charAt(pos) === '=') {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(input.substring(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n\n if (!cookiesSeparatorFound || pos >= input.length) {\n cookiesStrings.push(input.substring(start, input.length));\n }\n }\n\n return cookiesStrings;\n}\n","import type { RawResponseHeader } from '../dispatcher';\n\nexport function transformHeaderToTuples(key: string, value: RawResponseHeader) {\n const output : [string, string][] = [];\n\n if (Array.isArray(value)) {\n for (let j = 0; j < value.length; j++) {\n output.push([key, value[j]]);\n }\n } else if (value !== undefined) {\n output.push([key, String(value)]);\n }\n\n return output;\n}\nexport function transformHeadersToTuples(input: Record<string, RawResponseHeader>) {\n const output: [string, string][] = [];\n\n const keys = Object.keys(input);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i].toLowerCase();\n\n output.push(...transformHeaderToTuples(key, input[key]));\n }\n\n return output;\n}\n","export function isObject(item: unknown) : item is Record<string, any> {\n return (\n !!item &&\n typeof item === 'object' &&\n !Array.isArray(item)\n );\n}\n","import { Buffer } from 'buffer';\nimport { subtle } from 'uncrypto';\nimport { type Stats } from 'node:fs';\nimport { isObject } from '../object';\nimport type { EtagOptions } from './type';\n\n/**\n * Determine if object is a Stats object.\n *\n * @param {object} obj\n * @return {boolean}\n * @api private\n */\nfunction isStatsObject(obj: unknown) : obj is Stats {\n // quack quack\n return isObject(obj) &&\n 'ctime' in obj && Object.prototype.toString.call(obj.ctime) === '[object Date]' &&\n 'mtime' in obj && Object.prototype.toString.call(obj.mtime) === '[object Date]' &&\n 'ino' in obj && typeof obj.ino === 'number' &&\n 'size' in obj && typeof obj.size === 'number';\n}\n\nasync function sha1(str: string) : Promise<string> {\n const enc = new TextEncoder();\n const hash = await subtle.digest('SHA-1', enc.encode(str));\n\n return btoa(String.fromCharCode(...new Uint8Array(hash)));\n}\n\n/**\n * Generate an ETag.\n */\nexport async function generateETag(input: string | Buffer | Stats) : Promise<string> {\n if (isStatsObject(input)) {\n const mtime = input.mtime.getTime().toString(16);\n const size = input.size.toString(16);\n\n return `\"${size}-${mtime}\"`;\n }\n\n if (input.length === 0) {\n // fast-path empty\n return '\"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk\"';\n }\n\n const entity = Buffer.isBuffer(input) ?\n input.toString('utf-8') :\n input;\n\n // compute hash of entity\n const hash = await sha1(entity);\n\n return `\"${entity.length.toString(16)}-${hash.substring(0, 27)}\"`;\n}\n\n/**\n * Create a simple ETag.\n */\nexport async function createEtag(\n input: string | Buffer | Stats,\n options?: EtagOptions,\n) : Promise<string> {\n options = options || {};\n\n const weak = typeof options.weak === 'boolean' ?\n options.weak :\n isStatsObject(input);\n\n // generate entity tag\n const tag = await generateETag(input);\n\n return weak ?\n `W/${tag}` :\n tag;\n}\n","import { Buffer } from 'buffer';\nimport { merge } from 'smob';\nimport { isObject } from '../object';\nimport { createEtag } from './module';\nimport type { EtagFn, EtagOptions } from './type';\n\nexport function buildEtagFn(input?: boolean | EtagOptions | EtagFn) : EtagFn {\n if (typeof input === 'function') {\n return input;\n }\n\n input = input ?? true;\n\n if (input === false) {\n return () => Promise.resolve(undefined);\n }\n\n let options : EtagOptions = {\n weak: true,\n };\n\n if (isObject(input)) {\n options = merge(input, options);\n }\n\n return async (body: any, encoding?: BufferEncoding, size?: number) => {\n const buff = Buffer.isBuffer(body) ?\n body :\n Buffer.from(body, encoding);\n\n if (typeof options.threshold !== 'undefined') {\n size = size ?? Buffer.byteLength(buff);\n\n if (size <= options.threshold) {\n return undefined;\n }\n }\n\n return createEtag(buff, options);\n };\n}\n","import { compile } from 'proxy-addr';\nimport type { TrustProxyFn } from './type';\n\nexport function buildTrustProxyFn(\n input?: boolean | number | string | string[] | TrustProxyFn,\n) : TrustProxyFn {\n if (typeof input === 'function') {\n return input;\n }\n\n if (input === true) {\n return () => true;\n }\n\n if (typeof input === 'number') {\n return (_address, hop) => hop < (input as number);\n }\n\n if (typeof input === 'string') {\n input = input.split(',')\n .map((value) => value.trim());\n }\n\n return compile(input || []);\n}\n","import { isObject } from './object';\n\nexport function isInstance(input: unknown, name: string) {\n return (\n isObject(input) &&\n (input as { '@instanceof': symbol })['@instanceof'] === Symbol.for(name)\n );\n}\n","import { get, getType } from 'mime-explorer';\n\nexport function getMimeType(type: string) : string | undefined {\n if (type.indexOf('/') !== -1) {\n return type;\n }\n\n return getType(type);\n}\n\nexport function getCharsetForMimeType(type: string) : string | undefined {\n if ((/^text\\/|^application\\/(javascript|json)/).test(type)) {\n return 'utf-8';\n }\n\n const meta = get(type);\n if (\n meta &&\n meta.charset\n ) {\n return meta.charset.toLowerCase();\n }\n\n return undefined;\n}\n","/**\n * Based on https://github.com/unjs/pathe v1.1.1 (055f50a6f1131f4e5c56cf259dd8816168fba329)\n */\n\nfunction normalizeWindowsPath(input = '') {\n if (!input || !input.includes('\\\\')) {\n return input;\n }\n\n return input.replace(/\\\\/g, '/');\n}\n\nconst EXTNAME_RE = /.(\\.[^./]+)$/;\nexport function extname(input: string) {\n const match = EXTNAME_RE.exec(normalizeWindowsPath(input));\n return (match && match[1]) || '';\n}\n\nexport function basename(input: string, extension? :string) {\n const lastSegment = normalizeWindowsPath(input)\n .split('/')\n .pop();\n\n if (!lastSegment) {\n return input;\n }\n\n return extension && lastSegment.endsWith(extension) ?\n lastSegment.slice(0, -extension.length) :\n lastSegment;\n}\n","import { isObject } from './object';\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","import type { ReadableStream as WebReadableStream } from 'stream/web';\nimport type { Readable as NodeReadable } from 'node:stream';\nimport type { Readable } from 'readable-stream';\nimport { isObject } from './object';\n\nexport function isNodeStream(input: unknown): input is NodeReadable | Readable {\n return isObject(input) &&\n typeof input.pipe === 'function' &&\n typeof input.read === 'function';\n}\n\nexport function isWebStream(input: unknown): input is ReadableStream | WebReadableStream {\n return isObject(input) && typeof input.pipeTo === 'function';\n}\n\nexport function isStream(data: any): data is NodeReadable | Readable | ReadableStream | WebReadableStream {\n return isNodeStream(data) || isWebStream(data);\n}\n","const TRAILING_SLASH_RE = /\\/$|\\/\\?/;\n\nexport function hasTrailingSlash(input = '', queryParams = false): boolean {\n if (!queryParams) {\n return input.endsWith('/');\n }\n\n return TRAILING_SLASH_RE.test(input);\n}\n\nexport function withoutTrailingSlash(input = '', queryParams = false): string {\n if (!queryParams) {\n return (hasTrailingSlash(input) ? input.slice(0, -1) : input) || '/';\n }\n\n if (!hasTrailingSlash(input, true)) {\n return input || '/';\n }\n\n const [s0, ...s] = input.split('?');\n\n return (s0.slice(0, -1) || '/') + (s.length ? `?${s.join('?')}` : '');\n}\n\nexport function withTrailingSlash(input = '', queryParams = false): string {\n if (!queryParams) {\n return input.endsWith('/') ? input : (`${input}/`);\n }\n\n if (hasTrailingSlash(input, true)) {\n return input || '/';\n }\n\n const [s0, ...s] = input.split('?');\n return `${s0}/${s.length ? `?${s.join('?')}` : ''}`;\n}\n\nexport function hasLeadingSlash(input = ''): boolean {\n return input.startsWith('/');\n}\n\nexport function withoutLeadingSlash(input = ''): string {\n return (hasLeadingSlash(input) ? input.substring(1) : input) || '/';\n}\n\nexport function withLeadingSlash(input = ''): string {\n return hasLeadingSlash(input) ? input : `/${input}`;\n}\n\nexport function cleanDoubleSlashes(input = ''): string {\n return input.split('://')\n .map((str) => str.replace(/\\/{2,}/g, '/'))\n .join('://');\n}\n","import type { WebBlob, WebResponse } from '../types';\n\nexport function isWebBlob(input: unknown) : input is WebBlob {\n return typeof Blob !== 'undefined' && input instanceof Blob;\n}\n\nexport function isWebResponse(input: unknown): input is WebResponse {\n return typeof Response !== 'undefined' && input instanceof Response;\n}\n","import { HeaderName } from '../../constants';\nimport type { Response } from '../../types';\nimport { extname, getCharsetForMimeType, getMimeType } from '../../utils';\n\nexport function setResponseContentTypeByFileName(res: Response, fileName: string) {\n const ext = extname(fileName);\n if (ext) {\n let type = getMimeType(ext.substring(1));\n if (type) {\n const charset = getCharsetForMimeType(type);\n if (charset) {\n type += `; charset=${charset}`;\n }\n res.setHeader(HeaderName.CONTENT_TYPE, type);\n }\n }\n}\n","import { HeaderName } from '../../constants';\nimport type { Response } from '../../types';\nimport { setResponseContentTypeByFileName } from './utils';\n\nexport function setResponseHeaderAttachment(res: Response, filename?: string) {\n if (typeof filename === 'string') {\n setResponseContentTypeByFileName(res, filename);\n }\n\n res.setHeader(\n HeaderName.CONTENT_DISPOSITION,\n `attachment${filename ? `; filename=\"${filename}\"` : ''}`,\n );\n}\n","import { HeaderName } from '../../constants';\nimport type { Response } from '../../types';\nimport { getMimeType } from '../../utils';\n\nexport function setResponseHeaderContentType(res: Response, input: string, ifNotExists?: boolean) {\n if (ifNotExists) {\n const header = res.getHeader(HeaderName.CONTENT_TYPE);\n if (header) {\n return;\n }\n }\n\n const contentType = getMimeType(input);\n if (contentType) {\n res.setHeader(HeaderName.CONTENT_TYPE, contentType);\n }\n}\n","import { hasOwnProperty } from 'smob';\nimport { buildEtagFn } from '../utils';\nimport type { RouterOptions } from './type';\n\nconst defaults : RouterOptions = {\n trustProxy: () => false,\n subdomainOffset: 2,\n etag: buildEtagFn(),\n proxyIpMax: 0,\n};\n\nconst instances : Record<number, Partial<RouterOptions>> = {};\n\nexport function setRouterOptions(id: number, input: Partial<RouterOptions>) {\n instances[id] = input;\n}\n\nexport function unsetRouterOptions(id: number) {\n delete instances[id];\n}\n\nexport function findRouterOption<\nK extends keyof RouterOptions,\n>(key: K, id?: number | number[]) : RouterOptions[K] {\n if (!id) {\n return defaults[key];\n }\n\n const ids = Array.isArray(id) ? id : [id];\n if (ids.length > 0) {\n for (let i = ids.length; i >= 0; i--) {\n if (\n hasOwnProperty(instances, ids[i]) &&\n typeof instances[ids[i]][key] !== 'undefined'\n ) {\n return instances[ids[i]][key] as RouterOptions[K];\n }\n }\n }\n\n return defaults[key];\n}\n","import { merge } from 'smob';\n\nimport type { Request } from '../../types';\nimport { isObject } from '../../utils';\n\nconst BodySymbol = Symbol.for('ReqBody');\n\nexport function useRequestBody(req: Request) : Record<string, any>;\nexport function useRequestBody(req: Request, key: string) : any | undefined;\nexport function useRequestBody(req: Request, key?: string) {\n let body : Record<string, any> | undefined;\n\n /* istanbul ignore next */\n if ('body' in req) {\n body = (req as any).body;\n }\n\n if (BodySymbol in req) {\n if (body) {\n body = merge(\n {},\n (req as any)[BodySymbol],\n body,\n );\n } else {\n body = (req as any)[BodySymbol];\n }\n }\n\n if (body) {\n if (typeof key === 'string') {\n return body[key];\n }\n\n return body;\n }\n\n return typeof key === 'string' ?\n undefined :\n {};\n}\n\nexport function hasRequestBody(req: Request) : boolean {\n return 'body' in req || BodySymbol in req;\n}\n\nexport function setRequestBody(req: Request, key: string, value: unknown) : void;\nexport function setRequestBody(req: Request, record: Record<string, any>) : void;\nexport function setRequestBody(req: Request, key: Record<string, any> | string, value?: unknown) : void {\n if (isObject(key)) {\n (req as any)[BodySymbol] = key;\n return;\n }\n\n (req as any)[BodySymbol] = {\n [key]: value,\n };\n}\n\nexport function extendRequestBody(req: Request, key: string, value: unknown) : void;\nexport function extendRequestBody(req: Request, record: Record<string, any>) : void;\nexport function extendRequestBody(req: Request, key: Record<string, any> | string, value?: unknown) : void {\n if (hasRequestBody(req)) {\n const body = useRequestBody(req);\n\n // body can not be merged :/\n if (!isObject(body)) {\n return;\n }\n\n if (isObject(key)) {\n (req as any)[BodySymbol] = merge({}, key, body);\n } else {\n body[key] = value;\n (req as any)[BodySymbol] = body;\n }\n\n return;\n }\n\n if (isObject(key)) {\n setRequestBody(req, key);\n\n return;\n }\n\n setRequestBody(req, key, value);\n}\n","import { HeaderName } from '../../constants';\nimport type { Request } from '../../types';\n\nexport function isRequestCacheable(req: Request, modifiedTime: string | Date) : boolean {\n const modifiedSince = req.headers[HeaderName.IF_MODIFIED_SINCE];\n if (!modifiedSince) {\n return false;\n }\n\n modifiedTime = typeof modifiedTime === 'string' ?\n new Date(modifiedTime) :\n modifiedTime;\n\n return new Date(modifiedSince) >= modifiedTime;\n}\n","import { merge } from 'smob';\n\nimport type { Request } from '../../types';\nimport { isObject } from '../../utils';\n\nconst CookieSymbol = Symbol.for('ReqCookie');\n\nexport function useRequestCookies(\n req: Request,\n) : Record<string, string> {\n if (CookieSymbol in req) {\n return (req as any)[CookieSymbol];\n }\n\n return {};\n}\n\nexport function hasRequestCookies(req: Request) {\n return CookieSymbol in req &&\n isObject((req as any)[CookieSymbol]);\n}\n\nexport function useRequestCookie(req: Request, name: string) : string | undefined {\n return useRequestCookies(req)[name];\n}\n\nexport function setRequestCookies(req: Request, key: string, value: unknown) : void;\nexport function setRequestCookies(req: Request, record: Record<string, any>) : void;\nexport function setRequestCookies(req: Request, key: Record<string, any> | string, value?: unknown) : void {\n if (isObject(key)) {\n (req as any)[CookieSymbol] = key;\n return;\n }\n\n (req as any)[CookieSymbol] = {\n [key]: value,\n };\n}\n\nexport function extendRequestCookies(req: Request, key: string, value: string) : void;\nexport function extendRequestCookies(req: Request, record: Record<string, any>) : void;\nexport function extendRequestCookies(\n req: Request,\n key: string | Record<string, any>,\n value?: string,\n) {\n if (hasRequestCookies(req)) {\n const cookies = useRequestCookies(req);\n\n if (isObject(key)) {\n (req as any)[CookieSymbol] = merge({}, key, cookies);\n } else {\n cookies[key] = value as string;\n (req as any)[CookieSymbol] = cookies;\n }\n\n (req as any)[CookieSymbol] = merge((req as any)[CookieSymbol], cookies);\n\n return;\n }\n\n if (isObject(key)) {\n setRequestCookies(req, key);\n\n return;\n }\n\n setRequestCookies(req, key, value);\n}\n","import { hasOwnProperty, merge } from 'smob';\n\nimport type { Request } from '../../types';\n\nconst envSymbol = Symbol.for('ReqEnv');\n\nexport function setRequestEnv(req: Request, key: string, value: unknown) : void;\nexport function setRequestEnv(req: Request, record: Record<string, any>, append?: boolean) : void;\nexport function setRequestEnv(req: Request, key: Record<string, any> | string, value?: boolean | unknown) : void {\n if (envSymbol in req) {\n if (typeof key === 'object') {\n if (value) {\n (req as any)[envSymbol] = merge((req as any)[envSymbol], key);\n } else {\n (req as any)[envSymbol] = key;\n }\n } else {\n (req as any)[envSymbol][key] = value;\n }\n\n return;\n }\n\n if (typeof key === 'object') {\n (req as any)[envSymbol] = key;\n return;\n }\n\n (req as any)[envSymbol] = {\n [key]: value,\n };\n}\n\nexport function useRequestEnv(req: Request) : Record<string, any>;\nexport function useRequestEnv(req: Request, key: string) : unknown | undefined;\nexport function useRequestEnv(req: Request, key?: string) {\n if (envSymbol in req) {\n if (typeof key === 'string') {\n return (req as any)[envSymbol][key];\n }\n\n return (req as any)[envSymbol];\n }\n\n if (typeof key === 'string') {\n return undefined;\n }\n\n return {};\n}\n\nexport function unsetRequestEnv(req: Request, key: string) {\n if (envSymbol in req) {\n if (hasOwnProperty((req as any)[envSymbol], key)) {\n delete (req as any)[envSymbol][key];\n }\n }\n}\n","import type { IncomingHttpHeaders } from 'node:http';\n\nimport type { Request } from '../../types';\n\nexport function getRequestHeader<K extends keyof IncomingHttpHeaders>(\n req: Request,\n name: K,\n) : IncomingHttpHeaders[K] {\n return req.headers[name];\n}\n\nexport function setRequestHeader<K extends keyof IncomingHttpHeaders>(\n req: Request,\n name: K,\n value: IncomingHttpHeaders[K],\n) {\n req.headers[name] = value;\n}\n","import Negotiator from 'negotiator';\n\nimport type { Request } from '../../types';\n\nconst NegotiatorSymbol = Symbol.for('ReqNegotiator');\n\nexport function useRequestNegotiator(req: Request) : Negotiator {\n if (NegotiatorSymbol in req) {\n return (req as any)[NegotiatorSymbol];\n }\n\n return new Negotiator(req);\n}\n","import { HeaderName } from '../../constants';\nimport type { Request } from '../../types';\nimport { getMimeType } from '../../utils';\nimport { getRequestHeader } from './header';\nimport { useRequestNegotiator } from './negotiator';\n\nexport function getRequestAcceptableContentTypes(req: Request) : string[] {\n const negotiator = useRequestNegotiator(req);\n\n return negotiator.mediaTypes();\n}\n\nexport function getRequestAcceptableContentType(req: Request, input?: string | string[]) : string | undefined {\n input = input || [];\n\n const items = Array.isArray(input) ? input : [input];\n\n if (items.length === 0) {\n return getRequestAcceptableContentTypes(req).shift();\n }\n\n const header = getRequestHeader(req, HeaderName.ACCEPT);\n if (!header) {\n return items[0];\n }\n\n let polluted = false;\n const mimeTypes : string[] = [];\n for (let i = 0; i < items.length; i++) {\n const mimeType = getMimeType(items[i]);\n if (mimeType) {\n mimeTypes.push(mimeType);\n } else {\n polluted = true;\n }\n }\n\n const negotiator = useRequestNegotiator(req);\n const matches = negotiator.mediaTypes(mimeTypes);\n if (matches.length > 0) {\n if (polluted) {\n return items[0];\n }\n\n return items[mimeTypes.indexOf(matches[0])];\n }\n\n return undefined;\n}\n","import type { Request } from '../../types';\nimport { useRequestNegotiator } from './negotiator';\n\nexport function getRequestAcceptableCharsets(req: Request) : string[] {\n const negotiator = useRequestNegotiator(req);\n\n return negotiator.charsets();\n}\n\nexport function getRequestAcceptableCharset(req: Request, input: string | string[]) : string | undefined {\n input = input || [];\n\n const items = Array.isArray(input) ? input : [input];\n\n if (items.length === 0) {\n return getRequestAcceptableCharsets(req).shift();\n }\n\n const negotiator = useRequestNegotiator(req);\n return negotiator.charsets(items).shift() || undefined;\n}\n","import type { IncomingMessage } from 'node:http';\nimport { useRequestNegotiator } from './negotiator';\n\nexport function getRequestAcceptableEncodings(req: IncomingMessage) : string[] {\n const negotiator = useRequestNegotiator(req);\n return negotiator.encodings();\n}\n\nexport function getRequestAcceptableEncoding(req: IncomingMessage, input: string | string[]) : string | undefined {\n input = input || [];\n\n const items = Array.isArray(input) ? input : [input];\n\n if (items.length === 0) {\n return getRequestAcceptableEncodings(req).shift();\n }\n\n const negotiator = useRequestNegotiator(req);\n return negotiator.encodings(items).shift() || undefined;\n}\n","import type { Request } from '../../types';\nimport { useRequestNegotiator } from './negotiator';\n\nexport function getRequestAcceptableLanguages(req: Request) : string[] {\n const negotiator = useRequestNegotiator(req);\n return negotiator.languages();\n}\n\nexport function getRequestAcceptableLanguage(req: Request, input?: string | string[]) : string | undefined {\n input = input || [];\n\n const items = Array.isArray(input) ? input : [input];\n\n if (items.length === 0) {\n return getRequestAcceptableLanguages(req).shift();\n }\n\n const negotiator = useRequestNegotiator(req);\n return negotiator.languages(items).shift() || undefined;\n}\n","import { HeaderName } from '../../constants';\nimport type { Request } from '../../types';\nimport { getMimeType } from '../../utils';\nimport { getRequestHeader } from './header';\n\nexport function matchRequestContentType(req: Request, contentType: string) : boolean {\n const header = getRequestHeader(req, HeaderName.CONTENT_TYPE);\n if (!header) {\n return true;\n }\n\n /* istanbul ignore next */\n if (Array.isArray(header)) {\n if (header.length === 0) {\n return true;\n }\n\n return header[0] === getMimeType(contentType);\n }\n\n return header.split('; ').shift() === getMimeType(contentType);\n}\n","import type { Request } from '../../types';\n\nconst routerSymbol = Symbol.for('ReqRouterID');\nexport function setRequestRouterIds(req: Request, ids: number[]) {\n (req as Record<symbol | string, any>)[routerSymbol] = ids;\n}\n\nexport function useRequestRouterIds(req: Request) : number[] | undefined {\n if (routerSymbol in req) {\n return (req as Record<symbol | string, any>)[routerSymbol];\n }\n\n return undefined;\n}\n","import { HeaderName } from '../../constants';\nimport { findRouterOption } from '../../router-options';\nimport type { Request } from '../../types';\nimport type { TrustProxyFn, TrustProxyInput } from '../../utils';\nimport { buildTrustProxyFn } from '../../utils';\nimport { useRequestRouterIds } from './router';\n\ntype RequestHostNameOptions = {\n trustProxy?: TrustProxyInput\n};\n\nexport function getRequestHostName(req: Request, options?: RequestHostNameOptions) : string | undefined {\n options = options || {};\n\n let trustProxy : TrustProxyFn;\n if (typeof options.trustProxy !== 'undefined') {\n trustProxy = buildTrustProxyFn(options.trustProxy);\n } else {\n trustProxy = findRouterOption(\n 'trustProxy',\n useRequestRouterIds(req),\n );\n }\n\n let hostname = req.headers[HeaderName.X_FORWARDED_HOST];\n if (!hostname || !req.socket.remoteAddress || !trustProxy(req.socket.remoteAddress, 0)) {\n hostname = req.headers[HeaderName.HOST];\n } else {\n hostname = Array.isArray(hostname) ? hostname.pop() : hostname;\n if (hostname && hostname.indexOf(',') !== -1) {\n hostname = hostname.substring(0, hostname.indexOf(',')).trimEnd();\n }\n }\n\n if (!hostname) {\n return undefined;\n }\n\n // IPv6 literal support\n const offset = hostname[0] === '[' ?\n hostname.indexOf(']') + 1 :\n 0;\n const index = hostname.indexOf(':', offset);\n\n return index !== -1 ?\n hostname.substring(0, index) :\n hostname;\n}\n","import { all } from 'proxy-addr';\nimport { findRouterOption } from '../../router-options';\nimport type { Request } from '../../types';\nimport type { TrustProxyFn, TrustProxyInput } from '../../utils';\nimport { buildTrustProxyFn } from '../../utils';\nimport { useRequestRouterIds } from './router';\n\ntype RequestIpOptions = {\n trustProxy?: TrustProxyInput\n};\n\nexport function getRequestIP(req: Request, options?: RequestIpOptions) : string {\n options = options || {};\n\n let trustProxy : TrustProxyFn;\n if (typeof options.trustProxy !== 'undefined') {\n trustProxy = buildTrustProxyFn(options.trustProxy);\n } else {\n trustProxy = findRouterOption(\n 'trustProxy',\n useRequestRouterIds(req),\n );\n }\n\n const addrs = all(req, trustProxy);\n return addrs[addrs.length - 1];\n}\n","import type { Request } from '../../types';\n\nconst ReqMountPathSymbol = Symbol.for('ReqMountPath');\n\nexport function useRequestMountPath(req: Request) : string {\n if (ReqMountPathSymbol in req) {\n return (req as any)[ReqMountPathSymbol];\n }\n\n return '/';\n}\n\nexport function setRequestMountPath(req: Request, basePath: string) {\n (req as any)[ReqMountPathSymbol] = basePath;\n}\n","import type { Request } from '../../types';\n\nconst ParamsSymbol = Symbol.for('ReqParams');\n\nexport function useRequestParams(req: Request) : Record<string, any> {\n /* istanbul ignore next */\n if ('params' in req) {\n return (req as any).params;\n }\n\n if (ParamsSymbol in req) {\n return (req as any)[ParamsSymbol];\n }\n\n return {};\n}\n\nexport function useRequestParam(req: Request, key: string) : any {\n return useRequestParams(req)[key];\n}\n\nexport function setRequestParams(\n req: Request,\n data: Record<string, any>,\n) {\n (req as any)[ParamsSymbol] = data;\n}\n\nexport function setRequestParam(\n req: Request,\n key: string,\n value: any,\n) {\n const params = useRequestParams(req);\n params[key] = value;\n\n setRequestParams(req, params);\n}\n","import type { Request } from '../../types';\n\nconst PathSymbol = Symbol.for('ReqPath');\n\nexport function useRequestPath(req: Request) : string {\n if ('path' in req) {\n return (req as any).path;\n }\n\n if (PathSymbol in req) {\n return (req as any)[PathSymbol];\n }\n\n if (typeof req.url === 'undefined') {\n return '/';\n }\n\n const parsed = new URL(req.url, 'http://localhost/');\n\n (req as any)[PathSymbol] = parsed.pathname;\n\n return (req as any)[PathSymbol];\n}\n","import { hasOwnProperty } from 'smob';\nimport { HeaderName } from '../../constants';\nimport { findRouterOption } from '../../router-options';\nimport type { Request } from '../../types';\nimport type { TrustProxyFn, TrustProxyInput } from '../../utils';\nimport { buildTrustProxyFn } from '../../utils';\nimport { useRequestRouterIds } from './router';\n\ntype RequestProtocolOptions = {\n trustProxy?: TrustProxyInput,\n default?: string\n};\n\nexport function getRequestProtocol(\n req: Request,\n options?: RequestProtocolOptions,\n) : string {\n options = options || {};\n\n let trustProxy : TrustProxyFn;\n if (typeof options.trustProxy !== 'undefined') {\n trustProxy = buildTrustProxyFn(options.trustProxy);\n } else {\n trustProxy = findRouterOption(\n 'trustProxy',\n useRequestRouterIds(req),\n );\n }\n\n let protocol : string | undefined = options.default;\n /* istanbul ignore next */\n if (\n hasOwnProperty(req.socket, 'encrypted') &&\n !!req.socket.encrypted\n ) {\n protocol = 'https';\n } else if (!protocol) {\n protocol = 'http';\n }\n\n if (!req.socket.remoteAddress || !trustProxy(req.socket.remoteAddress, 0)) {\n return protocol;\n }\n\n let header = req.headers[HeaderName.X_FORWARDED_PROTO];\n /* istanbul ignore next */\n if (Array.isArray(header)) {\n header = header.pop();\n }\n\n if (!header) {\n return protocol;\n }\n\n const index = header.indexOf(',');\n\n return index !== -1 ?\n header.substring(0, index).trim() :\n header.trim();\n}\n","import { merge } from 'smob';\n\nimport type { Request } from '../../types';\nimport { isObject } from '../../utils';\n\nconst QuerySymbol = Symbol.for('ReqQuery');\n\nexport function useRequestQuery(req: Request) : Record<string, any>;\nexport function useRequestQuery(req: Request, key: string) : any;\nexport function useRequestQuery(req: Request, key?: string) {\n /* istanbul ignore if */\n if ('query' in req) {\n if (typeof key === 'string') {\n return (req as any).query[key];\n }\n\n return (req as any).query;\n }\n\n if (QuerySymbol in req) {\n if (typeof key === 'string') {\n return (req as any)[QuerySymbol][key];\n }\n\n return (req as any)[QuerySymbol];\n }\n\n return typeof key === 'string' ?\n undefined :\n {};\n}\n\nexport function hasRequestQuery(req: Request) : boolean {\n return (\n (QuerySymbol in req) &&\n isObject((req as any)[QuerySymbol])\n ) ||\n (\n ('query' in req) &&\n isObject(req.query)\n );\n}\n\nexport function setRequestQuery(req: Request, key: string, value: unknown) : void;\nexport function setRequestQuery(req: Request, record: Record<string, any>) : void;\nexport function setRequestQuery(req: Request, key: Record<string, any> | string, value?: unknown) : void {\n if (isObject(key)) {\n (req as any)[QuerySymbol] = key;\n return;\n }\n\n (req as any)[QuerySymbol] = {\n [key]: value,\n };\n}\n\nexport function extendRequestQuery(req: Request, key: string, value: unknown) : void;\nexport function extendRequestQuery(req: Request, record: Record<string, any>) : void;\nexport function extendRequestQuery(req: Request, key: Record<string, any> | string, value?: unknown) : void {\n if (hasRequestQuery(req)) {\n const query = useRequestQuery(req);\n\n if (isObject(key)) {\n (req as any)[QuerySymbol] = merge({}, key, query);\n } else {\n query[key] = value;\n (req as any)[QuerySymbol] = query;\n }\n\n return;\n }\n\n if (isObject(key)) {\n setRequestQuery(req, key);\n return;\n }\n\n setRequestQuery(req, key, value);\n}\n","import { Buffer } from 'buffer';\nimport { HeaderName } from '../../constants';\nimport { findRouterOption } from '../../router-options';\nimport type { Response } from '../../types';\nimport { useRequestRouterIds } from '../../request/helpers';\nimport { isResponseGone } from './gone';\nimport { appendResponseHeaderDirective } from './header';\nimport { setResponseHeaderContentType } from './header-content-type';\n\nexport async function send(res: Response, chunk?: any) : Promise<void> {\n switch (typeof chunk) {\n case 'string': {\n setResponseHeaderContentType(res, 'html', true);\n break;\n }\n case 'boolean':\n case 'number':\n case 'object': {\n if (chunk === null) {\n chunk = '';\n } else if (Buffer.isBuffer(chunk)) {\n setResponseHeaderContentType(res, 'bin', true);\n } else {\n chunk = JSON.stringify(chunk);\n\n setResponseHeaderContentType(res, 'application/json', true);\n }\n break;\n }\n }\n\n let encoding : BufferEncoding | undefined;\n\n if (typeof chunk === 'string') {\n res.setHeader(HeaderName.CONTENT_ENCODING, 'utf-8');\n\n appendResponseHeaderDirective(res, HeaderName.CONTENT_TYPE, 'charset=utf-8');\n\n encoding = 'utf-8';\n }\n\n // populate Content-Length\n let len : number | undefined;\n if (chunk !== undefined) {\n if (Buffer.isBuffer(chunk)) {\n // get length of Buffer\n len = chunk.length;\n } else if (chunk.length < 1000) {\n // just calculate length when no ETag + small chunk\n len = Buffer.byteLength(chunk, encoding);\n } else {\n // convert chunk to Buffer and calculate\n chunk = Buffer.from(chunk, encoding);\n encoding = undefined;\n len = chunk.length;\n }\n\n res.setHeader(HeaderName.CONTENT_LENGTH, `${len}`);\n }\n\n if (typeof len !== 'undefined') {\n const etagFn = findRouterOption(\n 'etag',\n useRequestRouterIds(res.req),\n );\n\n const chunkHash = await etagFn(chunk, encoding, len);\n if (isResponseGone(res)) {\n return Promise.resolve();\n }\n\n if (typeof chunkHash === 'string') {\n res.setHeader(HeaderName.ETag, chunkHash);\n\n if (res.req.headers[HeaderName.IF_NONE_MATCH] === chunkHash) {\n res.statusCode = 304;\n }\n }\n }\n\n // strip irrelevant headers\n if (res.statusCode === 204 || res.statusCode === 304) {\n res.removeHeader(HeaderName.CONTENT_TYPE);\n res.removeHeader(HeaderName.CONTENT_LENGTH);\n res.removeHeader(HeaderName.TRANSFER_ENCODING);\n chunk = '';\n }\n\n // alter headers for 205\n if (res.statusCode === 205) {\n res.setHeader(HeaderName.CONTENT_LENGTH, 0);\n res.removeHeader(HeaderName.TRANSFER_ENCODING);\n chunk = '';\n }\n\n if (isResponseGone(res)) {\n return Promise.resolve();\n }\n\n if (res.req.method === 'HEAD') {\n // skip body for HEAD\n res.end();\n\n return Promise.resolve();\n }\n\n if (typeof encoding !== 'undefined') {\n res.end(chunk, encoding);\n return Promise.resolve();\n }\n\n res.end(chunk);\n\n return Promise.resolve();\n}\n","import type { Response } from '../../types';\nimport { send } from './send';\n\nexport function sendAccepted(res: Response, chunk?: any) : Promise<void> {\n res.statusCode = 202;\n res.statusMessage = 'Accepted';\n\n return send(res, chunk);\n}\n","import type { Response } from '../../types';\nimport { send } from './send';\n\nexport function sendCreated(res: Response, chunk?: any) : Promise<void> {\n res.statusCode = 201;\n res.statusMessage = 'Created';\n\n return send(res, chunk);\n}\n","import type { Readable as NodeReadable } from 'stream';\nimport type { NodeReadableStream, Response, WebReadableStream } from '../../types';\nimport { isWebStream } from '../../utils';\n\nexport async function sendStream(\n res: Response,\n stream: NodeReadableStream | WebReadableStream,\n next?: (err?: Error) => Promise<unknown> | unknown,\n) {\n if (isWebStream(stream)) {\n return stream\n .pipeTo(\n new WritableStream({\n write(chunk) {\n res.write(chunk);\n },\n }),\n )\n .then(() => {\n if (next) {\n return next();\n }\n\n res.end();\n return Promise.resolve();\n })\n .catch((err) => {\n if (next) {\n return next(err);\n }\n\n return Promise.reject(err);\n });\n }\n\n return new Promise<void>((resolve, reject) => {\n stream.on('open', () => {\n (stream as NodeReadable).pipe(res);\n });\n\n /* istanbul ignore next */\n stream.on('error', (err) => {\n if (next) {\n Promise.resolve()\n .then(() => next(err))\n .then(() => resolve())\n .catch((e) => reject(e));\n\n return;\n }\n\n res.end();\n\n reject(err);\n });\n\n stream.on('close', () => {\n if (next) {\n Promise.resolve()\n .then(() => next())\n .then(() => resolve())\n .catch((e) => reject(e));\n\n return;\n }\n\n res.end();\n\n resolve();\n });\n });\n}\n","import { HeaderName } from '../../constants';\nimport type { Response } from '../../types';\nimport { basename, isStream } from '../../utils';\nimport { isResponseGone } from './gone';\nimport { setResponseHeaderAttachment } from './header-attachment';\nimport { send } from './send';\nimport { sendStream } from './send-stream';\nimport { setResponseContentTypeByFileName } from './utils';\n\nexport type SendFileContentOptions = {\n end?: number,\n start?: number;\n};\n\nexport type SendFileStats = {\n size?: number,\n mtime?: Date | number | string,\n name?: string\n};\n\nexport type SendFileOptions = {\n stats: () => Promise<SendFileStats> | SendFileStats,\n content: (\n options: SendFileContentOptions\n ) => Promise<unknown> | unknown\n attachment?: boolean,\n name?: string\n};\n\nexport async function sendFile(\n res: Response,\n options: SendFileOptions,\n next?: (err?: Error) => Promise<unknown> | unknown,\n) : Promise<unknown> {\n let stats: SendFileStats;\n try {\n stats = await options.stats();\n } catch (e) {\n if (next) {\n return next(e as Error);\n }\n\n if (isResponseGone(res)) {\n return Promise.resolve();\n }\n\n return Promise.reject(e);\n }\n\n const name = options.name || stats.name;\n\n if (name) {\n const fileName = basename(name);\n\n if (options.attachment) {\n const dispositionHeader = res.getHeader(HeaderName.CONTENT_DISPOSITION);\n if (!dispositionHeader) {\n setResponseHeaderAttachment(res, fileName);\n }\n } else {\n setResponseContentTypeByFileName(res, fileName);\n }\n }\n\n const contentOptions : SendFileContentOptions = {};\n\n if (stats.size) {\n const rangeHeader = res.req.headers[HeaderName.RANGE];\n if (rangeHeader) {\n const [x, y] = rangeHeader.replace('bytes=', '')\n .split('-');\n\n contentOptions.end = Math.min(\n parseInt(y, 10) || stats.size - 1,\n stats.size - 1,\n );\n\n contentOptions.start = parseInt(x, 10) || 0;\n\n if (contentOptions.end >= stats.size) {\n contentOptions.end = stats.size - 1;\n }\n\n if (contentOptions.start >= stats.size) {\n res.setHeader(HeaderName.CONTENT_RANGE, `bytes */${stats.size}`);\n res.statusCode = 416;\n res.end();\n return Promise.resolve();\n }\n\n res.setHeader(HeaderName.CONTENT_RANGE, `bytes ${contentOptions.start}-${contentOptions.end}/${stats.size}`);\n res.setHeader(HeaderName.CONTENT_LENGTH, (contentOptions.end - contentOptions.start + 1));\n } else {\n res.setHeader(HeaderName.CONTENT_LENGTH, stats.size);\n }\n\n res.setHeader(HeaderName.ACCEPT_RANGES, 'bytes');\n\n if (stats.mtime) {\n const mtime = new Date(stats.mtime);\n res.setHeader(HeaderName.LAST_MODIFIED, mtime.toUTCString());\n res.setHeader(HeaderName.ETag, `W/\"${stats.size}-${mtime.getTime()}\"`);\n }\n }\n\n try {\n const content = await options.content(contentOptions);\n if (isStream(content)) {\n return await sendStream(res, content, next);\n }\n\n return await send(res, content);\n } catch (e) {\n if (next) {\n return next(e as Error);\n }\n\n if (isResponseGone(res)) {\n return Promise.resolve();\n }\n\n return Promise.reject(e);\n }\n}\n","import type { Response } from '../../types';\nimport { getRequestAcceptableContentType } from '../../request/helpers';\n\ntype ResponseFormats = {\n default: () => void,\n [key: string]: () => void\n};\n\nexport function sendFormat(res: Response, input: ResponseFormats) {\n const { default: formatDefault, ...formats } = input;\n\n const contentTypes = Object.keys(formats);\n\n const contentType = getRequestAcceptableContentType(res.req, contentTypes);\n if (contentType) {\n formats[contentType]();\n\n return;\n }\n\n formatDefault();\n}\n","import type { Response } from '../../types';\nimport { send } from './send';\n\nexport function sendRedirect(res: Response, location: string, statusCode = 302): Promise<void> {\n res.statusCode = statusCode;\n res.setHeader('location', location);\n\n const encodedLoc = location.replace(/\"/g, '%22');\n const html = `<!DOCTYPE html><html><head><meta http-equiv=\"refresh\" content=\"0; url=${encodedLoc}\"></head></html>`;\n\n return send(res, html);\n}\n","import { HeaderName } from '../../constants';\nimport type { Response, WebResponse } from '../../types';\nimport { splitCookiesString } from '../../utils';\nimport { sendStream } from './send-stream';\n\nexport function sendWebResponse(res: Response, webResponse: WebResponse) : Promise<unknown> {\n if (webResponse.redirected) {\n res.setHeader(HeaderName.LOCATION, webResponse.url);\n }\n\n if (webResponse.status) {\n res.statusCode = webResponse.status;\n }\n\n if (webResponse.statusText) {\n res.statusMessage = webResponse.statusText;\n }\n\n webResponse.headers.forEach((value, key) => {\n if (key === HeaderName.SET_COOKIE) {\n res.appendHeader(key, splitCookiesString(value));\n } else {\n res.setHeader(key, value);\n }\n });\n\n if (webResponse.body) {\n return sendStream(res, webResponse.body);\n }\n\n res.end();\n\n return Promise.resolve();\n}\n","import type { Response, WebBlob } from '../../types';\nimport { setResponseHeaderContentType } from './header-content-type';\nimport { sendStream } from './send-stream';\n\nexport function sendWebBlob(res: Response, blob: WebBlob) : Promise<unknown> {\n setResponseHeaderContentType(res, blob.type);\n\n return sendStream(res, blob.stream());\n}\n","import type { OutgoingHttpHeaders } from 'http';\nimport type { OutgoingHttpHeader } from 'node:http';\nimport type { Socket } from 'node:net';\nimport type { Writable as NodeWritable } from 'node:stream';\nimport { Buffer } from 'buffer';\nimport { Writable } from 'readable-stream';\nimport { hasOwnProperty } from 'smob';\nimport { HeaderName } from '../constants';\nimport type { Request, Response } from '../types';\nimport { splitCookiesString } from '../utils';\n\ntype BufferEncoding =\n | 'ascii'\n | 'utf8'\n | 'utf-8'\n | 'utf16le'\n | 'ucs2'\n | 'ucs-2'\n | 'base64'\n | 'base64url'\n | 'latin1'\n | 'binary'\n | 'hex';\n\ntype Callback = (error?: (Error | null)) => void;\n\nexport function createResponse(request: Request) : Response {\n let output : Buffer | undefined;\n let encoding : BufferEncoding;\n\n const write = (chunk: any, chunkEncoding: BufferEncoding, callback?: Callback) => {\n if (typeof chunk !== 'undefined') {\n const chunkEncoded = typeof chunk === 'string' ?\n Buffer.from(chunk, chunkEncoding || encoding || 'utf8') :\n chunk;\n\n if (typeof output !== 'undefined') {\n output = Buffer.concat([output, chunkEncoded]);\n } else {\n output = chunkEncoded;\n }\n }\n\n encoding = chunkEncoding;\n\n if (callback) {\n callback();\n }\n };\n\n const writable = new Writable({\n decodeStrings: false,\n write(\n chunk: any,\n arg2?: string | Callback,\n arg3?: Callback,\n ) {\n const chunkEncoding = typeof arg2 === 'string' ? encoding : 'utf-8';\n let cb : Callback | undefined;\n if (typeof arg2 === 'function') {\n cb = arg2;\n } else if (typeof arg3 === 'function') {\n cb = arg3;\n }\n\n write(chunk, chunkEncoding, cb);\n\n return true;\n },\n }) as NodeWritable;\n\n Object.defineProperty(writable, 'body', {\n get(): any {\n if (output) {\n const arrayBuffer = new ArrayBuffer(output.length);\n const view = new Uint8Array(arrayBuffer);\n for (let i = 0; i < output.length; ++i) {\n view[i] = output[i];\n }\n return arrayBuffer;\n }\n\n return new ArrayBuffer(0);\n },\n });\n\n const headers : OutgoingHttpHeaders = {};\n\n Object.assign(writable, {\n req: request,\n chunkedEncoding: false,\n connection: null,\n headersSent: false,\n sendDate: false,\n shouldKeepAlive: false,\n socket: null,\n statusCode: 200,\n statusMessage: '',\n strictContentLength: false,\n useChunkedEncodingByDefault: false,\n finished: false,\n\n addTrailers(_headers: OutgoingHttpHeaders | ReadonlyArray<[string, string]>): void {\n },\n appendHeader(name: string, value: string | ReadonlyArray<string>): Response {\n if (name === HeaderName.SET_COOKIE) {\n value = splitCookiesString(value as string | string[]);\n }\n\n name = name.toLowerCase();\n const current = headers[name];\n const all = [\n ...(Array.isArray(current) ? current : [current]),\n ...(Array.isArray(value) ? value : [value]),\n ].filter(Boolean) as string[];\n headers[name] = all.length > 1 ? all : all[0];\n\n return this as Response;\n },\n assignSocket(_socket: Socket): void {\n },\n detachSocket(_socket: Socket): void {\n },\n\n flushHeaders(): void {\n },\n getHeader(name: string): number | string | string[] | undefined {\n return headers[name.toLowerCase()];\n },\n getHeaderNames(): string[] {\n return Object.keys(headers);\n },\n getHeaders(): OutgoingHttpHeaders {\n return headers;\n },\n hasHeader(name: string): boolean {\n return hasOwnProperty(headers, name.toLowerCase());\n },\n removeHeader(name: string): void {\n delete headers[name.toLowerCase()];\n },\n setHeader(name: string, value: number | string | string[]): Response {\n if (\n name === HeaderName.SET_COOKIE &&\n typeof value !== 'number'\n ) {\n value = splitCookiesString(value);\n }\n\n headers[name.toLowerCase()] = value;\n return this as Response;\n },\n setTimeout(_msecs: number, _callback: (() => void) | undefined): Response {\n return this as Response;\n },\n writeContinue(_callback: (() => void) | undefined): void {\n },\n writeEarlyHints(_hints: Record<string, string | string[]>, callback: (() => void) | undefined): void {\n if (typeof callback !== 'undefined') {\n callback();\n }\n },\n writeProcessing(): void {\n },\n writeHead(\n statusCode: number,\n arg1?: OutgoingHttpHeaders | OutgoingHttpHeader[] | string,\n arg2?: OutgoingHttpHeaders | OutgoingHttpHeader[],\n ): Response {\n this.statusCode = statusCode;\n\n if (typeof arg1 === 'string') {\n this.statusMessage = arg1;\n arg1 = undefined;\n }\n const headers = (arg2 || arg1) as OutgoingHttpHeaders[] | OutgoingHttpHeaders;\n if (headers) {\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i++) {\n const keys = Object.keys(headers[i]);\n for (let j = 0; j < keys.length; j++) {\n this.setHeader(keys[i], headers[i][keys[j]] as OutgoingHttpHeader);\n }\n }\n } else {\n const keys = Object.keys(headers);\n for (let i = 0; i < keys.length; i++) {\n this.setHeader(keys[i], headers[keys[i]] as OutgoingHttpHeader);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.headersSent = true;\n\n return this as Response;\n },\n } satisfies Omit<Response, keyof NodeWritable>);\n\n return writable as Response;\n}\n","import type { RequestListener } from 'node:http';\nimport { isResponseGone } from '../../../response';\nimport type { Router } from '../../../router';\nimport type { Request, Response } from '../../../types';\n\nexport async function dispatchNodeRequest(\n router: Router,\n req: Request,\n res: Response,\n): Promise<void> {\n try {\n const dispatched = await router.dispatch({ req, res });\n if (dispatched) {\n return;\n }\n\n if (!isResponseGone(res)) {\n res.statusCode = 404;\n res.end();\n }\n } catch (e) {\n if (!isResponseGone(res)) {\n res.statusCode = 500;\n res.end();\n }\n }\n}\n\nexport function createNodeDispatcher(router: Router): RequestListener {\n return (req: Request, res: Response) => {\n // eslint-disable-next-line no-void\n void dispatchNodeRequest(router, req, res);\n };\n}\n","import type { IncomingMessage } from 'node:http';\nimport type { Readable as NodeReadable } from 'node:stream';\nimport { Readable } from 'readable-stream';\nimport type { ReadableStream as NodeWebReadableStream } from 'stream/web';\nimport { isWebStream } from '../utils';\nimport type { RequestCreateContext } from './types';\n\nexport function createRequest(context: RequestCreateContext) : IncomingMessage {\n let readable: NodeReadable;\n if (context.body) {\n if (isWebStream(context.body)) {\n readable = (Readable as unknown as typeof NodeReadable).fromWeb(context.body as NodeWebReadableStream);\n } else {\n readable = (Readable as unknown as typeof NodeReadable).from(context.body);\n }\n } else {\n readable = new Readable();\n }\n\n const headers : Record<string, string | string[] | undefined> = context.headers || {};\n\n const rawHeaders : string[] = [];\n let keys = Object.keys(headers);\n for (let i = 0; i < keys.length; i++) {\n const header = headers[keys[i]];\n if (Array.isArray(header)) {\n for (let j = 0; j < header.length; j++) {\n rawHeaders.push(keys[i], header[j]);\n }\n } else if (typeof header === 'string') {\n rawHeaders.push(keys[i], header);\n }\n }\n\n const headersDistinct : Record<string, string[]> = {};\n keys = Object.keys(headers);\n for (let i = 0; i < keys.length; i++) {\n const header = headers[keys[i]];\n if (Array.isArray(header)) {\n headersDistinct[keys[i]] = header;\n }\n\n if (typeof header === 'string') {\n headersDistinct[keys[i]] = [header];\n }\n }\n\n Object.defineProperty(readable, 'connection', {\n get() {\n return {};\n },\n });\n\n Object.defineProperty(readable, 'socket', {\n get() {\n return {};\n },\n });\n\n Object.assign(readable, {\n aborted: false,\n complete: true,\n headers,\n headersDistinct,\n httpVersion: '1.1',\n httpVersionMajor: 1,\n httpVersionMinor: 1,\n method: context.method || 'GET',\n rawHeaders,\n rawTrailers: [],\n trailers: {},\n trailersDistinct: {},\n url: context.url || '/',\n setTimeout(_msecs: number, _callback?: () => void) {\n return this as IncomingMessage;\n },\n } satisfies Omit<IncomingMessage, keyof Readable | 'socket' | 'connection'>);\n\n return readable as IncomingMessage;\n}\n","import { createRequest } from '../../../request';\nimport { createResponse } from '../../../response';\nimport type { Router } from '../../../router';\nimport type {\n DispatchRawRequestOptions, RawRequest, RawResponse, RawResponseHeaders,\n} from './type';\n\nexport async function dispatchRawRequest(\n router: Router,\n request: RawRequest,\n options: DispatchRawRequestOptions = {},\n) : Promise<RawResponse> {\n const req = createRequest({\n url: request.path,\n method: request.method,\n body: request.body,\n headers: request.headers,\n });\n const res = createResponse(req);\n\n const getHeaders = () : RawResponseHeaders => {\n const output : RawResponseHeaders = {};\n\n const headers = res.getHeaders();\n const keys = Object.keys(headers);\n for (let i = 0; i < keys.length; i++) {\n const header = headers[keys[i]];\n if (typeof header === 'number') {\n output[keys[i]] = `${header}`;\n } else if (header) {\n output[keys[i]] = header;\n }\n }\n\n return output;\n };\n\n try {\n const dispatched = await router.dispatch({ req, res });\n if (dispatched) {\n return {\n status: res.statusCode,\n statusMessage: res.statusMessage,\n headers: getHeaders(),\n body: (res as Record<string, any>).body,\n };\n }\n\n return {\n status: 404,\n headers: getHeaders(),\n body: (res as Record<string, any>).body,\n };\n } catch (e) {\n if (options.throwOnError) {\n throw e;\n }\n\n return {\n status: 500,\n headers: getHeaders(),\n body: (res as Record<string, any>).body,\n };\n }\n}\n\nexport function createRawDispatcher(router: Router) {\n return async (request: RawRequest) => dispatchRawRequest(router, request);\n}\n","import { MethodName } from '../../../constants';\nimport type { Router } from '../../../router';\nimport type { WebRequest } from '../../../types';\nimport { transformHeadersToTuples } from '../../../utils';\nimport { dispatchRawRequest } from '../raw';\nimport type { DispatchWebRequestOptions } from './type';\n\nexport async function dispatchWebRequest(\n router: Router,\n request: WebRequest,\n options: DispatchWebRequestOptions = {},\n) : Promise<Response> {\n const url = new URL(request.url);\n const headers : Record<string, string | string[]> = {};\n\n request.headers.forEach((value, key) => {\n headers[key] = value;\n });\n\n const res = await dispatchRawRequest(\n router,\n {\n method: request.method,\n path: url.pathname + url.search,\n headers,\n body: request.body,\n },\n options,\n );\n\n let body : BodyInit | null | undefined;\n if (\n request.method === MethodName.HEAD ||\n res.status === 304 ||\n res.status === 101 ||\n res.status === 204 ||\n res.status === 205\n ) {\n body = null;\n } else {\n body = res.body;\n }\n\n return new Response(body, {\n headers: transformHeadersToTuples(res.headers),\n status: res.status,\n statusText: res.statusMessage,\n });\n}\n\nexport function createWebDispatcher(router: Router) {\n return async (request: WebRequest) => dispatchWebRequest(router, request);\n}\n","import type { DispatcherMeta } from './type';\n\nexport function cloneDispatcherMeta(input?: DispatcherMeta): DispatcherMeta {\n if (!input) {\n return {};\n }\n\n return {\n path: input.path,\n mountPath: input.mountPath,\n error: input.error,\n routerIds: [...input.routerIds || []],\n params: cloneDispatcherMetaParams(input.params),\n };\n}\n\nexport function cloneDispatcherMetaParams(input?: Record<string, any>) {\n if (typeof input === 'undefined') {\n return {};\n }\n\n const keys = Object.keys(input);\n const output : Record<string, any> = {};\n for (let i = 0; i < keys.length; i++) {\n output[keys[i]] = input[keys[i]];\n }\n\n return output;\n}\n\nexport function mergeDispatcherMetaParams(\n t1?: Record<string, any>,\n t2?: Record<string, any>,\n) : Record<string, any> {\n if (!t1 && !t2) {\n return {};\n }\n\n if (!t1 || !t2) {\n return (t1 || t2) as Record<string, any>;\n }\n\n const keys = Object.keys(t2);\n for (let i = 0; i < keys.length; i++) {\n t1[keys[i]] = t2[keys[i]];\n }\n\n return t1;\n}\n","export function createError(input: Error | Record<string, any>) {\n if (input instanceof Error) {\n return input;\n }\n\n const error = new Error();\n if (typeof input.message === 'string') {\n error.message = input.message;\n }\n\n return error;\n}\n","import type { Key } from 'path-to-regexp';\nimport { pathToRegexp } from 'path-to-regexp';\nimport type { Path, 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","import type { Path } from './type';\n\nexport function isPath(input: unknown): input is Path {\n return typeof input === 'string' || input instanceof RegExp;\n}\n","import type {\n Dispatcher, DispatcherEvent, DispatcherMeta,\n} from '../dispatcher';\nimport { createError } from '../error';\nimport {\n send, sendStream, sendWebBlob, sendWebResponse,\n} from '../response';\nimport {\n setRequestMountPath, setRequestParams, setRequestRouterIds,\n} from '../request';\nimport { PathMatcher } from '../path';\nimport { findRouterOption } from '../router-options';\nimport type { Response } from '../types';\nimport {\n isPromise, isStream, isWebBlob, isWebResponse,\n} from '../utils';\nimport type { LayerOptions } from './type';\n\nexport class Layer implements Dispatcher {\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 event: DispatcherEvent,\n meta: DispatcherMeta,\n ) : Promise<boolean> {\n setRequestParams(event.req, meta.params || {});\n setRequestMountPath(event.req, meta.mountPath || '/');\n setRequestRouterIds(event.req, meta.routerIds || []);\n\n if (\n (this.fn.length !== 4 && meta.error) ||\n (this.fn.length === 4 && !meta.error)\n ) {\n return Promise.reject(meta.error);\n }\n\n const timeout = findRouterOption('timeout', meta.routerIds);\n\n return new Promise<boolean>((resolve, reject) => {\n let timeoutInstance : ReturnType<typeof setTimeout> | undefined;\n let handled = false;\n\n const unsubscribe = () => {\n if (timeoutInstance) {\n clearTimeout(timeoutInstance);\n }\n\n event.res.off('close', onFinished);\n event.res.off('error', onFinished);\n };\n\n const shutdown = (dispatched: boolean, err?: Error) => {\n if (handled) {\n return;\n }\n\n handled = true;\n unsubscribe();\n\n if (err) {\n reject(createError(err));\n } else {\n resolve(dispatched);\n }\n };\n\n const onFinished = (err?: Error) => shutdown(true, err);\n const onNext = (err?: Error) => shutdown(false, err);\n\n event.res.once('close', onFinished);\n event.res.once('error', onFinished);\n\n if (timeout) {\n timeoutInstance = setTimeout(() => {\n handled = true;\n unsubscribe();\n\n event.res.statusCode = 504;\n event.res.statusMessage = 'Gateway Timeout';\n event.res.end();\n }, timeout);\n }\n\n try {\n let output: any;\n\n if (meta.error) {\n output = this.fn(meta.error, event.req, event.res, onNext);\n } else {\n output = this.fn(event.req, event.res, onNext);\n }\n\n const handle = (data: any): Promise<void> => {\n if (typeof data === 'undefined' || handled) {\n return Promise.resolve();\n }\n\n handled = true;\n unsubscribe();\n\n return this.sendOutput(event.res, data)\n .then(() => resolve(true))\n .catch((e) => reject(createError(e)));\n };\n\n if (isPromise(output)) {\n output\n .then((r) => handle(r))\n .catch((e) => reject(createError(e)));\n\n return;\n }\n\n Promise.resolve()\n .then(() => handle(output))\n .catch((e) => reject(createError(e)));\n } catch (error) {\n onNext(error as Error);\n }\n });\n }\n\n protected sendOutput(res: Response, input: unknown) : Promise<any> {\n if (input instanceof Error) {\n return Promise.reject(input);\n }\n\n if (isStream(input)) {\n return sendStream(res, input);\n }\n\n if (isWebBlob(input)) {\n return sendWebBlob(res, input);\n }\n\n if (isWebResponse(input)) {\n return sendWebResponse(res, input);\n }\n\n return send(res, input);\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","import { isInstance } from '../utils';\nimport { Layer } from './module';\n\nexport function isLayerInstance(input: unknown) : input is Layer {\n if (input instanceof Layer) {\n return true;\n }\n\n return isInstance(input, 'Layer');\n}\n","import { hasOwnProperty } from 'smob';\nimport { MethodName } from '../constants';\nimport type {\n Dispatcher, DispatcherEvent, DispatcherMeta,\n} from '../dispatcher';\nimport { cloneDispatcherMeta, mergeDispatcherMetaParams } from '../dispatcher';\nimport { Layer } from '../layer';\nimport type { Path, PathMatcherOptions } from '../path';\nimport { PathMatcher } from '../path';\nimport type { Handler } from '../types';\nimport type { RouteOptions } from './type';\n\nexport class Route implements Dispatcher {\n readonly '@instanceof' = Symbol.for('Route');\n\n public readonly 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 === MethodName.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = MethodName.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, MethodName.GET) &&\n !hasOwnProperty(this.layers, MethodName.HEAD)\n ) {\n keys.push(MethodName.HEAD);\n }\n\n return keys;\n }\n\n // --------------------------------------------------\n\n async dispatch(\n event: DispatcherEvent,\n meta: DispatcherMeta,\n ) : Promise<boolean> {\n /* istanbul ignore next */\n if (!event.req.method) {\n return false;\n }\n\n let name = event.req.method.toLowerCase();\n\n if (\n name === MethodName.HEAD &&\n !hasOwnProperty(this.layers, name)\n ) {\n name = MethodName.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 return false;\n }\n\n const layerMeta = cloneDispatcherMeta(meta);\n\n const output = this.pathMatcher.exec(meta.path);\n if (output) {\n layerMeta.params = mergeDispatcherMetaParams(layerMeta.params, output.params);\n }\n\n let err : Error | undefined;\n for (let i = 0; i < layers.length; i++) {\n const layer = layers[i];\n if (err && !layer.isError()) {\n continue;\n }\n\n try {\n const dispatched = await layer.dispatch(event, { ...layerMeta });\n\n if (dispatched) {\n return true;\n }\n } catch (e) {\n if (e instanceof Error) {\n err = e;\n }\n }\n }\n\n if (err) {\n throw err;\n }\n\n return false;\n }\n\n // --------------------------------------------------\n\n register(method: `${MethodName}`, ...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(MethodName.GET, ...handlers);\n }\n\n post(...handlers: Handler[]) {\n return this.register(MethodName.POST, ...handlers);\n }\n\n put(...handlers: Handler[]) {\n return this.register(MethodName.PUT, ...handlers);\n }\n\n patch(...handlers: Handler[]) {\n return this.register(MethodName.PATCH, ...handlers);\n }\n\n delete(...handlers: Handler[]) {\n return this.register(MethodName.DELETE, ...handlers);\n }\n\n head(...handlers: Handler[]) {\n return this.register(MethodName.HEAD, ...handlers);\n }\n\n options(...handlers: Handler[]) {\n return this.register(MethodName.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","import { isInstance } from '../utils';\nimport { Route } from './module';\n\nexport function isRouteInstance(input: unknown) : input is Route {\n if (input instanceof Route) {\n return true;\n }\n\n return isInstance(input, 'Route');\n}\n","import { buildEtagFn, buildTrustProxyFn } from '../utils';\nimport type { RouterOptions, RouterOptionsInput } from './type';\n\nexport function transformRouterOptions(input: RouterOptionsInput): Partial<RouterOptions> {\n if (typeof input.etag !== 'undefined') {\n input.etag = buildEtagFn(input.etag);\n }\n\n if (typeof input.trustProxy !== 'undefined') {\n input.trustProxy = buildTrustProxyFn(input.trustProxy);\n }\n\n return input as Partial<RouterOptions>;\n}\n","let nextId = 0;\nexport function generateRouterID(): number {\n return ++nextId;\n}\n","import { distinctArray, merge } from 'smob';\nimport { HeaderName, MethodName } from '../constants';\nimport type {\n Dispatcher, DispatcherEvent, DispatcherMeta,\n} from '../dispatcher';\nimport { cloneDispatcherMeta, mergeDispatcherMetaParams } from '../dispatcher';\nimport { useRequestPath } from '../request';\nimport { isResponseGone, send } from '../response';\nimport { transformRouterOptions } from '../router-options/transform';\nimport type { ErrorHandler, Handler } from '../types';\nimport {\n cleanDoubleSlashes,\n isInstance,\n withLeadingSlash,\n withoutTrailingSlash,\n} from '../utils';\nimport type { Path, PathMatcherOptions } from '../path';\nimport { PathMatcher, isPath } from '../path';\nimport { Layer, isLayerInstance } from '../layer';\nimport { Route, isRouteInstance } from '../route';\nimport { setRouterOptions } from '../router-options';\nimport type { RouterOptionsInput } from '../router-options';\nimport { generateRouterID } from './utils';\n\nexport function isRouterInstance(input: unknown) : input is Router {\n if (input instanceof Router) {\n return true;\n }\n\n return isInstance(input, 'Router');\n}\n\nexport class Router implements Dispatcher {\n readonly '@instanceof' = Symbol.for('Router');\n\n /**\n * An identifier for the router instance.\n */\n readonly id : number;\n\n /**\n * Array of mounted layers, routes & routers.\n *\n * @protected\n */\n protected stack : (Router | Route | Layer)[] = [];\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 | undefined;\n\n // --------------------------------------------------\n\n constructor(options: RouterOptionsInput = {}) {\n this.id = generateRouterID();\n this.pathMatcherOptions = options.pathMatcher;\n\n this.setPath(options.path);\n\n setRouterOptions(this.id, transformRouterOptions(options));\n }\n\n // --------------------------------------------------\n\n setPath(value?: Path) {\n if (value === '/' || !isPath(value)) {\n return;\n }\n\n let path : Path;\n if (typeof value === 'string') {\n path = withLeadingSlash(withoutTrailingSlash(`${value}`));\n } else {\n path = value;\n }\n\n this.pathMatcher = new PathMatcher(path, {\n end: false,\n sensitive: false,\n ...(this.pathMatcherOptions ? this.pathMatcherOptions : {}),\n });\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 async dispatch(\n event: DispatcherEvent,\n meta: DispatcherMeta = {},\n ) : Promise<boolean> {\n const allowedMethods : string[] = [];\n\n let path = meta.path || useRequestPath(event.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.routerIds) {\n meta.routerIds.push(this.id);\n } else {\n meta.routerIds = [this.id];\n }\n\n if (!meta.mountPath) {\n meta.mountPath = '/';\n }\n\n let err : Error | undefined;\n let layer : Route | Router | Layer | undefined;\n let match = false;\n\n for (let i = 0; i < this.stack.length; i++) {\n layer = this.stack[i];\n\n if (layer instanceof 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 event.req.method &&\n !layer.matchMethod(event.req.method)\n ) {\n match = false;\n\n if (event.req.method.toLowerCase() === MethodName.OPTIONS) {\n allowedMethods.push(...layer.getMethods());\n }\n }\n }\n\n if (!match) {\n continue;\n }\n\n const layerMeta = cloneDispatcherMeta(meta);\n if (isLayerInstance(layer)) {\n const output = layer.exec(path);\n\n if (output) {\n layerMeta.params = mergeDispatcherMetaParams(layerMeta.params, output.params);\n layerMeta.mountPath = cleanDoubleSlashes(`${layerMeta.mountPath || ''}/${output.path}`);\n }\n\n if (err) {\n layerMeta.error = err;\n }\n } else if (err) {\n continue;\n }\n\n try {\n const dispatched = await layer.dispatch(event, layerMeta);\n if (dispatched) {\n return true;\n }\n } catch (e) {\n if (e instanceof Error) {\n err = e;\n }\n }\n }\n\n if (err) {\n throw err;\n }\n\n if (\n event.req.method &&\n event.req.method.toLowerCase() === MethodName.OPTIONS\n ) {\n const options = distinctArray(allowedMethods)\n .map((key) => key.toUpperCase())\n .join(',');\n\n if (!isResponseGone(event.res)) {\n event.res.setHeader(HeaderName.ALLOW, options);\n\n await send(event.res, options);\n }\n\n return true;\n }\n\n return false;\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 ...(this.pathMatcherOptions ? { 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 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 ...(this.pathMatcherOptions ? { sensitive: this.pathMatcherOptions.sensitive } : {}),\n },\n }, item));\n }\n }\n\n return this;\n }\n}\n"],"names":["MethodName","GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD","HeaderName","ACCEPT","ACCEPT_CHARSET","ACCEPT_ENCODING","ACCEPT_LANGUAGE","ACCEPT_RANGES","ALLOW","CACHE_CONTROL","CONTENT_DISPOSITION","CONTENT_ENCODING","CONTENT_LENGTH","CONTENT_RANGE","CONTENT_TYPE","COOKIE","ETag","HOST","IF_MODIFIED_SINCE","IF_NONE_MATCH","LAST_MODIFIED","LOCATION","RANGE","RATE_LIMIT_LIMIT","RATE_LIMIT_REMAINING","RATE_LIMIT_RESET","RETRY_AFTER","SET_COOKIE","TRANSFER_ENCODING","X_FORWARDED_HOST","X_FORWARDED_FOR","X_FORWARDED_PROTO","setResponseCacheHeaders","res","options","cacheControls","concat","maxAge","undefined","push","modifiedTime","Date","setHeader","toUTCString","join","GoneSymbol","Symbol","for","isResponseGone","headersSent","writableEnded","appendResponseHeader","name","value","header","getHeader","Array","isArray","toString","appendResponseHeaderDirective","split","Set","splitCookiesString","input","flatMap","el","cookiesStrings","pos","start","ch","lastComma","nextStart","cookiesSeparatorFound","skipWhitespace","length","test","charAt","notSpecialChar","substring","transformHeaderToTuples","key","output","j","String","transformHeadersToTuples","keys","Object","i","toLowerCase","isObject","item","isStatsObject","obj","prototype","call","ctime","mtime","ino","size","sha1","str","enc","TextEncoder","hash","subtle","digest","encode","btoa","fromCharCode","Uint8Array","generateETag","getTime","entity","Buffer","isBuffer","createEtag","weak","tag","buildEtagFn","Promise","resolve","merge","body","encoding","buff","from","threshold","byteLength","buildTrustProxyFn","_address","hop","map","trim","compile","isInstance","getMimeType","type","indexOf","getType","getCharsetForMimeType","meta","get","charset","normalizeWindowsPath","includes","replace","EXTNAME_RE","extname","match","exec","basename","extension","lastSegment","pop","endsWith","slice","isPromise","p","then","isNodeStream","pipe","read","isWebStream","pipeTo","isStream","data","TRAILING_SLASH_RE","hasTrailingSlash","queryParams","withoutTrailingSlash","s0","s","hasLeadingSlash","startsWith","withLeadingSlash","cleanDoubleSlashes","isWebBlob","Blob","isWebResponse","Response","setResponseContentTypeByFileName","fileName","ext","setResponseHeaderAttachment","filename","setResponseHeaderContentType","ifNotExists","contentType","defaults","trustProxy","subdomainOffset","etag","proxyIpMax","instances","setRouterOptions","id","findRouterOption","ids","hasOwnProperty","BodySymbol","useRequestBody","req","hasRequestBody","setRequestBody","extendRequestBody","isRequestCacheable","modifiedSince","headers","CookieSymbol","useRequestCookies","hasRequestCookies","useRequestCookie","setRequestCookies","extendRequestCookies","cookies","envSymbol","setRequestEnv","useRequestEnv","unsetRequestEnv","getRequestHeader","setRequestHeader","NegotiatorSymbol","useRequestNegotiator","Negotiator","getRequestAcceptableContentTypes","negotiator","mediaTypes","getRequestAcceptableContentType","items","shift","polluted","mimeTypes","mimeType","matches","getRequestAcceptableCharsets","charsets","getRequestAcceptableCharset","getRequestAcceptableEncodings","encodings","getRequestAcceptableEncoding","getRequestAcceptableLanguages","languages","getRequestAcceptableLanguage","matchRequestContentType","routerSymbol","setRequestRouterIds","useRequestRouterIds","getRequestHostName","hostname","socket","remoteAddress","trimEnd","offset","index","getRequestIP","addrs","all","ReqMountPathSymbol","useRequestMountPath","setRequestMountPath","basePath","ParamsSymbol","useRequestParams","params","useRequestParam","setRequestParams","setRequestParam","PathSymbol","useRequestPath","path","url","parsed","URL","pathname","getRequestProtocol","protocol","default","encrypted","QuerySymbol","useRequestQuery","query","hasRequestQuery","setRequestQuery","extendRequestQuery","send","chunk","JSON","stringify","len","etagFn","chunkHash","statusCode","removeHeader","method","end","sendAccepted","statusMessage","sendCreated","sendStream","stream","next","WritableStream","write","catch","err","reject","on","e","sendFile","stats","attachment","dispositionHeader","contentOptions","rangeHeader","x","y","Math","min","parseInt","content","sendFormat","formatDefault","formats","contentTypes","sendRedirect","location","encodedLoc","html","sendWebResponse","webResponse","redirected","status","statusText","forEach","appendHeader","sendWebBlob","blob","createResponse","request","chunkEncoding","callback","chunkEncoded","writable","Writable","decodeStrings","arg2","arg3","cb","defineProperty","arrayBuffer","ArrayBuffer","view","assign","chunkedEncoding","connection","sendDate","shouldKeepAlive","strictContentLength","useChunkedEncodingByDefault","finished","addTrailers","_headers","current","filter","Boolean","assignSocket","_socket","detachSocket","flushHeaders","getHeaderNames","getHeaders","hasHeader","setTimeout","_msecs","_callback","writeContinue","writeEarlyHints","_hints","writeProcessing","writeHead","arg1","dispatchNodeRequest","router","dispatched","dispatch","createNodeDispatcher","createRequest","context","readable","Readable","fromWeb","rawHeaders","headersDistinct","aborted","complete","httpVersion","httpVersionMajor","httpVersionMinor","rawTrailers","trailers","trailersDistinct","dispatchRawRequest","throwOnError","createRawDispatcher","dispatchWebRequest","search","createWebDispatcher","cloneDispatcherMeta","mountPath","error","routerIds","cloneDispatcherMetaParams","mergeDispatcherMetaParams","t1","t2","createError","Error","message","decodeParam","val","decodeURIComponent","PathMatcher","fastSlash","regexpOptions","regexp","RegExp","regexpKeys","prop","constructor","pathToRegexp","isPath","Layer","isError","fn","event","timeout","timeoutInstance","handled","unsubscribe","clearTimeout","off","onFinished","shutdown","onNext","once","handle","sendOutput","r","matchPath","pathMatcher","isLayerInstance","Route","matchMethod","layers","getMethods","layerMeta","layer","register","handlers","pathMatcherOptions","post","put","patch","delete","head","isStrictPath","strict","isRouteInstance","transformRouterOptions","nextId","generateRouterID","isRouterInstance","Router","setPath","sensitive","allowedMethods","stack","distinctArray","toUpperCase","route","findIndex","use"],"mappings":"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"}
|