@sapphire/plugin-api 7.0.0-next.ce675e0 → 7.0.0-next.d6024cd

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 (169) hide show
  1. package/dist/cjs/index.cjs +2 -2
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/index.d.cts +1 -1
  4. package/dist/cjs/lib/structures/Augmentations.d.cjs +1 -1
  5. package/dist/cjs/lib/structures/Augmentations.d.cjs.map +1 -1
  6. package/dist/cjs/lib/structures/MediaParser.cjs +1 -1
  7. package/dist/cjs/lib/structures/MediaParser.cjs.map +1 -1
  8. package/dist/cjs/lib/structures/MediaParserStore.cjs +1 -1
  9. package/dist/cjs/lib/structures/MediaParserStore.cjs.map +1 -1
  10. package/dist/cjs/lib/structures/Middleware.cjs +2 -2
  11. package/dist/cjs/lib/structures/Middleware.cjs.map +1 -1
  12. package/dist/cjs/lib/structures/MiddlewareStore.cjs +2 -2
  13. package/dist/cjs/lib/structures/MiddlewareStore.cjs.map +1 -1
  14. package/dist/cjs/lib/structures/Route.cjs +1 -1
  15. package/dist/cjs/lib/structures/Route.cjs.map +1 -1
  16. package/dist/cjs/lib/structures/RouteLoaderStrategy.cjs +1 -1
  17. package/dist/cjs/lib/structures/RouteLoaderStrategy.cjs.map +1 -1
  18. package/dist/cjs/lib/structures/RouteStore.cjs +2 -2
  19. package/dist/cjs/lib/structures/RouteStore.cjs.map +1 -1
  20. package/dist/cjs/lib/structures/api/ApiRequest.cjs +1 -1
  21. package/dist/cjs/lib/structures/api/ApiRequest.cjs.map +1 -1
  22. package/dist/cjs/lib/structures/api/ApiResponse.cjs +2 -2
  23. package/dist/cjs/lib/structures/api/ApiResponse.cjs.map +1 -1
  24. package/dist/cjs/lib/structures/api/CookieStore.cjs +1 -1
  25. package/dist/cjs/lib/structures/api/CookieStore.cjs.map +1 -1
  26. package/dist/cjs/lib/structures/http/Auth.cjs +2 -2
  27. package/dist/cjs/lib/structures/http/Auth.cjs.map +1 -1
  28. package/dist/cjs/lib/structures/http/HttpCodes.cjs +1 -1
  29. package/dist/cjs/lib/structures/http/HttpCodes.cjs.map +1 -1
  30. package/dist/cjs/lib/structures/http/HttpMethods.cjs +1 -1
  31. package/dist/cjs/lib/structures/http/HttpMethods.cjs.map +1 -1
  32. package/dist/cjs/lib/structures/http/Server.cjs +1 -1
  33. package/dist/cjs/lib/structures/http/Server.cjs.map +1 -1
  34. package/dist/cjs/lib/structures/router/RouterBranch.cjs +1 -1
  35. package/dist/cjs/lib/structures/router/RouterBranch.cjs.map +1 -1
  36. package/dist/cjs/lib/structures/router/RouterNode.cjs +2 -2
  37. package/dist/cjs/lib/structures/router/RouterNode.cjs.map +1 -1
  38. package/dist/cjs/lib/structures/router/RouterRoot.cjs +1 -1
  39. package/dist/cjs/lib/structures/router/RouterRoot.cjs.map +1 -1
  40. package/dist/cjs/lib/utils/MimeTypes.cjs +1 -1
  41. package/dist/cjs/lib/utils/MimeTypes.cjs.map +1 -1
  42. package/dist/cjs/listeners/PluginRouteError.cjs +1 -1
  43. package/dist/cjs/listeners/PluginRouteError.cjs.map +1 -1
  44. package/dist/cjs/listeners/PluginServerMiddlewareError.cjs +1 -1
  45. package/dist/cjs/listeners/PluginServerMiddlewareError.cjs.map +1 -1
  46. package/dist/cjs/listeners/PluginServerMiddlewareSuccess.cjs +1 -1
  47. package/dist/cjs/listeners/PluginServerMiddlewareSuccess.cjs.map +1 -1
  48. package/dist/cjs/listeners/PluginServerRequest.cjs +2 -2
  49. package/dist/cjs/listeners/PluginServerRequest.cjs.map +1 -1
  50. package/dist/cjs/listeners/PluginServerRouterBranchMethodNotAllowed.cjs +1 -1
  51. package/dist/cjs/listeners/PluginServerRouterBranchMethodNotAllowed.cjs.map +1 -1
  52. package/dist/cjs/listeners/PluginServerRouterBranchNotFound.cjs +1 -1
  53. package/dist/cjs/listeners/PluginServerRouterBranchNotFound.cjs.map +1 -1
  54. package/dist/cjs/listeners/PluginServerRouterFound.cjs +3 -2
  55. package/dist/cjs/listeners/PluginServerRouterFound.cjs.map +1 -1
  56. package/dist/cjs/listeners/_load.cjs +1 -1
  57. package/dist/cjs/listeners/_load.cjs.map +1 -1
  58. package/dist/cjs/mediaParsers/_load.cjs +1 -1
  59. package/dist/cjs/mediaParsers/_load.cjs.map +1 -1
  60. package/dist/cjs/mediaParsers/applicationFormUrlEncoded.cjs +1 -1
  61. package/dist/cjs/mediaParsers/applicationFormUrlEncoded.cjs.map +1 -1
  62. package/dist/cjs/mediaParsers/applicationJson.cjs +1 -1
  63. package/dist/cjs/mediaParsers/applicationJson.cjs.map +1 -1
  64. package/dist/cjs/mediaParsers/textPlain.cjs +1 -1
  65. package/dist/cjs/mediaParsers/textPlain.cjs.map +1 -1
  66. package/dist/cjs/middlewares/_load.cjs +1 -1
  67. package/dist/cjs/middlewares/_load.cjs.map +1 -1
  68. package/dist/cjs/middlewares/auth.cjs +2 -2
  69. package/dist/cjs/middlewares/auth.cjs.map +1 -1
  70. package/dist/cjs/middlewares/body.cjs +2 -2
  71. package/dist/cjs/middlewares/body.cjs.map +1 -1
  72. package/dist/cjs/middlewares/cookies.cjs +1 -1
  73. package/dist/cjs/middlewares/cookies.cjs.map +1 -1
  74. package/dist/cjs/middlewares/headers.cjs +1 -1
  75. package/dist/cjs/middlewares/headers.cjs.map +1 -1
  76. package/dist/cjs/register.cjs +1 -1
  77. package/dist/cjs/register.cjs.map +1 -1
  78. package/dist/cjs/routes/_load.cjs +1 -1
  79. package/dist/cjs/routes/_load.cjs.map +1 -1
  80. package/dist/cjs/routes/oauth/callback.post.cjs +2 -2
  81. package/dist/cjs/routes/oauth/callback.post.cjs.map +1 -1
  82. package/dist/cjs/routes/oauth/logout.post.cjs +1 -1
  83. package/dist/cjs/routes/oauth/logout.post.cjs.map +1 -1
  84. package/dist/esm/chunk-S573YWRP.mjs +1 -1
  85. package/dist/esm/chunk-S573YWRP.mjs.map +1 -1
  86. package/dist/esm/index.d.mts +1 -1
  87. package/dist/esm/index.mjs +2 -2
  88. package/dist/esm/index.mjs.map +1 -1
  89. package/dist/esm/lib/structures/Augmentations.d.mjs +1 -1
  90. package/dist/esm/lib/structures/Augmentations.d.mjs.map +1 -1
  91. package/dist/esm/lib/structures/MediaParser.mjs +1 -1
  92. package/dist/esm/lib/structures/MediaParser.mjs.map +1 -1
  93. package/dist/esm/lib/structures/MediaParserStore.mjs +1 -1
  94. package/dist/esm/lib/structures/MediaParserStore.mjs.map +1 -1
  95. package/dist/esm/lib/structures/Middleware.mjs +1 -1
  96. package/dist/esm/lib/structures/Middleware.mjs.map +1 -1
  97. package/dist/esm/lib/structures/MiddlewareStore.mjs +1 -1
  98. package/dist/esm/lib/structures/MiddlewareStore.mjs.map +1 -1
  99. package/dist/esm/lib/structures/Route.mjs +1 -1
  100. package/dist/esm/lib/structures/Route.mjs.map +1 -1
  101. package/dist/esm/lib/structures/RouteLoaderStrategy.mjs +1 -1
  102. package/dist/esm/lib/structures/RouteLoaderStrategy.mjs.map +1 -1
  103. package/dist/esm/lib/structures/RouteStore.mjs +1 -1
  104. package/dist/esm/lib/structures/RouteStore.mjs.map +1 -1
  105. package/dist/esm/lib/structures/api/ApiRequest.mjs +1 -1
  106. package/dist/esm/lib/structures/api/ApiRequest.mjs.map +1 -1
  107. package/dist/esm/lib/structures/api/ApiResponse.mjs +1 -1
  108. package/dist/esm/lib/structures/api/ApiResponse.mjs.map +1 -1
  109. package/dist/esm/lib/structures/api/CookieStore.mjs +1 -1
  110. package/dist/esm/lib/structures/api/CookieStore.mjs.map +1 -1
  111. package/dist/esm/lib/structures/http/Auth.mjs +1 -1
  112. package/dist/esm/lib/structures/http/Auth.mjs.map +1 -1
  113. package/dist/esm/lib/structures/http/HttpCodes.mjs +1 -1
  114. package/dist/esm/lib/structures/http/HttpCodes.mjs.map +1 -1
  115. package/dist/esm/lib/structures/http/HttpMethods.mjs +1 -1
  116. package/dist/esm/lib/structures/http/HttpMethods.mjs.map +1 -1
  117. package/dist/esm/lib/structures/http/Server.mjs +1 -1
  118. package/dist/esm/lib/structures/http/Server.mjs.map +1 -1
  119. package/dist/esm/lib/structures/router/RouterBranch.mjs +1 -1
  120. package/dist/esm/lib/structures/router/RouterBranch.mjs.map +1 -1
  121. package/dist/esm/lib/structures/router/RouterNode.mjs +1 -1
  122. package/dist/esm/lib/structures/router/RouterNode.mjs.map +1 -1
  123. package/dist/esm/lib/structures/router/RouterRoot.mjs +1 -1
  124. package/dist/esm/lib/structures/router/RouterRoot.mjs.map +1 -1
  125. package/dist/esm/lib/utils/MimeTypes.mjs +1 -1
  126. package/dist/esm/lib/utils/MimeTypes.mjs.map +1 -1
  127. package/dist/esm/listeners/PluginRouteError.mjs +1 -1
  128. package/dist/esm/listeners/PluginRouteError.mjs.map +1 -1
  129. package/dist/esm/listeners/PluginServerMiddlewareError.mjs +1 -1
  130. package/dist/esm/listeners/PluginServerMiddlewareError.mjs.map +1 -1
  131. package/dist/esm/listeners/PluginServerMiddlewareSuccess.mjs +1 -1
  132. package/dist/esm/listeners/PluginServerMiddlewareSuccess.mjs.map +1 -1
  133. package/dist/esm/listeners/PluginServerRequest.mjs +2 -2
  134. package/dist/esm/listeners/PluginServerRequest.mjs.map +1 -1
  135. package/dist/esm/listeners/PluginServerRouterBranchMethodNotAllowed.mjs +1 -1
  136. package/dist/esm/listeners/PluginServerRouterBranchMethodNotAllowed.mjs.map +1 -1
  137. package/dist/esm/listeners/PluginServerRouterBranchNotFound.mjs +1 -1
  138. package/dist/esm/listeners/PluginServerRouterBranchNotFound.mjs.map +1 -1
  139. package/dist/esm/listeners/PluginServerRouterFound.mjs +3 -2
  140. package/dist/esm/listeners/PluginServerRouterFound.mjs.map +1 -1
  141. package/dist/esm/listeners/_load.mjs +1 -1
  142. package/dist/esm/listeners/_load.mjs.map +1 -1
  143. package/dist/esm/mediaParsers/_load.mjs +1 -1
  144. package/dist/esm/mediaParsers/_load.mjs.map +1 -1
  145. package/dist/esm/mediaParsers/applicationFormUrlEncoded.mjs +1 -1
  146. package/dist/esm/mediaParsers/applicationFormUrlEncoded.mjs.map +1 -1
  147. package/dist/esm/mediaParsers/applicationJson.mjs +1 -1
  148. package/dist/esm/mediaParsers/applicationJson.mjs.map +1 -1
  149. package/dist/esm/mediaParsers/textPlain.mjs +1 -1
  150. package/dist/esm/mediaParsers/textPlain.mjs.map +1 -1
  151. package/dist/esm/middlewares/_load.mjs +1 -1
  152. package/dist/esm/middlewares/_load.mjs.map +1 -1
  153. package/dist/esm/middlewares/auth.mjs +1 -1
  154. package/dist/esm/middlewares/auth.mjs.map +1 -1
  155. package/dist/esm/middlewares/body.mjs +1 -1
  156. package/dist/esm/middlewares/body.mjs.map +1 -1
  157. package/dist/esm/middlewares/cookies.mjs +1 -1
  158. package/dist/esm/middlewares/cookies.mjs.map +1 -1
  159. package/dist/esm/middlewares/headers.mjs +1 -1
  160. package/dist/esm/middlewares/headers.mjs.map +1 -1
  161. package/dist/esm/register.mjs +1 -1
  162. package/dist/esm/register.mjs.map +1 -1
  163. package/dist/esm/routes/_load.mjs +1 -1
  164. package/dist/esm/routes/_load.mjs.map +1 -1
  165. package/dist/esm/routes/oauth/callback.post.mjs +1 -1
  166. package/dist/esm/routes/oauth/callback.post.mjs.map +1 -1
  167. package/dist/esm/routes/oauth/logout.post.mjs +1 -1
  168. package/dist/esm/routes/oauth/logout.post.mjs.map +1 -1
  169. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerMiddlewareError.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,gBAAgB;AAGzB,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAErB,IAAM,kBAAN,MAAM,wBAAuB,SAAS;AAAA,EACrC,YAAY,SAAiC;AACnD,UAAM,SAAS,EAAE,SAAS,UAAU,OAAO,YAAY,gBAAgB,CAAC;AAAA,EACzE;AAAA,EAEgB,IAAI,OAAc,UAAsB,UAAuB;AAE9E,SAAK,UAAU,OAAO,MAAM,KAAK;AAGjC,QAAI,CAAC,SAAS,cAAe,UAAS,OAAO,UAAU,mBAAmB,EAAE,KAAK,EAAE,OAAO,MAAM,WAAW,MAAM,CAAC;AAAA,EACnH;AACD;AAZ6C;AAAtC,IAAM,iBAAN","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":[],"mappings":";;;;;AAMO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuB,QAAS,CAAA;AAAA,EACrC,YAAY,OAAiC,EAAA;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAO,EAAA,WAAA,CAAY,iBAAiB,CAAA,CAAA;AAAA,GACzE;AAAA,EAEgB,GAAA,CAAI,KAAc,EAAA,QAAA,EAAsB,QAAuB,EAAA;AAE9E,IAAK,IAAA,CAAA,SAAA,CAAU,MAAO,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAGjC,IAAA,IAAI,CAAC,QAAA,CAAS,aAAe,EAAA,QAAA,CAAS,OAAO,SAAU,CAAA,mBAAmB,CAAE,CAAA,IAAA,CAAK,EAAE,KAAA,EAAO,KAAM,CAAA,OAAA,IAAW,OAAO,CAAA,CAAA;AAAA,GACnH;AACD,CAAA,CAAA;AAZ6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,CAAA;AAAtC,IAAM,cAAN,GAAA","file":"PluginServerMiddlewareError.mjs","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"]}
