@sapphire/plugin-api 8.3.2-next.9983f49 → 8.3.2-next.d220275

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.
Files changed (77) hide show
  1. package/dist/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/lib/structures/Middleware.cjs.map +1 -1
  4. package/dist/cjs/lib/structures/MiddlewareStore.cjs.map +1 -1
  5. package/dist/cjs/lib/structures/Route.cjs.map +1 -1
  6. package/dist/cjs/lib/structures/RouteLoaderStrategy.cjs.map +1 -1
  7. package/dist/cjs/lib/structures/RouteStore.cjs.map +1 -1
  8. package/dist/cjs/lib/structures/api/ApiRequest.cjs.map +1 -1
  9. package/dist/cjs/lib/structures/api/ApiResponse.cjs.map +1 -1
  10. package/dist/cjs/lib/structures/api/CookieStore.cjs.map +1 -1
  11. package/dist/cjs/lib/structures/http/Auth.cjs.map +1 -1
  12. package/dist/cjs/lib/structures/http/HttpCodes.cjs.map +1 -1
  13. package/dist/cjs/lib/structures/http/HttpMethods.cjs.map +1 -1
  14. package/dist/cjs/lib/structures/http/Server.cjs.map +1 -1
  15. package/dist/cjs/lib/structures/router/RouterBranch.cjs.map +1 -1
  16. package/dist/cjs/lib/structures/router/RouterNode.cjs.map +1 -1
  17. package/dist/cjs/lib/structures/router/RouterRoot.cjs.map +1 -1
  18. package/dist/cjs/lib/utils/_body/RequestHeadersProxy.cjs.map +1 -1
  19. package/dist/cjs/lib/utils/_body/RequestProxy.cjs.map +1 -1
  20. package/dist/cjs/lib/utils/_body/RequestURLProxy.cjs.map +1 -1
  21. package/dist/cjs/lib/utils/constants.cjs.map +1 -1
  22. package/dist/cjs/listeners/PluginRouteError.cjs.map +1 -1
  23. package/dist/cjs/listeners/PluginServerMiddlewareError.cjs.map +1 -1
  24. package/dist/cjs/listeners/PluginServerMiddlewareSuccess.cjs.map +1 -1
  25. package/dist/cjs/listeners/PluginServerRequest.cjs.map +1 -1
  26. package/dist/cjs/listeners/PluginServerRouterBranchMethodNotAllowed.cjs.map +1 -1
  27. package/dist/cjs/listeners/PluginServerRouterBranchNotFound.cjs.map +1 -1
  28. package/dist/cjs/listeners/PluginServerRouterFound.cjs.map +1 -1
  29. package/dist/cjs/listeners/_load.cjs.map +1 -1
  30. package/dist/cjs/middlewares/_load.cjs.map +1 -1
  31. package/dist/cjs/middlewares/auth.cjs.map +1 -1
  32. package/dist/cjs/middlewares/body.cjs.map +1 -1
  33. package/dist/cjs/middlewares/cookies.cjs.map +1 -1
  34. package/dist/cjs/middlewares/headers.cjs.map +1 -1
  35. package/dist/cjs/register.cjs.map +1 -1
  36. package/dist/cjs/routes/_load.cjs.map +1 -1
  37. package/dist/cjs/routes/oauth/callback.post.cjs.map +1 -1
  38. package/dist/cjs/routes/oauth/logout.post.cjs.map +1 -1
  39. package/dist/esm/index.mjs +1 -1
  40. package/dist/esm/index.mjs.map +1 -1
  41. package/dist/esm/lib/structures/Middleware.mjs.map +1 -1
  42. package/dist/esm/lib/structures/MiddlewareStore.mjs.map +1 -1
  43. package/dist/esm/lib/structures/Route.mjs.map +1 -1
  44. package/dist/esm/lib/structures/RouteLoaderStrategy.mjs.map +1 -1
  45. package/dist/esm/lib/structures/RouteStore.mjs.map +1 -1
  46. package/dist/esm/lib/structures/api/ApiRequest.mjs.map +1 -1
  47. package/dist/esm/lib/structures/api/ApiResponse.mjs.map +1 -1
  48. package/dist/esm/lib/structures/api/CookieStore.mjs.map +1 -1
  49. package/dist/esm/lib/structures/http/Auth.mjs.map +1 -1
  50. package/dist/esm/lib/structures/http/HttpCodes.mjs.map +1 -1
  51. package/dist/esm/lib/structures/http/HttpMethods.mjs.map +1 -1
  52. package/dist/esm/lib/structures/http/Server.mjs.map +1 -1
  53. package/dist/esm/lib/structures/router/RouterBranch.mjs.map +1 -1
  54. package/dist/esm/lib/structures/router/RouterNode.mjs.map +1 -1
  55. package/dist/esm/lib/structures/router/RouterRoot.mjs.map +1 -1
  56. package/dist/esm/lib/utils/_body/RequestHeadersProxy.mjs.map +1 -1
  57. package/dist/esm/lib/utils/_body/RequestProxy.mjs.map +1 -1
  58. package/dist/esm/lib/utils/_body/RequestURLProxy.mjs.map +1 -1
  59. package/dist/esm/lib/utils/constants.mjs.map +1 -1
  60. package/dist/esm/listeners/PluginRouteError.mjs.map +1 -1
  61. package/dist/esm/listeners/PluginServerMiddlewareError.mjs.map +1 -1
  62. package/dist/esm/listeners/PluginServerMiddlewareSuccess.mjs.map +1 -1
  63. package/dist/esm/listeners/PluginServerRequest.mjs.map +1 -1
  64. package/dist/esm/listeners/PluginServerRouterBranchMethodNotAllowed.mjs.map +1 -1
  65. package/dist/esm/listeners/PluginServerRouterBranchNotFound.mjs.map +1 -1
  66. package/dist/esm/listeners/PluginServerRouterFound.mjs.map +1 -1
  67. package/dist/esm/listeners/_load.mjs.map +1 -1
  68. package/dist/esm/middlewares/_load.mjs.map +1 -1
  69. package/dist/esm/middlewares/auth.mjs.map +1 -1
  70. package/dist/esm/middlewares/body.mjs.map +1 -1
  71. package/dist/esm/middlewares/cookies.mjs.map +1 -1
  72. package/dist/esm/middlewares/headers.mjs.map +1 -1
  73. package/dist/esm/register.mjs.map +1 -1
  74. package/dist/esm/routes/_load.mjs.map +1 -1
  75. package/dist/esm/routes/oauth/callback.post.mjs.map +1 -1
  76. package/dist/esm/routes/oauth/logout.post.mjs.map +1 -1
  77. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/structures/router/RouterRoot.ts"],"names":["RouterBranch","isNullishOrEmpty"],"mappings":";;;;;;;AAMO,IAAM,WAAA,GAAN,MAAM,WAAA,SAAmBA,6BAAa,CAAA;AAAA,EACrC,WAAc,GAAA;AACpB,IAAM,KAAA,CAAA,UAAA,EAAY,OAAO,IAAI,CAAA;AAAA;AAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,IAAI,KAA0B,EAAA;AACpC,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,KAAM,CAAA,IAAA,EAAM,GAAG,KAAK,CAAA;AAAA;AACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,OAAO,KAAuB,EAAA;AACpC,IAAA,OAAO,IAAK,CAAA,OAAA,CAAQ,KAAM,CAAA,IAAA,EAAM,GAAG,KAAK,CAAA;AAAA;AACzC;AAAA,EAGA,IAAoB,IAAe,GAAA;AAClC,IAAO,OAAA,EAAA;AAAA;AACR,EAEgB,QAAmB,GAAA;AAClC,IAAO,OAAA,EAAA;AAAA;AACR,EAEA,OAAc,qBAAsB,CAAA,WAAA,EAAgC,IAAsB,EAAA;AACzF,IAAA,MAAM,QAAkB,EAAC;AACzB,IAAA,KAAA,MAAW,aAAa,WAAa,EAAA;AACpC,MAAM,MAAA,OAAA,GAAU,UAAU,IAAK,EAAA;AAG/B,MAAI,IAAAC,0BAAA,CAAiB,OAAO,CAAG,EAAA;AAE/B,MAAA,IAAI,QAAQ,UAAW,CAAA,GAAG,KAAK,OAAQ,CAAA,QAAA,CAAS,GAAG,CAAG,EAAA;AAEtD,MAAA,KAAA,CAAM,KAAK,OAAO,CAAA;AAAA;AAGnB,IAAA,IAAI,SAAS,OAAS,EAAA;AACrB,MAAM,KAAA,CAAA,IAAA,CAAK,IAAK,CAAA,IAAA,EAAM,CAAA;AAAA;AAGvB,IAAO,OAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA;AACtB,EAEA,OAAc,UAAU,IAA2C,EAAA;AAClE,IAAA,MAAM,QAAQ,EAAC;AACf,IAAI,IAAAA,0BAAA,CAAiB,IAAI,CAAA,EAAU,OAAA,KAAA;AAEnC,IAAA,IAAI,IAAO,GAAA,EAAA;AACX,IAAA,KAAA,MAAW,QAAQ,IAAM,EAAA;AACxB,MAAA,IAAI,SAAS,GAAK,EAAA;AACjB,QAAA,IAAI,KAAK,MAAQ,EAAA;AAChB,UAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,UAAO,IAAA,GAAA,EAAA;AAAA;AACR,OACM,MAAA;AACN,QAAQ,IAAA,IAAA,IAAA;AAAA;AACT;AAGD,IAAA,IAAI,KAAK,MAAQ,EAAA;AAChB,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA;AAGhB,IAAO,OAAA,KAAA;AAAA;AACR,EAEA,OAAc,cAAc,IAAqD,EAAA;AAChF,IAAI,IAAA,IAAA,CAAK,MAAW,KAAA,CAAA,EAAU,OAAA,IAAA;AAC9B,IAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC7B,MAAM,MAAA,4BAAA,GAA+B,IAAK,CAAA,WAAA,CAAY,GAAG,CAAA;AACzD,MAAA,IAAI,iCAAiC,EAAM,IAAA,4BAAA,KAAiC,IAAK,CAAA,MAAA,GAAS,GAAU,OAAA,IAAA;AAEpG,MAAA,OAAO,IAAK,CAAA,KAAA,CAAM,4BAA+B,GAAA,CAAC,EAAE,WAAY,EAAA;AAAA;AAGjE,IAAM,MAAA,SAAA,GAAY,KAAK,MAAS,GAAA,CAAA;AAChC,IAAA,OAAO,WAAW,CAAA,aAAA,CAAc,IAAK,CAAA,SAAS,CAAC,CAAA;AAAA;AAEjD,CAAA;AAzF6C,MAAA,CAAA,WAAA,EAAA,YAAA,CAAA;AAAtC,IAAM,UAAN,GAAA","file":"RouterRoot.cjs","sourcesContent":["import { isNullishOrEmpty } from '@sapphire/utilities';\nimport type { Route } from '../Route';\nimport type { MethodName } from '../http/HttpMethods';\nimport { RouterBranch } from './RouterBranch';\nimport type { RouterNode } from './RouterNode';\n\nexport class RouterRoot extends RouterBranch {\n\tpublic constructor() {\n\t\tsuper('::ROOT::', false, null);\n\t}\n\n\t/**\n\t * Adds a route to the branch\n\t *\n\t * @param route The route to add\n\t * @returns The node the route was added to\n\t */\n\tpublic add(route: Route): RouterNode {\n\t\treturn this._add(route.path, 0, route);\n\t}\n\n\t/**\n\t * Removes a route from the branch\n\t *\n\t * @param route The route to remove\n\t * @returns Whether or not the route was removed\n\t */\n\tpublic remove(route: Route): boolean {\n\t\treturn this._remove(route.path, 0, route);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/class-literal-property-style\n\tpublic override get path(): string {\n\t\treturn '';\n\t}\n\n\tpublic override toString(): string {\n\t\treturn '';\n\t}\n\n\tpublic static makeRoutePathForPiece(directories: readonly string[], name: string): string {\n\t\tconst parts: string[] = [];\n\t\tfor (const directory of directories) {\n\t\t\tconst trimmed = directory.trim();\n\n\t\t\t// If empty, skip:\n\t\t\tif (isNullishOrEmpty(trimmed)) continue;\n\t\t\t// If it's a group, skip:\n\t\t\tif (trimmed.startsWith('(') && trimmed.endsWith(')')) continue;\n\n\t\t\tparts.push(trimmed);\n\t\t}\n\n\t\tif (name !== 'index') {\n\t\t\tparts.push(name.trim());\n\t\t}\n\n\t\treturn parts.join('/');\n\t}\n\n\tpublic static normalize(path: string | null | undefined): string[] {\n\t\tconst parts = [] as string[];\n\t\tif (isNullishOrEmpty(path)) return parts;\n\n\t\tlet part = '';\n\t\tfor (const char of path) {\n\t\t\tif (char === '/') {\n\t\t\t\tif (part.length) {\n\t\t\t\t\tparts.push(part);\n\t\t\t\t\tpart = '';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpart += char;\n\t\t\t}\n\t\t}\n\n\t\tif (part.length) {\n\t\t\tparts.push(part);\n\t\t}\n\n\t\treturn parts;\n\t}\n\n\tpublic static extractMethod(path: string | readonly string[]): MethodName | null {\n\t\tif (path.length === 0) return null;\n\t\tif (typeof path === 'string') {\n\t\t\tconst methodSeparatorPositionIndex = path.lastIndexOf('.');\n\t\t\tif (methodSeparatorPositionIndex === -1 || methodSeparatorPositionIndex === path.length - 1) return null;\n\n\t\t\treturn path.slice(methodSeparatorPositionIndex + 1).toUpperCase() as MethodName;\n\t\t}\n\n\t\tconst lastIndex = path.length - 1;\n\t\treturn RouterRoot.extractMethod(path[lastIndex]);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/lib/structures/router/RouterRoot.ts"],"names":["RouterBranch","isNullishOrEmpty"],"mappings":";;;;;;;AAMO,IAAM,WAAA,GAAN,MAAM,WAAA,SAAmBA,6BAAA,CAAa;AAAA,EACrC,WAAA,GAAc;AACpB,IAAA,KAAA,CAAM,UAAA,EAAY,OAAO,IAAI,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,IAAI,KAAA,EAA0B;AACpC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,GAAG,KAAK,CAAA;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,OAAO,KAAA,EAAuB;AACpC,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,IAAA,EAAM,GAAG,KAAK,CAAA;AAAA,EACzC;AAAA;AAAA,EAGA,IAAoB,IAAA,GAAe;AAClC,IAAA,OAAO,EAAA;AAAA,EACR;AAAA,EAEgB,QAAA,GAAmB;AAClC,IAAA,OAAO,EAAA;AAAA,EACR;AAAA,EAEA,OAAc,qBAAA,CAAsB,WAAA,EAAgC,IAAA,EAAsB;AACzF,IAAA,MAAM,QAAkB,EAAC;AACzB,IAAA,KAAA,MAAW,aAAa,WAAA,EAAa;AACpC,MAAA,MAAM,OAAA,GAAU,UAAU,IAAA,EAAK;AAG/B,MAAA,IAAIC,0BAAA,CAAiB,OAAO,CAAA,EAAG;AAE/B,MAAA,IAAI,QAAQ,UAAA,CAAW,GAAG,KAAK,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,EAAG;AAEtD,MAAA,KAAA,CAAM,KAAK,OAAO,CAAA;AAAA,IACnB;AAEA,IAAA,IAAI,SAAS,OAAA,EAAS;AACrB,MAAA,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,CAAA;AAAA,IACvB;AAEA,IAAA,OAAO,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,EACtB;AAAA,EAEA,OAAc,UAAU,IAAA,EAA2C;AAClE,IAAA,MAAM,QAAQ,EAAC;AACf,IAAA,IAAIA,0BAAA,CAAiB,IAAI,CAAA,EAAG,OAAO,KAAA;AAEnC,IAAA,IAAI,IAAA,GAAO,EAAA;AACX,IAAA,KAAA,MAAW,QAAQ,IAAA,EAAM;AACxB,MAAA,IAAI,SAAS,GAAA,EAAK;AACjB,QAAA,IAAI,KAAK,MAAA,EAAQ;AAChB,UAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,UAAA,IAAA,GAAO,EAAA;AAAA,QACR;AAAA,MACD,CAAA,MAAO;AACN,QAAA,IAAA,IAAQ,IAAA;AAAA,MACT;AAAA,IACD;AAEA,IAAA,IAAI,KAAK,MAAA,EAAQ;AAChB,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,IAChB;AAEA,IAAA,OAAO,KAAA;AAAA,EACR;AAAA,EAEA,OAAc,cAAc,IAAA,EAAqD;AAChF,IAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC9B,IAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC7B,MAAA,MAAM,4BAAA,GAA+B,IAAA,CAAK,WAAA,CAAY,GAAG,CAAA;AACzD,MAAA,IAAI,iCAAiC,EAAA,IAAM,4BAAA,KAAiC,IAAA,CAAK,MAAA,GAAS,GAAG,OAAO,IAAA;AAEpG,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,4BAAA,GAA+B,CAAC,EAAE,WAAA,EAAY;AAAA,IACjE;AAEA,IAAA,MAAM,SAAA,GAAY,KAAK,MAAA,GAAS,CAAA;AAChC,IAAA,OAAO,WAAA,CAAW,aAAA,CAAc,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,EAChD;AACD,CAAA;AAzF6C,MAAA,CAAA,WAAA,EAAA,YAAA,CAAA;AAAtC,IAAM,UAAA,GAAN","file":"RouterRoot.cjs","sourcesContent":["import { isNullishOrEmpty } from '@sapphire/utilities';\nimport type { Route } from '../Route';\nimport type { MethodName } from '../http/HttpMethods';\nimport { RouterBranch } from './RouterBranch';\nimport type { RouterNode } from './RouterNode';\n\nexport class RouterRoot extends RouterBranch {\n\tpublic constructor() {\n\t\tsuper('::ROOT::', false, null);\n\t}\n\n\t/**\n\t * Adds a route to the branch\n\t *\n\t * @param route The route to add\n\t * @returns The node the route was added to\n\t */\n\tpublic add(route: Route): RouterNode {\n\t\treturn this._add(route.path, 0, route);\n\t}\n\n\t/**\n\t * Removes a route from the branch\n\t *\n\t * @param route The route to remove\n\t * @returns Whether or not the route was removed\n\t */\n\tpublic remove(route: Route): boolean {\n\t\treturn this._remove(route.path, 0, route);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/class-literal-property-style\n\tpublic override get path(): string {\n\t\treturn '';\n\t}\n\n\tpublic override toString(): string {\n\t\treturn '';\n\t}\n\n\tpublic static makeRoutePathForPiece(directories: readonly string[], name: string): string {\n\t\tconst parts: string[] = [];\n\t\tfor (const directory of directories) {\n\t\t\tconst trimmed = directory.trim();\n\n\t\t\t// If empty, skip:\n\t\t\tif (isNullishOrEmpty(trimmed)) continue;\n\t\t\t// If it's a group, skip:\n\t\t\tif (trimmed.startsWith('(') && trimmed.endsWith(')')) continue;\n\n\t\t\tparts.push(trimmed);\n\t\t}\n\n\t\tif (name !== 'index') {\n\t\t\tparts.push(name.trim());\n\t\t}\n\n\t\treturn parts.join('/');\n\t}\n\n\tpublic static normalize(path: string | null | undefined): string[] {\n\t\tconst parts = [] as string[];\n\t\tif (isNullishOrEmpty(path)) return parts;\n\n\t\tlet part = '';\n\t\tfor (const char of path) {\n\t\t\tif (char === '/') {\n\t\t\t\tif (part.length) {\n\t\t\t\t\tparts.push(part);\n\t\t\t\t\tpart = '';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpart += char;\n\t\t\t}\n\t\t}\n\n\t\tif (part.length) {\n\t\t\tparts.push(part);\n\t\t}\n\n\t\treturn parts;\n\t}\n\n\tpublic static extractMethod(path: string | readonly string[]): MethodName | null {\n\t\tif (path.length === 0) return null;\n\t\tif (typeof path === 'string') {\n\t\t\tconst methodSeparatorPositionIndex = path.lastIndexOf('.');\n\t\t\tif (methodSeparatorPositionIndex === -1 || methodSeparatorPositionIndex === path.length - 1) return null;\n\n\t\t\treturn path.slice(methodSeparatorPositionIndex + 1).toUpperCase() as MethodName;\n\t\t}\n\n\t\tconst lastIndex = path.length - 1;\n\t\treturn RouterRoot.extractMethod(path[lastIndex]);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestHeadersProxy.ts"],"names":["isNullishOrEmpty","splitSetCookieString","NodeUtilInspectSymbol"],"mappings":"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","file":"RequestHeadersProxy.cjs","sourcesContent":["import { isNullishOrEmpty } from '@sapphire/utilities';\nimport { splitSetCookieString } from 'cookie-es';\nimport type { Headers, SpecIterableIterator } from 'undici';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport { NodeUtilInspectSymbol } from '../constants';\n\nexport class RequestHeadersProxy implements Headers {\n\tprivate readonly request: ApiRequest;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.request = request;\n\t}\n\n\tpublic append(name: string, value: string): void {\n\t\tconst { headers } = this.request;\n\t\tconst current = headers[name];\n\t\tif (current) {\n\t\t\tif (Array.isArray(current)) {\n\t\t\t\tcurrent.push(value);\n\t\t\t} else {\n\t\t\t\theaders[name] = [current, value];\n\t\t\t}\n\t\t} else {\n\t\t\theaders[name] = value;\n\t\t}\n\t}\n\n\tpublic delete(name: string): void {\n\t\tthis.request.headers[name] = undefined;\n\t}\n\n\tpublic get(name: string): string | null {\n\t\treturn normalizeValue(this.request.headers[name]);\n\t}\n\n\tpublic has(name: string): boolean {\n\t\treturn !isNullishOrEmpty(this.request.headers[name]);\n\t}\n\n\tpublic set(name: string, value: string): void {\n\t\tthis.request.headers[name] = value;\n\t}\n\n\tpublic getSetCookie(): string[] {\n\t\tconst setCookie = this.get('set-cookie');\n\t\treturn setCookie === null ? [] : splitSetCookieString(setCookie);\n\t}\n\n\tpublic forEach(callbackfn: (value: string, key: string, iterable: Headers) => void, thisArg?: unknown): void {\n\t\tfor (const [key, value] of this.entries()) {\n\t\t\tcallbackfn.call(thisArg, value, key, this);\n\t\t}\n\t}\n\n\tpublic *keys(): SpecIterableIterator<string> {\n\t\tconst { headers } = this.request;\n\t\tfor (const key of Object.keys(headers)) {\n\t\t\tconst value = headers[key];\n\n\t\t\tif (!isNullishOrEmpty(value)) {\n\t\t\t\tyield key;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic *values(): SpecIterableIterator<string> {\n\t\tconst { headers } = this.request;\n\t\tfor (const key of Object.keys(headers)) {\n\t\t\tconst value = headers[key];\n\n\t\t\tif (!isNullishOrEmpty(value)) {\n\t\t\t\tyield normalizeValue(value);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic *entries(): SpecIterableIterator<[string, string]> {\n\t\tconst { headers } = this.request;\n\t\tfor (const key of Object.keys(headers)) {\n\t\t\tconst value = headers[key];\n\n\t\t\tif (!isNullishOrEmpty(value)) {\n\t\t\t\tyield [key, normalizeValue(value)];\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic [Symbol.iterator](): SpecIterableIterator<[string, string]> {\n\t\treturn this.entries();\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/class-literal-property-style\n\tpublic get [Symbol.toStringTag]() {\n\t\treturn 'Headers';\n\t}\n\n\tpublic [NodeUtilInspectSymbol]() {\n\t\treturn Object.fromEntries(this.entries());\n\t}\n}\n\nfunction normalizeValue(value: string | string[] | undefined): string {\n\tif (Array.isArray(value)) {\n\t\treturn value.join(', ');\n\t}\n\n\treturn String(value ?? '');\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestHeadersProxy.ts"],"names":["isNullishOrEmpty","splitSetCookieString","NodeUtilInspectSymbol"],"mappings":"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","file":"RequestHeadersProxy.cjs","sourcesContent":["import { isNullishOrEmpty } from '@sapphire/utilities';\nimport { splitSetCookieString } from 'cookie-es';\nimport type { Headers, SpecIterableIterator } from 'undici';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport { NodeUtilInspectSymbol } from '../constants';\n\nexport class RequestHeadersProxy implements Headers {\n\tprivate readonly request: ApiRequest;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.request = request;\n\t}\n\n\tpublic append(name: string, value: string): void {\n\t\tconst { headers } = this.request;\n\t\tconst current = headers[name];\n\t\tif (current) {\n\t\t\tif (Array.isArray(current)) {\n\t\t\t\tcurrent.push(value);\n\t\t\t} else {\n\t\t\t\theaders[name] = [current, value];\n\t\t\t}\n\t\t} else {\n\t\t\theaders[name] = value;\n\t\t}\n\t}\n\n\tpublic delete(name: string): void {\n\t\tthis.request.headers[name] = undefined;\n\t}\n\n\tpublic get(name: string): string | null {\n\t\treturn normalizeValue(this.request.headers[name]);\n\t}\n\n\tpublic has(name: string): boolean {\n\t\treturn !isNullishOrEmpty(this.request.headers[name]);\n\t}\n\n\tpublic set(name: string, value: string): void {\n\t\tthis.request.headers[name] = value;\n\t}\n\n\tpublic getSetCookie(): string[] {\n\t\tconst setCookie = this.get('set-cookie');\n\t\treturn setCookie === null ? [] : splitSetCookieString(setCookie);\n\t}\n\n\tpublic forEach(callbackfn: (value: string, key: string, iterable: Headers) => void, thisArg?: unknown): void {\n\t\tfor (const [key, value] of this.entries()) {\n\t\t\tcallbackfn.call(thisArg, value, key, this);\n\t\t}\n\t}\n\n\tpublic *keys(): SpecIterableIterator<string> {\n\t\tconst { headers } = this.request;\n\t\tfor (const key of Object.keys(headers)) {\n\t\t\tconst value = headers[key];\n\n\t\t\tif (!isNullishOrEmpty(value)) {\n\t\t\t\tyield key;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic *values(): SpecIterableIterator<string> {\n\t\tconst { headers } = this.request;\n\t\tfor (const key of Object.keys(headers)) {\n\t\t\tconst value = headers[key];\n\n\t\t\tif (!isNullishOrEmpty(value)) {\n\t\t\t\tyield normalizeValue(value);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic *entries(): SpecIterableIterator<[string, string]> {\n\t\tconst { headers } = this.request;\n\t\tfor (const key of Object.keys(headers)) {\n\t\t\tconst value = headers[key];\n\n\t\t\tif (!isNullishOrEmpty(value)) {\n\t\t\t\tyield [key, normalizeValue(value)];\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic [Symbol.iterator](): SpecIterableIterator<[string, string]> {\n\t\treturn this.entries();\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/class-literal-property-style\n\tpublic get [Symbol.toStringTag]() {\n\t\treturn 'Headers';\n\t}\n\n\tpublic [NodeUtilInspectSymbol]() {\n\t\treturn Object.fromEntries(this.entries());\n\t}\n}\n\nfunction normalizeValue(value: string | string[] | undefined): string {\n\tif (Array.isArray(value)) {\n\t\treturn value.join(', ');\n\t}\n\n\treturn String(value ?? '');\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestProxy.ts"],"names":["RequestURLProxy","RequestHeadersProxy","isNullish","arrayBuffer","ReadableStream","Blob","Response","isNullishOrEmpty"],"mappings":"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","file":"RequestProxy.cjs","sourcesContent":["import { isNullish, isNullishOrEmpty } from '@sapphire/utilities';\nimport { Blob } from 'node:buffer';\nimport { arrayBuffer } from 'node:stream/consumers';\nimport { ReadableStream } from 'node:stream/web';\nimport {\n\tResponse,\n\ttype FormData,\n\ttype Headers,\n\ttype ReferrerPolicy,\n\ttype Request,\n\ttype RequestCache,\n\ttype RequestCredentials,\n\ttype RequestDestination,\n\ttype RequestMode,\n\ttype RequestRedirect\n} from 'undici';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport type { MethodName } from '../../structures/http/HttpMethods';\nimport { RequestHeadersProxy } from './RequestHeadersProxy';\nimport { RequestURLProxy } from './RequestURLProxy';\n\nexport class RequestProxy implements Request {\n\tpublic cache: RequestCache = 'default';\n\tpublic credentials: RequestCredentials = 'same-origin';\n\tpublic destination: RequestDestination = '';\n\tpublic integrity: string = '';\n\tpublic keepalive: boolean = false;\n\n\tpublic mode: RequestMode = 'cors';\n\tpublic redirect: RequestRedirect = 'follow';\n\tpublic referrer: string = 'about:client';\n\tpublic referrerPolicy: ReferrerPolicy = '';\n\n\tpublic headers: Headers;\n\n\tpublic bodyUsed: boolean = false;\n\tpublic duplex = 'half' as const;\n\n\treadonly #request: ApiRequest;\n\treadonly #url: RequestURLProxy;\n\t#cachedMethod: MethodName | null = null;\n\t#cachedHasBody: boolean | null = null;\n\t#abortController: AbortController | null = null;\n\t#bodyStream: ReadableStream<Uint8Array> | null = null;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.#request = request;\n\t\tthis.#url = new RequestURLProxy(request);\n\t\tthis.headers = new RequestHeadersProxy(request);\n\t}\n\n\tpublic async bytes(): Promise<Uint8Array> {\n\t\tconst { body } = this;\n\t\treturn isNullish(body) ? new Uint8Array(0) : new Uint8Array(await arrayBuffer(body));\n\t}\n\n\tpublic get url(): string {\n\t\treturn this.#url.href;\n\t}\n\n\tpublic get method(): MethodName {\n\t\tthis.#cachedMethod ??= (this.#request.method?.toUpperCase() ?? 'GET') as MethodName;\n\t\treturn this.#cachedMethod;\n\t}\n\n\tpublic get signal(): AbortSignal {\n\t\tthis.#abortController ??= new AbortController();\n\t\treturn this.#abortController.signal;\n\t}\n\n\tpublic get body(): ReadableStream<Uint8Array> | null {\n\t\tif (!this.hasBody) return null;\n\n\t\tthis.#bodyStream ??= new ReadableStream<Uint8Array>({\n\t\t\tstart: (controller) => {\n\t\t\t\tthis.#request\n\t\t\t\t\t.on('data', (chunk) => controller.enqueue(chunk))\n\t\t\t\t\t.once('error', (error) => {\n\t\t\t\t\t\tcontroller.error(error);\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('close', () => {\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('end', () => {\n\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn this.#bodyStream;\n\t}\n\n\tpublic async arrayBuffer(): Promise<ArrayBuffer> {\n\t\tconst { body } = this;\n\t\treturn isNullish(body) ? new ArrayBuffer(0) : arrayBuffer(body);\n\t}\n\n\tpublic async blob(): Promise<Blob> {\n\t\tconst arrayBuffer = await this.arrayBuffer();\n\t\treturn new Blob([arrayBuffer], {\n\t\t\ttype: this.headers.get('content-type') ?? ''\n\t\t});\n\t}\n\n\tpublic async formData(): Promise<FormData> {\n\t\treturn new Response(this.body, { headers: this.headers }).formData(); // NOSONAR\n\t}\n\n\tpublic async json(): Promise<unknown> {\n\t\treturn JSON.parse(await this.text());\n\t}\n\n\tpublic async text(): Promise<string> {\n\t\treturn new TextDecoder().decode(await this.arrayBuffer());\n\t}\n\n\tpublic clone(): Request {\n\t\treturn new RequestProxy(this.#request);\n\t}\n\n\tprivate get hasBody(): boolean {\n\t\tif (this.#cachedHasBody !== null) return this.#cachedHasBody;\n\n\t\tconst contentLengthString = this.headers.get('content-length');\n\t\tconst contentLength = isNullishOrEmpty(contentLengthString) ? 0 : Number(contentLengthString);\n\t\tif (Number.isSafeInteger(contentLength) && contentLength > 0) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst transferEncoding = this.headers.get('transfer-encoding');\n\t\tif (transferEncoding?.includes('chunked')) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.#cachedHasBody = false;\n\t\treturn false;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestProxy.ts"],"names":["RequestURLProxy","RequestHeadersProxy","isNullish","arrayBuffer","ReadableStream","Blob","Response","isNullishOrEmpty"],"mappings":"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","file":"RequestProxy.cjs","sourcesContent":["import { isNullish, isNullishOrEmpty } from '@sapphire/utilities';\nimport { Blob } from 'node:buffer';\nimport { arrayBuffer } from 'node:stream/consumers';\nimport { ReadableStream } from 'node:stream/web';\nimport {\n\tResponse,\n\ttype FormData,\n\ttype Headers,\n\ttype ReferrerPolicy,\n\ttype Request,\n\ttype RequestCache,\n\ttype RequestCredentials,\n\ttype RequestDestination,\n\ttype RequestMode,\n\ttype RequestRedirect\n} from 'undici';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport type { MethodName } from '../../structures/http/HttpMethods';\nimport { RequestHeadersProxy } from './RequestHeadersProxy';\nimport { RequestURLProxy } from './RequestURLProxy';\n\nexport class RequestProxy implements Request {\n\tpublic cache: RequestCache = 'default';\n\tpublic credentials: RequestCredentials = 'same-origin';\n\tpublic destination: RequestDestination = '';\n\tpublic integrity: string = '';\n\tpublic keepalive: boolean = false;\n\n\tpublic mode: RequestMode = 'cors';\n\tpublic redirect: RequestRedirect = 'follow';\n\tpublic referrer: string = 'about:client';\n\tpublic referrerPolicy: ReferrerPolicy = '';\n\n\tpublic headers: Headers;\n\n\tpublic bodyUsed: boolean = false;\n\tpublic duplex = 'half' as const;\n\n\treadonly #request: ApiRequest;\n\treadonly #url: RequestURLProxy;\n\t#cachedMethod: MethodName | null = null;\n\t#cachedHasBody: boolean | null = null;\n\t#abortController: AbortController | null = null;\n\t#bodyStream: ReadableStream<Uint8Array> | null = null;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.#request = request;\n\t\tthis.#url = new RequestURLProxy(request);\n\t\tthis.headers = new RequestHeadersProxy(request);\n\t}\n\n\tpublic async bytes(): Promise<Uint8Array> {\n\t\tconst { body } = this;\n\t\treturn isNullish(body) ? new Uint8Array(0) : new Uint8Array(await arrayBuffer(body));\n\t}\n\n\tpublic get url(): string {\n\t\treturn this.#url.href;\n\t}\n\n\tpublic get method(): MethodName {\n\t\tthis.#cachedMethod ??= (this.#request.method?.toUpperCase() ?? 'GET') as MethodName;\n\t\treturn this.#cachedMethod;\n\t}\n\n\tpublic get signal(): AbortSignal {\n\t\tthis.#abortController ??= new AbortController();\n\t\treturn this.#abortController.signal;\n\t}\n\n\tpublic get body(): ReadableStream<Uint8Array> | null {\n\t\tif (!this.hasBody) return null;\n\n\t\tthis.#bodyStream ??= new ReadableStream<Uint8Array>({\n\t\t\tstart: (controller) => {\n\t\t\t\tthis.#request\n\t\t\t\t\t.on('data', (chunk) => controller.enqueue(chunk))\n\t\t\t\t\t.once('error', (error) => {\n\t\t\t\t\t\tcontroller.error(error);\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('close', () => {\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('end', () => {\n\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn this.#bodyStream;\n\t}\n\n\tpublic async arrayBuffer(): Promise<ArrayBuffer> {\n\t\tconst { body } = this;\n\t\treturn isNullish(body) ? new ArrayBuffer(0) : arrayBuffer(body);\n\t}\n\n\tpublic async blob(): Promise<Blob> {\n\t\tconst arrayBuffer = await this.arrayBuffer();\n\t\treturn new Blob([arrayBuffer], {\n\t\t\ttype: this.headers.get('content-type') ?? ''\n\t\t});\n\t}\n\n\tpublic async formData(): Promise<FormData> {\n\t\treturn new Response(this.body, { headers: this.headers }).formData(); // NOSONAR\n\t}\n\n\tpublic async json(): Promise<unknown> {\n\t\treturn JSON.parse(await this.text());\n\t}\n\n\tpublic async text(): Promise<string> {\n\t\treturn new TextDecoder().decode(await this.arrayBuffer());\n\t}\n\n\tpublic clone(): Request {\n\t\treturn new RequestProxy(this.#request);\n\t}\n\n\tprivate get hasBody(): boolean {\n\t\tif (this.#cachedHasBody !== null) return this.#cachedHasBody;\n\n\t\tconst contentLengthString = this.headers.get('content-length');\n\t\tconst contentLength = isNullishOrEmpty(contentLengthString) ? 0 : Number(contentLengthString);\n\t\tif (Number.isSafeInteger(contentLength) && contentLength > 0) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst transferEncoding = this.headers.get('transfer-encoding');\n\t\tif (transferEncoding?.includes('chunked')) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.#cachedHasBody = false;\n\t\treturn false;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestURLProxy.ts"],"names":["NodeUtilInspectSymbol","isNullishOrEmpty"],"mappings":"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","file":"RequestURLProxy.cjs","sourcesContent":["import { isNullishOrEmpty } from '@sapphire/utilities';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport { NodeUtilInspectSymbol } from '../constants';\n\nexport class RequestURLProxy implements URL {\n\tpublic hash: string = '';\n\tpublic password: string = '';\n\tpublic username: string = '';\n\n\t#protocol: URLProtocol | null = null;\n\t#hostname: string | null = null;\n\t#port: string | null = null;\n\n\t#pathname: string | null = null;\n\t#search: string | null = null;\n\t#searchParams: URLSearchParams | null = null;\n\n\treadonly #request: ApiRequest;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.#request = request;\n\t}\n\n\tpublic get host(): string {\n\t\treturn this.#request.headers.host ?? '';\n\t}\n\n\tpublic set host(value: string) {\n\t\tthis.#hostname = null;\n\t\tthis.#port = null;\n\t\tthis.#request.headers.host = value;\n\t}\n\n\tpublic get hostname(): string {\n\t\tif (this.#hostname === null) {\n\t\t\tconst [hostname, port] = parseHost(this.#request.headers.host);\n\t\t\tthis.#hostname = hostname;\n\t\t\tthis.#port = port === -1 ? '' : String(port);\n\t\t}\n\n\t\treturn this.#hostname;\n\t}\n\n\tpublic set hostname(value: string) {\n\t\tthis.#hostname = value;\n\t}\n\n\tpublic get port(): string {\n\t\tif (this.#port === null) {\n\t\t\tconst [hostname, port] = parseHost(this.#request.headers.host);\n\t\t\tthis.#hostname = hostname;\n\t\t\tthis.#port = port === -1 ? String(this.#request.socket.localPort ?? '') : String(port);\n\t\t}\n\n\t\treturn this.#port;\n\t}\n\n\tpublic set port(value: string) {\n\t\tthis.#port = String(Number(value || ''));\n\t}\n\n\tpublic get pathname(): string {\n\t\tif (this.#pathname === null) {\n\t\t\tconst [pathname, search] = parsePath(this.#request.url);\n\t\t\tthis.#pathname = pathname;\n\t\t\tthis.#search ??= search;\n\t\t}\n\n\t\treturn this.#pathname;\n\t}\n\n\tpublic set pathname(value: string) {\n\t\tconst normalized = value.startsWith('/') ? value : `/${value}`;\n\t\tif (normalized === this.#pathname) return;\n\n\t\tthis.#pathname = normalized;\n\t\tthis.#request.url = normalized + this.search;\n\t}\n\n\tpublic get search(): string {\n\t\tif (this.#search === null) {\n\t\t\tconst [pathname, search] = parsePath(this.#request.url);\n\t\t\tthis.#pathname ??= pathname;\n\t\t\tthis.#search = search;\n\t\t}\n\n\t\treturn this.#search;\n\t}\n\n\tpublic set search(value: string) {\n\t\tlet normalized: string;\n\t\tif (value === '?') {\n\t\t\tnormalized = '';\n\t\t} else if (value && !value.startsWith('?')) {\n\t\t\tnormalized = `?${value}`;\n\t\t} else {\n\t\t\tnormalized = value;\n\t\t}\n\n\t\tif (normalized === this.#search) return;\n\n\t\tthis.#search = normalized;\n\t\tthis.#searchParams = null;\n\t\tthis.#request.url = this.pathname + normalized;\n\t}\n\n\tpublic get searchParams(): URLSearchParams {\n\t\tthis.#searchParams ??= new URLSearchParams(this.search);\n\t\treturn this.#searchParams;\n\t}\n\n\tpublic set searchParams(value: URLSearchParams) {\n\t\tthis.#searchParams = value;\n\t\tthis.search = value.toString();\n\t}\n\n\tpublic get protocol(): URLProtocol {\n\t\tthis.#protocol ??= (this.#request.socket as any).encrypted || this.#request.headers['x-forwarded-proto'] === 'https' ? 'https:' : 'http:';\n\t\treturn this.#protocol;\n\t}\n\n\tpublic set protocol(value: URLProtocol) {\n\t\tthis.#protocol = value;\n\t}\n\n\tpublic get origin(): string {\n\t\treturn `${this.protocol}//${this.host}`;\n\t}\n\n\tpublic set origin(_value: string) {\n\t\t// No-op\n\t}\n\n\tpublic get href(): string {\n\t\treturn `${this.protocol}//${this.host}${this.pathname}${this.search}`;\n\t}\n\n\tpublic set href(value: string) {\n\t\tconst url = new URL(value);\n\t\tthis.#protocol = url.protocol as URLProtocol;\n\t\tthis.username = url.username;\n\t\tthis.password = url.password;\n\t\tthis.#hostname = url.hostname;\n\t\tthis.#port = url.port;\n\t\tthis.#pathname = url.pathname;\n\t\tthis.#search = url.search;\n\t\tthis.hash = url.hash;\n\t}\n\n\tpublic toString(): string {\n\t\treturn this.href;\n\t}\n\n\tpublic toJSON(): string {\n\t\treturn this.href;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/class-literal-property-style\n\tpublic get [Symbol.toStringTag]() {\n\t\treturn 'URL';\n\t}\n\n\tpublic [NodeUtilInspectSymbol]() {\n\t\treturn this.href;\n\t}\n}\n\nexport type URLProtocol = 'https:' | 'http:';\n\nfunction parsePath(input: string | undefined): [pathname: string, search: string] {\n\tconst url = (input ?? '/').replaceAll('\\\\', '/');\n\tconst index = url.indexOf('?');\n\tif (index === -1) {\n\t\treturn [url, ''];\n\t}\n\n\treturn [url.slice(0, index), url.slice(index)];\n}\n\nfunction parseHost(host: string | undefined): [hostname: string, port: number] {\n\tif (isNullishOrEmpty(host)) {\n\t\treturn ['localhost', -1];\n\t}\n\n\tconst index = host.indexOf(':');\n\tif (index === -1) {\n\t\treturn [host, -1];\n\t}\n\n\tconst port = Number(host.slice(index));\n\treturn [host.slice(0, index), Number.isSafeInteger(port) ? port : -1];\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestURLProxy.ts"],"names":["NodeUtilInspectSymbol","isNullishOrEmpty"],"mappings":"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","file":"RequestURLProxy.cjs","sourcesContent":["import { isNullishOrEmpty } from '@sapphire/utilities';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport { NodeUtilInspectSymbol } from '../constants';\n\nexport class RequestURLProxy implements URL {\n\tpublic hash: string = '';\n\tpublic password: string = '';\n\tpublic username: string = '';\n\n\t#protocol: URLProtocol | null = null;\n\t#hostname: string | null = null;\n\t#port: string | null = null;\n\n\t#pathname: string | null = null;\n\t#search: string | null = null;\n\t#searchParams: URLSearchParams | null = null;\n\n\treadonly #request: ApiRequest;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.#request = request;\n\t}\n\n\tpublic get host(): string {\n\t\treturn this.#request.headers.host ?? '';\n\t}\n\n\tpublic set host(value: string) {\n\t\tthis.#hostname = null;\n\t\tthis.#port = null;\n\t\tthis.#request.headers.host = value;\n\t}\n\n\tpublic get hostname(): string {\n\t\tif (this.#hostname === null) {\n\t\t\tconst [hostname, port] = parseHost(this.#request.headers.host);\n\t\t\tthis.#hostname = hostname;\n\t\t\tthis.#port = port === -1 ? '' : String(port);\n\t\t}\n\n\t\treturn this.#hostname;\n\t}\n\n\tpublic set hostname(value: string) {\n\t\tthis.#hostname = value;\n\t}\n\n\tpublic get port(): string {\n\t\tif (this.#port === null) {\n\t\t\tconst [hostname, port] = parseHost(this.#request.headers.host);\n\t\t\tthis.#hostname = hostname;\n\t\t\tthis.#port = port === -1 ? String(this.#request.socket.localPort ?? '') : String(port);\n\t\t}\n\n\t\treturn this.#port;\n\t}\n\n\tpublic set port(value: string) {\n\t\tthis.#port = String(Number(value || ''));\n\t}\n\n\tpublic get pathname(): string {\n\t\tif (this.#pathname === null) {\n\t\t\tconst [pathname, search] = parsePath(this.#request.url);\n\t\t\tthis.#pathname = pathname;\n\t\t\tthis.#search ??= search;\n\t\t}\n\n\t\treturn this.#pathname;\n\t}\n\n\tpublic set pathname(value: string) {\n\t\tconst normalized = value.startsWith('/') ? value : `/${value}`;\n\t\tif (normalized === this.#pathname) return;\n\n\t\tthis.#pathname = normalized;\n\t\tthis.#request.url = normalized + this.search;\n\t}\n\n\tpublic get search(): string {\n\t\tif (this.#search === null) {\n\t\t\tconst [pathname, search] = parsePath(this.#request.url);\n\t\t\tthis.#pathname ??= pathname;\n\t\t\tthis.#search = search;\n\t\t}\n\n\t\treturn this.#search;\n\t}\n\n\tpublic set search(value: string) {\n\t\tlet normalized: string;\n\t\tif (value === '?') {\n\t\t\tnormalized = '';\n\t\t} else if (value && !value.startsWith('?')) {\n\t\t\tnormalized = `?${value}`;\n\t\t} else {\n\t\t\tnormalized = value;\n\t\t}\n\n\t\tif (normalized === this.#search) return;\n\n\t\tthis.#search = normalized;\n\t\tthis.#searchParams = null;\n\t\tthis.#request.url = this.pathname + normalized;\n\t}\n\n\tpublic get searchParams(): URLSearchParams {\n\t\tthis.#searchParams ??= new URLSearchParams(this.search);\n\t\treturn this.#searchParams;\n\t}\n\n\tpublic set searchParams(value: URLSearchParams) {\n\t\tthis.#searchParams = value;\n\t\tthis.search = value.toString();\n\t}\n\n\tpublic get protocol(): URLProtocol {\n\t\tthis.#protocol ??= (this.#request.socket as any).encrypted || this.#request.headers['x-forwarded-proto'] === 'https' ? 'https:' : 'http:';\n\t\treturn this.#protocol;\n\t}\n\n\tpublic set protocol(value: URLProtocol) {\n\t\tthis.#protocol = value;\n\t}\n\n\tpublic get origin(): string {\n\t\treturn `${this.protocol}//${this.host}`;\n\t}\n\n\tpublic set origin(_value: string) {\n\t\t// No-op\n\t}\n\n\tpublic get href(): string {\n\t\treturn `${this.protocol}//${this.host}${this.pathname}${this.search}`;\n\t}\n\n\tpublic set href(value: string) {\n\t\tconst url = new URL(value);\n\t\tthis.#protocol = url.protocol as URLProtocol;\n\t\tthis.username = url.username;\n\t\tthis.password = url.password;\n\t\tthis.#hostname = url.hostname;\n\t\tthis.#port = url.port;\n\t\tthis.#pathname = url.pathname;\n\t\tthis.#search = url.search;\n\t\tthis.hash = url.hash;\n\t}\n\n\tpublic toString(): string {\n\t\treturn this.href;\n\t}\n\n\tpublic toJSON(): string {\n\t\treturn this.href;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/class-literal-property-style\n\tpublic get [Symbol.toStringTag]() {\n\t\treturn 'URL';\n\t}\n\n\tpublic [NodeUtilInspectSymbol]() {\n\t\treturn this.href;\n\t}\n}\n\nexport type URLProtocol = 'https:' | 'http:';\n\nfunction parsePath(input: string | undefined): [pathname: string, search: string] {\n\tconst url = (input ?? '/').replaceAll('\\\\', '/');\n\tconst index = url.indexOf('?');\n\tif (index === -1) {\n\t\treturn [url, ''];\n\t}\n\n\treturn [url.slice(0, index), url.slice(index)];\n}\n\nfunction parseHost(host: string | undefined): [hostname: string, port: number] {\n\tif (isNullishOrEmpty(host)) {\n\t\treturn ['localhost', -1];\n\t}\n\n\tconst index = host.indexOf(':');\n\tif (index === -1) {\n\t\treturn [host, -1];\n\t}\n\n\tconst port = Number(host.slice(index));\n\treturn [host.slice(0, index), Number.isSafeInteger(port) ? port : -1];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/utils/constants.ts"],"names":[],"mappings":";;;AAAa,IAAA,qBAAA,GAAwB,MAAO,CAAA,GAAA,CAAI,4BAA4B","file":"constants.cjs","sourcesContent":["export const NodeUtilInspectSymbol = Symbol.for('nodejs.util.inspect.custom');\n"]}
1
+ {"version":3,"sources":["../../../../src/lib/utils/constants.ts"],"names":[],"mappings":";;;AAAO,IAAM,qBAAA,GAAwB,MAAA,CAAO,GAAA,CAAI,4BAA4B","file":"constants.cjs","sourcesContent":["export const NodeUtilInspectSymbol = Symbol.for('nodejs.util.inspect.custom');\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginRouteError.ts"],"names":["Listener","ServerEvent","HttpCodes"],"mappings":";;;;;;;;AAMO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAS,CAAA;AAAA,EACrC,YAAY,OAAiC,EAAA;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAO,EAAAC,sBAAA,CAAY,YAAY,CAAA;AAAA;AACpE,EAEgB,GAAA,CAAI,KAAc,EAAA,QAAA,EAAsB,QAAuB,EAAA;AAE9E,IAAK,IAAA,CAAA,SAAA,CAAU,MAAO,CAAA,KAAA,CAAM,KAAK,CAAA;AAGjC,IAAA,IAAI,CAAC,QAAA,CAAS,aAAe,EAAA,QAAA,CAAS,OAAOC,uBAAU,CAAA,mBAAmB,CAAE,CAAA,IAAA,CAAK,EAAE,KAAA,EAAO,KAAM,CAAA,OAAA,IAAW,OAAO,CAAA;AAAA;AAEpH,CAAA;AAZ6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAN,GAAA","file":"PluginRouteError.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { HttpCodes } from '../lib/structures/http/HttpCodes';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.RouteError });\n\t}\n\n\tpublic override run(error: Error, _request: ApiRequest, response: ApiResponse) {\n\t\t// Log the error to console:\n\t\tthis.container.logger.fatal(error);\n\n\t\t// Send a response to the client if none was sent:\n\t\tif (!response.writableEnded) response.status(HttpCodes.InternalServerError).json({ error: error.message ?? error });\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/listeners/PluginRouteError.ts"],"names":["Listener","ServerEvent","HttpCodes"],"mappings":";;;;;;;;AAMO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAA,CAAS;AAAA,EACrC,YAAY,OAAA,EAAiC;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAA,EAAOC,sBAAA,CAAY,YAAY,CAAA;AAAA,EACpE;AAAA,EAEgB,GAAA,CAAI,KAAA,EAAc,QAAA,EAAsB,QAAA,EAAuB;AAE9E,IAAA,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAGjC,IAAA,IAAI,CAAC,QAAA,CAAS,aAAA,EAAe,QAAA,CAAS,OAAOC,uBAAA,CAAU,mBAAmB,CAAA,CAAE,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,IAAW,OAAO,CAAA;AAAA,EACnH;AACD,CAAA;AAZ6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAA,GAAN","file":"PluginRouteError.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { HttpCodes } from '../lib/structures/http/HttpCodes';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.RouteError });\n\t}\n\n\tpublic override run(error: Error, _request: ApiRequest, response: ApiResponse) {\n\t\t// Log the error to console:\n\t\tthis.container.logger.fatal(error);\n\n\t\t// Send a response to the client if none was sent:\n\t\tif (!response.writableEnded) response.status(HttpCodes.InternalServerError).json({ error: error.message ?? error });\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerMiddlewareError.ts"],"names":["Listener","ServerEvent","HttpCodes"],"mappings":";;;;;;;;AAMO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAS,CAAA;AAAA,EACrC,YAAY,OAAiC,EAAA;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAO,EAAAC,sBAAA,CAAY,iBAAiB,CAAA;AAAA;AACzE,EAEgB,GAAA,CAAI,KAAc,EAAA,QAAA,EAAsB,QAAuB,EAAA;AAE9E,IAAK,IAAA,CAAA,SAAA,CAAU,MAAO,CAAA,KAAA,CAAM,KAAK,CAAA;AAGjC,IAAA,IAAI,CAAC,QAAA,CAAS,aAAe,EAAA,QAAA,CAAS,OAAOC,uBAAU,CAAA,mBAAmB,CAAE,CAAA,IAAA,CAAK,EAAE,KAAA,EAAO,KAAM,CAAA,OAAA,IAAW,OAAO,CAAA;AAAA;AAEpH,CAAA;AAZ6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAN,GAAA","file":"PluginServerMiddlewareError.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { HttpCodes } from '../lib/structures/http/HttpCodes';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.MiddlewareError });\n\t}\n\n\tpublic override run(error: Error, _request: ApiRequest, response: ApiResponse) {\n\t\t// Log the error to console:\n\t\tthis.container.logger.fatal(error);\n\n\t\t// Send a response to the client if none was sent:\n\t\tif (!response.writableEnded) response.status(HttpCodes.InternalServerError).json({ error: error.message ?? error });\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/listeners/PluginServerMiddlewareError.ts"],"names":["Listener","ServerEvent","HttpCodes"],"mappings":";;;;;;;;AAMO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAA,CAAS;AAAA,EACrC,YAAY,OAAA,EAAiC;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAA,EAAOC,sBAAA,CAAY,iBAAiB,CAAA;AAAA,EACzE;AAAA,EAEgB,GAAA,CAAI,KAAA,EAAc,QAAA,EAAsB,QAAA,EAAuB;AAE9E,IAAA,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAGjC,IAAA,IAAI,CAAC,QAAA,CAAS,aAAA,EAAe,QAAA,CAAS,OAAOC,uBAAA,CAAU,mBAAmB,CAAA,CAAE,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,IAAW,OAAO,CAAA;AAAA,EACnH;AACD,CAAA;AAZ6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAA,GAAN","file":"PluginServerMiddlewareError.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { HttpCodes } from '../lib/structures/http/HttpCodes';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.MiddlewareError });\n\t}\n\n\tpublic override run(error: Error, _request: ApiRequest, response: ApiResponse) {\n\t\t// Log the error to console:\n\t\tthis.container.logger.fatal(error);\n\n\t\t// Send a response to the client if none was sent:\n\t\tif (!response.writableEnded) response.status(HttpCodes.InternalServerError).json({ error: error.message ?? error });\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerMiddlewareSuccess.ts"],"names":["Listener","ServerEvent"],"mappings":";;;;;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAS,CAAA;AAAA,EACrC,YAAY,OAAiC,EAAA;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAO,EAAAC,sBAAA,CAAY,mBAAmB,CAAA;AAAA;AAC3E,EAEA,MAAsB,GAAI,CAAA,OAAA,EAAqB,QAAuB,EAAA;AACrE,IAAI,IAAA;AACH,MAAA,MAAM,OAAQ,CAAA,KAAA,CAAO,GAAI,CAAA,OAAA,EAAS,QAAQ,CAAA;AAAA,aAClC,KAAO,EAAA;AACf,MAAA,IAAA,CAAK,UAAU,MAAO,CAAA,IAAA,CAAKA,uBAAY,UAAY,EAAA,KAAA,EAAgB,SAAS,QAAQ,CAAA;AAAA;AACrF;AAEF,CAAA;AAZ6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAN,GAAA","file":"PluginServerMiddlewareSuccess.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.MiddlewareSuccess });\n\t}\n\n\tpublic override async run(request: ApiRequest, response: ApiResponse) {\n\t\ttry {\n\t\t\tawait request.route!.run(request, response);\n\t\t} catch (error) {\n\t\t\tthis.container.server.emit(ServerEvent.RouteError, error as Error, request, response);\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/listeners/PluginServerMiddlewareSuccess.ts"],"names":["Listener","ServerEvent"],"mappings":";;;;;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAA,CAAS;AAAA,EACrC,YAAY,OAAA,EAAiC;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAA,EAAOC,sBAAA,CAAY,mBAAmB,CAAA;AAAA,EAC3E;AAAA,EAEA,MAAsB,GAAA,CAAI,OAAA,EAAqB,QAAA,EAAuB;AACrE,IAAA,IAAI;AACH,MAAA,MAAM,OAAA,CAAQ,KAAA,CAAO,GAAA,CAAI,OAAA,EAAS,QAAQ,CAAA;AAAA,IAC3C,SAAS,KAAA,EAAO;AACf,MAAA,IAAA,CAAK,UAAU,MAAA,CAAO,IAAA,CAAKA,uBAAY,UAAA,EAAY,KAAA,EAAgB,SAAS,QAAQ,CAAA;AAAA,IACrF;AAAA,EACD;AACD,CAAA;AAZ6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAA,GAAN","file":"PluginServerMiddlewareSuccess.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.MiddlewareSuccess });\n\t}\n\n\tpublic override async run(request: ApiRequest, response: ApiResponse) {\n\t\ttry {\n\t\t\tawait request.route!.run(request, response);\n\t\t} catch (error) {\n\t\t\tthis.container.server.emit(ServerEvent.RouteError, error as Error, request, response);\n\t\t}\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerRequest.ts"],"names":["Listener","ServerEvent","RouterRoot"],"mappings":"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","file":"PluginServerRequest.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport type { MethodName } from '../lib/structures/http/HttpMethods';\nimport { ServerEvent } from '../lib/structures/http/Server';\nimport { RouterRoot } from '../lib/structures/router/RouterRoot';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.Request });\n\t}\n\n\tpublic override async run(request: ApiRequest, response: ApiResponse) {\n\t\tconst { parts, querystring } = this.#parseURL(request.url);\n\t\trequest.query = Object.fromEntries(new URLSearchParams(querystring).entries());\n\n\t\tconst branch = this.container.server.routes.router.find(parts);\n\t\tconst node = branch ? branch.node : null;\n\t\tconst route = node ? node.get((request.method ?? 'GET') as MethodName) : null;\n\n\t\tif (node !== null) {\n\t\t\trequest.params = node!.extractParameters(parts);\n\t\t}\n\n\t\trequest.routerNode = node;\n\t\trequest.route = route;\n\n\t\ttry {\n\t\t\t// Middlewares need to be run regardless of the match, specially since browsers do an OPTIONS request first.\n\t\t\tawait this.container.server.middlewares.run(request, response);\n\t\t} catch (error) {\n\t\t\tthis.container.server.emit(ServerEvent.MiddlewareError, error as Error, request, response);\n\n\t\t\t// If a middleware errored, it might cause undefined behavior in the routes, so we will return early.\n\t\t\treturn;\n\t\t}\n\n\t\tif (branch === null) {\n\t\t\tthis.container.server.emit(ServerEvent.RouterBranchNotFound, request, response);\n\t\t} else if (route === null) {\n\t\t\tthis.container.server.emit(ServerEvent.RouterBranchMethodNotAllowed, request, response, branch);\n\t\t} else {\n\t\t\tthis.container.server.emit(ServerEvent.RouterFound, request, response);\n\t\t}\n\t}\n\n\t#parseURL(url = '') {\n\t\tconst index = url.indexOf('?');\n\n\t\tlet pathname: string;\n\t\tlet querystring: string;\n\t\tif (index === -1) {\n\t\t\tpathname = url;\n\t\t\tquerystring = '';\n\t\t} else {\n\t\t\tpathname = url.substring(0, index);\n\t\t\tquerystring = url.substring(index + 1);\n\t\t}\n\n\t\treturn { parts: RouterRoot.normalize(pathname), querystring };\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/listeners/PluginServerRequest.ts"],"names":["Listener","ServerEvent","RouterRoot"],"mappings":"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","file":"PluginServerRequest.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport type { MethodName } from '../lib/structures/http/HttpMethods';\nimport { ServerEvent } from '../lib/structures/http/Server';\nimport { RouterRoot } from '../lib/structures/router/RouterRoot';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.Request });\n\t}\n\n\tpublic override async run(request: ApiRequest, response: ApiResponse) {\n\t\tconst { parts, querystring } = this.#parseURL(request.url);\n\t\trequest.query = Object.fromEntries(new URLSearchParams(querystring).entries());\n\n\t\tconst branch = this.container.server.routes.router.find(parts);\n\t\tconst node = branch ? branch.node : null;\n\t\tconst route = node ? node.get((request.method ?? 'GET') as MethodName) : null;\n\n\t\tif (node !== null) {\n\t\t\trequest.params = node!.extractParameters(parts);\n\t\t}\n\n\t\trequest.routerNode = node;\n\t\trequest.route = route;\n\n\t\ttry {\n\t\t\t// Middlewares need to be run regardless of the match, specially since browsers do an OPTIONS request first.\n\t\t\tawait this.container.server.middlewares.run(request, response);\n\t\t} catch (error) {\n\t\t\tthis.container.server.emit(ServerEvent.MiddlewareError, error as Error, request, response);\n\n\t\t\t// If a middleware errored, it might cause undefined behavior in the routes, so we will return early.\n\t\t\treturn;\n\t\t}\n\n\t\tif (branch === null) {\n\t\t\tthis.container.server.emit(ServerEvent.RouterBranchNotFound, request, response);\n\t\t} else if (route === null) {\n\t\t\tthis.container.server.emit(ServerEvent.RouterBranchMethodNotAllowed, request, response, branch);\n\t\t} else {\n\t\t\tthis.container.server.emit(ServerEvent.RouterFound, request, response);\n\t\t}\n\t}\n\n\t#parseURL(url = '') {\n\t\tconst index = url.indexOf('?');\n\n\t\tlet pathname: string;\n\t\tlet querystring: string;\n\t\tif (index === -1) {\n\t\t\tpathname = url;\n\t\t\tquerystring = '';\n\t\t} else {\n\t\t\tpathname = url.substring(0, index);\n\t\t\tquerystring = url.substring(index + 1);\n\t\t}\n\n\t\treturn { parts: RouterRoot.normalize(pathname), querystring };\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerRouterBranchMethodNotAllowed.ts"],"names":["Listener","ServerEvent"],"mappings":";;;;;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAS,CAAA;AAAA,EACrC,YAAY,OAAiC,EAAA;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAO,EAAAC,sBAAA,CAAY,8BAA8B,CAAA;AAAA;AACtF,EAEgB,GAAA,CAAI,GAAe,QAAuB,EAAA;AACzD,IAAA,IAAI,CAAC,QAAA,CAAS,aAAe,EAAA,QAAA,CAAS,gBAAiB,EAAA;AAAA;AAEzD,CAAA;AAR6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAN,GAAA","file":"PluginServerRouterBranchMethodNotAllowed.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.RouterBranchMethodNotAllowed });\n\t}\n\n\tpublic override run(_: ApiRequest, response: ApiResponse) {\n\t\tif (!response.writableEnded) response.methodNotAllowed();\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/listeners/PluginServerRouterBranchMethodNotAllowed.ts"],"names":["Listener","ServerEvent"],"mappings":";;;;;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAA,CAAS;AAAA,EACrC,YAAY,OAAA,EAAiC;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAA,EAAOC,sBAAA,CAAY,8BAA8B,CAAA;AAAA,EACtF;AAAA,EAEgB,GAAA,CAAI,GAAe,QAAA,EAAuB;AACzD,IAAA,IAAI,CAAC,QAAA,CAAS,aAAA,EAAe,QAAA,CAAS,gBAAA,EAAiB;AAAA,EACxD;AACD,CAAA;AAR6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAA,GAAN","file":"PluginServerRouterBranchMethodNotAllowed.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.RouterBranchMethodNotAllowed });\n\t}\n\n\tpublic override run(_: ApiRequest, response: ApiResponse) {\n\t\tif (!response.writableEnded) response.methodNotAllowed();\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerRouterBranchNotFound.ts"],"names":["Listener","ServerEvent"],"mappings":";;;;;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAS,CAAA;AAAA,EACrC,YAAY,OAAiC,EAAA;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAO,EAAAC,sBAAA,CAAY,sBAAsB,CAAA;AAAA;AAC9E,EAEgB,GAAA,CAAI,GAAe,QAAuB,EAAA;AACzD,IAAA,IAAI,CAAC,QAAA,CAAS,aAAe,EAAA,QAAA,CAAS,QAAS,EAAA;AAAA;AAEjD,CAAA;AAR6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAN,GAAA","file":"PluginServerRouterBranchNotFound.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.RouterBranchNotFound });\n\t}\n\n\tpublic override run(_: ApiRequest, response: ApiResponse) {\n\t\tif (!response.writableEnded) response.notFound();\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/listeners/PluginServerRouterBranchNotFound.ts"],"names":["Listener","ServerEvent"],"mappings":";;;;;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAA,CAAS;AAAA,EACrC,YAAY,OAAA,EAAiC;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAA,EAAOC,sBAAA,CAAY,sBAAsB,CAAA;AAAA,EAC9E;AAAA,EAEgB,GAAA,CAAI,GAAe,QAAA,EAAuB;AACzD,IAAA,IAAI,CAAC,QAAA,CAAS,aAAA,EAAe,QAAA,CAAS,QAAA,EAAS;AAAA,EAChD;AACD,CAAA;AAR6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAA,GAAN","file":"PluginServerRouterBranchNotFound.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.RouterBranchNotFound });\n\t}\n\n\tpublic override run(_: ApiRequest, response: ApiResponse) {\n\t\tif (!response.writableEnded) response.notFound();\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerRouterFound.ts"],"names":["Listener","ServerEvent"],"mappings":";;;;;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAS,CAAA;AAAA,EACrC,YAAY,OAAiC,EAAA;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAO,EAAAC,sBAAA,CAAY,aAAa,CAAA;AAAA;AACrE,EAEgB,GAAA,CAAI,SAAqB,QAAuB,EAAA;AAC/D,IAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,aAAgB,GAAAA,sBAAA,CAAY,oBAAoBA,sBAAY,CAAA,iBAAA;AACnF,IAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,IAAK,CAAA,KAAA,EAAO,SAAS,QAAQ,CAAA;AAAA;AAErD,CAAA;AAT6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAN,GAAA","file":"PluginServerRouterFound.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.RouterFound });\n\t}\n\n\tpublic override run(request: ApiRequest, response: ApiResponse) {\n\t\tconst event = response.writableEnded ? ServerEvent.MiddlewareFailure : ServerEvent.MiddlewareSuccess;\n\t\tthis.container.server.emit(event, request, response);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/listeners/PluginServerRouterFound.ts"],"names":["Listener","ServerEvent"],"mappings":";;;;;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuBA,kBAAA,CAAS;AAAA,EACrC,YAAY,OAAA,EAAiC;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAA,EAAOC,sBAAA,CAAY,aAAa,CAAA;AAAA,EACrE;AAAA,EAEgB,GAAA,CAAI,SAAqB,QAAA,EAAuB;AAC/D,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,aAAA,GAAgBA,sBAAA,CAAY,oBAAoBA,sBAAA,CAAY,iBAAA;AACnF,IAAA,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO,SAAS,QAAQ,CAAA;AAAA,EACpD;AACD,CAAA;AAT6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAtC,IAAM,cAAA,GAAN","file":"PluginServerRouterFound.cjs","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport type { ApiResponse } from '../lib/structures/api/ApiResponse';\nimport { ServerEvent } from '../lib/structures/http/Server';\n\nexport class PluginListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { emitter: 'server', event: ServerEvent.RouterFound });\n\t}\n\n\tpublic override run(request: ApiRequest, response: ApiResponse) {\n\t\tconst event = response.writableEnded ? ServerEvent.MiddlewareFailure : ServerEvent.MiddlewareSuccess;\n\t\tthis.container.server.emit(event, request, response);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/_load.ts"],"names":["container","PluginRouteError","PluginServerMiddlewareError","PluginServerMiddlewareSuccess","PluginServerRequest","PluginServerRouterBranchMethodNotAllowed","PluginServerRouterBranchNotFound","PluginServerRouterFound"],"mappings":";;;;;;;;;;;;;AASO,SAAS,aAAgB,GAAA;AAC/B,EAAA,MAAM,KAAQ,GAAA,WAAA;AACd,EAAK,KAAAA,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,kBAAoB,EAAA,KAAA,EAAOC,mCAAkB,EAAA,KAAA,EAAO,CAAA;AAC5F,EAAK,KAAAD,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,6BAA+B,EAAA,KAAA,EAAOE,8CAA6B,EAAA,KAAA,EAAO,CAAA;AAClH,EAAK,KAAAF,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,+BAAiC,EAAA,KAAA,EAAOG,gDAA+B,EAAA,KAAA,EAAO,CAAA;AACtH,EAAK,KAAAH,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,qBAAuB,EAAA,KAAA,EAAOI,sCAAqB,EAAA,KAAA,EAAO,CAAA;AAClG,EAAK,KAAAJ,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,0CAA4C,EAAA,KAAA,EAAOK,2DAA0C,EAAA,KAAA,EAAO,CAAA;AAC5I,EAAK,KAAAL,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,kCAAoC,EAAA,KAAA,EAAOM,mDAAkC,EAAA,KAAA,EAAO,CAAA;AAC5H,EAAK,KAAAN,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,yBAA2B,EAAA,KAAA,EAAOO,0CAAyB,EAAA,KAAA,EAAO,CAAA;AAC3G;AATgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginListener as PluginRouteError } from './PluginRouteError';\nimport { PluginListener as PluginServerMiddlewareError } from './PluginServerMiddlewareError';\nimport { PluginListener as PluginServerMiddlewareSuccess } from './PluginServerMiddlewareSuccess';\nimport { PluginListener as PluginServerRequest } from './PluginServerRequest';\nimport { PluginListener as PluginServerRouterBranchMethodNotAllowed } from './PluginServerRouterBranchMethodNotAllowed';\nimport { PluginListener as PluginServerRouterBranchNotFound } from './PluginServerRouterBranchNotFound';\nimport { PluginListener as PluginServerRouterFound } from './PluginServerRouterFound';\n\nexport function loadListeners() {\n\tconst store = 'listeners';\n\tvoid container.stores.loadPiece({ name: 'PluginRouteError', piece: PluginRouteError, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerMiddlewareError', piece: PluginServerMiddlewareError, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerMiddlewareSuccess', piece: PluginServerMiddlewareSuccess, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRequest', piece: PluginServerRequest, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRouterBranchMethodNotAllowed', piece: PluginServerRouterBranchMethodNotAllowed, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRouterBranchNotFound', piece: PluginServerRouterBranchNotFound, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRouterFound', piece: PluginServerRouterFound, store });\n}\n"]}
1
+ {"version":3,"sources":["../../../src/listeners/_load.ts"],"names":["container","PluginRouteError","PluginServerMiddlewareError","PluginServerMiddlewareSuccess","PluginServerRequest","PluginServerRouterBranchMethodNotAllowed","PluginServerRouterBranchNotFound","PluginServerRouterFound"],"mappings":";;;;;;;;;;;;;AASO,SAAS,aAAA,GAAgB;AAC/B,EAAA,MAAM,KAAA,GAAQ,WAAA;AACd,EAAA,KAAKA,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,kBAAA,EAAoB,KAAA,EAAOC,mCAAA,EAAkB,KAAA,EAAO,CAAA;AAC5F,EAAA,KAAKD,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,6BAAA,EAA+B,KAAA,EAAOE,8CAAA,EAA6B,KAAA,EAAO,CAAA;AAClH,EAAA,KAAKF,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,+BAAA,EAAiC,KAAA,EAAOG,gDAAA,EAA+B,KAAA,EAAO,CAAA;AACtH,EAAA,KAAKH,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,qBAAA,EAAuB,KAAA,EAAOI,sCAAA,EAAqB,KAAA,EAAO,CAAA;AAClG,EAAA,KAAKJ,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,0CAAA,EAA4C,KAAA,EAAOK,2DAAA,EAA0C,KAAA,EAAO,CAAA;AAC5I,EAAA,KAAKL,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,kCAAA,EAAoC,KAAA,EAAOM,mDAAA,EAAkC,KAAA,EAAO,CAAA;AAC5H,EAAA,KAAKN,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,yBAAA,EAA2B,KAAA,EAAOO,0CAAA,EAAyB,KAAA,EAAO,CAAA;AAC3G;AATgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginListener as PluginRouteError } from './PluginRouteError';\nimport { PluginListener as PluginServerMiddlewareError } from './PluginServerMiddlewareError';\nimport { PluginListener as PluginServerMiddlewareSuccess } from './PluginServerMiddlewareSuccess';\nimport { PluginListener as PluginServerRequest } from './PluginServerRequest';\nimport { PluginListener as PluginServerRouterBranchMethodNotAllowed } from './PluginServerRouterBranchMethodNotAllowed';\nimport { PluginListener as PluginServerRouterBranchNotFound } from './PluginServerRouterBranchNotFound';\nimport { PluginListener as PluginServerRouterFound } from './PluginServerRouterFound';\n\nexport function loadListeners() {\n\tconst store = 'listeners';\n\tvoid container.stores.loadPiece({ name: 'PluginRouteError', piece: PluginRouteError, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerMiddlewareError', piece: PluginServerMiddlewareError, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerMiddlewareSuccess', piece: PluginServerMiddlewareSuccess, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRequest', piece: PluginServerRequest, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRouterBranchMethodNotAllowed', piece: PluginServerRouterBranchMethodNotAllowed, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRouterBranchNotFound', piece: PluginServerRouterBranchNotFound, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRouterFound', piece: PluginServerRouterFound, store });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/_load.ts"],"names":["container","PluginAuth","PluginBody","PluginCookies","PluginHeaders"],"mappings":";;;;;;;;;;AAMO,SAAS,eAAkB,GAAA;AACjC,EAAA,MAAM,KAAQ,GAAA,aAAA;AACd,EAAK,KAAAA,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,MAAQ,EAAA,KAAA,EAAOC,yBAAY,EAAA,KAAA,EAAO,CAAA;AAC1E,EAAK,KAAAD,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,MAAQ,EAAA,KAAA,EAAOE,yBAAY,EAAA,KAAA,EAAO,CAAA;AAC1E,EAAK,KAAAF,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,SAAW,EAAA,KAAA,EAAOG,4BAAe,EAAA,KAAA,EAAO,CAAA;AAChF,EAAK,KAAAH,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,SAAW,EAAA,KAAA,EAAOI,4BAAe,EAAA,KAAA,EAAO,CAAA;AACjF;AANgB,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginMiddleware as PluginAuth } from './auth';\nimport { PluginMiddleware as PluginBody } from './body';\nimport { PluginMiddleware as PluginCookies } from './cookies';\nimport { PluginMiddleware as PluginHeaders } from './headers';\n\nexport function loadMiddlewares() {\n\tconst store = 'middlewares';\n\tvoid container.stores.loadPiece({ name: 'auth', piece: PluginAuth, store });\n\tvoid container.stores.loadPiece({ name: 'body', piece: PluginBody, store });\n\tvoid container.stores.loadPiece({ name: 'cookies', piece: PluginCookies, store });\n\tvoid container.stores.loadPiece({ name: 'headers', piece: PluginHeaders, store });\n}\n"]}
1
+ {"version":3,"sources":["../../../src/middlewares/_load.ts"],"names":["container","PluginAuth","PluginBody","PluginCookies","PluginHeaders"],"mappings":";;;;;;;;;;AAMO,SAAS,eAAA,GAAkB;AACjC,EAAA,MAAM,KAAA,GAAQ,aAAA;AACd,EAAA,KAAKA,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,MAAA,EAAQ,KAAA,EAAOC,yBAAA,EAAY,KAAA,EAAO,CAAA;AAC1E,EAAA,KAAKD,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,MAAA,EAAQ,KAAA,EAAOE,yBAAA,EAAY,KAAA,EAAO,CAAA;AAC1E,EAAA,KAAKF,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,SAAA,EAAW,KAAA,EAAOG,4BAAA,EAAe,KAAA,EAAO,CAAA;AAChF,EAAA,KAAKH,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,SAAA,EAAW,KAAA,EAAOI,4BAAA,EAAe,KAAA,EAAO,CAAA;AACjF;AANgB,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginMiddleware as PluginAuth } from './auth';\nimport { PluginMiddleware as PluginBody } from './body';\nimport { PluginMiddleware as PluginCookies } from './cookies';\nimport { PluginMiddleware as PluginHeaders } from './headers';\n\nexport function loadMiddlewares() {\n\tconst store = 'middlewares';\n\tvoid container.stores.loadPiece({ name: 'auth', piece: PluginAuth, store });\n\tvoid container.stores.loadPiece({ name: 'body', piece: PluginBody, store });\n\tvoid container.stores.loadPiece({ name: 'cookies', piece: PluginCookies, store });\n\tvoid container.stores.loadPiece({ name: 'headers', piece: PluginHeaders, store });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/auth.ts"],"names":["Middleware"],"mappings":";;;;;;;;AAEO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyBA,yBAAW,CAAA;AAAA,EAGzC,YAAY,OAAmC,EAAA;AACrD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,QAAU,EAAA,EAAA,EAAI,CAAA;AAHhC,IAAiB,aAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAKhB,IAAM,MAAA,EAAE,MAAO,EAAA,GAAI,IAAK,CAAA,SAAA;AACxB,IAAK,IAAA,CAAA,UAAA,GAAa,MAAO,CAAA,IAAA,EAAM,MAAU,IAAA,eAAA;AACzC,IAAK,IAAA,CAAA,OAAA,GAAU,OAAO,IAAS,KAAA,IAAA;AAAA;AAChC,EAEgB,GAAA,CAAI,SAA6B,QAA+B,EAAA;AAE/E,IAAA,MAAM,aAAgB,GAAA,QAAA,CAAS,OAAQ,CAAA,GAAA,CAAI,KAAK,UAAU,CAAA;AAC1D,IAAA,IAAI,CAAC,aAAe,EAAA;AACnB,MAAA,OAAA,CAAQ,IAAO,GAAA,IAAA;AACf,MAAA;AAAA;AAID,IAAA,OAAA,CAAQ,OAAO,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,IAAA,CAAM,QAAQ,aAAa,CAAA;AAChE,IAAA,IAAI,QAAQ,IAAS,KAAA,IAAA,WAAe,OAAQ,CAAA,MAAA,CAAO,KAAK,UAAU,CAAA;AAAA;AAEpE,CAAA;AAvBiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA;AAA1C,IAAM,gBAAN,GAAA","file":"auth.cjs","sourcesContent":["import { Middleware } from '../lib/structures/Middleware';\n\nexport class PluginMiddleware extends Middleware {\n\tprivate readonly cookieName: string;\n\n\tpublic constructor(context: Middleware.LoaderContext) {\n\t\tsuper(context, { position: 40 });\n\n\t\tconst { server } = this.container;\n\t\tthis.cookieName = server.auth?.cookie ?? 'SAPPHIRE_AUTH';\n\t\tthis.enabled = server.auth !== null;\n\t}\n\n\tpublic override run(request: Middleware.Request, response: Middleware.Response) {\n\t\t// If there are no cookies, set auth as null:\n\t\tconst authorization = response.cookies.get(this.cookieName);\n\t\tif (!authorization) {\n\t\t\trequest.auth = null;\n\t\t\treturn;\n\t\t}\n\n\t\t// Decrypt the cookie, and if the token is invalid, remove the cookie:\n\t\trequest.auth = this.container.server.auth!.decrypt(authorization);\n\t\tif (request.auth === null) response.cookies.remove(this.cookieName);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/middlewares/auth.ts"],"names":["Middleware"],"mappings":";;;;;;;;AAEO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyBA,yBAAA,CAAW;AAAA,EAGzC,YAAY,OAAA,EAAmC;AACrD,IAAA,KAAA,CAAM,OAAA,EAAS,EAAE,QAAA,EAAU,EAAA,EAAI,CAAA;AAHhC,IAAA,aAAA,CAAA,IAAA,EAAiB,YAAA,CAAA;AAKhB,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,IAAA,CAAK,SAAA;AACxB,IAAA,IAAA,CAAK,UAAA,GAAa,MAAA,CAAO,IAAA,EAAM,MAAA,IAAU,eAAA;AACzC,IAAA,IAAA,CAAK,OAAA,GAAU,OAAO,IAAA,KAAS,IAAA;AAAA,EAChC;AAAA,EAEgB,GAAA,CAAI,SAA6B,QAAA,EAA+B;AAE/E,IAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,KAAK,UAAU,CAAA;AAC1D,IAAA,IAAI,CAAC,aAAA,EAAe;AACnB,MAAA,OAAA,CAAQ,IAAA,GAAO,IAAA;AACf,MAAA;AAAA,IACD;AAGA,IAAA,OAAA,CAAQ,OAAO,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,IAAA,CAAM,QAAQ,aAAa,CAAA;AAChE,IAAA,IAAI,QAAQ,IAAA,KAAS,IAAA,WAAe,OAAA,CAAQ,MAAA,CAAO,KAAK,UAAU,CAAA;AAAA,EACnE;AACD,CAAA;AAvBiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA;AAA1C,IAAM,gBAAA,GAAN","file":"auth.cjs","sourcesContent":["import { Middleware } from '../lib/structures/Middleware';\n\nexport class PluginMiddleware extends Middleware {\n\tprivate readonly cookieName: string;\n\n\tpublic constructor(context: Middleware.LoaderContext) {\n\t\tsuper(context, { position: 40 });\n\n\t\tconst { server } = this.container;\n\t\tthis.cookieName = server.auth?.cookie ?? 'SAPPHIRE_AUTH';\n\t\tthis.enabled = server.auth !== null;\n\t}\n\n\tpublic override run(request: Middleware.Request, response: Middleware.Response) {\n\t\t// If there are no cookies, set auth as null:\n\t\tconst authorization = response.cookies.get(this.cookieName);\n\t\tif (!authorization) {\n\t\t\trequest.auth = null;\n\t\t\treturn;\n\t\t}\n\n\t\t// Decrypt the cookie, and if the token is invalid, remove the cookie:\n\t\trequest.auth = this.container.server.auth!.decrypt(authorization);\n\t\tif (request.auth === null) response.cookies.remove(this.cookieName);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/body.ts"],"names":["Middleware","HttpCodes"],"mappings":";;;;;;;AAGO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyBA,yBAAW,CAAA;AAAA,EACzC,YAAY,OAAmC,EAAA;AACrD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,QAAU,EAAA,EAAA,EAAI,CAAA;AAAA;AAChC,EAEgB,GAAA,CAAI,SAA6B,QAA+B,EAAA;AAC/E,IAAI,IAAA,CAAC,QAAQ,KAAO,EAAA;AAGpB,IAAM,MAAA,WAAA,GAAc,OAAQ,CAAA,OAAA,CAAQ,cAAc,CAAA;AAClD,IAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA;AAGrC,IAAM,MAAA,YAAA,GAAe,OAAQ,CAAA,OAAA,CAAQ,gBAAgB,CAAA;AACrD,IAAI,IAAA,OAAO,iBAAiB,QAAU,EAAA;AAGtC,IAAM,MAAA,MAAA,GAAS,OAAO,YAAY,CAAA;AAClC,IAAM,MAAA,aAAA,GAAgB,QAAQ,KAAM,CAAA,iBAAA;AACpC,IAAA,IAAI,SAAS,aAAe,EAAA;AAC3B,MAAS,QAAA,CAAA,MAAA,CAAOC,wBAAU,eAAe,CAAA,CAAE,KAAK,EAAE,KAAA,EAAO,oCAAoC,CAAA;AAAA;AAC9F;AAEF,CAAA;AAvBiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA;AAA1C,IAAM,gBAAN,GAAA","file":"body.cjs","sourcesContent":["import { HttpCodes } from '../lib/structures/http/HttpCodes';\nimport { Middleware } from '../lib/structures/Middleware';\n\nexport class PluginMiddleware extends Middleware {\n\tpublic constructor(context: Middleware.LoaderContext) {\n\t\tsuper(context, { position: 20 });\n\t}\n\n\tpublic override run(request: Middleware.Request, response: Middleware.Response) {\n\t\tif (!request.route) return;\n\n\t\t// RFC 1341 4.\n\t\tconst contentType = request.headers['content-type'];\n\t\tif (typeof contentType !== 'string') return;\n\n\t\t// RFC 7230 3.3.2.\n\t\tconst lengthString = request.headers['content-length'];\n\t\tif (typeof lengthString !== 'string') return;\n\n\t\t// Verify if the content length is lower than accepted:\n\t\tconst length = Number(lengthString);\n\t\tconst maximumLength = request.route.maximumBodyLength;\n\t\tif (length > maximumLength) {\n\t\t\tresponse.status(HttpCodes.PayloadTooLarge).json({ error: 'Exceeded maximum content length.' });\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/middlewares/body.ts"],"names":["Middleware","HttpCodes"],"mappings":";;;;;;;AAGO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyBA,yBAAA,CAAW;AAAA,EACzC,YAAY,OAAA,EAAmC;AACrD,IAAA,KAAA,CAAM,OAAA,EAAS,EAAE,QAAA,EAAU,EAAA,EAAI,CAAA;AAAA,EAChC;AAAA,EAEgB,GAAA,CAAI,SAA6B,QAAA,EAA+B;AAC/E,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAGpB,IAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,OAAA,CAAQ,cAAc,CAAA;AAClD,IAAA,IAAI,OAAO,gBAAgB,QAAA,EAAU;AAGrC,IAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,OAAA,CAAQ,gBAAgB,CAAA;AACrD,IAAA,IAAI,OAAO,iBAAiB,QAAA,EAAU;AAGtC,IAAA,MAAM,MAAA,GAAS,OAAO,YAAY,CAAA;AAClC,IAAA,MAAM,aAAA,GAAgB,QAAQ,KAAA,CAAM,iBAAA;AACpC,IAAA,IAAI,SAAS,aAAA,EAAe;AAC3B,MAAA,QAAA,CAAS,MAAA,CAAOC,wBAAU,eAAe,CAAA,CAAE,KAAK,EAAE,KAAA,EAAO,oCAAoC,CAAA;AAAA,IAC9F;AAAA,EACD;AACD,CAAA;AAvBiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA;AAA1C,IAAM,gBAAA,GAAN","file":"body.cjs","sourcesContent":["import { HttpCodes } from '../lib/structures/http/HttpCodes';\nimport { Middleware } from '../lib/structures/Middleware';\n\nexport class PluginMiddleware extends Middleware {\n\tpublic constructor(context: Middleware.LoaderContext) {\n\t\tsuper(context, { position: 20 });\n\t}\n\n\tpublic override run(request: Middleware.Request, response: Middleware.Response) {\n\t\tif (!request.route) return;\n\n\t\t// RFC 1341 4.\n\t\tconst contentType = request.headers['content-type'];\n\t\tif (typeof contentType !== 'string') return;\n\n\t\t// RFC 7230 3.3.2.\n\t\tconst lengthString = request.headers['content-length'];\n\t\tif (typeof lengthString !== 'string') return;\n\n\t\t// Verify if the content length is lower than accepted:\n\t\tconst length = Number(lengthString);\n\t\tconst maximumLength = request.route.maximumBodyLength;\n\t\tif (length > maximumLength) {\n\t\t\tresponse.status(HttpCodes.PayloadTooLarge).json({ error: 'Exceeded maximum content length.' });\n\t\t}\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/cookies.ts"],"names":["Middleware","CookieStore"],"mappings":";;;;;;;;;AAGO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyBA,yBAAW,CAAA;AAAA,EAIzC,YAAY,OAAmC,EAAA;AACrD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,QAAU,EAAA,EAAA,EAAI,CAAA;AAJhC,IAAiB,aAAA,CAAA,IAAA,EAAA,YAAA,EAAsB,OAAQ,CAAA,GAAA,CAAI,QAAa,KAAA,YAAA,CAAA;AAChE,IAAiB,aAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AAKhB,IAAM,MAAA,EAAE,MAAO,EAAA,GAAI,IAAK,CAAA,SAAA;AACxB,IAAK,IAAA,CAAA,eAAA,GAAkB,MAAO,CAAA,IAAA,EAAM,eAAmB,IAAA,IAAA;AAAA;AACxD,EAEgB,GAAA,CAAI,SAA6B,QAA+B,EAAA;AAC/E,IAAS,QAAA,CAAA,OAAA,GAAU,IAAIC,2BAAY,CAAA,OAAA,EAAS,UAAU,IAAK,CAAA,UAAA,EAAY,KAAK,eAAe,CAAA;AAAA;AAE7F,CAAA;AAdiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA;AAA1C,IAAM,gBAAN,GAAA","file":"cookies.cjs","sourcesContent":["import { Middleware } from '../lib/structures/Middleware';\nimport { CookieStore } from '../lib/structures/api/CookieStore';\n\nexport class PluginMiddleware extends Middleware {\n\tprivate readonly production: boolean = process.env.NODE_ENV === 'production';\n\tprivate readonly domainOverwrite: string | null;\n\n\tpublic constructor(context: Middleware.LoaderContext) {\n\t\tsuper(context, { position: 30 });\n\n\t\tconst { server } = this.container;\n\t\tthis.domainOverwrite = server.auth?.domainOverwrite ?? null;\n\t}\n\n\tpublic override run(request: Middleware.Request, response: Middleware.Response) {\n\t\tresponse.cookies = new CookieStore(request, response, this.production, this.domainOverwrite);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/middlewares/cookies.ts"],"names":["Middleware","CookieStore"],"mappings":";;;;;;;;;AAGO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyBA,yBAAA,CAAW;AAAA,EAIzC,YAAY,OAAA,EAAmC;AACrD,IAAA,KAAA,CAAM,OAAA,EAAS,EAAE,QAAA,EAAU,EAAA,EAAI,CAAA;AAJhC,IAAA,aAAA,CAAA,IAAA,EAAiB,YAAA,EAAsB,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,CAAA;AAChE,IAAA,aAAA,CAAA,IAAA,EAAiB,iBAAA,CAAA;AAKhB,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,IAAA,CAAK,SAAA;AACxB,IAAA,IAAA,CAAK,eAAA,GAAkB,MAAA,CAAO,IAAA,EAAM,eAAA,IAAmB,IAAA;AAAA,EACxD;AAAA,EAEgB,GAAA,CAAI,SAA6B,QAAA,EAA+B;AAC/E,IAAA,QAAA,CAAS,OAAA,GAAU,IAAIC,2BAAA,CAAY,OAAA,EAAS,UAAU,IAAA,CAAK,UAAA,EAAY,KAAK,eAAe,CAAA;AAAA,EAC5F;AACD,CAAA;AAdiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA;AAA1C,IAAM,gBAAA,GAAN","file":"cookies.cjs","sourcesContent":["import { Middleware } from '../lib/structures/Middleware';\nimport { CookieStore } from '../lib/structures/api/CookieStore';\n\nexport class PluginMiddleware extends Middleware {\n\tprivate readonly production: boolean = process.env.NODE_ENV === 'production';\n\tprivate readonly domainOverwrite: string | null;\n\n\tpublic constructor(context: Middleware.LoaderContext) {\n\t\tsuper(context, { position: 30 });\n\n\t\tconst { server } = this.container;\n\t\tthis.domainOverwrite = server.auth?.domainOverwrite ?? null;\n\t}\n\n\tpublic override run(request: Middleware.Request, response: Middleware.Response) {\n\t\tresponse.cookies = new CookieStore(request, response, this.production, this.domainOverwrite);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/headers.ts"],"names":["Middleware","isNullish","HttpCodes"],"mappings":";;;;;;;;;;AAMO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyBA,yBAAW,CAAA;AAAA,EAIzC,YAAY,OAAmC,EAAA;AACrD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,QAAU,EAAA,EAAA,EAAI,CAAA;AAJhC,IAAiB,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AACjB,IAAiB,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AAIhB,IAAA,IAAA,CAAK,MAAS,GAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,QAAQ,MAAU,IAAA,GAAA;AACtD,IAAA,IAAA,CAAK,MAAS,GAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,IAAI,QAAQ,CAAA;AAAA;AACjD,EAEgB,GAAA,CAAI,SAA6B,QAA+B,EAAA;AAC/E,IAAA,QAAA,CAAS,UAAU,MAAQ,EAAA,iBAAA,IAAI,IAAK,EAAA,EAAE,aAAa,CAAA;AACnD,IAAS,QAAA,CAAA,SAAA,CAAU,oCAAoC,MAAM,CAAA;AAC7D,IAAS,QAAA,CAAA,SAAA,CAAU,6BAA+B,EAAA,IAAA,CAAK,MAAM,CAAA;AAC7D,IAAS,QAAA,CAAA,SAAA,CAAU,gCAAgC,yCAAyC,CAAA;AAC5F,IAAA,QAAA,CAAS,UAAU,8BAAgC,EAAA,IAAA,CAAK,UAAW,CAAA,OAAA,CAAQ,UAAU,CAAC,CAAA;AAEtF,IAAK,IAAA,CAAA,wBAAA,CAAyB,SAAS,QAAQ,CAAA;AAAA;AAChD,EAEQ,WAAW,UAAmD,EAAA;AACrE,IAAI,IAAAC,mBAAA,CAAU,UAAU,CAAG,EAAA;AAC1B,MAAA,OAAO,IAAK,CAAA,MAAA,CAAO,MAAO,CAAA,gBAAA,CAAiB,KAAK,IAAI,CAAA;AAAA;AAGrD,IAAA,OAAO,CAAC,GAAG,UAAA,CAAW,SAAS,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA;AAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBQ,yBAAyB,EAAE,MAAA,EAAQ,KAAO,EAAA,UAAA,IAAkC,QAA+B,EAAA;AAClH,IAAA,IAAI,WAAW,SAAW,EAAA;AACzB,MAAA,IAAI,CAAC,KAAA,EAAO,OAAQ,CAAA,GAAA,CAAI,SAAS,CAAG,EAAA;AACnC,QAAA,QAAA,CAAS,GAAI,EAAA;AAAA;AACd,KACD,MAAA,IAAW,eAAe,IAAM,EAAA;AAC/B,MAAA,QAAA,CAAS,MAAO,CAAAC,uBAAA,CAAU,QAAQ,CAAA,CAAE,GAAI,EAAA;AAAA,KACzC,MAAA,IAAW,UAAU,IAAM,EAAA;AAC1B,MAAA,QAAA,CAAS,MAAO,CAAAA,uBAAA,CAAU,gBAAgB,CAAA,CAAE,GAAI,EAAA;AAAA;AACjD;AAEF,CAAA;AAtDiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA;AAA1C,IAAM,gBAAN,GAAA","file":"headers.cjs","sourcesContent":["import { isNullish } from '@sapphire/utilities';\nimport { Middleware } from '../lib/structures/Middleware';\nimport type { RouteStore } from '../lib/structures/RouteStore';\nimport { HttpCodes } from '../lib/structures/http/HttpCodes';\nimport type { RouterNode } from '../lib/structures/router/RouterNode';\n\nexport class PluginMiddleware extends Middleware {\n\tprivate readonly origin: string;\n\tprivate readonly routes: RouteStore;\n\n\tpublic constructor(context: Middleware.LoaderContext) {\n\t\tsuper(context, { position: 10 });\n\t\tthis.origin = this.container.server.options.origin ?? '*';\n\t\tthis.routes = this.container.stores.get('routes');\n\t}\n\n\tpublic override run(request: Middleware.Request, response: Middleware.Response) {\n\t\tresponse.setHeader('Date', new Date().toUTCString());\n\t\tresponse.setHeader('Access-Control-Allow-Credentials', 'true');\n\t\tresponse.setHeader('Access-Control-Allow-Origin', this.origin);\n\t\tresponse.setHeader('Access-Control-Allow-Headers', 'Authorization, User-Agent, Content-Type');\n\t\tresponse.setHeader('Access-Control-Allow-Methods', this.getMethods(request.routerNode));\n\n\t\tthis.ensurePotentialEarlyExit(request, response);\n\t}\n\n\tprivate getMethods(routerNode: RouterNode | null | undefined): string {\n\t\tif (isNullish(routerNode)) {\n\t\t\treturn this.routes.router.supportedMethods.join(', ');\n\t\t}\n\n\t\treturn [...routerNode.methods()].join(', ');\n\t}\n\n\t/**\n\t * **RFC 7231 4.3.7.**\n\t * > This method allows a client to determine the options and/or requirements associated with a\n\t * > resource, or the capabilities of a server, without implying a resource action.\n\t *\n\t * This method ensures that the request is exited early in case required\n\t * The conditions in which an early exit is required are:\n\t * 1. If the request method is 'OPTIONS'. In this case the request is returned with status code 200\n\t * 2. If the requested route isn't matched with any existing route in the RouteStore.\n\t * In this case the request is returned with a status code 404.\n\t *\n\t * @param request The API Request coming in\n\t * @param response The API response that will go out\n\t * @param route The route being requested by the request\n\t */\n\tprivate ensurePotentialEarlyExit({ method, route, routerNode }: Middleware.Request, response: Middleware.Response) {\n\t\tif (method === 'OPTIONS') {\n\t\t\tif (!route?.methods.has('OPTIONS')) {\n\t\t\t\tresponse.end();\n\t\t\t}\n\t\t} else if (routerNode === null) {\n\t\t\tresponse.status(HttpCodes.NotFound).end();\n\t\t} else if (route === null) {\n\t\t\tresponse.status(HttpCodes.MethodNotAllowed).end();\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/middlewares/headers.ts"],"names":["Middleware","isNullish","HttpCodes"],"mappings":";;;;;;;;;;AAMO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyBA,yBAAA,CAAW;AAAA,EAIzC,YAAY,OAAA,EAAmC;AACrD,IAAA,KAAA,CAAM,OAAA,EAAS,EAAE,QAAA,EAAU,EAAA,EAAI,CAAA;AAJhC,IAAA,aAAA,CAAA,IAAA,EAAiB,QAAA,CAAA;AACjB,IAAA,aAAA,CAAA,IAAA,EAAiB,QAAA,CAAA;AAIhB,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,QAAQ,MAAA,IAAU,GAAA;AACtD,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,IAAI,QAAQ,CAAA;AAAA,EACjD;AAAA,EAEgB,GAAA,CAAI,SAA6B,QAAA,EAA+B;AAC/E,IAAA,QAAA,CAAS,UAAU,MAAA,EAAA,iBAAQ,IAAI,IAAA,EAAK,EAAE,aAAa,CAAA;AACnD,IAAA,QAAA,CAAS,SAAA,CAAU,oCAAoC,MAAM,CAAA;AAC7D,IAAA,QAAA,CAAS,SAAA,CAAU,6BAAA,EAA+B,IAAA,CAAK,MAAM,CAAA;AAC7D,IAAA,QAAA,CAAS,SAAA,CAAU,gCAAgC,yCAAyC,CAAA;AAC5F,IAAA,QAAA,CAAS,UAAU,8BAAA,EAAgC,IAAA,CAAK,UAAA,CAAW,OAAA,CAAQ,UAAU,CAAC,CAAA;AAEtF,IAAA,IAAA,CAAK,wBAAA,CAAyB,SAAS,QAAQ,CAAA;AAAA,EAChD;AAAA,EAEQ,WAAW,UAAA,EAAmD;AACrE,IAAA,IAAIC,mBAAA,CAAU,UAAU,CAAA,EAAG;AAC1B,MAAA,OAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,gBAAA,CAAiB,KAAK,IAAI,CAAA;AAAA,IACrD;AAEA,IAAA,OAAO,CAAC,GAAG,UAAA,CAAW,SAAS,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBQ,yBAAyB,EAAE,MAAA,EAAQ,KAAA,EAAO,UAAA,IAAkC,QAAA,EAA+B;AAClH,IAAA,IAAI,WAAW,SAAA,EAAW;AACzB,MAAA,IAAI,CAAC,KAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,SAAS,CAAA,EAAG;AACnC,QAAA,QAAA,CAAS,GAAA,EAAI;AAAA,MACd;AAAA,IACD,CAAA,MAAA,IAAW,eAAe,IAAA,EAAM;AAC/B,MAAA,QAAA,CAAS,MAAA,CAAOC,uBAAA,CAAU,QAAQ,CAAA,CAAE,GAAA,EAAI;AAAA,IACzC,CAAA,MAAA,IAAW,UAAU,IAAA,EAAM;AAC1B,MAAA,QAAA,CAAS,MAAA,CAAOA,uBAAA,CAAU,gBAAgB,CAAA,CAAE,GAAA,EAAI;AAAA,IACjD;AAAA,EACD;AACD,CAAA;AAtDiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA;AAA1C,IAAM,gBAAA,GAAN","file":"headers.cjs","sourcesContent":["import { isNullish } from '@sapphire/utilities';\nimport { Middleware } from '../lib/structures/Middleware';\nimport type { RouteStore } from '../lib/structures/RouteStore';\nimport { HttpCodes } from '../lib/structures/http/HttpCodes';\nimport type { RouterNode } from '../lib/structures/router/RouterNode';\n\nexport class PluginMiddleware extends Middleware {\n\tprivate readonly origin: string;\n\tprivate readonly routes: RouteStore;\n\n\tpublic constructor(context: Middleware.LoaderContext) {\n\t\tsuper(context, { position: 10 });\n\t\tthis.origin = this.container.server.options.origin ?? '*';\n\t\tthis.routes = this.container.stores.get('routes');\n\t}\n\n\tpublic override run(request: Middleware.Request, response: Middleware.Response) {\n\t\tresponse.setHeader('Date', new Date().toUTCString());\n\t\tresponse.setHeader('Access-Control-Allow-Credentials', 'true');\n\t\tresponse.setHeader('Access-Control-Allow-Origin', this.origin);\n\t\tresponse.setHeader('Access-Control-Allow-Headers', 'Authorization, User-Agent, Content-Type');\n\t\tresponse.setHeader('Access-Control-Allow-Methods', this.getMethods(request.routerNode));\n\n\t\tthis.ensurePotentialEarlyExit(request, response);\n\t}\n\n\tprivate getMethods(routerNode: RouterNode | null | undefined): string {\n\t\tif (isNullish(routerNode)) {\n\t\t\treturn this.routes.router.supportedMethods.join(', ');\n\t\t}\n\n\t\treturn [...routerNode.methods()].join(', ');\n\t}\n\n\t/**\n\t * **RFC 7231 4.3.7.**\n\t * > This method allows a client to determine the options and/or requirements associated with a\n\t * > resource, or the capabilities of a server, without implying a resource action.\n\t *\n\t * This method ensures that the request is exited early in case required\n\t * The conditions in which an early exit is required are:\n\t * 1. If the request method is 'OPTIONS'. In this case the request is returned with status code 200\n\t * 2. If the requested route isn't matched with any existing route in the RouteStore.\n\t * In this case the request is returned with a status code 404.\n\t *\n\t * @param request The API Request coming in\n\t * @param response The API response that will go out\n\t * @param route The route being requested by the request\n\t */\n\tprivate ensurePotentialEarlyExit({ method, route, routerNode }: Middleware.Request, response: Middleware.Response) {\n\t\tif (method === 'OPTIONS') {\n\t\t\tif (!route?.methods.has('OPTIONS')) {\n\t\t\t\tresponse.end();\n\t\t\t}\n\t\t} else if (routerNode === null) {\n\t\t\tresponse.status(HttpCodes.NotFound).end();\n\t\t} else if (route === null) {\n\t\t\tresponse.status(HttpCodes.MethodNotAllowed).end();\n\t\t}\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/register.ts"],"names":["Plugin","postInitialization","Server","loadListeners","loadMiddlewares","loadRoutes","preLogin","SapphireClient"],"mappings":";;;;;;;AASO,IAAM,IAAA,GAAN,MAAM,IAAA,SAAYA,gBAAO,CAAA;AAAA;AAAA;AAAA;AAAA,EAI/B,QAAwBC,4BAAkB,CAAA,CAAwB,OAA8B,EAAA;AAC/F,IAAA,IAAA,CAAK,MAAS,GAAA,IAAIC,gBAAO,CAAA,OAAA,CAAQ,GAAG,CAAA;AACpC,IAAK,IAAA,CAAA,MAAA,CACH,SAAS,IAAK,CAAA,MAAA,CAAO,MAAM,CAC3B,CAAA,QAAA,CAAS,IAAK,CAAA,MAAA,CAAO,WAAW,CAAA;AAElC,IAAcC,uBAAA,EAAA;AACd,IAAgBC,yBAAA,EAAA;AAChB,IAAWC,oBAAA,EAAA;AAAA;AACZ;AAAA;AAAA;AAAA,EAKA,cAA8BC,kBAAQ,CAAuC,GAAA;AAC5E,IAAA,IAAI,EAAE,IAAA,CAAK,MAAO,CAAA,OAAA,CAAQ,wBAAwB,IAAO,CAAA,EAAA;AACxD,MAAA;AAAA;AAGD,IAAM,MAAA,IAAA,CAAK,OAAO,OAAQ,EAAA;AAAA;AAE5B,CAAA;AAzBgC,MAAA,CAAA,IAAA,EAAA,KAAA,CAAA;AAAzB,IAAM,GAAN,GAAA;AA2BPC,wBAAA,CAAe,OAAQ,CAAA,8BAAA,CAA+B,GAAI,CAAAN,4BAAkB,GAAG,wBAAwB,CAAA;AACvGM,wBAAA,CAAe,OAAQ,CAAA,oBAAA,CAAqB,GAAI,CAAAD,kBAAQ,GAAG,cAAc,CAAA","file":"register.cjs","sourcesContent":["import './index';\n\nimport { Plugin, postInitialization, preLogin, SapphireClient } from '@sapphire/framework';\nimport type { ClientOptions } from 'discord.js';\nimport { loadListeners, loadMiddlewares, loadRoutes, Server } from './index';\n\n/**\n * @since 1.0.0\n */\nexport class Api extends Plugin {\n\t/**\n\t * @since 1.0.0\n\t */\n\tpublic static override [postInitialization](this: SapphireClient, options: ClientOptions): void {\n\t\tthis.server = new Server(options.api);\n\t\tthis.stores\n\t\t\t.register(this.server.routes) //\n\t\t\t.register(this.server.middlewares);\n\n\t\tloadListeners();\n\t\tloadMiddlewares();\n\t\tloadRoutes();\n\t}\n\n\t/**\n\t * @since 1.0.0\n\t */\n\tpublic static override async [preLogin](this: SapphireClient): Promise<void> {\n\t\tif (!(this.server.options.automaticallyConnect ?? true)) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.server.connect();\n\t}\n}\n\nSapphireClient.plugins.registerPostInitializationHook(Api[postInitialization], 'API-PostInitialization');\nSapphireClient.plugins.registerPreLoginHook(Api[preLogin], 'API-PreLogin');\n"]}
1
+ {"version":3,"sources":["../../src/register.ts"],"names":["Plugin","postInitialization","Server","loadListeners","loadMiddlewares","loadRoutes","preLogin","SapphireClient"],"mappings":";;;;;;;AASO,IAAM,IAAA,GAAN,MAAM,IAAA,SAAYA,gBAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAI/B,QAAwBC,4BAAkB,CAAA,CAAwB,OAAA,EAA8B;AAC/F,IAAA,IAAA,CAAK,MAAA,GAAS,IAAIC,gBAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AACpC,IAAA,IAAA,CAAK,MAAA,CACH,SAAS,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,CAC3B,QAAA,CAAS,IAAA,CAAK,MAAA,CAAO,WAAW,CAAA;AAElC,IAAAC,uBAAA,EAAc;AACd,IAAAC,yBAAA,EAAgB;AAChB,IAAAC,oBAAA,EAAW;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA,EAKA,cAA8BC,kBAAQ,CAAA,GAAuC;AAC5E,IAAA,IAAI,EAAE,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,wBAAwB,IAAA,CAAA,EAAO;AACxD,MAAA;AAAA,IACD;AAEA,IAAA,MAAM,IAAA,CAAK,OAAO,OAAA,EAAQ;AAAA,EAC3B;AACD,CAAA;AAzBgC,MAAA,CAAA,IAAA,EAAA,KAAA,CAAA;AAAzB,IAAM,GAAA,GAAN;AA2BPC,wBAAA,CAAe,OAAA,CAAQ,8BAAA,CAA+B,GAAA,CAAIN,4BAAkB,GAAG,wBAAwB,CAAA;AACvGM,wBAAA,CAAe,OAAA,CAAQ,oBAAA,CAAqB,GAAA,CAAID,kBAAQ,GAAG,cAAc,CAAA","file":"register.cjs","sourcesContent":["import './index';\n\nimport { Plugin, postInitialization, preLogin, SapphireClient } from '@sapphire/framework';\nimport type { ClientOptions } from 'discord.js';\nimport { loadListeners, loadMiddlewares, loadRoutes, Server } from './index';\n\n/**\n * @since 1.0.0\n */\nexport class Api extends Plugin {\n\t/**\n\t * @since 1.0.0\n\t */\n\tpublic static override [postInitialization](this: SapphireClient, options: ClientOptions): void {\n\t\tthis.server = new Server(options.api);\n\t\tthis.stores\n\t\t\t.register(this.server.routes) //\n\t\t\t.register(this.server.middlewares);\n\n\t\tloadListeners();\n\t\tloadMiddlewares();\n\t\tloadRoutes();\n\t}\n\n\t/**\n\t * @since 1.0.0\n\t */\n\tpublic static override async [preLogin](this: SapphireClient): Promise<void> {\n\t\tif (!(this.server.options.automaticallyConnect ?? true)) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.server.connect();\n\t}\n}\n\nSapphireClient.plugins.registerPostInitializationHook(Api[postInitialization], 'API-PostInitialization');\nSapphireClient.plugins.registerPreLoginHook(Api[preLogin], 'API-PreLogin');\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/_load.ts"],"names":["container","PluginOAuthCallback","PluginOAuthLogout"],"mappings":";;;;;;;;AAIO,SAAS,UAAa,GAAA;AAC5B,EAAA,MAAM,KAAQ,GAAA,QAAA;AACd,EAAK,KAAAA,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,UAAY,EAAA,KAAA,EAAOC,6BAAqB,EAAA,KAAA,EAAO,CAAA;AACvF,EAAK,KAAAD,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,QAAU,EAAA,KAAA,EAAOE,2BAAmB,EAAA,KAAA,EAAO,CAAA;AACpF;AAJgB,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginRoute as PluginOAuthCallback } from './oauth/callback.post';\nimport { PluginRoute as PluginOAuthLogout } from './oauth/logout.post';\n\nexport function loadRoutes() {\n\tconst store = 'routes';\n\tvoid container.stores.loadPiece({ name: 'callback', piece: PluginOAuthCallback, store });\n\tvoid container.stores.loadPiece({ name: 'logout', piece: PluginOAuthLogout, store });\n}\n"]}
1
+ {"version":3,"sources":["../../../src/routes/_load.ts"],"names":["container","PluginOAuthCallback","PluginOAuthLogout"],"mappings":";;;;;;;;AAIO,SAAS,UAAA,GAAa;AAC5B,EAAA,MAAM,KAAA,GAAQ,QAAA;AACd,EAAA,KAAKA,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,UAAA,EAAY,KAAA,EAAOC,6BAAA,EAAqB,KAAA,EAAO,CAAA;AACvF,EAAA,KAAKD,gBAAA,CAAU,OAAO,SAAA,CAAU,EAAE,MAAM,QAAA,EAAU,KAAA,EAAOE,2BAAA,EAAmB,KAAA,EAAO,CAAA;AACpF;AAJgB,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginRoute as PluginOAuthCallback } from './oauth/callback.post';\nimport { PluginRoute as PluginOAuthLogout } from './oauth/logout.post';\n\nexport function loadRoutes() {\n\tconst store = 'routes';\n\tvoid container.stores.loadPiece({ name: 'callback', piece: PluginOAuthCallback, store });\n\tvoid container.stores.loadPiece({ name: 'logout', piece: PluginOAuthLogout, store });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/routes/oauth/callback.post.ts"],"names":["Route","HttpCodes","fetch","OAuth2Routes","stringify"],"mappings":"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","file":"callback.post.cjs","sourcesContent":["import { OAuth2Routes, type RESTPostOAuth2AccessTokenResult, type RESTPostOAuth2AccessTokenURLEncodedData } from 'discord.js';\nimport { stringify } from 'querystring';\nimport { fetch } from 'undici';\nimport { Route } from '../../lib/structures/Route';\nimport { HttpCodes } from '../../lib/structures/http/HttpCodes';\n\nexport class PluginRoute extends Route {\n\tprivate readonly redirectUri: string | undefined;\n\n\tpublic constructor(context: Route.LoaderContext) {\n\t\tsuper(context, { route: 'oauth/callback', methods: ['POST'] });\n\n\t\tconst { server } = this.container;\n\t\tthis.enabled = server.auth !== null;\n\t\tthis.redirectUri = server.auth?.redirect;\n\t}\n\n\tpublic override async run(request: Route.Request, response: Route.Response) {\n\t\tconst body = (await request.readBodyJson()) as OAuth2BodyData;\n\t\tif (typeof body?.code !== 'string') {\n\t\t\treturn response.badRequest();\n\t\t}\n\n\t\tconst value = await this.fetchAuth(body);\n\t\tif (value === null) {\n\t\t\treturn response.status(HttpCodes.InternalServerError).json({ error: 'Failed to fetch the token.' });\n\t\t}\n\n\t\tconst now = Date.now();\n\t\tconst auth = this.container.server.auth!;\n\t\tconst data = await auth.fetchData(value.access_token);\n\t\tif (!data.user) {\n\t\t\treturn response.status(HttpCodes.InternalServerError).json({ error: 'Failed to fetch the user.' });\n\t\t}\n\n\t\tconst token = auth.encrypt({\n\t\t\tid: data.user.id,\n\t\t\texpires: now + value.expires_in * 1000,\n\t\t\trefresh: value.refresh_token,\n\t\t\ttoken: value.access_token\n\t\t});\n\n\t\tresponse.cookies.add(auth.cookie, token, { maxAge: value.expires_in });\n\t\treturn response.json(data);\n\t}\n\n\tprivate async fetchAuth(body: OAuth2BodyData) {\n\t\tconst { id, secret } = this.container.server.auth!;\n\n\t\tconst data: RESTPostOAuth2AccessTokenURLEncodedData = {\n\t\t\t/* eslint-disable @typescript-eslint/naming-convention */\n\t\t\tclient_id: id,\n\t\t\tclient_secret: secret,\n\t\t\tcode: body.code,\n\t\t\tgrant_type: 'authorization_code',\n\t\t\tredirect_uri: this.redirectUri ?? body.redirectUri\n\t\t\t/* eslint-enable @typescript-eslint/naming-convention */\n\t\t};\n\n\t\tconst result = await fetch(OAuth2Routes.tokenURL, {\n\t\t\tmethod: 'POST',\n\t\t\tbody: stringify(data as any),\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/x-www-form-urlencoded'\n\t\t\t}\n\t\t});\n\n\t\tconst json = await result.json();\n\t\tif (result.ok) return json as RESTPostOAuth2AccessTokenResult;\n\n\t\tthis.container.logger.error(json);\n\t\treturn null;\n\t}\n}\n\n/**\n * The OAuth2 body data sent to the callback.\n * @since 1.2.0\n */\nexport interface OAuth2BodyData {\n\t/**\n\t * The code sent by the client.\n\t * @since 1.2.0\n\t */\n\tcode: string;\n\n\t/**\n\t * The client's ID.\n\t * @since 1.2.0\n\t */\n\tclientId: string;\n\n\t/**\n\t * The redirect URI.\n\t * @since 1.2.0\n\t */\n\tredirectUri: string;\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/routes/oauth/callback.post.ts"],"names":["Route","HttpCodes","fetch","OAuth2Routes","stringify"],"mappings":";;;;;;;;;;;;AAMO,IAAM,YAAA,GAAN,MAAM,YAAA,SAAoBA,eAAA,CAAM;AAAA,EAG/B,YAAY,OAAA,EAA8B;AAChD,IAAA,KAAA,CAAM,OAAA,EAAS,EAAE,KAAA,EAAO,gBAAA,EAAkB,SAAS,CAAC,MAAM,GAAG,CAAA;AAH9D,IAAA,aAAA,CAAA,IAAA,EAAiB,aAAA,CAAA;AAKhB,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,IAAA,CAAK,SAAA;AACxB,IAAA,IAAA,CAAK,OAAA,GAAU,OAAO,IAAA,KAAS,IAAA;AAC/B,IAAA,IAAA,CAAK,WAAA,GAAc,OAAO,IAAA,EAAM,QAAA;AAAA,EACjC;AAAA,EAEA,MAAsB,GAAA,CAAI,OAAA,EAAwB,QAAA,EAA0B;AAC3E,IAAA,MAAM,IAAA,GAAQ,MAAM,OAAA,CAAQ,YAAA,EAAa;AACzC,IAAA,IAAI,OAAO,IAAA,EAAM,IAAA,KAAS,QAAA,EAAU;AACnC,MAAA,OAAO,SAAS,UAAA,EAAW;AAAA,IAC5B;AAEA,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AACvC,IAAA,IAAI,UAAU,IAAA,EAAM;AACnB,MAAA,OAAO,QAAA,CAAS,OAAOC,uBAAA,CAAU,mBAAmB,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,4BAAA,EAA8B,CAAA;AAAA,IACnG;AAEA,IAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,IAAA;AACnC,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,SAAA,CAAU,MAAM,YAAY,CAAA;AACpD,IAAA,IAAI,CAAC,KAAK,IAAA,EAAM;AACf,MAAA,OAAO,QAAA,CAAS,OAAOA,uBAAA,CAAU,mBAAmB,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,2BAAA,EAA6B,CAAA;AAAA,IAClG;AAEA,IAAA,MAAM,KAAA,GAAQ,KAAK,OAAA,CAAQ;AAAA,MAC1B,EAAA,EAAI,KAAK,IAAA,CAAK,EAAA;AAAA,MACd,OAAA,EAAS,GAAA,GAAM,KAAA,CAAM,UAAA,GAAa,GAAA;AAAA,MAClC,SAAS,KAAA,CAAM,aAAA;AAAA,MACf,OAAO,KAAA,CAAM;AAAA,KACb,CAAA;AAED,IAAA,QAAA,CAAS,OAAA,CAAQ,IAAI,IAAA,CAAK,MAAA,EAAQ,OAAO,EAAE,MAAA,EAAQ,KAAA,CAAM,UAAA,EAAY,CAAA;AACrE,IAAA,OAAO,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,EAC1B;AAAA,EAEA,MAAc,UAAU,IAAA,EAAsB;AAC7C,IAAA,MAAM,EAAE,EAAA,EAAI,MAAA,EAAO,GAAI,IAAA,CAAK,UAAU,MAAA,CAAO,IAAA;AAE7C,IAAA,MAAM,IAAA,GAAgD;AAAA;AAAA,MAErD,SAAA,EAAW,EAAA;AAAA,MACX,aAAA,EAAe,MAAA;AAAA,MACf,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,UAAA,EAAY,oBAAA;AAAA,MACZ,YAAA,EAAc,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK;AAAA;AAAA,KAExC;AAEA,IAAA,MAAM,MAAA,GAAS,MAAMC,YAAA,CAAMC,uBAAA,CAAa,QAAA,EAAU;AAAA,MACjD,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAMC,sBAAU,IAAW,CAAA;AAAA,MAC3B,OAAA,EAAS;AAAA,QACR,cAAA,EAAgB;AAAA;AACjB,KACA,CAAA;AAED,IAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,IAAA,EAAK;AAC/B,IAAA,IAAI,MAAA,CAAO,IAAI,OAAO,IAAA;AAEtB,IAAA,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAChC,IAAA,OAAO,IAAA;AAAA,EACR;AACD,CAAA;AAnEuC,MAAA,CAAA,YAAA,EAAA,aAAA,CAAA;AAAhC,IAAM,WAAA,GAAN","file":"callback.post.cjs","sourcesContent":["import { OAuth2Routes, type RESTPostOAuth2AccessTokenResult, type RESTPostOAuth2AccessTokenURLEncodedData } from 'discord.js';\nimport { stringify } from 'querystring';\nimport { fetch } from 'undici';\nimport { Route } from '../../lib/structures/Route';\nimport { HttpCodes } from '../../lib/structures/http/HttpCodes';\n\nexport class PluginRoute extends Route {\n\tprivate readonly redirectUri: string | undefined;\n\n\tpublic constructor(context: Route.LoaderContext) {\n\t\tsuper(context, { route: 'oauth/callback', methods: ['POST'] });\n\n\t\tconst { server } = this.container;\n\t\tthis.enabled = server.auth !== null;\n\t\tthis.redirectUri = server.auth?.redirect;\n\t}\n\n\tpublic override async run(request: Route.Request, response: Route.Response) {\n\t\tconst body = (await request.readBodyJson()) as OAuth2BodyData;\n\t\tif (typeof body?.code !== 'string') {\n\t\t\treturn response.badRequest();\n\t\t}\n\n\t\tconst value = await this.fetchAuth(body);\n\t\tif (value === null) {\n\t\t\treturn response.status(HttpCodes.InternalServerError).json({ error: 'Failed to fetch the token.' });\n\t\t}\n\n\t\tconst now = Date.now();\n\t\tconst auth = this.container.server.auth!;\n\t\tconst data = await auth.fetchData(value.access_token);\n\t\tif (!data.user) {\n\t\t\treturn response.status(HttpCodes.InternalServerError).json({ error: 'Failed to fetch the user.' });\n\t\t}\n\n\t\tconst token = auth.encrypt({\n\t\t\tid: data.user.id,\n\t\t\texpires: now + value.expires_in * 1000,\n\t\t\trefresh: value.refresh_token,\n\t\t\ttoken: value.access_token\n\t\t});\n\n\t\tresponse.cookies.add(auth.cookie, token, { maxAge: value.expires_in });\n\t\treturn response.json(data);\n\t}\n\n\tprivate async fetchAuth(body: OAuth2BodyData) {\n\t\tconst { id, secret } = this.container.server.auth!;\n\n\t\tconst data: RESTPostOAuth2AccessTokenURLEncodedData = {\n\t\t\t/* eslint-disable @typescript-eslint/naming-convention */\n\t\t\tclient_id: id,\n\t\t\tclient_secret: secret,\n\t\t\tcode: body.code,\n\t\t\tgrant_type: 'authorization_code',\n\t\t\tredirect_uri: this.redirectUri ?? body.redirectUri\n\t\t\t/* eslint-enable @typescript-eslint/naming-convention */\n\t\t};\n\n\t\tconst result = await fetch(OAuth2Routes.tokenURL, {\n\t\t\tmethod: 'POST',\n\t\t\tbody: stringify(data as any),\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/x-www-form-urlencoded'\n\t\t\t}\n\t\t});\n\n\t\tconst json = await result.json();\n\t\tif (result.ok) return json as RESTPostOAuth2AccessTokenResult;\n\n\t\tthis.container.logger.error(json);\n\t\treturn null;\n\t}\n}\n\n/**\n * The OAuth2 body data sent to the callback.\n * @since 1.2.0\n */\nexport interface OAuth2BodyData {\n\t/**\n\t * The code sent by the client.\n\t * @since 1.2.0\n\t */\n\tcode: string;\n\n\t/**\n\t * The client's ID.\n\t * @since 1.2.0\n\t */\n\tclientId: string;\n\n\t/**\n\t * The redirect URI.\n\t * @since 1.2.0\n\t */\n\tredirectUri: string;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/routes/oauth/logout.post.ts"],"names":["Route","HttpCodes","sleep","result","fetch","OAuth2Routes","stringify"],"mappings":";;;;;;;;;;;AAOO,IAAM,YAAA,GAAN,MAAM,YAAA,SAAoBA,eAAM,CAAA;AAAA,EAC/B,YAAY,OAA8B,EAAA;AAChD,IAAM,KAAA,CAAA,OAAA,EAAS,EAAE,KAAO,EAAA,cAAA,EAAgB,SAAS,CAAC,MAAM,GAAG,CAAA;AAC3D,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,IAAS,KAAA,IAAA;AAAA;AAC/C,EAEA,MAAsB,GAAI,CAAA,OAAA,EAAwB,QAA0B,EAAA;AAC3E,IAAA,IAAI,CAAC,OAAA,CAAQ,IAAM,EAAA,OAAO,QAAS,CAAA,MAAA,CAAOC,uBAAU,CAAA,YAAY,CAAE,CAAA,IAAA,CAAK,EAAE,KAAA,EAAO,iBAAiB,CAAA;AAEjG,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AACnD,IAAA,IAAI,MAAO,CAAA,EAAA,EAAW,OAAA,IAAA,CAAK,QAAQ,QAAQ,CAAA;AAM3C,IAAI,IAAA,MAAA,CAAO,MAAW,KAAAA,uBAAA,CAAU,kBAAoB,EAAA;AAMnD,MAAA,MAAM,aAAa,IAAK,CAAA,iBAAA,CAAkB,OAAO,OAAQ,CAAA,GAAA,CAAI,aAAa,CAAC,CAAA;AAC3E,MAAA,IAAI,UAAY,EAAA;AACf,QAAA,MAAMC,gBAAM,UAAU,CAAA;AAEtB,QAAA,MAAMC,UAAS,MAAM,IAAA,CAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AACnD,QAAA,IAAIA,OAAO,CAAA,EAAA,EAAW,OAAA,IAAA,CAAK,QAAQ,QAAQ,CAAA;AAAA;AAC5C;AASD,IAAO,OAAA,QAAA,CAAS,OAAOF,uBAAU,CAAA,mBAAmB,EAAE,IAAK,CAAA,EAAE,KAAO,EAAA,+BAAA,EAAiC,CAAA;AAAA;AACtG,EAEQ,QAAQ,QAA0B,EAAA;AAEzC,IAAA,QAAA,CAAS,QAAQ,MAAO,CAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,KAAM,MAAM,CAAA;AAC1D,IAAA,OAAO,QAAS,CAAA,IAAA,CAAK,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA;AACvC,EAEA,MAAc,OAAO,KAAe,EAAA;AACnC,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,IAAA;AAkBnC,IAAA,MAAM,MAAS,GAAA,MAAMG,YAAM,CAAAC,uBAAA,CAAa,kBAAoB,EAAA;AAAA,MAC3D,MAAQ,EAAA,MAAA;AAAA,MACR,MAAMC,qBAAU,CAAA;AAAA,QACf,KAAA;AAAA;AAAA,QAEA,WAAW,IAAK,CAAA,EAAA;AAAA,QAChB,eAAe,IAAK,CAAA;AAAA;AAAA,OAEpB,CAAA;AAAA,MACD,OAAS,EAAA;AAAA,QACR,cAAgB,EAAA;AAAA;AACjB,KACA,CAAA;AAED,IAAO,OAAA,MAAA;AAAA;AACR,EAEQ,kBAAkB,UAA2B,EAAA;AAGpD,IAAA,OAAO,UAAe,KAAA,IAAA,GAAO,GAAO,GAAA,MAAA,CAAO,UAAU,CAAI,GAAA,GAAA;AAAA;AAE3D,CAAA;AAvFuC,MAAA,CAAA,YAAA,EAAA,aAAA,CAAA;AAAhC,IAAM,WAAN,GAAA","file":"logout.post.cjs","sourcesContent":["import { sleep } from '@sapphire/utilities';\nimport { OAuth2Routes } from 'discord.js';\nimport { stringify } from 'querystring';\nimport { fetch } from 'undici';\nimport { Route } from '../../lib/structures/Route';\nimport { HttpCodes } from '../../lib/structures/http/HttpCodes';\n\nexport class PluginRoute extends Route {\n\tpublic constructor(context: Route.LoaderContext) {\n\t\tsuper(context, { route: 'oauth/logout', methods: ['POST'] });\n\t\tthis.enabled = this.container.server.auth !== null;\n\t}\n\n\tpublic override async run(request: Route.Request, response: Route.Response) {\n\t\tif (!request.auth) return response.status(HttpCodes.Unauthorized).json({ error: 'Unauthorized.' });\n\n\t\tconst result = await this.revoke(request.auth.token);\n\t\tif (result.ok) return this.success(response);\n\n\t\t// RFC 7009 2.2.1. If the server responds with HTTP status code 503, the client must assume the token still\n\t\t// exists and may retry after a reasonable delay.\n\t\t// The server may include a \"Retry-After\" header in the response to indicate how long the service is expected to\n\t\t// be unavailable to the requesting client.\n\t\tif (result.status === HttpCodes.ServiceUnavailable) {\n\t\t\t// RFC 7231 7.1.3. Servers send the \"Retry-After\" header field to indicate how long the user agent ought to\n\t\t\t// wait before making a follow-up request.\n\t\t\t//\n\t\t\t// The value of this field can be either an HTTP-date or a number of seconds to delay after the response is\n\t\t\t// received.\n\t\t\tconst retryAfter = this.processRetryAfter(result.headers.get('Retry-After'));\n\t\t\tif (retryAfter) {\n\t\t\t\tawait sleep(retryAfter);\n\n\t\t\t\tconst result = await this.revoke(request.auth.token);\n\t\t\t\tif (result.ok) return this.success(response);\n\t\t\t}\n\t\t}\n\n\t\t// RFC 7009 2.2. The authorization server responds with HTTP status code 200 if the token has been revoked\n\t\t// successfully or if the client submitted an invalid token.\n\t\t//\n\t\t// Note: invalid tokens do not cause an error response since the client cannot handle such an error in a\n\t\t// reasonable way. Moreover, the purpose of the revocation request, invalidating the particular token, is\n\t\t// already achieved.\n\t\treturn response.status(HttpCodes.InternalServerError).json({ error: 'Unexpected error from server.' });\n\t}\n\n\tprivate success(response: Route.Response) {\n\t\t// Sending an empty cookie with \"expires\" set to 1970-01-01 makes the browser instantly remove the cookie.\n\t\tresponse.cookies.remove(this.container.server.auth!.cookie);\n\t\treturn response.json({ success: true });\n\t}\n\n\tprivate async revoke(token: string) {\n\t\tconst auth = this.container.server.auth!;\n\n\t\t// RFC 7009 2.1.\n\t\t// The following parameters must be formatted as \"application/x-www-form-urlencoded\" in the HTTP request-body:\n\t\t//\n\t\t// - token: The token the client wants to be revoked.\n\t\t// - token_type_hint: [Optional]: `access_token` (RFC 6749 1.4), `refresh_token` (RFC 6749 1.5)\n\t\t//\n\t\t// The client also includes its authentication credentials, as described in RFC 6749 2.3.\n\t\t//\n\t\t// RFC 6749 2.3.1.\n\t\t// The authorization server MAY include the client credentials in the request - body using the following parameters:\n\t\t//\n\t\t// - client_id: The client identifier issued to the client during the registration process (RFC 6749 2.2)\n\t\t// - client_secret: The client secret.\n\t\t//\n\t\t// RFC 7009 2.2.\n\t\t// The content of the response body is ignored by the client as all necessary information is conveyed in the response code.\n\t\tconst result = await fetch(OAuth2Routes.tokenRevocationURL, {\n\t\t\tmethod: 'POST',\n\t\t\tbody: stringify({\n\t\t\t\ttoken,\n\t\t\t\t/* eslint-disable @typescript-eslint/naming-convention */\n\t\t\t\tclient_id: auth.id,\n\t\t\t\tclient_secret: auth.secret\n\t\t\t\t/* eslint-enable @typescript-eslint/naming-convention */\n\t\t\t}),\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/x-www-form-urlencoded'\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tprivate processRetryAfter(retryAfter: string | null) {\n\t\t// Discord sends Retry-After in seconds, never an HTTP-date, therefore, we will assume this behaviour.\n\t\t// Either way, if it's not present, we will retry in 5 seconds.\n\t\treturn retryAfter === null ? 5000 : Number(retryAfter) * 1000;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/routes/oauth/logout.post.ts"],"names":["Route","HttpCodes","sleep","result","fetch","OAuth2Routes","stringify"],"mappings":";;;;;;;;;;;AAOO,IAAM,YAAA,GAAN,MAAM,YAAA,SAAoBA,eAAA,CAAM;AAAA,EAC/B,YAAY,OAAA,EAA8B;AAChD,IAAA,KAAA,CAAM,OAAA,EAAS,EAAE,KAAA,EAAO,cAAA,EAAgB,SAAS,CAAC,MAAM,GAAG,CAAA;AAC3D,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,IAAA,KAAS,IAAA;AAAA,EAC/C;AAAA,EAEA,MAAsB,GAAA,CAAI,OAAA,EAAwB,QAAA,EAA0B;AAC3E,IAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,EAAM,OAAO,QAAA,CAAS,MAAA,CAAOC,uBAAA,CAAU,YAAY,CAAA,CAAE,IAAA,CAAK,EAAE,KAAA,EAAO,iBAAiB,CAAA;AAEjG,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,KAAK,CAAA;AACnD,IAAA,IAAI,MAAA,CAAO,EAAA,EAAI,OAAO,IAAA,CAAK,QAAQ,QAAQ,CAAA;AAM3C,IAAA,IAAI,MAAA,CAAO,MAAA,KAAWA,uBAAA,CAAU,kBAAA,EAAoB;AAMnD,MAAA,MAAM,aAAa,IAAA,CAAK,iBAAA,CAAkB,OAAO,OAAA,CAAQ,GAAA,CAAI,aAAa,CAAC,CAAA;AAC3E,MAAA,IAAI,UAAA,EAAY;AACf,QAAA,MAAMC,gBAAM,UAAU,CAAA;AAEtB,QAAA,MAAMC,UAAS,MAAM,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,KAAK,CAAA;AACnD,QAAA,IAAIA,OAAAA,CAAO,EAAA,EAAI,OAAO,IAAA,CAAK,QAAQ,QAAQ,CAAA;AAAA,MAC5C;AAAA,IACD;AAQA,IAAA,OAAO,QAAA,CAAS,OAAOF,uBAAA,CAAU,mBAAmB,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,+BAAA,EAAiC,CAAA;AAAA,EACtG;AAAA,EAEQ,QAAQ,QAAA,EAA0B;AAEzC,IAAA,QAAA,CAAS,QAAQ,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,KAAM,MAAM,CAAA;AAC1D,IAAA,OAAO,QAAA,CAAS,IAAA,CAAK,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,EACvC;AAAA,EAEA,MAAc,OAAO,KAAA,EAAe;AACnC,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,IAAA;AAkBnC,IAAA,MAAM,MAAA,GAAS,MAAMG,YAAA,CAAMC,uBAAA,CAAa,kBAAA,EAAoB;AAAA,MAC3D,MAAA,EAAQ,MAAA;AAAA,MACR,MAAMC,qBAAA,CAAU;AAAA,QACf,KAAA;AAAA;AAAA,QAEA,WAAW,IAAA,CAAK,EAAA;AAAA,QAChB,eAAe,IAAA,CAAK;AAAA;AAAA,OAEpB,CAAA;AAAA,MACD,OAAA,EAAS;AAAA,QACR,cAAA,EAAgB;AAAA;AACjB,KACA,CAAA;AAED,IAAA,OAAO,MAAA;AAAA,EACR;AAAA,EAEQ,kBAAkB,UAAA,EAA2B;AAGpD,IAAA,OAAO,UAAA,KAAe,IAAA,GAAO,GAAA,GAAO,MAAA,CAAO,UAAU,CAAA,GAAI,GAAA;AAAA,EAC1D;AACD,CAAA;AAvFuC,MAAA,CAAA,YAAA,EAAA,aAAA,CAAA;AAAhC,IAAM,WAAA,GAAN","file":"logout.post.cjs","sourcesContent":["import { sleep } from '@sapphire/utilities';\nimport { OAuth2Routes } from 'discord.js';\nimport { stringify } from 'querystring';\nimport { fetch } from 'undici';\nimport { Route } from '../../lib/structures/Route';\nimport { HttpCodes } from '../../lib/structures/http/HttpCodes';\n\nexport class PluginRoute extends Route {\n\tpublic constructor(context: Route.LoaderContext) {\n\t\tsuper(context, { route: 'oauth/logout', methods: ['POST'] });\n\t\tthis.enabled = this.container.server.auth !== null;\n\t}\n\n\tpublic override async run(request: Route.Request, response: Route.Response) {\n\t\tif (!request.auth) return response.status(HttpCodes.Unauthorized).json({ error: 'Unauthorized.' });\n\n\t\tconst result = await this.revoke(request.auth.token);\n\t\tif (result.ok) return this.success(response);\n\n\t\t// RFC 7009 2.2.1. If the server responds with HTTP status code 503, the client must assume the token still\n\t\t// exists and may retry after a reasonable delay.\n\t\t// The server may include a \"Retry-After\" header in the response to indicate how long the service is expected to\n\t\t// be unavailable to the requesting client.\n\t\tif (result.status === HttpCodes.ServiceUnavailable) {\n\t\t\t// RFC 7231 7.1.3. Servers send the \"Retry-After\" header field to indicate how long the user agent ought to\n\t\t\t// wait before making a follow-up request.\n\t\t\t//\n\t\t\t// The value of this field can be either an HTTP-date or a number of seconds to delay after the response is\n\t\t\t// received.\n\t\t\tconst retryAfter = this.processRetryAfter(result.headers.get('Retry-After'));\n\t\t\tif (retryAfter) {\n\t\t\t\tawait sleep(retryAfter);\n\n\t\t\t\tconst result = await this.revoke(request.auth.token);\n\t\t\t\tif (result.ok) return this.success(response);\n\t\t\t}\n\t\t}\n\n\t\t// RFC 7009 2.2. The authorization server responds with HTTP status code 200 if the token has been revoked\n\t\t// successfully or if the client submitted an invalid token.\n\t\t//\n\t\t// Note: invalid tokens do not cause an error response since the client cannot handle such an error in a\n\t\t// reasonable way. Moreover, the purpose of the revocation request, invalidating the particular token, is\n\t\t// already achieved.\n\t\treturn response.status(HttpCodes.InternalServerError).json({ error: 'Unexpected error from server.' });\n\t}\n\n\tprivate success(response: Route.Response) {\n\t\t// Sending an empty cookie with \"expires\" set to 1970-01-01 makes the browser instantly remove the cookie.\n\t\tresponse.cookies.remove(this.container.server.auth!.cookie);\n\t\treturn response.json({ success: true });\n\t}\n\n\tprivate async revoke(token: string) {\n\t\tconst auth = this.container.server.auth!;\n\n\t\t// RFC 7009 2.1.\n\t\t// The following parameters must be formatted as \"application/x-www-form-urlencoded\" in the HTTP request-body:\n\t\t//\n\t\t// - token: The token the client wants to be revoked.\n\t\t// - token_type_hint: [Optional]: `access_token` (RFC 6749 1.4), `refresh_token` (RFC 6749 1.5)\n\t\t//\n\t\t// The client also includes its authentication credentials, as described in RFC 6749 2.3.\n\t\t//\n\t\t// RFC 6749 2.3.1.\n\t\t// The authorization server MAY include the client credentials in the request - body using the following parameters:\n\t\t//\n\t\t// - client_id: The client identifier issued to the client during the registration process (RFC 6749 2.2)\n\t\t// - client_secret: The client secret.\n\t\t//\n\t\t// RFC 7009 2.2.\n\t\t// The content of the response body is ignored by the client as all necessary information is conveyed in the response code.\n\t\tconst result = await fetch(OAuth2Routes.tokenRevocationURL, {\n\t\t\tmethod: 'POST',\n\t\t\tbody: stringify({\n\t\t\t\ttoken,\n\t\t\t\t/* eslint-disable @typescript-eslint/naming-convention */\n\t\t\t\tclient_id: auth.id,\n\t\t\t\tclient_secret: auth.secret\n\t\t\t\t/* eslint-enable @typescript-eslint/naming-convention */\n\t\t\t}),\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/x-www-form-urlencoded'\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tprivate processRetryAfter(retryAfter: string | null) {\n\t\t// Discord sends Retry-After in seconds, never an HTTP-date, therefore, we will assume this behaviour.\n\t\t// Either way, if it's not present, we will retry in 5 seconds.\n\t\treturn retryAfter === null ? 5000 : Number(retryAfter) * 1000;\n\t}\n}\n"]}
@@ -17,7 +17,7 @@ export { loadListeners } from './listeners/_load.mjs';
17
17
  export { loadMiddlewares } from './middlewares/_load.mjs';
