{"version":3,"sources":["../src/utils/errorUtils.ts","../src/utils/urlUtils.ts","../src/utils/routeUtils.ts"],"names":[],"mappings":";AAQA,IAAM,iBAAiB,CAAC,MAA6C;AACjE,MAAI,aAAa,OAAO;AACpB,WAAO;AAAA,EACX;AACA,MAAI,OAAO,MAAM,UAAU;AACvB,WAAO,IAAI,MAAM,CAAC;AAAA,EACtB;AACA,SAAO,IAAI,MAAM,KAAK,UAAU,CAAC,CAAC;AACtC;AAEO,IAAM,qBAAqB,OAC9B,GACA,UACA,SACA,aACC;AACD,MAAI,qCAAU,QAAQ;AAClB,UAAM,WAA+B,CAAC;AACtC,UAAM,sBAAsB,YAAY;AACpC,YAAM,UAAU,SAAS,MAAM;AAC/B,UAAI,SAAS;AACT,cAAM,QAAQ,eAAe,CAAC,GAAG,SAAS,UAAU,YAAY;AAC5D,mBAAS,KAAK,oBAAoB,CAAC;AAAA,QACvC,CAAC;AAAA,MACL;AAAA,IACJ;AACA,aAAS,KAAK,oBAAoB,CAAC;AACnC,WAAO,SAAS,QAAQ;AACpB,YAAM,SAAS,MAAM;AAAA,IACzB;AAAA,EACJ,OAAO;AACH,YAAQ;AAAA,MACJ;AAAA,IACJ;AACA,aAAS,OAAO,GAAG;AACnB,aAAS,KAAK,uBAAuB;AACrC,aAAS,IAAI;AAAA,EACjB;AACJ;;;AC9CA,IAAM,gBAAgB,MAAM;AACxB,SAAO,GAAG,SAAS,QAAQ,KAAK,SAAS,IAAI,GAAG,SAAS,QAAQ;AACrE;AACA,IAAM,oBAAoB,CAAC,UAAkB;AACzC,SAAO,MAAM,QAAQ,MAAM,MAAM;AACrC;AAEA,IAAM,aAAa,CAAC,UAAuD;AACvE,MAAI,OAAO,UAAU,UAAU;AAC3B,WAAO;AAAA,EACX;AACA,MAAI,SAAS,OAAO;AAChB,WAAO,MAAM;AAAA,EACjB;AACA,MAAI,UAAU,OAAO;AACjB,WAAO,MAAM;AAAA,EACjB;AACA,SAAO;AACX;AAEO,IAAM,SAAS,CAAC,UAA6B;AAChD,MAAI,OAAO,UAAU,UAAU;AAC3B,WAAO,IAAI,IAAI,OAAO,kBAAkB,KAAK,IAAI,SAAY,cAAc,CAAC;AAAA,EAChF,WAAW,iBAAiB,KAAK;AAC7B,WAAO;AAAA,EACX,OAAO;AACH,UAAM,MAAM,WAAW,KAAK;AAC5B,WAAO,IAAI,IAAI,KAAK,kBAAkB,GAAG,IAAI,SAAY,cAAc,CAAC;AAAA,EAC5E;AACJ;AAEO,IAAM,YAAY,CAAC,OAA0B,SAAuB;AACvE,MAAI,OAAO,UAAU,UAAU;AAC3B,YAAO,6BAAM,WAAU;AAAA,EAC3B,WAAW,iBAAiB,KAAK;AAC7B,YAAO,6BAAM,WAAU;AAAA,EAC3B,OAAO;AACH,WAAO,MAAM,UAAU;AAAA,EAC3B;AACJ;;;ACpCO,IAAM,iBAAiB,CAAC,OAAc,eAAoB;AAC7D,QAAM,cAAc,MAAM,OAAO,KAAK,WAAW,QAAQ;AACzD,QAAM,SAAS,MAAM,KAAK,OAAO,CAAC,KAAK,KAAK,MAAM;AAC9C,QAAI,aAAa;AACb,UAAI,IAAI,IAAI,IAAI,YAAY,IAAI,CAAC;AAAA,IACrC;AACA,WAAO;AAAA,EACX,GAAG,CAAC,CAA2B;AAC/B,SAAO;AACX","sourcesContent":["import { ErrorHandler, AnyFunction, RestRouter, RouterError, Response, Request } from '../types'\n\nexport const isErrorHandler = (\n    handler: string | AnyFunction | RestRouter,\n): handler is ErrorHandler => {\n    return typeof handler === 'function' && handler.length === 4\n}\n\nconst getRouterError = (e: Error | string | unknown): RouterError => {\n    if (e instanceof Error) {\n        return e\n    }\n    if (typeof e === 'string') {\n        return new Error(e)\n    }\n    return new Error(JSON.stringify(e))\n}\n\nexport const handleServiceError = async (\n    e: unknown,\n    handlers: ErrorHandler[] | undefined,\n    request: Request<string>,\n    response: Response,\n) => {\n    if (handlers?.length) {\n        const promises: Promise<unknown>[] = []\n        const processErrorHandler = async () => {\n            const handler = handlers.shift()\n            if (handler) {\n                await handler(getRouterError(e), request, response, async () => {\n                    promises.push(processErrorHandler())\n                })\n            }\n        }\n        promises.push(processErrorHandler())\n        while (promises.length) {\n            await promises.shift()\n        }\n    } else {\n        console.warn(\n            'No error handler found, trying using `useError` to supply a custom error handler.',\n        )\n        response.status(500)\n        response.send(`Internal server error`)\n        response.end()\n    }\n}\n","const getCurrentUrl = () => {\n    return `${location.protocol}//${location.host}${location.pathname}`\n}\nconst isUrlWithProtocol = (input: string) => {\n    return input.indexOf('http') === 0\n}\n\nconst getFullUrl = (input: string | { url: string } | { href: string }) => {\n    if (typeof input === 'string') {\n        return input\n    }\n    if ('url' in input) {\n        return input.url\n    }\n    if ('href' in input) {\n        return input.href\n    }\n    return ''\n}\n\nexport const getUrl = (input: RequestInfo | URL) => {\n    if (typeof input === 'string') {\n        return new URL(input, isUrlWithProtocol(input) ? undefined : getCurrentUrl())\n    } else if (input instanceof URL) {\n        return input\n    } else {\n        const url = getFullUrl(input)\n        return new URL(url, isUrlWithProtocol(url) ? undefined : getCurrentUrl())\n    }\n}\n\nexport const getMethod = (input: RequestInfo | URL, init?: RequestInit) => {\n    if (typeof input === 'string') {\n        return init?.method || 'GET'\n    } else if (input instanceof URL) {\n        return init?.method || 'GET'\n    } else {\n        return input.method || 'GET'\n    }\n}\n","import URL from 'url'\nimport { Route } from '../types'\n\nexport const getRouteParams = (route: Route, requestUrl: URL) => {\n    const paramValues = route.regexp.exec(requestUrl.pathname)\n    const params = route.keys.reduce((acc, key, i) => {\n        if (paramValues) {\n            acc[key.name] = paramValues[i + 1]\n        }\n        return acc\n    }, {} as Record<string, string>)\n    return params\n}\n"]}