@@ -18,5 +18,5 @@ __name(_PluginListener, "PluginListener");
18
18
  var PluginListener = _PluginListener;
19
19
 
20
20
  export { PluginListener };
21
- //# sourceMappingURL=out.js.map
21
+ //# sourceMappingURL=PluginServerMiddlewareSuccess.mjs.map
22
22
  //# sourceMappingURL=PluginServerMiddlewareSuccess.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerMiddlewareSuccess.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,gBAAgB;AAGzB,SAAS,mBAAmB;AAErB,IAAM,kBAAN,MAAM,wBAAuB,SAAS;AAAA,EACrC,YAAY,SAAiC;AACnD,UAAM,SAAS,EAAE,SAAS,UAAU,OAAO,YAAY,kBAAkB,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAsB,IAAI,SAAqB,UAAuB;AACrE,QAAI;AACH,YAAM,QAAQ,MAAO,IAAI,SAAS,QAAQ;AAAA,IAC3C,SAAS,OAAO;AACf,WAAK,UAAU,OAAO,KAAK,YAAY,YAAY,OAAO,SAAS,QAAQ;AAAA,IAC5E;AAAA,EACD;AACD;AAZ6C;AAAtC,IAAM,iBAAN","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, request, response);\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/listeners/PluginServerMiddlewareSuccess.ts"],"names":[],"mappings":";;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuB,QAAS,CAAA;AAAA,EACrC,YAAY,OAAiC,EAAA;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAO,EAAA,WAAA,CAAY,mBAAmB,CAAA,CAAA;AAAA,GAC3E;AAAA,EAEA,MAAsB,GAAI,CAAA,OAAA,EAAqB,QAAuB,EAAA;AACrE,IAAI,IAAA;AACH,MAAA,MAAM,OAAQ,CAAA,KAAA,CAAO,GAAI,CAAA,OAAA,EAAS,QAAQ,CAAA,CAAA;AAAA,aAClC,KAAO,EAAA;AACf,MAAA,IAAA,CAAK,UAAU,MAAO,CAAA,IAAA,CAAK,YAAY,UAAY,EAAA,KAAA,EAAgB,SAAS,QAAQ,CAAA,CAAA;AAAA,KACrF;AAAA,GACD;AACD,CAAA,CAAA;AAZ6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,CAAA;AAAtC,IAAM,cAAN,GAAA","file":"PluginServerMiddlewareSuccess.mjs","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"]}
@@ -29,7 +29,7 @@ var _PluginListener = class _PluginListener extends Listener {
29
29
  if (branch === null) {
30
30
  this.container.server.emit(ServerEvent.RouterBranchNotFound, request, response);
31
31
  } else if (route === null) {
32
- this.container.server.emit(ServerEvent.RouterBranchMethodNotAllowed, request, response);
32
+ this.container.server.emit(ServerEvent.RouterBranchMethodNotAllowed, request, response, branch);
33
33
  } else {
34
34
  this.container.server.emit(ServerEvent.RouterFound, request, response);
35
35
  }
@@ -53,5 +53,5 @@ __name(_PluginListener, "PluginListener");
53
53
  var PluginListener = _PluginListener;
54
54
 
55
55
  export { PluginListener };
56
- //# sourceMappingURL=out.js.map
56
+ //# sourceMappingURL=PluginServerRequest.mjs.map
57
57
  //# sourceMappingURL=PluginServerRequest.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerRequest.ts"],"names":[],"mappings":";;;;;;;AAAA,SAAS,gBAAgB;AAIzB,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAL3B;AAOO,IAAM,kBAAN,MAAM,wBAAuB,SAAS;AAAA,EACrC,YAAY,SAAiC;AACnD,UAAM,SAAS,EAAE,SAAS,UAAU,OAAO,YAAY,QAAQ,CAAC;AAF3D;AAAA,EAGN;AAAA,EAEA,MAAsB,IAAI,SAAqB,UAAuB;AACrE,UAAM,EAAE,OAAO,YAAY,IAAI,sBAAK,wCAAL,WAAe,QAAQ;AACtD,YAAQ,QAAQ,OAAO,YAAY,IAAI,gBAAgB,WAAW,EAAE,QAAQ,CAAC;AAE7E,UAAM,SAAS,KAAK,UAAU,OAAO,OAAO,OAAO,KAAK,KAAK;AAC7D,UAAM,OAAO,SAAS,OAAO,OAAO;AACpC,UAAM,QAAQ,OAAO,KAAK,IAAK,QAAQ,UAAU,KAAoB,IAAI;AAEzE,QAAI,SAAS,MAAM;AAClB,cAAQ,SAAS,KAAM,kBAAkB,KAAK;AAAA,IAC/C;AAEA,YAAQ,aAAa;AACrB,YAAQ,QAAQ;AAEhB,QAAI;AAEH,YAAM,KAAK,UAAU,OAAO,YAAY,IAAI,SAAS,QAAQ;AAAA,IAC9D,SAAS,OAAO;AACf,WAAK,UAAU,OAAO,KAAK,YAAY,iBAAiB,OAAO,SAAS,QAAQ;AAGhF;AAAA,IACD;AAEA,QAAI,WAAW,MAAM;AACpB,WAAK,UAAU,OAAO,KAAK,YAAY,sBAAsB,SAAS,QAAQ;AAAA,IAC/E,WAAW,UAAU,MAAM;AAC1B,WAAK,UAAU,OAAO,KAAK,YAAY,8BAA8B,SAAS,QAAQ;AAAA,IACvF,OAAO;AACN,WAAK,UAAU,OAAO,KAAK,YAAY,aAAa,SAAS,QAAQ;AAAA,IACtE;AAAA,EACD;AAiBD;AAtDO;AAuCN,cAAS,gCAAC,MAAM,IAAI;AACnB,QAAM,QAAQ,IAAI,QAAQ,GAAG;AAE7B,MAAI;AACJ,MAAI;AACJ,MAAI,UAAU,IAAI;AACjB,eAAW;AACX,kBAAc;AAAA,EACf,OAAO;AACN,eAAW,IAAI,UAAU,GAAG,KAAK;AACjC,kBAAc,IAAI,UAAU,QAAQ,CAAC;AAAA,EACtC;AAEA,SAAO,EAAE,OAAO,WAAW,UAAU,QAAQ,GAAG,YAAY;AAC7D,GAdS;AAvCmC;AAAtC,IAAM,iBAAN","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, 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);\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":[],"mappings":"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","file":"PluginServerRequest.mjs","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"]}
@@ -14,5 +14,5 @@ __name(_PluginListener, "PluginListener");
14
14
  var PluginListener = _PluginListener;
15
15
 
16
16
  export { PluginListener };
17
- //# sourceMappingURL=out.js.map
17
+ //# sourceMappingURL=PluginServerRouterBranchMethodNotAllowed.mjs.map
18
18
  //# sourceMappingURL=PluginServerRouterBranchMethodNotAllowed.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerRouterBranchMethodNotAllowed.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,gBAAgB;AAGzB,SAAS,mBAAmB;AAErB,IAAM,kBAAN,MAAM,wBAAuB,SAAS;AAAA,EACrC,YAAY,SAAiC;AACnD,UAAM,SAAS,EAAE,SAAS,UAAU,OAAO,YAAY,6BAA6B,CAAC;AAAA,EACtF;AAAA,EAEgB,IAAI,GAAe,UAAuB;AACzD,QAAI,CAAC,SAAS,cAAe,UAAS,iBAAiB;AAAA,EACxD;AACD;AAR6C;AAAtC,IAAM,iBAAN","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":[],"mappings":";;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuB,QAAS,CAAA;AAAA,EACrC,YAAY,OAAiC,EAAA;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAO,EAAA,WAAA,CAAY,8BAA8B,CAAA,CAAA;AAAA,GACtF;AAAA,EAEgB,GAAA,CAAI,GAAe,QAAuB,EAAA;AACzD,IAAA,IAAI,CAAC,QAAA,CAAS,aAAe,EAAA,QAAA,CAAS,gBAAiB,EAAA,CAAA;AAAA,GACxD;AACD,CAAA,CAAA;AAR6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,CAAA;AAAtC,IAAM,cAAN,GAAA","file":"PluginServerRouterBranchMethodNotAllowed.mjs","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"]}
@@ -14,5 +14,5 @@ __name(_PluginListener, "PluginListener");
14
14
  var PluginListener = _PluginListener;
15
15
 
16
16
  export { PluginListener };
17
- //# sourceMappingURL=out.js.map
17
+ //# sourceMappingURL=PluginServerRouterBranchNotFound.mjs.map
18
18
  //# sourceMappingURL=PluginServerRouterBranchNotFound.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerRouterBranchNotFound.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,gBAAgB;AAGzB,SAAS,mBAAmB;AAErB,IAAM,kBAAN,MAAM,wBAAuB,SAAS;AAAA,EACrC,YAAY,SAAiC;AACnD,UAAM,SAAS,EAAE,SAAS,UAAU,OAAO,YAAY,qBAAqB,CAAC;AAAA,EAC9E;AAAA,EAEgB,IAAI,GAAe,UAAuB;AACzD,QAAI,CAAC,SAAS,cAAe,UAAS,SAAS;AAAA,EAChD;AACD;AAR6C;AAAtC,IAAM,iBAAN","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":[],"mappings":";;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuB,QAAS,CAAA;AAAA,EACrC,YAAY,OAAiC,EAAA;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAO,EAAA,WAAA,CAAY,sBAAsB,CAAA,CAAA;AAAA,GAC9E;AAAA,EAEgB,GAAA,CAAI,GAAe,QAAuB,EAAA;AACzD,IAAA,IAAI,CAAC,QAAA,CAAS,aAAe,EAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AAAA,GAChD;AACD,CAAA,CAAA;AAR6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,CAAA;AAAtC,IAAM,cAAN,GAAA","file":"PluginServerRouterBranchNotFound.mjs","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"]}
@@ -7,12 +7,13 @@ var _PluginListener = class _PluginListener extends Listener {
7
7
  super(context, { emitter: "server", event: ServerEvent.RouterFound });
8
8
  }
9
9
  run(request, response) {
10
- this.container.server.emit(response.writableEnded ? ServerEvent.MiddlewareFailure : ServerEvent.MiddlewareSuccess, request, response);
10
+ const event = response.writableEnded ? ServerEvent.MiddlewareFailure : ServerEvent.MiddlewareSuccess;
11
+ this.container.server.emit(event, request, response);
11
12
  }
12
13
  };
