ios-dev/comments/Home/node_modules/@tinyhttp/router/dist/index.js.map

1 line
10 KiB
Plaintext

{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* HELPER TYPES */\n\nexport type NextFunction = (err?: any) => void\n\nexport type SyncHandler<Request = any, Response = any> = (req: Request, res: Response, next: NextFunction) => void\n\nexport type AsyncHandler<Request = any, Response = any> = (\n req: Request,\n res: Response,\n next: NextFunction\n) => Promise<void>\n\nexport type Handler<Request = any, Response = any> = AsyncHandler<Request, Response> | SyncHandler<Request, Response>\n\nconst METHODS = [\n 'ACL',\n 'BIND',\n 'CHECKOUT',\n 'CONNECT',\n 'COPY',\n 'DELETE',\n 'GET',\n 'HEAD',\n 'LINK',\n 'LOCK',\n 'M-SEARCH',\n 'MERGE',\n 'MKACTIVITY',\n 'MKCALENDAR',\n 'MKCOL',\n 'MOVE',\n 'NOTIFY',\n 'OPTIONS',\n 'PATCH',\n 'POST',\n 'PRI',\n 'PROPFIND',\n 'PROPPATCH',\n 'PURGE',\n 'PUT',\n 'REBIND',\n 'REPORT',\n 'SEARCH',\n 'SOURCE',\n 'SUBSCRIBE',\n 'TRACE',\n 'UNBIND',\n 'UNLINK',\n 'UNLOCK',\n 'UNSUBSCRIBE'\n] as const\n\nexport type Method = (typeof METHODS)[number]\n\nexport type MiddlewareType = 'mw' | 'route'\n\ntype RegexParams = {\n keys: string[] | false\n pattern: RegExp\n}\n\ntype RIM<Req, Res, App> = (...args: RouterMethodParams<Req, Res>) => App\n\nexport interface Middleware<Req = any, Res = any> {\n method?: Method\n handler: Handler<Req, Res>\n path?: string\n type: MiddlewareType\n regex?: RegexParams\n fullPath?: string\n}\n\nexport type MethodHandler<Req = any, Res = any> = {\n path?: string | string[] | Handler<Req, Res>\n handler?: Handler<Req, Res>\n type: MiddlewareType\n regex?: RegexParams\n fullPath?: string\n}\n\nexport type RouterHandler<Req = any, Res = any> = Handler<Req, Res> | Handler<Req, Res>[] | string[]\n\nexport type RouterPathOrHandler<Req = any, Res = any> = string | RouterHandler<Req, Res>\n\nexport type RouterMethod<Req = any, Res = any> = (\n path: string | string[] | Handler<Req, Res>,\n handler?: RouterHandler<Req, Res>,\n ...handlers: RouterHandler<Req, Res>[]\n) => any\n\ntype RouterMethodParams<Req = any, Res = any> = Parameters<RouterMethod<Req, Res>>\n\nexport type UseMethod<Req = any, Res = any, App extends Router = any> = (\n path: RouterPathOrHandler<Req, Res> | App,\n handler?: RouterHandler<Req, Res> | App,\n ...handlers: (RouterHandler<Req, Res> | App)[]\n) => any\n\nexport type UseMethodParams<Req = any, Res = any, App extends Router = any> = Parameters<UseMethod<Req, Res, App>>\n\n/** HELPER METHODS */\n\nconst createMiddlewareFromRoute = <Req = any, Res = any>({\n path,\n handler,\n fullPath,\n method\n}: MethodHandler<Req, Res> & {\n method?: Method\n}) => ({\n method,\n handler: handler || (path as Handler),\n path: typeof path === 'string' ? path : '/',\n fullPath: typeof path === 'string' ? fullPath : path\n})\n\n/**\n * Push wares to a middleware array\n * @param mw Middleware arrays\n */\nexport const pushMiddleware =\n <Req = any, Res = any>(mw: Middleware[]) =>\n ({\n path,\n handler,\n method,\n handlers,\n type,\n fullPaths\n }: MethodHandler<Req, Res> & {\n method?: Method\n handlers?: RouterHandler<Req, Res>[]\n fullPaths?: string[]\n }): void => {\n const m = createMiddlewareFromRoute<Req, Res>({ path, handler, method, type, fullPath: fullPaths?.[0] })\n\n let waresFromHandlers: { handler: Handler<Req, Res> }[] = []\n let idx = 1\n\n if (handlers) {\n waresFromHandlers = handlers.flat().map((handler) =>\n createMiddlewareFromRoute<Req, Res>({\n path,\n handler: handler as Handler,\n method,\n type,\n fullPath: fullPaths == null ? null : fullPaths[idx++]\n })\n )\n }\n\n for (const mdw of [m, ...waresFromHandlers]) mw.push({ ...mdw, type })\n }\n\n/**\n * tinyhttp Router. Manages middleware and has HTTP methods aliases, e.g. `app.get`, `app.put`\n */\nexport class Router<App extends Router = any, Req = any, Res = any> {\n middleware: Middleware[] = []\n mountpath = '/'\n parent: App\n apps: Record<string, App> = {}\n\n acl: RIM<Req, Res, this>\n bind: RIM<Req, Res, this>\n checkout: RIM<Req, Res, this>\n connect: RIM<Req, Res, this>\n copy: RIM<Req, Res, this>\n delete: RIM<Req, Res, this>\n get: RIM<Req, Res, this>\n head: RIM<Req, Res, this>\n link: RIM<Req, Res, this>\n lock: RIM<Req, Res, this>\n merge: RIM<Req, Res, this>\n mkactivity: RIM<Req, Res, this>\n mkcalendar: RIM<Req, Res, this>\n mkcol: RIM<Req, Res, this>\n move: RIM<Req, Res, this>\n notify: RIM<Req, Res, this>\n options: RIM<Req, Res, this>\n patch: RIM<Req, Res, this>\n post: RIM<Req, Res, this>\n pri: RIM<Req, Res, this>\n propfind: RIM<Req, Res, this>\n proppatch: RIM<Req, Res, this>\n purge: RIM<Req, Res, this>\n put: RIM<Req, Res, this>\n rebind: RIM<Req, Res, this>\n report: RIM<Req, Res, this>\n search: RIM<Req, Res, this>\n source: RIM<Req, Res, this>\n subscribe: RIM<Req, Res, this>\n trace: RIM<Req, Res, this>\n unbind: RIM<Req, Res, this>\n unlink: RIM<Req, Res, this>\n unlock: RIM<Req, Res, this>\n unsubscribe: RIM<Req, Res, this>\n\n constructor() {\n for (const m of METHODS) {\n this[m.toLowerCase()] = this.add(m as Method)\n }\n }\n\n add(method: Method) {\n return (...args: RouterMethodParams<Req, Res>): this => {\n const handlers = args.slice(1).flat() as Handler<Req, Res>[]\n if (Array.isArray(args[0])) {\n Object.values(args[0]).forEach((arg) => {\n if (typeof arg == 'string') {\n pushMiddleware<Req, Res>(this.middleware)({\n path: arg,\n handler: handlers[0],\n handlers: handlers.slice(1),\n method,\n type: 'route'\n })\n }\n })\n } else {\n pushMiddleware<Req, Res>(this.middleware)({\n path: args[0],\n handler: handlers[0],\n handlers: handlers.slice(1),\n method,\n type: 'route'\n })\n }\n\n return this\n }\n }\n\n msearch(...args: RouterMethodParams<Req, Res>): this {\n const handlers = args.slice(1).flat() as Handler<Req, Res>[]\n\n pushMiddleware<Req, Res>(this.middleware)({\n path: args[0],\n handler: handlers[0],\n handlers: handlers.slice(1),\n method: 'M-SEARCH',\n type: 'route'\n })\n\n return this\n }\n\n all(...args: RouterMethodParams<Req, Res>): this {\n const handlers = args.slice(1).flat() as Handler<Req, Res>[]\n\n pushMiddleware(this.middleware)({\n path: args[0],\n handler: handlers[0],\n handlers: handlers.slice(1),\n type: 'route'\n })\n\n return this\n }\n\n /**\n * Push middleware to the stack\n */\n use(...args: UseMethodParams<Req, Res, App>): this {\n const base = args[0]\n\n const handlers = args.slice(1).flat()\n\n if (typeof base === 'string') {\n pushMiddleware(this.middleware)({\n path: base,\n handler: handlers[0] as Handler,\n handlers: handlers.slice(1) as Handler[],\n type: 'mw'\n })\n } else {\n pushMiddleware(this.middleware)({\n path: '/',\n handler: Array.isArray(base) ? (base[0] as Handler) : (base as Handler),\n handlers: Array.isArray(base)\n ? [...(base.slice(1) as Handler[]), ...(handlers as Handler[])]\n : (handlers as Handler[]),\n type: 'mw'\n })\n }\n\n return this\n }\n}\n"],"names":["handler"],"mappings":"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"}