18
18
  export { loadRoutes } from './routes/_load.mjs';
19
19
 
20
- var version = "8.3.2-next.9983f49";
20
+ var version = "8.3.2-next.d220275";
21
21
 
22
22
  export { version };
23
23
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAoDO,IAAM,OAAkB,GAAA","file":"index.mjs","sourcesContent":["import type { Server, ServerOptions } from './lib/structures/http/Server';\nimport type { MiddlewareStore } from './lib/structures/MiddlewareStore';\nimport type { RouteStore } from './lib/structures/RouteStore';\n\nexport * from './lib/structures/api/ApiRequest';\nexport * from './lib/structures/api/ApiResponse';\nexport * from './lib/structures/api/CookieStore';\nexport * from './lib/structures/http/Auth';\nexport * from './lib/structures/http/HttpCodes';\nexport * from './lib/structures/http/HttpMethods';\nexport * from './lib/structures/http/Server';\nexport * from './lib/structures/Middleware';\nexport * from './lib/structures/MiddlewareStore';\nexport * from './lib/structures/Route';\nexport * from './lib/structures/router/RouterBranch';\nexport * from './lib/structures/router/RouterNode';\nexport * from './lib/structures/router/RouterRoot';\nexport * from './lib/structures/RouteStore';\nexport type * from '@sapphire/iana-mime-types';\n\nexport { loadListeners } from './listeners/_load';\nexport { loadMiddlewares } from './middlewares/_load';\nexport { loadRoutes } from './routes/_load';\n\ndeclare module 'discord.js' {\n\tinterface Client {\n\t\tserver: Server;\n\t}\n\n\tinterface ClientOptions {\n\t\tapi?: ServerOptions;\n\t}\n}\n\ndeclare module '@sapphire/pieces' {\n\tinterface StoreRegistryEntries {\n\t\troutes: RouteStore;\n\t\tmiddlewares: MiddlewareStore;\n\t}\n\n\tinterface Container {\n\t\tserver: Server;\n\t}\n}\n\n/**\n * The [@sapphire/plugin-api](https://github.com/sapphiredev/plugins/blob/main/packages/api) version that you are currently using.\n * An example use of this is showing it of in a bot information command.\n *\n * Note to Sapphire developers: This needs to explicitly be `string` so it is not typed as the string that gets replaced by esbuild\n */\n// eslint-disable-next-line @typescript-eslint/no-inferrable-types\nexport const version: string = '8.3.2-next.9983f49';\n"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAoDO,IAAM,OAAA,GAAkB","file":"index.mjs","sourcesContent":["import type { Server, ServerOptions } from './lib/structures/http/Server';\nimport type { MiddlewareStore } from './lib/structures/MiddlewareStore';\nimport type { RouteStore } from './lib/structures/RouteStore';\n\nexport * from './lib/structures/api/ApiRequest';\nexport * from './lib/structures/api/ApiResponse';\nexport * from './lib/structures/api/CookieStore';\nexport * from './lib/structures/http/Auth';\nexport * from './lib/structures/http/HttpCodes';\nexport * from './lib/structures/http/HttpMethods';\nexport * from './lib/structures/http/Server';\nexport * from './lib/structures/Middleware';\nexport * from './lib/structures/MiddlewareStore';\nexport * from './lib/structures/Route';\nexport * from './lib/structures/router/RouterBranch';\nexport * from './lib/structures/router/RouterNode';\nexport * from './lib/structures/router/RouterRoot';\nexport * from './lib/structures/RouteStore';\nexport type * from '@sapphire/iana-mime-types';\n\nexport { loadListeners } from './listeners/_load';\nexport { loadMiddlewares } from './middlewares/_load';\nexport { loadRoutes } from './routes/_load';\n\ndeclare module 'discord.js' {\n\tinterface Client {\n\t\tserver: Server;\n\t}\n\n\tinterface ClientOptions {\n\t\tapi?: ServerOptions;\n\t}\n}\n\ndeclare module '@sapphire/pieces' {\n\tinterface StoreRegistryEntries {\n\t\troutes: RouteStore;\n\t\tmiddlewares: MiddlewareStore;\n\t}\n\n\tinterface Container {\n\t\tserver: Server;\n\t}\n}\n\n/**\n * The [@sapphire/plugin-api](https://github.com/sapphiredev/plugins/blob/main/packages/api) version that you are currently using.\n * An example use of this is showing it of in a bot information command.\n *\n * Note to Sapphire developers: This needs to explicitly be `string` so it is not typed as the string that gets replaced by esbuild\n */\n// eslint-disable-next-line @typescript-eslint/no-inferrable-types\nexport const version: string = '8.3.2-next.d220275';\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/structures/Middleware.ts"],"names":[],"mappings":";;;AAQO,IAAe,WAAA,GAAf,MAAe,WAAA,SAA4E,KAA8B,CAAA;AAAA,EAaxH,WAAY,CAAA,OAAA,EAAmC,OAAmB,GAAA,EAAe,EAAA;AACvF,IAAA,KAAA,CAAM,SAAS,OAAO,CAAA;AAHvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAgB,aAAA,CAAA,IAAA,EAAA,UAAA,CAAA;AAIf,IAAK,IAAA,CAAA,QAAA,GAAW,QAAQ,QAAY,IAAA,GAAA;AAAA;AAUtC,CAAA;AAzBgI,MAAA,CAAA,WAAA,EAAA,YAAA,CAAA;AAAzH,IAAe,UAAf,GAAA","file":"Middleware.mjs","sourcesContent":["import { Piece } from '@sapphire/pieces';\nimport type { Awaitable } from '@sapphire/utilities';\nimport type { ApiRequest } from './api/ApiRequest';\nimport type { ApiResponse } from './api/ApiResponse';\n\n/**\n * @since 1.0.0\n */\nexport abstract class Middleware<Options extends Middleware.Options = Middleware.Options> extends Piece<Options, 'middlewares'> {\n\t/**\n\t * The position the middleware has. The {@link MiddlewareStore} will run all middlewares with lower position than\n\t * this one.\n\t *\n\t * The built-in middlewares follow the following positions:\n\t * - headers: 10\n\t * - body: 20\n\t * - cookies: 30\n\t * - auth: 40\n\t */\n\tpublic readonly position: number;\n\n\tpublic constructor(context: Middleware.LoaderContext, options: Options = {} as Options) {\n\t\tsuper(context, options);\n\t\tthis.position = options.position ?? 1000;\n\t}\n\n\t/**\n\t * The method to be overridden by other middlewares.\n\t * @param request The client's request.\n\t * @param response The server's response.\n\t * @param route The route that matched this request, will be `null` if none matched.\n\t */\n\tpublic abstract run(request: Middleware.Request, response: Middleware.Response): Awaitable<unknown>;\n}\n\n/**\n * The options for all middlewares.\n */\nexport interface MiddlewareOptions extends Piece.Options {\n\t/**\n\t * The position to insert the middleware at.\n\t * @see Middleware#position\n\t * @default 1000\n\t */\n\tposition?: number;\n}\n\nexport namespace Middleware {\n\t/** @deprecated Use {@linkcode LoaderContext} instead. */\n\texport type Context = LoaderContext;\n\texport type LoaderContext = Piece.LoaderContext<'middlewares'>;\n\texport type Options = MiddlewareOptions;\n\texport type JSON = Piece.JSON;\n\texport type LocationJSON = Piece.LocationJSON;\n\n\texport type Request = ApiRequest;\n\texport type Response = ApiResponse;\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/lib/structures/Middleware.ts"],"names":[],"mappings":";;;AAQO,IAAe,WAAA,GAAf,MAAe,WAAA,SAA4E,KAAA,CAA8B;AAAA,EAaxH,WAAA,CAAY,OAAA,EAAmC,OAAA,GAAmB,EAAC,EAAc;AACvF,IAAA,KAAA,CAAM,SAAS,OAAO,CAAA;AAHvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAgB,UAAA,CAAA;AAIf,IAAA,IAAA,CAAK,QAAA,GAAW,QAAQ,QAAA,IAAY,GAAA;AAAA,EACrC;AASD,CAAA;AAzBgI,MAAA,CAAA,WAAA,EAAA,YAAA,CAAA;AAAzH,IAAe,UAAA,GAAf","file":"Middleware.mjs","sourcesContent":["import { Piece } from '@sapphire/pieces';\nimport type { Awaitable } from '@sapphire/utilities';\nimport type { ApiRequest } from './api/ApiRequest';\nimport type { ApiResponse } from './api/ApiResponse';\n\n/**\n * @since 1.0.0\n */\nexport abstract class Middleware<Options extends Middleware.Options = Middleware.Options> extends Piece<Options, 'middlewares'> {\n\t/**\n\t * The position the middleware has. The {@link MiddlewareStore} will run all middlewares with lower position than\n\t * this one.\n\t *\n\t * The built-in middlewares follow the following positions:\n\t * - headers: 10\n\t * - body: 20\n\t * - cookies: 30\n\t * - auth: 40\n\t */\n\tpublic readonly position: number;\n\n\tpublic constructor(context: Middleware.LoaderContext, options: Options = {} as Options) {\n\t\tsuper(context, options);\n\t\tthis.position = options.position ?? 1000;\n\t}\n\n\t/**\n\t * The method to be overridden by other middlewares.\n\t * @param request The client's request.\n\t * @param response The server's response.\n\t * @param route The route that matched this request, will be `null` if none matched.\n\t */\n\tpublic abstract run(request: Middleware.Request, response: Middleware.Response): Awaitable<unknown>;\n}\n\n/**\n * The options for all middlewares.\n */\nexport interface MiddlewareOptions extends Piece.Options {\n\t/**\n\t * The position to insert the middleware at.\n\t * @see Middleware#position\n\t * @default 1000\n\t */\n\tposition?: number;\n}\n\nexport namespace Middleware {\n\t/** @deprecated Use {@linkcode LoaderContext} instead. */\n\texport type Context = LoaderContext;\n\texport type LoaderContext = Piece.LoaderContext<'middlewares'>;\n\texport type Options = MiddlewareOptions;\n\texport type JSON = Piece.JSON;\n\texport type LocationJSON = Piece.LocationJSON;\n\n\texport type Request = ApiRequest;\n\texport type Response = ApiResponse;\n}\n"]}