13
14
  __name(_PluginListener, "PluginListener");
14
15
  var PluginListener = _PluginListener;
15
16
 
16
17
  export { PluginListener };
17
- //# sourceMappingURL=out.js.map
18
+ //# sourceMappingURL=PluginServerRouterFound.mjs.map
18
19
  //# sourceMappingURL=PluginServerRouterFound.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/PluginServerRouterFound.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,gBAAgB;AAGzB,SAAS,mBAAmB;AAErB,IAAM,kBAAN,MAAM,wBAAuB,SAAS;AAAA,EACrC,YAAY,SAAiC;AACnD,UAAM,SAAS,EAAE,SAAS,UAAU,OAAO,YAAY,YAAY,CAAC;AAAA,EACrE;AAAA,EAEgB,IAAI,SAAqB,UAAuB;AAC/D,SAAK,UAAU,OAAO,KAAK,SAAS,gBAAgB,YAAY,oBAAoB,YAAY,mBAAmB,SAAS,QAAQ;AAAA,EACrI;AACD;AAR6C;AAAtC,IAAM,iBAAN","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\tthis.container.server.emit(response.writableEnded ? ServerEvent.MiddlewareFailure : ServerEvent.MiddlewareSuccess, request, response);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/listeners/PluginServerRouterFound.ts"],"names":[],"mappings":";;;;AAKO,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuB,QAAS,CAAA;AAAA,EACrC,YAAY,OAAiC,EAAA;AACnD,IAAA,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,UAAU,KAAO,EAAA,WAAA,CAAY,aAAa,CAAA,CAAA;AAAA,GACrE;AAAA,EAEgB,GAAA,CAAI,SAAqB,QAAuB,EAAA;AAC/D,IAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,aAAgB,GAAA,WAAA,CAAY,oBAAoB,WAAY,CAAA,iBAAA,CAAA;AACnF,IAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,IAAK,CAAA,KAAA,EAAO,SAAS,QAAQ,CAAA,CAAA;AAAA,GACpD;AACD,CAAA,CAAA;AAT6C,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,CAAA;AAAtC,IAAM,cAAN,GAAA","file":"PluginServerRouterFound.mjs","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"]}
@@ -21,5 +21,5 @@ function loadListeners() {
21
21
  __name(loadListeners, "loadListeners");
22
22
 
23
23
  export { loadListeners };
24
- //# sourceMappingURL=out.js.map
24
+ //# sourceMappingURL=_load.mjs.map
25
25
  //# sourceMappingURL=_load.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/_load.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB,wBAAwB;AACnD,SAAS,kBAAkB,mCAAmC;AAC9D,SAAS,kBAAkB,qCAAqC;AAChE,SAAS,kBAAkB,2BAA2B;AACtD,SAAS,kBAAkB,gDAAgD;AAC3E,SAAS,kBAAkB,wCAAwC;AACnE,SAAS,kBAAkB,+BAA+B;AAEnD,SAAS,gBAAgB;AAC/B,QAAM,QAAQ;AACd,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,oBAAoB,OAAO,kBAAkB,MAAM,CAAC;AAC5F,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,+BAA+B,OAAO,6BAA6B,MAAM,CAAC;AAClH,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,iCAAiC,OAAO,+BAA+B,MAAM,CAAC;AACtH,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,uBAAuB,OAAO,qBAAqB,MAAM,CAAC;AAClG,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,4CAA4C,OAAO,0CAA0C,MAAM,CAAC;AAC5I,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,oCAAoC,OAAO,kCAAkC,MAAM,CAAC;AAC5H,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,2BAA2B,OAAO,yBAAyB,MAAM,CAAC;AAC3G;AATgB","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' as const;\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":["PluginRouteError","PluginServerMiddlewareError","PluginServerMiddlewareSuccess","PluginServerRequest","PluginServerRouterBranchMethodNotAllowed","PluginServerRouterBranchNotFound","PluginServerRouterFound"],"mappings":";;;;;;;;;;AASO,SAAS,aAAgB,GAAA;AAC/B,EAAA,MAAM,KAAQ,GAAA,WAAA,CAAA;AACd,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,kBAAoB,EAAA,KAAA,EAAOA,cAAkB,EAAA,KAAA,EAAO,CAAA,CAAA;AAC5F,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,6BAA+B,EAAA,KAAA,EAAOC,gBAA6B,EAAA,KAAA,EAAO,CAAA,CAAA;AAClH,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,+BAAiC,EAAA,KAAA,EAAOC,gBAA+B,EAAA,KAAA,EAAO,CAAA,CAAA;AACtH,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,qBAAuB,EAAA,KAAA,EAAOC,gBAAqB,EAAA,KAAA,EAAO,CAAA,CAAA;AAClG,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,0CAA4C,EAAA,KAAA,EAAOC,gBAA0C,EAAA,KAAA,EAAO,CAAA,CAAA;AAC5I,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,kCAAoC,EAAA,KAAA,EAAOC,gBAAkC,EAAA,KAAA,EAAO,CAAA,CAAA;AAC5H,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,yBAA2B,EAAA,KAAA,EAAOC,gBAAyB,EAAA,KAAA,EAAO,CAAA,CAAA;AAC3G,CAAA;AATgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA","file":"_load.mjs","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' as const;\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"]}
@@ -13,5 +13,5 @@ function loadMediaParsers() {
13
13
  __name(loadMediaParsers, "loadMediaParsers");
14
14
 
15
15
  export { loadMediaParsers };
16
- //# sourceMappingURL=out.js.map
16
+ //# sourceMappingURL=_load.mjs.map
17
17
  //# sourceMappingURL=_load.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mediaParsers/_load.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,iBAAiB;AAC1B,SAAS,qBAAqB,uCAAuC;AACrE,SAAS,qBAAqB,6BAA6B;AAC3D,SAAS,qBAAqB,uBAAuB;AAE9C,SAAS,mBAAmB;AAClC,QAAM,QAAQ;AACd,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,6BAA6B,OAAO,iCAAiC,MAAM,CAAC;AACpH,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,mBAAmB,OAAO,uBAAuB,MAAM,CAAC;AAChG,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,aAAa,OAAO,iBAAiB,MAAM,CAAC;AACrF;AALgB","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginMediaParser as PluginApplicationFormUrlEncoded } from './applicationFormUrlEncoded';\nimport { PluginMediaParser as PluginApplicationJson } from './applicationJson';\nimport { PluginMediaParser as PluginTextPlain } from './textPlain';\n\nexport function loadMediaParsers() {\n\tconst store = 'mediaParsers' as const;\n\tvoid container.stores.loadPiece({ name: 'applicationFormUrlEncoded', piece: PluginApplicationFormUrlEncoded, store });\n\tvoid container.stores.loadPiece({ name: 'applicationJson', piece: PluginApplicationJson, store });\n\tvoid container.stores.loadPiece({ name: 'textPlain', piece: PluginTextPlain, store });\n}\n"]}
1
+ {"version":3,"sources":["../../../src/mediaParsers/_load.ts"],"names":["PluginApplicationFormUrlEncoded","PluginApplicationJson","PluginTextPlain"],"mappings":";;;;;;AAKO,SAAS,gBAAmB,GAAA;AAClC,EAAA,MAAM,KAAQ,GAAA,cAAA,CAAA;AACd,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,2BAA6B,EAAA,KAAA,EAAOA,iBAAiC,EAAA,KAAA,EAAO,CAAA,CAAA;AACpH,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,iBAAmB,EAAA,KAAA,EAAOC,mBAAuB,EAAA,KAAA,EAAO,CAAA,CAAA;AAChG,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,WAAa,EAAA,KAAA,EAAOC,mBAAiB,EAAA,KAAA,EAAO,CAAA,CAAA;AACrF,CAAA;AALgB,MAAA,CAAA,gBAAA,EAAA,kBAAA,CAAA","file":"_load.mjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginMediaParser as PluginApplicationFormUrlEncoded } from './applicationFormUrlEncoded';\nimport { PluginMediaParser as PluginApplicationJson } from './applicationJson';\nimport { PluginMediaParser as PluginTextPlain } from './textPlain';\n\nexport function loadMediaParsers() {\n\tconst store = 'mediaParsers' as const;\n\tvoid container.stores.loadPiece({ name: 'applicationFormUrlEncoded', piece: PluginApplicationFormUrlEncoded, store });\n\tvoid container.stores.loadPiece({ name: 'applicationJson', piece: PluginApplicationJson, store });\n\tvoid container.stores.loadPiece({ name: 'textPlain', piece: PluginTextPlain, store });\n}\n"]}
@@ -16,5 +16,5 @@ __name(_PluginMediaParser, "PluginMediaParser");
16
16
  var PluginMediaParser = _PluginMediaParser;
17
17
 
18
18
  export { PluginMediaParser };
19
- //# sourceMappingURL=out.js.map
19
+ //# sourceMappingURL=applicationFormUrlEncoded.mjs.map
20
20
  //# sourceMappingURL=applicationFormUrlEncoded.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mediaParsers/applicationFormUrlEncoded.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAE5B,SAAS,iBAAiB;AAEnB,IAAM,qBAAN,MAAM,2BAA0B,YAAY;AAAA,EAC3C,YAAY,SAAoC;AACtD,UAAM,SAAS,EAAE,MAAM,UAAU,0BAA0B,CAAC;AAAA,EAC7D;AAAA,EAEA,MAAsB,IAAI,SAAuC;AAChE,UAAM,OAAO,MAAM,KAAK,WAAW,OAAO;AAC1C,WAAO,KAAK,WAAW,IAAI,OAAO,OAAO,YAAY,IAAI,gBAAgB,IAAI,EAAE,QAAQ,CAAC;AAAA,EACzF;AACD;AATmD;AAA5C,IAAM,oBAAN","sourcesContent":["import { URLSearchParams } from 'url';\nimport { MediaParser } from '../lib/structures/MediaParser';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport { MimeTypes } from '../lib/utils/MimeTypes';\n\nexport class PluginMediaParser extends MediaParser {\n\tpublic constructor(context: MediaParser.LoaderContext) {\n\t\tsuper(context, { name: MimeTypes.ApplicationFormUrlEncoded });\n\t}\n\n\tpublic override async run(request: ApiRequest): Promise<unknown> {\n\t\tconst body = await this.readString(request);\n\t\treturn body.length === 0 ? null : Object.fromEntries(new URLSearchParams(body).entries());\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/mediaParsers/applicationFormUrlEncoded.ts"],"names":[],"mappings":";;;;;AAKO,IAAM,kBAAA,GAAN,MAAM,kBAAA,SAA0B,WAAY,CAAA;AAAA,EAC3C,YAAY,OAAoC,EAAA;AACtD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,IAAM,EAAA,SAAA,CAAU,2BAA2B,CAAA,CAAA;AAAA,GAC7D;AAAA,EAEA,MAAsB,IAAI,OAAuC,EAAA;AAChE,IAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,UAAA,CAAW,OAAO,CAAA,CAAA;AAC1C,IAAO,OAAA,IAAA,CAAK,MAAW,KAAA,CAAA,GAAI,IAAO,GAAA,MAAA,CAAO,WAAY,CAAA,IAAI,eAAgB,CAAA,IAAI,CAAE,CAAA,OAAA,EAAS,CAAA,CAAA;AAAA,GACzF;AACD,CAAA,CAAA;AATmD,MAAA,CAAA,kBAAA,EAAA,mBAAA,CAAA,CAAA;AAA5C,IAAM,iBAAN,GAAA","file":"applicationFormUrlEncoded.mjs","sourcesContent":["import { URLSearchParams } from 'url';\nimport { MediaParser } from '../lib/structures/MediaParser';\nimport type { ApiRequest } from '../lib/structures/api/ApiRequest';\nimport { MimeTypes } from '../lib/utils/MimeTypes';\n\nexport class PluginMediaParser extends MediaParser {\n\tpublic constructor(context: MediaParser.LoaderContext) {\n\t\tsuper(context, { name: MimeTypes.ApplicationFormUrlEncoded });\n\t}\n\n\tpublic override async run(request: ApiRequest): Promise<unknown> {\n\t\tconst body = await this.readString(request);\n\t\treturn body.length === 0 ? null : Object.fromEntries(new URLSearchParams(body).entries());\n\t}\n}\n"]}
@@ -15,5 +15,5 @@ __name(_PluginMediaParser, "PluginMediaParser");
15
15
  var PluginMediaParser = _PluginMediaParser;
16
16
 
17
17
  export { PluginMediaParser };
18
- //# sourceMappingURL=out.js.map
18
+ //# sourceMappingURL=applicationJson.mjs.map
19
19
  //# sourceMappingURL=applicationJson.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mediaParsers/applicationJson.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB;AAEnB,IAAM,qBAAN,MAAM,2BAA0B,YAAY;AAAA,EAC3C,YAAY,SAAoC;AACtD,UAAM,SAAS,EAAE,MAAM,UAAU,gBAAgB,CAAC;AAAA,EACnD;AAAA,EAEA,MAAsB,IAAI,SAAgD;AACzE,UAAM,OAAO,MAAM,KAAK,WAAW,OAAO;AAC1C,WAAO,KAAK,WAAW,IAAI,OAAO,KAAK,MAAM,IAAI;AAAA,EAClD;AACD;AATmD;AAA5C,IAAM,oBAAN","sourcesContent":["import { MediaParser } from '../lib/structures/MediaParser';\nimport { MimeTypes } from '../lib/utils/MimeTypes';\n\nexport class PluginMediaParser extends MediaParser {\n\tpublic constructor(context: MediaParser.LoaderContext) {\n\t\tsuper(context, { name: MimeTypes.ApplicationJson });\n\t}\n\n\tpublic override async run(request: MediaParser.Request): Promise<unknown> {\n\t\tconst body = await this.readString(request);\n\t\treturn body.length === 0 ? null : JSON.parse(body);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/mediaParsers/applicationJson.ts"],"names":[],"mappings":";;;;AAGO,IAAM,kBAAA,GAAN,MAAM,kBAAA,SAA0B,WAAY,CAAA;AAAA,EAC3C,YAAY,OAAoC,EAAA;AACtD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,IAAM,EAAA,SAAA,CAAU,iBAAiB,CAAA,CAAA;AAAA,GACnD;AAAA,EAEA,MAAsB,IAAI,OAAgD,EAAA;AACzE,IAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,UAAA,CAAW,OAAO,CAAA,CAAA;AAC1C,IAAA,OAAO,KAAK,MAAW,KAAA,CAAA,GAAI,IAAO,GAAA,IAAA,CAAK,MAAM,IAAI,CAAA,CAAA;AAAA,GAClD;AACD,CAAA,CAAA;AATmD,MAAA,CAAA,kBAAA,EAAA,mBAAA,CAAA,CAAA;AAA5C,IAAM,iBAAN,GAAA","file":"applicationJson.mjs","sourcesContent":["import { MediaParser } from '../lib/structures/MediaParser';\nimport { MimeTypes } from '../lib/utils/MimeTypes';\n\nexport class PluginMediaParser extends MediaParser {\n\tpublic constructor(context: MediaParser.LoaderContext) {\n\t\tsuper(context, { name: MimeTypes.ApplicationJson });\n\t}\n\n\tpublic override async run(request: MediaParser.Request): Promise<unknown> {\n\t\tconst body = await this.readString(request);\n\t\treturn body.length === 0 ? null : JSON.parse(body);\n\t}\n}\n"]}
@@ -15,5 +15,5 @@ __name(_PluginMediaParser, "PluginMediaParser");
15
15
  var PluginMediaParser = _PluginMediaParser;
16
16
 
17
17
  export { PluginMediaParser };
18
- //# sourceMappingURL=out.js.map
18
+ //# sourceMappingURL=textPlain.mjs.map
19
19
  //# sourceMappingURL=textPlain.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mediaParsers/textPlain.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB;AAEnB,IAAM,qBAAN,MAAM,2BAA0B,YAAY;AAAA,EAC3C,YAAY,SAAoC;AACtD,UAAM,SAAS,EAAE,MAAM,UAAU,UAAU,CAAC;AAAA,EAC7C;AAAA,EAEA,MAAsB,IAAI,SAAgD;AACzE,UAAM,OAAO,MAAM,KAAK,WAAW,OAAO;AAC1C,WAAO,KAAK,WAAW,IAAI,OAAO;AAAA,EACnC;AACD;AATmD;AAA5C,IAAM,oBAAN","sourcesContent":["import { MediaParser } from '../lib/structures/MediaParser';\nimport { MimeTypes } from '../lib/utils/MimeTypes';\n\nexport class PluginMediaParser extends MediaParser {\n\tpublic constructor(context: MediaParser.LoaderContext) {\n\t\tsuper(context, { name: MimeTypes.TextPlain });\n\t}\n\n\tpublic override async run(request: MediaParser.Request): Promise<unknown> {\n\t\tconst body = await this.readString(request);\n\t\treturn body.length === 0 ? null : body;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/mediaParsers/textPlain.ts"],"names":[],"mappings":";;;;AAGO,IAAM,kBAAA,GAAN,MAAM,kBAAA,SAA0B,WAAY,CAAA;AAAA,EAC3C,YAAY,OAAoC,EAAA;AACtD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,IAAM,EAAA,SAAA,CAAU,WAAW,CAAA,CAAA;AAAA,GAC7C;AAAA,EAEA,MAAsB,IAAI,OAAgD,EAAA;AACzE,IAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,UAAA,CAAW,OAAO,CAAA,CAAA;AAC1C,IAAO,OAAA,IAAA,CAAK,MAAW,KAAA,CAAA,GAAI,IAAO,GAAA,IAAA,CAAA;AAAA,GACnC;AACD,CAAA,CAAA;AATmD,MAAA,CAAA,kBAAA,EAAA,mBAAA,CAAA,CAAA;AAA5C,IAAM,iBAAN,GAAA","file":"textPlain.mjs","sourcesContent":["import { MediaParser } from '../lib/structures/MediaParser';\nimport { MimeTypes } from '../lib/utils/MimeTypes';\n\nexport class PluginMediaParser extends MediaParser {\n\tpublic constructor(context: MediaParser.LoaderContext) {\n\t\tsuper(context, { name: MimeTypes.TextPlain });\n\t}\n\n\tpublic override async run(request: MediaParser.Request): Promise<unknown> {\n\t\tconst body = await this.readString(request);\n\t\treturn body.length === 0 ? null : body;\n\t}\n}\n"]}
@@ -15,5 +15,5 @@ function loadMiddlewares() {
15
15
  __name(loadMiddlewares, "loadMiddlewares");
16
16
 
17
17
  export { loadMiddlewares };
18
- //# sourceMappingURL=out.js.map
18
+ //# sourceMappingURL=_load.mjs.map
19
19
  //# sourceMappingURL=_load.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/_load.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB,kBAAkB;AAC/C,SAAS,oBAAoB,kBAAkB;AAC/C,SAAS,oBAAoB,qBAAqB;AAClD,SAAS,oBAAoB,qBAAqB;AAE3C,SAAS,kBAAkB;AACjC,QAAM,QAAQ;AACd,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,QAAQ,OAAO,YAAY,MAAM,CAAC;AAC1E,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,QAAQ,OAAO,YAAY,MAAM,CAAC;AAC1E,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,WAAW,OAAO,eAAe,MAAM,CAAC;AAChF,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,WAAW,OAAO,eAAe,MAAM,CAAC;AACjF;AANgB","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' as const;\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":["PluginAuth","PluginBody","PluginCookies","PluginHeaders"],"mappings":";;;;;;;AAMO,SAAS,eAAkB,GAAA;AACjC,EAAA,MAAM,KAAQ,GAAA,aAAA,CAAA;AACd,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,MAAQ,EAAA,KAAA,EAAOA,gBAAY,EAAA,KAAA,EAAO,CAAA,CAAA;AAC1E,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,MAAQ,EAAA,KAAA,EAAOC,kBAAY,EAAA,KAAA,EAAO,CAAA,CAAA;AAC1E,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,SAAW,EAAA,KAAA,EAAOC,kBAAe,EAAA,KAAA,EAAO,CAAA,CAAA;AAChF,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,SAAW,EAAA,KAAA,EAAOC,kBAAe,EAAA,KAAA,EAAO,CAAA,CAAA;AACjF,CAAA;AANgB,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA","file":"_load.mjs","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' as const;\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"]}
@@ -23,5 +23,5 @@ __name(_PluginMiddleware, "PluginMiddleware");
23
23
  var PluginMiddleware = _PluginMiddleware;
24
24
 
25
25
  export { PluginMiddleware };
26
- //# sourceMappingURL=out.js.map
26
+ //# sourceMappingURL=auth.mjs.map
27
27
  //# sourceMappingURL=auth.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/auth.ts"],"names":[],"mappings":";;;;;;AAAA,SAAS,kBAAkB;AAEpB,IAAM,oBAAN,MAAM,0BAAyB,WAAW;AAAA,EAGzC,YAAY,SAAmC;AACrD,UAAM,SAAS,EAAE,UAAU,GAAG,CAAC;AAHhC,wBAAiB;AAKhB,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,SAAK,aAAa,OAAO,MAAM,UAAU;AACzC,SAAK,UAAU,OAAO,SAAS;AAAA,EAChC;AAAA,EAEgB,IAAI,SAA6B,UAA+B;AAE/E,UAAM,gBAAgB,SAAS,QAAQ,IAAI,KAAK,UAAU;AAC1D,QAAI,CAAC,eAAe;AACnB,cAAQ,OAAO;AACf;AAAA,IACD;AAGA,YAAQ,OAAO,KAAK,UAAU,OAAO,KAAM,QAAQ,aAAa;AAChE,QAAI,QAAQ,SAAS,KAAM,UAAS,QAAQ,OAAO,KAAK,UAAU;AAAA,EACnE;AACD;AAvBiD;AAA1C,IAAM,mBAAN","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":[],"mappings":";;;AAEO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyB,UAAW,CAAA;AAAA,EAGzC,YAAY,OAAmC,EAAA;AACrD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,QAAU,EAAA,EAAA,EAAI,CAAA,CAAA;AAHhC,IAAiB,aAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AAKhB,IAAM,MAAA,EAAE,MAAO,EAAA,GAAI,IAAK,CAAA,SAAA,CAAA;AACxB,IAAK,IAAA,CAAA,UAAA,GAAa,MAAO,CAAA,IAAA,EAAM,MAAU,IAAA,eAAA,CAAA;AACzC,IAAK,IAAA,CAAA,OAAA,GAAU,OAAO,IAAS,KAAA,IAAA,CAAA;AAAA,GAChC;AAAA,EAEgB,GAAA,CAAI,SAA6B,QAA+B,EAAA;AAE/E,IAAA,MAAM,aAAgB,GAAA,QAAA,CAAS,OAAQ,CAAA,GAAA,CAAI,KAAK,UAAU,CAAA,CAAA;AAC1D,IAAA,IAAI,CAAC,aAAe,EAAA;AACnB,MAAA,OAAA,CAAQ,IAAO,GAAA,IAAA,CAAA;AACf,MAAA,OAAA;AAAA,KACD;AAGA,IAAA,OAAA,CAAQ,OAAO,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,IAAA,CAAM,QAAQ,aAAa,CAAA,CAAA;AAChE,IAAA,IAAI,QAAQ,IAAS,KAAA,IAAA,WAAe,OAAQ,CAAA,MAAA,CAAO,KAAK,UAAU,CAAA,CAAA;AAAA,GACnE;AACD,CAAA,CAAA;AAvBiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA,CAAA;AAA1C,IAAM,gBAAN,GAAA","file":"auth.mjs","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"]}
@@ -37,5 +37,5 @@ __name(_PluginMiddleware, "PluginMiddleware");
37
37
  var PluginMiddleware = _PluginMiddleware;
38
38
 
39
39
  export { PluginMiddleware };
40
- //# sourceMappingURL=out.js.map
40
+ //# sourceMappingURL=body.mjs.map
41
41
  //# sourceMappingURL=body.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/body.ts"],"names":[],"mappings":";;;;;;AAAA,SAAS,iBAAiB;AAE1B,SAAS,kBAAkB;AAEpB,IAAM,oBAAN,MAAM,0BAAyB,WAAW;AAAA,EAGzC,YAAY,SAAmC;AACrD,UAAM,SAAS,EAAE,UAAU,GAAG,CAAC;AAHhC,wBAAiB;AAIhB,SAAK,eAAe,KAAK,UAAU,OAAO;AAAA,EAC3C;AAAA,EAEA,MAAsB,IAAI,SAA6B,UAA+B;AACrF,QAAI,CAAC,QAAQ,MAAO;AAGpB,UAAM,cAAc,QAAQ,QAAQ,cAAc;AAClD,QAAI,OAAO,gBAAgB,SAAU;AAGrC,UAAM,eAAe,QAAQ,QAAQ,gBAAgB;AACrD,QAAI,OAAO,iBAAiB,SAAU;AAGtC,UAAM,SAAS,OAAO,YAAY;AAClC,UAAM,gBAAgB,QAAQ,MAAM;AACpC,QAAI,SAAS,eAAe;AAC3B,eAAS,OAAO,UAAU,eAAe,EAAE,KAAK,EAAE,OAAO,mCAAmC,CAAC;AAC7F;AAAA,IACD;AAGA,UAAM,OAAO,KAAK,aAAa,iBAAiB,WAAW;AAC3D,UAAM,SAAS,KAAK,aAAa,IAAI,IAAI;AACzC,QAAI,CAAC,UAAU,CAAC,OAAO,QAAQ,QAAQ,KAAK,GAAG;AAC9C,eAAS,OAAO,UAAU,oBAAoB,EAAE,KAAK,EAAE,OAAO,oBAAoB,IAAI,IAAI,CAAC;AAC3F;AAAA,IACD;AAEA,QAAI;AAEH,cAAQ,OAAO,MAAM,OAAO,IAAI,OAAO;AAAA,IACxC,QAAQ;AACP,eAAS,OAAO,UAAU,UAAU,EAAE,KAAK,EAAE,OAAO,gBAAgB,IAAI,SAAS,CAAC;AAAA,IACnF;AAAA,EACD;AACD;AA1CiD;AAA1C,IAAM,mBAAN","sourcesContent":["import { HttpCodes } from '../lib/structures/http/HttpCodes';\nimport type { MediaParserStore } from '../lib/structures/MediaParserStore';\nimport { Middleware } from '../lib/structures/Middleware';\n\nexport class PluginMiddleware extends Middleware {\n\tprivate readonly mediaParsers: MediaParserStore;\n\n\tpublic constructor(context: Middleware.LoaderContext) {\n\t\tsuper(context, { position: 20 });\n\t\tthis.mediaParsers = this.container.server.mediaParsers;\n\t}\n\n\tpublic override async 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\treturn;\n\t\t}\n\n\t\t// Verify if the content type is supported by the parser:\n\t\tconst type = this.mediaParsers.parseContentType(contentType);\n\t\tconst parser = this.mediaParsers.get(type);\n\t\tif (!parser || !parser.accepts(request.route)) {\n\t\t\tresponse.status(HttpCodes.UnsupportedMediaType).json({ error: `Unsupported type ${type}.` });\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\t// Parse the content body:\n\t\t\trequest.body = await parser.run(request);\n\t\t} catch {\n\t\t\tresponse.status(HttpCodes.BadRequest).json({ error: `Cannot parse ${type} data.` });\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/middlewares/body.ts"],"names":[],"mappings":";;;;AAIO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyB,UAAW,CAAA;AAAA,EAGzC,YAAY,OAAmC,EAAA;AACrD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,QAAU,EAAA,EAAA,EAAI,CAAA,CAAA;AAHhC,IAAiB,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA,CAAA;AAIhB,IAAK,IAAA,CAAA,YAAA,GAAe,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,YAAA,CAAA;AAAA,GAC3C;AAAA,EAEA,MAAsB,GAAI,CAAA,OAAA,EAA6B,QAA+B,EAAA;AACrF,IAAI,IAAA,CAAC,QAAQ,KAAO,EAAA,OAAA;AAGpB,IAAM,MAAA,WAAA,GAAc,OAAQ,CAAA,OAAA,CAAQ,cAAc,CAAA,CAAA;AAClD,IAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA,OAAA;AAGrC,IAAM,MAAA,YAAA,GAAe,OAAQ,CAAA,OAAA,CAAQ,gBAAgB,CAAA,CAAA;AACrD,IAAI,IAAA,OAAO,iBAAiB,QAAU,EAAA,OAAA;AAGtC,IAAM,MAAA,MAAA,GAAS,OAAO,YAAY,CAAA,CAAA;AAClC,IAAM,MAAA,aAAA,GAAgB,QAAQ,KAAM,CAAA,iBAAA,CAAA;AACpC,IAAA,IAAI,SAAS,aAAe,EAAA;AAC3B,MAAS,QAAA,CAAA,MAAA,CAAO,UAAU,eAAe,CAAA,CAAE,KAAK,EAAE,KAAA,EAAO,oCAAoC,CAAA,CAAA;AAC7F,MAAA,OAAA;AAAA,KACD;AAGA,IAAA,MAAM,IAAO,GAAA,IAAA,CAAK,YAAa,CAAA,gBAAA,CAAiB,WAAW,CAAA,CAAA;AAC3D,IAAA,MAAM,MAAS,GAAA,IAAA,CAAK,YAAa,CAAA,GAAA,CAAI,IAAI,CAAA,CAAA;AACzC,IAAA,IAAI,CAAC,MAAU,IAAA,CAAC,OAAO,OAAQ,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAC9C,MAAS,QAAA,CAAA,MAAA,CAAO,SAAU,CAAA,oBAAoB,CAAE,CAAA,IAAA,CAAK,EAAE,KAAO,EAAA,CAAA,iBAAA,EAAoB,IAAI,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA;AAC3F,MAAA,OAAA;AAAA,KACD;AAEA,IAAI,IAAA;AAEH,MAAA,OAAA,CAAQ,IAAO,GAAA,MAAM,MAAO,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAAA,KAChC,CAAA,MAAA;AACP,MAAS,QAAA,CAAA,MAAA,CAAO,SAAU,CAAA,UAAU,CAAE,CAAA,IAAA,CAAK,EAAE,KAAO,EAAA,CAAA,aAAA,EAAgB,IAAI,CAAA,MAAA,CAAA,EAAU,CAAA,CAAA;AAAA,KACnF;AAAA,GACD;AACD,CAAA,CAAA;AA1CiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA,CAAA;AAA1C,IAAM,gBAAN,GAAA","file":"body.mjs","sourcesContent":["import { HttpCodes } from '../lib/structures/http/HttpCodes';\nimport type { MediaParserStore } from '../lib/structures/MediaParserStore';\nimport { Middleware } from '../lib/structures/Middleware';\n\nexport class PluginMiddleware extends Middleware {\n\tprivate readonly mediaParsers: MediaParserStore;\n\n\tpublic constructor(context: Middleware.LoaderContext) {\n\t\tsuper(context, { position: 20 });\n\t\tthis.mediaParsers = this.container.server.mediaParsers;\n\t}\n\n\tpublic override async 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\treturn;\n\t\t}\n\n\t\t// Verify if the content type is supported by the parser:\n\t\tconst type = this.mediaParsers.parseContentType(contentType);\n\t\tconst parser = this.mediaParsers.get(type);\n\t\tif (!parser || !parser.accepts(request.route)) {\n\t\t\tresponse.status(HttpCodes.UnsupportedMediaType).json({ error: `Unsupported type ${type}.` });\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\t// Parse the content body:\n\t\t\trequest.body = await parser.run(request);\n\t\t} catch {\n\t\t\tresponse.status(HttpCodes.BadRequest).json({ error: `Cannot parse ${type} data.` });\n\t\t}\n\t}\n}\n"]}
@@ -18,5 +18,5 @@ __name(_PluginMiddleware, "PluginMiddleware");
18
18
  var PluginMiddleware = _PluginMiddleware;
19
19
 
20
20
  export { PluginMiddleware };
21
- //# sourceMappingURL=out.js.map
21
+ //# sourceMappingURL=cookies.mjs.map
22
22
  //# sourceMappingURL=cookies.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/cookies.ts"],"names":[],"mappings":";;;;;;AAAA,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAErB,IAAM,oBAAN,MAAM,0BAAyB,WAAW;AAAA,EAIzC,YAAY,SAAmC;AACrD,UAAM,SAAS,EAAE,UAAU,GAAG,CAAC;AAJhC,wBAAiB,cAAsB,QAAQ,IAAI,aAAa;AAChE,wBAAQ,mBAAiC;AAKxC,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,SAAK,kBAAkB,OAAO,MAAM,mBAAmB;AAAA,EACxD;AAAA,EAEgB,IAAI,SAA6B,UAA+B;AAC/E,aAAS,UAAU,IAAI,YAAY,SAAS,UAAU,KAAK,YAAY,KAAK,eAAe;AAAA,EAC5F;AACD;AAdiD;AAA1C,IAAM,mBAAN","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 domainOverwrite: string | null = 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":[],"mappings":";;;;AAGO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyB,UAAW,CAAA;AAAA,EAIzC,YAAY,OAAmC,EAAA;AACrD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,QAAU,EAAA,EAAA,EAAI,CAAA,CAAA;AAJhC,IAAiB,aAAA,CAAA,IAAA,EAAA,YAAA,EAAsB,OAAQ,CAAA,GAAA,CAAI,QAAa,KAAA,YAAA,CAAA,CAAA;AAChE,IAAA,aAAA,CAAA,IAAA,EAAQ,iBAAiC,EAAA,IAAA,CAAA,CAAA;AAKxC,IAAM,MAAA,EAAE,MAAO,EAAA,GAAI,IAAK,CAAA,SAAA,CAAA;AACxB,IAAK,IAAA,CAAA,eAAA,GAAkB,MAAO,CAAA,IAAA,EAAM,eAAmB,IAAA,IAAA,CAAA;AAAA,GACxD;AAAA,EAEgB,GAAA,CAAI,SAA6B,QAA+B,EAAA;AAC/E,IAAS,QAAA,CAAA,OAAA,GAAU,IAAI,WAAY,CAAA,OAAA,EAAS,UAAU,IAAK,CAAA,UAAA,EAAY,KAAK,eAAe,CAAA,CAAA;AAAA,GAC5F;AACD,CAAA,CAAA;AAdiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA,CAAA;AAA1C,IAAM,gBAAN,GAAA","file":"cookies.mjs","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 domainOverwrite: string | null = 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"]}
@@ -57,5 +57,5 @@ __name(_PluginMiddleware, "PluginMiddleware");
57
57
  var PluginMiddleware = _PluginMiddleware;
58
58
 
59
59
  export { PluginMiddleware };
60
- //# sourceMappingURL=out.js.map
60
+ //# sourceMappingURL=headers.mjs.map
61
61
  //# sourceMappingURL=headers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/headers.ts"],"names":[],"mappings":";;;;;;AAAA,SAAS,kBAAkB;AAG3B,SAAS,iBAAiB;AAEnB,IAAM,oBAAN,MAAM,0BAAyB,WAAW;AAAA,EAIzC,YAAY,SAAmC;AACrD,UAAM,SAAS,EAAE,UAAU,GAAG,CAAC;AAJhC,wBAAiB;AACjB,wBAAiB;AAIhB,SAAK,SAAS,KAAK,UAAU,OAAO,QAAQ,UAAU;AACtD,SAAK,SAAS,KAAK,UAAU,OAAO,IAAI,QAAQ;AAAA,EACjD;AAAA,EAEgB,IAAI,SAA6B,UAA+B;AAC/E,aAAS,UAAU,SAAQ,oBAAI,KAAK,GAAE,YAAY,CAAC;AACnD,aAAS,UAAU,oCAAoC,MAAM;AAC7D,aAAS,UAAU,+BAA+B,KAAK,MAAM;AAC7D,aAAS,UAAU,gCAAgC,yCAAyC;AAC5F,aAAS,UAAU,gCAAgC,KAAK,WAAW,QAAQ,SAAS,IAAI,CAAC;AAEzF,SAAK,yBAAyB,SAAS,QAAQ;AAAA,EAChD;AAAA,EAEQ,WAAW,OAAqB;AACvC,QAAI,UAAU,MAAM;AACnB,aAAO,KAAK,OAAO,OAAO,iBAAiB,KAAK,IAAI;AAAA,IACrD;AAEA,QAAI,MAAM,QAAQ,SAAS,EAAG,QAAO;AACrC,QAAI,MAAM,QAAQ,SAAS,EAAG,QAAO,MAAM,QAAQ,KAAK,EAAE,KAAK,EAAE;AACjE,WAAO,CAAC,GAAG,MAAM,OAAO,EAAE,KAAK,IAAI;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBQ,yBAAyB,EAAE,QAAQ,OAAO,WAAW,GAAuB,UAA+B;AAClH,QAAI,WAAW,WAAW;AACzB,UAAI,CAAC,SAAS,CAAC,MAAM,QAAQ,IAAI,SAAS,GAAG;AAC5C,iBAAS,IAAI;AAAA,MACd;AAAA,IACD,WAAW,eAAe,MAAM;AAC/B,eAAS,OAAO,UAAU,QAAQ,EAAE,IAAI;AAAA,IACzC,WAAW,UAAU,MAAM;AAC1B,eAAS,OAAO,UAAU,gBAAgB,EAAE,IAAI;AAAA,IACjD;AAAA,EACD;AACD;AAxDiD;AAA1C,IAAM,mBAAN","sourcesContent":["import { Middleware } from '../lib/structures/Middleware';\nimport type { Route } from '../lib/structures/Route';\nimport type { RouteStore } from '../lib/structures/RouteStore';\nimport { HttpCodes } from '../lib/structures/http/HttpCodes';\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.route ?? null));\n\n\t\tthis.ensurePotentialEarlyExit(request, response);\n\t}\n\n\tprivate getMethods(route: Route | null) {\n\t\tif (route === null) {\n\t\t\treturn this.routes.router.supportedMethods.join(', ');\n\t\t}\n\n\t\tif (route.methods.size === 0) return '';\n\t\tif (route.methods.size === 1) return route.methods.keys().next().value;\n\t\treturn [...route.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 || !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":[],"mappings":";;;;AAKO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyB,UAAW,CAAA;AAAA,EAIzC,YAAY,OAAmC,EAAA;AACrD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,QAAU,EAAA,EAAA,EAAI,CAAA,CAAA;AAJhC,IAAiB,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AACjB,IAAiB,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAIhB,IAAA,IAAA,CAAK,MAAS,GAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,QAAQ,MAAU,IAAA,GAAA,CAAA;AACtD,IAAA,IAAA,CAAK,MAAS,GAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,IAAI,QAAQ,CAAA,CAAA;AAAA,GACjD;AAAA,EAEgB,GAAA,CAAI,SAA6B,QAA+B,EAAA;AAC/E,IAAA,QAAA,CAAS,UAAU,MAAQ,EAAA,iBAAA,IAAI,IAAK,EAAA,EAAE,aAAa,CAAA,CAAA;AACnD,IAAS,QAAA,CAAA,SAAA,CAAU,oCAAoC,MAAM,CAAA,CAAA;AAC7D,IAAS,QAAA,CAAA,SAAA,CAAU,6BAA+B,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAC7D,IAAS,QAAA,CAAA,SAAA,CAAU,gCAAgC,yCAAyC,CAAA,CAAA;AAC5F,IAAA,QAAA,CAAS,UAAU,8BAAgC,EAAA,IAAA,CAAK,WAAW,OAAQ,CAAA,KAAA,IAAS,IAAI,CAAC,CAAA,CAAA;AAEzF,IAAK,IAAA,CAAA,wBAAA,CAAyB,SAAS,QAAQ,CAAA,CAAA;AAAA,GAChD;AAAA,EAEQ,WAAW,KAAqB,EAAA;AACvC,IAAA,IAAI,UAAU,IAAM,EAAA;AACnB,MAAA,OAAO,IAAK,CAAA,MAAA,CAAO,MAAO,CAAA,gBAAA,CAAiB,KAAK,IAAI,CAAA,CAAA;AAAA,KACrD;AAEA,IAAA,IAAI,KAAM,CAAA,OAAA,CAAQ,IAAS,KAAA,CAAA,EAAU,OAAA,EAAA,CAAA;AACrC,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,CAAG,EAAA,OAAO,MAAM,OAAQ,CAAA,IAAA,EAAO,CAAA,IAAA,EAAO,CAAA,KAAA,CAAA;AACjE,IAAA,OAAO,CAAC,GAAG,KAAA,CAAM,OAAO,CAAA,CAAE,KAAK,IAAI,CAAA,CAAA;AAAA,GACpC;AAAA;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,KAAS,IAAA,CAAC,MAAM,OAAQ,CAAA,GAAA,CAAI,SAAS,CAAG,EAAA;AAC5C,QAAA,QAAA,CAAS,GAAI,EAAA,CAAA;AAAA,OACd;AAAA,KACD,MAAA,IAAW,eAAe,IAAM,EAAA;AAC/B,MAAA,QAAA,CAAS,MAAO,CAAA,SAAA,CAAU,QAAQ,CAAA,CAAE,GAAI,EAAA,CAAA;AAAA,KACzC,MAAA,IAAW,UAAU,IAAM,EAAA;AAC1B,MAAA,QAAA,CAAS,MAAO,CAAA,SAAA,CAAU,gBAAgB,CAAA,CAAE,GAAI,EAAA,CAAA;AAAA,KACjD;AAAA,GACD;AACD,CAAA,CAAA;AAxDiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA,CAAA;AAA1C,IAAM,gBAAN,GAAA","file":"headers.mjs","sourcesContent":["import { Middleware } from '../lib/structures/Middleware';\nimport type { Route } from '../lib/structures/Route';\nimport type { RouteStore } from '../lib/structures/RouteStore';\nimport { HttpCodes } from '../lib/structures/http/HttpCodes';\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.route ?? null));\n\n\t\tthis.ensurePotentialEarlyExit(request, response);\n\t}\n\n\tprivate getMethods(route: Route | null) {\n\t\tif (route === null) {\n\t\t\treturn this.routes.router.supportedMethods.join(', ');\n\t\t}\n\n\t\tif (route.methods.size === 0) return '';\n\t\tif (route.methods.size === 1) return route.methods.keys().next().value;\n\t\treturn [...route.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 || !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"]}
@@ -30,5 +30,5 @@ SapphireClient.plugins.registerPostInitializationHook(Api[postInitialization], "
30
30
  SapphireClient.plugins.registerPreLoginHook(Api[preLogin], "API-PreLogin");
31
31
 
32
32
  export { Api };
33
- //# sourceMappingURL=out.js.map
33
+ //# sourceMappingURL=register.mjs.map
34
34
  //# sourceMappingURL=register.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/register.ts"],"names":[],"mappings":";;;;;AAAA,OAAO;AAEP,SAAS,QAAQ,oBAAoB,UAAU,sBAAsB;AAErE,SAAS,eAAe,kBAAkB,iBAAiB,YAAY,cAAc;AAK9E,IAAM,OAAN,MAAM,aAAY,OAAO;AAAA;AAAA;AAAA;AAAA,EAI/B,QAAe,kBAAkB,EAAwB,SAA8B;AACtF,SAAK,SAAS,IAAI,OAAO,QAAQ,GAAG;AACpC,SAAK,OACH,SAAS,KAAK,OAAO,MAAM,EAC3B,SAAS,KAAK,OAAO,YAAY,EACjC,SAAS,KAAK,OAAO,WAAW;AAElC,kBAAc;AACd,qBAAiB;AACjB,oBAAgB;AAChB,eAAW;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA,EAKA,cAAqB,QAAQ,IAAuC;AACnE,QAAI,EAAE,KAAK,OAAO,QAAQ,wBAAwB,OAAO;AACxD;AAAA,IACD;AAEA,UAAM,KAAK,OAAO,QAAQ;AAAA,EAC3B;AACD;AA3BgC;AAAzB,IAAM,MAAN;AA6BP,eAAe,QAAQ,+BAA+B,IAAI,kBAAkB,GAAG,wBAAwB;AACvG,eAAe,QAAQ,qBAAqB,IAAI,QAAQ,GAAG,cAAc","sourcesContent":["import './index';\n\nimport { Plugin, postInitialization, preLogin, SapphireClient } from '@sapphire/framework';\nimport type { ClientOptions } from 'discord.js';\nimport { loadListeners, loadMediaParsers, 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 [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.mediaParsers)\n\t\t\t.register(this.server.middlewares);\n\n\t\tloadListeners();\n\t\tloadMediaParsers();\n\t\tloadMiddlewares();\n\t\tloadRoutes();\n\t}\n\n\t/**\n\t * @since 1.0.0\n\t */\n\tpublic static 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":[],"mappings":";;;;AASO,IAAM,IAAA,GAAN,MAAM,IAAA,SAAY,MAAO,CAAA;AAAA;AAAA;AAAA;AAAA,EAI/B,QAAe,kBAAkB,CAAA,CAAwB,OAA8B,EAAA;AACtF,IAAA,IAAA,CAAK,MAAS,GAAA,IAAI,MAAO,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AACpC,IAAA,IAAA,CAAK,MACH,CAAA,QAAA,CAAS,IAAK,CAAA,MAAA,CAAO,MAAM,CAC3B,CAAA,QAAA,CAAS,IAAK,CAAA,MAAA,CAAO,YAAY,CAAA,CACjC,QAAS,CAAA,IAAA,CAAK,OAAO,WAAW,CAAA,CAAA;AAElC,IAAc,aAAA,EAAA,CAAA;AACd,IAAiB,gBAAA,EAAA,CAAA;AACjB,IAAgB,eAAA,EAAA,CAAA;AAChB,IAAW,UAAA,EAAA,CAAA;AAAA,GACZ;AAAA;AAAA;AAAA;AAAA,EAKA,cAAqB,QAAQ,CAAuC,GAAA;AACnE,IAAA,IAAI,EAAE,IAAA,CAAK,MAAO,CAAA,OAAA,CAAQ,wBAAwB,IAAO,CAAA,EAAA;AACxD,MAAA,OAAA;AAAA,KACD;AAEA,IAAM,MAAA,IAAA,CAAK,OAAO,OAAQ,EAAA,CAAA;AAAA,GAC3B;AACD,CAAA,CAAA;AA3BgC,MAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAAzB,IAAM,GAAN,GAAA,KAAA;AA6BP,cAAA,CAAe,OAAQ,CAAA,8BAAA,CAA+B,GAAI,CAAA,kBAAkB,GAAG,wBAAwB,CAAA,CAAA;AACvG,cAAA,CAAe,OAAQ,CAAA,oBAAA,CAAqB,GAAI,CAAA,QAAQ,GAAG,cAAc,CAAA","file":"register.mjs","sourcesContent":["import './index';\n\nimport { Plugin, postInitialization, preLogin, SapphireClient } from '@sapphire/framework';\nimport type { ClientOptions } from 'discord.js';\nimport { loadListeners, loadMediaParsers, 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 [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.mediaParsers)\n\t\t\t.register(this.server.middlewares);\n\n\t\tloadListeners();\n\t\tloadMediaParsers();\n\t\tloadMiddlewares();\n\t\tloadRoutes();\n\t}\n\n\t/**\n\t * @since 1.0.0\n\t */\n\tpublic static 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"]}
@@ -11,5 +11,5 @@ function loadRoutes() {
11
11
  __name(loadRoutes, "loadRoutes");
12
12
 
13
13
  export { loadRoutes };
14
- //# sourceMappingURL=out.js.map
14
+ //# sourceMappingURL=_load.mjs.map
15
15
  //# sourceMappingURL=_load.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/_load.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,iBAAiB;AAC1B,SAAS,eAAe,2BAA2B;AACnD,SAAS,eAAe,yBAAyB;AAE1C,SAAS,aAAa;AAC5B,QAAM,QAAQ;AACd,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,YAAY,OAAO,qBAAqB,MAAM,CAAC;AACvF,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,UAAU,OAAO,mBAAmB,MAAM,CAAC;AACpF;AAJgB","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' as const;\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":["PluginOAuthCallback","PluginOAuthLogout"],"mappings":";;;;;AAIO,SAAS,UAAa,GAAA;AAC5B,EAAA,MAAM,KAAQ,GAAA,QAAA,CAAA;AACd,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,UAAY,EAAA,KAAA,EAAOA,WAAqB,EAAA,KAAA,EAAO,CAAA,CAAA;AACvF,EAAK,KAAA,SAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,QAAU,EAAA,KAAA,EAAOC,aAAmB,EAAA,KAAA,EAAO,CAAA,CAAA;AACpF,CAAA;AAJgB,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA","file":"_load.mjs","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' as const;\n\tvoid container.stores.loadPiece({ name: 'callback', piece: PluginOAuthCallback, store });\n\tvoid container.stores.loadPiece({ name: 'logout', piece: PluginOAuthLogout, store });\n}\n"]}
@@ -65,5 +65,5 @@ __name(_PluginRoute, "PluginRoute");
65
65
  var PluginRoute = _PluginRoute;
66
66
 
67
67
  export { PluginRoute };
68
- //# sourceMappingURL=out.js.map
68
+ //# sourceMappingURL=callback.post.mjs.map
69
69
  //# sourceMappingURL=callback.post.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/routes/oauth/callback.post.ts"],"names":[],"mappings":";;;;;;AAAA,SAAS,oBAAwG;AACjH,SAAS,iBAAiB;AAC1B,SAAS,aAAa;AACtB,SAAS,aAAa;AACtB,SAAS,iBAAiB;AAEnB,IAAM,eAAN,MAAM,qBAAoB,MAAM;AAAA,EAG/B,YAAY,SAA8B;AAChD,UAAM,SAAS,EAAE,OAAO,kBAAkB,SAAS,CAAC,MAAM,EAAE,CAAC;AAH9D,wBAAiB;AAKhB,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,SAAK,UAAU,OAAO,SAAS;AAC/B,SAAK,cAAc,OAAO,MAAM;AAAA,EACjC;AAAA,EAEA,MAAsB,IAAI,SAAwB,UAA0B;AAC3E,UAAM,OAAO,QAAQ;AACrB,QAAI,OAAO,MAAM,SAAS,UAAU;AACnC,aAAO,SAAS,WAAW;AAAA,IAC5B;AAEA,UAAM,QAAQ,MAAM,KAAK,UAAU,IAAI;AACvC,QAAI,UAAU,MAAM;AACnB,aAAO,SAAS,OAAO,UAAU,mBAAmB,EAAE,KAAK,EAAE,OAAO,6BAA6B,CAAC;AAAA,IACnG;AAEA,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,OAAO,KAAK,UAAU,OAAO;AACnC,UAAM,OAAO,MAAM,KAAK,UAAU,MAAM,YAAY;AACpD,QAAI,CAAC,KAAK,MAAM;AACf,aAAO,SAAS,OAAO,UAAU,mBAAmB,EAAE,KAAK,EAAE,OAAO,4BAA4B,CAAC;AAAA,IAClG;AAEA,UAAM,QAAQ,KAAK,QAAQ;AAAA,MAC1B,IAAI,KAAK,KAAK;AAAA,MACd,SAAS,MAAM,MAAM,aAAa;AAAA,MAClC,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,IACd,CAAC;AAED,aAAS,QAAQ,IAAI,KAAK,QAAQ,OAAO,EAAE,QAAQ,MAAM,WAAW,CAAC;AACrE,WAAO,SAAS,KAAK,IAAI;AAAA,EAC1B;AAAA,EAEA,MAAc,UAAU,MAAsB;AAC7C,UAAM,EAAE,IAAI,OAAO,IAAI,KAAK,UAAU,OAAO;AAE7C,UAAM,OAAgD;AAAA;AAAA,MAErD,WAAW;AAAA,MACX,eAAe;AAAA,MACf,MAAM,KAAK;AAAA,MACX,YAAY;AAAA,MACZ,cAAc,KAAK,eAAe,KAAK;AAAA;AAAA,IAExC;AAEA,UAAM,SAAS,MAAM,MAAM,aAAa,UAAU;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM,UAAU,IAAW;AAAA,MAC3B,SAAS;AAAA,QACR,gBAAgB;AAAA,MACjB;AAAA,IACD,CAAC;AAED,UAAM,OAAO,MAAM,OAAO,KAAK;AAC/B,QAAI,OAAO,GAAI,QAAO;AAEtB,SAAK,UAAU,OAAO,MAAM,IAAI;AAChC,WAAO;AAAA,EACR;AACD;AAnEuC;AAAhC,IAAM,cAAN","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 = request.body 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":[],"mappings":";;;;;;;AAMO,IAAM,YAAA,GAAN,MAAM,YAAA,SAAoB,KAAM,CAAA;AAAA,EAG/B,YAAY,OAA8B,EAAA;AAChD,IAAM,KAAA,CAAA,OAAA,EAAS,EAAE,KAAO,EAAA,gBAAA,EAAkB,SAAS,CAAC,MAAM,GAAG,CAAA,CAAA;AAH9D,IAAiB,aAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AAKhB,IAAM,MAAA,EAAE,MAAO,EAAA,GAAI,IAAK,CAAA,SAAA,CAAA;AACxB,IAAK,IAAA,CAAA,OAAA,GAAU,OAAO,IAAS,KAAA,IAAA,CAAA;AAC/B,IAAK,IAAA,CAAA,WAAA,GAAc,OAAO,IAAM,EAAA,QAAA,CAAA;AAAA,GACjC;AAAA,EAEA,MAAsB,GAAI,CAAA,OAAA,EAAwB,QAA0B,EAAA;AAC3E,IAAA,MAAM,OAAO,OAAQ,CAAA,IAAA,CAAA;AACrB,IAAI,IAAA,OAAO,IAAM,EAAA,IAAA,KAAS,QAAU,EAAA;AACnC,MAAA,OAAO,SAAS,UAAW,EAAA,CAAA;AAAA,KAC5B;AAEA,IAAA,MAAM,KAAQ,GAAA,MAAM,IAAK,CAAA,SAAA,CAAU,IAAI,CAAA,CAAA;AACvC,IAAA,IAAI,UAAU,IAAM,EAAA;AACnB,MAAO,OAAA,QAAA,CAAS,OAAO,SAAU,CAAA,mBAAmB,EAAE,IAAK,CAAA,EAAE,KAAO,EAAA,4BAAA,EAA8B,CAAA,CAAA;AAAA,KACnG;AAEA,IAAM,MAAA,GAAA,GAAM,KAAK,GAAI,EAAA,CAAA;AACrB,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,IAAA,CAAA;AACnC,IAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,SAAA,CAAU,MAAM,YAAY,CAAA,CAAA;AACpD,IAAI,IAAA,CAAC,KAAK,IAAM,EAAA;AACf,MAAO,OAAA,QAAA,CAAS,OAAO,SAAU,CAAA,mBAAmB,EAAE,IAAK,CAAA,EAAE,KAAO,EAAA,2BAAA,EAA6B,CAAA,CAAA;AAAA,KAClG;AAEA,IAAM,MAAA,KAAA,GAAQ,KAAK,OAAQ,CAAA;AAAA,MAC1B,EAAA,EAAI,KAAK,IAAK,CAAA,EAAA;AAAA,MACd,OAAA,EAAS,GAAM,GAAA,KAAA,CAAM,UAAa,GAAA,GAAA;AAAA,MAClC,SAAS,KAAM,CAAA,aAAA;AAAA,MACf,OAAO,KAAM,CAAA,YAAA;AAAA,KACb,CAAA,CAAA;AAED,IAAS,QAAA,CAAA,OAAA,CAAQ,IAAI,IAAK,CAAA,MAAA,EAAQ,OAAO,EAAE,MAAA,EAAQ,KAAM,CAAA,UAAA,EAAY,CAAA,CAAA;AACrE,IAAO,OAAA,QAAA,CAAS,KAAK,IAAI,CAAA,CAAA;AAAA,GAC1B;AAAA,EAEA,MAAc,UAAU,IAAsB,EAAA;AAC7C,IAAA,MAAM,EAAE,EAAI,EAAA,MAAA,EAAW,GAAA,IAAA,CAAK,UAAU,MAAO,CAAA,IAAA,CAAA;AAE7C,IAAA,MAAM,IAAgD,GAAA;AAAA;AAAA,MAErD,SAAW,EAAA,EAAA;AAAA,MACX,aAAe,EAAA,MAAA;AAAA,MACf,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,UAAY,EAAA,oBAAA;AAAA,MACZ,YAAA,EAAc,IAAK,CAAA,WAAA,IAAe,IAAK,CAAA,WAAA;AAAA;AAAA,KAExC,CAAA;AAEA,IAAA,MAAM,MAAS,GAAA,MAAM,KAAM,CAAA,YAAA,CAAa,QAAU,EAAA;AAAA,MACjD,MAAQ,EAAA,MAAA;AAAA,MACR,IAAA,EAAM,UAAU,IAAW,CAAA;AAAA,MAC3B,OAAS,EAAA;AAAA,QACR,cAAgB,EAAA,mCAAA;AAAA,OACjB;AAAA,KACA,CAAA,CAAA;AAED,IAAM,MAAA,IAAA,GAAO,MAAM,MAAA,CAAO,IAAK,EAAA,CAAA;AAC/B,IAAI,IAAA,MAAA,CAAO,IAAW,OAAA,IAAA,CAAA;AAEtB,IAAK,IAAA,CAAA,SAAA,CAAU,MAAO,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAChC,IAAO,OAAA,IAAA,CAAA;AAAA,GACR;AACD,CAAA,CAAA;AAnEuC,MAAA,CAAA,YAAA,EAAA,aAAA,CAAA,CAAA;AAAhC,IAAM,WAAN,GAAA","file":"callback.post.mjs","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 = request.body 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"]}
@@ -54,5 +54,5 @@ __name(_PluginRoute, "PluginRoute");
54
54
  var PluginRoute = _PluginRoute;
55
55
 
56
56
  export { PluginRoute };
57
- //# sourceMappingURL=out.js.map
57
+ //# sourceMappingURL=logout.post.mjs.map
58
58
  //# sourceMappingURL=logout.post.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/routes/oauth/logout.post.ts"],"names":["result"],"mappings":";;;;;AAAA,SAAS,aAAa;AACtB,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;AAC1B,SAAS,aAAa;AACtB,SAAS,aAAa;AACtB,SAAS,iBAAiB;AAEnB,IAAM,eAAN,MAAM,qBAAoB,MAAM;AAAA,EAC/B,YAAY,SAA8B;AAChD,UAAM,SAAS,EAAE,OAAO,gBAAgB,SAAS,CAAC,MAAM,EAAE,CAAC;AAC3D,SAAK,UAAU,KAAK,UAAU,OAAO,SAAS;AAAA,EAC/C;AAAA,EAEA,MAAsB,IAAI,SAAwB,UAA0B;AAC3E,QAAI,CAAC,QAAQ,KAAM,QAAO,SAAS,OAAO,UAAU,YAAY,EAAE,KAAK,EAAE,OAAO,gBAAgB,CAAC;AAEjG,UAAM,SAAS,MAAM,KAAK,OAAO,QAAQ,KAAK,KAAK;AACnD,QAAI,OAAO,GAAI,QAAO,KAAK,QAAQ,QAAQ;AAM3C,QAAI,OAAO,WAAW,UAAU,oBAAoB;AAMnD,YAAM,aAAa,KAAK,kBAAkB,OAAO,QAAQ,IAAI,aAAa,CAAC;AAC3E,UAAI,YAAY;AACf,cAAM,MAAM,UAAU;AAEtB,cAAMA,UAAS,MAAM,KAAK,OAAO,QAAQ,KAAK,KAAK;AACnD,YAAIA,QAAO,GAAI,QAAO,KAAK,QAAQ,QAAQ;AAAA,MAC5C;AAAA,IACD;AAQA,WAAO,SAAS,OAAO,UAAU,mBAAmB,EAAE,KAAK,EAAE,OAAO,gCAAgC,CAAC;AAAA,EACtG;AAAA,EAEQ,QAAQ,UAA0B;AAEzC,aAAS,QAAQ,OAAO,KAAK,UAAU,OAAO,KAAM,MAAM;AAC1D,WAAO,SAAS,KAAK,EAAE,SAAS,KAAK,CAAC;AAAA,EACvC;AAAA,EAEA,MAAc,OAAO,OAAe;AACnC,UAAM,OAAO,KAAK,UAAU,OAAO;AAkBnC,UAAM,SAAS,MAAM,MAAM,aAAa,oBAAoB;AAAA,MAC3D,QAAQ;AAAA,MACR,MAAM,UAAU;AAAA,QACf;AAAA;AAAA,QAEA,WAAW,KAAK;AAAA,QAChB,eAAe,KAAK;AAAA;AAAA,MAErB,CAAC;AAAA,MACD,SAAS;AAAA,QACR,gBAAgB;AAAA,MACjB;AAAA,IACD,CAAC;AAED,WAAO;AAAA,EACR;AAAA,EAEQ,kBAAkB,YAA2B;AAGpD,WAAO,eAAe,OAAO,MAAO,OAAO,UAAU,IAAI;AAAA,EAC1D;AACD;AAvFuC;AAAhC,IAAM,cAAN","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":["result"],"mappings":";;;;;;;;AAOO,IAAM,YAAA,GAAN,MAAM,YAAA,SAAoB,KAAM,CAAA;AAAA,EAC/B,YAAY,OAA8B,EAAA;AAChD,IAAM,KAAA,CAAA,OAAA,EAAS,EAAE,KAAO,EAAA,cAAA,EAAgB,SAAS,CAAC,MAAM,GAAG,CAAA,CAAA;AAC3D,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,IAAS,KAAA,IAAA,CAAA;AAAA,GAC/C;AAAA,EAEA,MAAsB,GAAI,CAAA,OAAA,EAAwB,QAA0B,EAAA;AAC3E,IAAA,IAAI,CAAC,OAAA,CAAQ,IAAM,EAAA,OAAO,QAAS,CAAA,MAAA,CAAO,SAAU,CAAA,YAAY,CAAE,CAAA,IAAA,CAAK,EAAE,KAAA,EAAO,iBAAiB,CAAA,CAAA;AAEjG,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,KAAK,CAAA,CAAA;AACnD,IAAA,IAAI,MAAO,CAAA,EAAA,EAAW,OAAA,IAAA,CAAK,QAAQ,QAAQ,CAAA,CAAA;AAM3C,IAAI,IAAA,MAAA,CAAO,MAAW,KAAA,SAAA,CAAU,kBAAoB,EAAA;AAMnD,MAAA,MAAM,aAAa,IAAK,CAAA,iBAAA,CAAkB,OAAO,OAAQ,CAAA,GAAA,CAAI,aAAa,CAAC,CAAA,CAAA;AAC3E,MAAA,IAAI,UAAY,EAAA;AACf,QAAA,MAAM,MAAM,UAAU,CAAA,CAAA;AAEtB,QAAA,MAAMA,UAAS,MAAM,IAAA,CAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,KAAK,CAAA,CAAA;AACnD,QAAA,IAAIA,OAAO,CAAA,EAAA,EAAW,OAAA,IAAA,CAAK,QAAQ,QAAQ,CAAA,CAAA;AAAA,OAC5C;AAAA,KACD;AAQA,IAAO,OAAA,QAAA,CAAS,OAAO,SAAU,CAAA,mBAAmB,EAAE,IAAK,CAAA,EAAE,KAAO,EAAA,+BAAA,EAAiC,CAAA,CAAA;AAAA,GACtG;AAAA,EAEQ,QAAQ,QAA0B,EAAA;AAEzC,IAAA,QAAA,CAAS,QAAQ,MAAO,CAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,KAAM,MAAM,CAAA,CAAA;AAC1D,IAAA,OAAO,QAAS,CAAA,IAAA,CAAK,EAAE,OAAA,EAAS,MAAM,CAAA,CAAA;AAAA,GACvC;AAAA,EAEA,MAAc,OAAO,KAAe,EAAA;AACnC,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,IAAA,CAAA;AAkBnC,IAAA,MAAM,MAAS,GAAA,MAAM,KAAM,CAAA,YAAA,CAAa,kBAAoB,EAAA;AAAA,MAC3D,MAAQ,EAAA,MAAA;AAAA,MACR,MAAM,SAAU,CAAA;AAAA,QACf,KAAA;AAAA;AAAA,QAEA,WAAW,IAAK,CAAA,EAAA;AAAA,QAChB,eAAe,IAAK,CAAA,MAAA;AAAA;AAAA,OAEpB,CAAA;AAAA,MACD,OAAS,EAAA;AAAA,QACR,cAAgB,EAAA,mCAAA;AAAA,OACjB;AAAA,KACA,CAAA,CAAA;AAED,IAAO,OAAA,MAAA,CAAA;AAAA,GACR;AAAA,EAEQ,kBAAkB,UAA2B,EAAA;AAGpD,IAAA,OAAO,UAAe,KAAA,IAAA,GAAO,GAAO,GAAA,MAAA,CAAO,UAAU,CAAI,GAAA,GAAA,CAAA;AAAA,GAC1D;AACD,CAAA,CAAA;AAvFuC,MAAA,CAAA,YAAA,EAAA,aAAA,CAAA,CAAA;AAAhC,IAAM,WAAN,GAAA","file":"logout.post.mjs","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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapphire/plugin-api",
3
- "version": "7.0.0-next.ce675e0",
3
+ "version": "7.0.0-next.d6024cd",
4
4
  "description": "Plugin for @sapphire/framework to expose a REST API",
5
5
  "author": "@sapphire",
6
6
  "license": "MIT",
@@ -50,9 +50,9 @@
50
50
  "check-update": "cliff-jumper --dry-run"
51
51
  },
52
52
  "dependencies": {
53
- "@types/ws": "^8.5.10",
54
- "@vladfrangu/async_event_emitter": "2.4.0",
55
- "tldts": "^6.1.30",
53
+ "@types/ws": "^8.5.11",
54
+ "@vladfrangu/async_event_emitter": "2.4.4",
55
+ "tldts": "^6.1.33",
56
56
  "undici": "^6.19.2"
57
57
  },
58
58
  "repository": {
@@ -87,8 +87,8 @@
87
87
  "@favware/cliff-jumper": "^4.0.2",
88
88
  "@favware/rollup-type-bundler": "^3.3.0",
89
89
  "concurrently": "^8.2.2",
90
- "tsup": "^8.1.0",
91
- "tsx": "^4.16.0",
90
+ "tsup": "^8.2.1",
91
+ "tsx": "^4.16.2",
92
92
  "typedoc": "^0.25.13",
93
93
  "typedoc-json-parser": "^10.0.0",
94
94
  "typescript": "~5.4.5"