@sapphire/plugin-api 7.0.0-next.7ba75bc → 7.0.0-next.821ff70

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 (89) hide show
  1. package/dist/cjs/index.cjs +5 -24
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/index.d.cts +79 -82
  4. package/dist/cjs/lib/structures/Route.cjs +0 -5
  5. package/dist/cjs/lib/structures/Route.cjs.map +1 -1
  6. package/dist/cjs/lib/structures/api/ApiRequest.cjs +128 -4
  7. package/dist/cjs/lib/structures/api/ApiRequest.cjs.map +1 -1
  8. package/dist/cjs/lib/structures/http/Auth.cjs.map +1 -1
  9. package/dist/cjs/lib/structures/http/HttpMethods.cjs +1 -0
  10. package/dist/cjs/lib/structures/http/HttpMethods.cjs.map +1 -1
  11. package/dist/cjs/lib/structures/http/Server.cjs +1 -8
  12. package/dist/cjs/lib/structures/http/Server.cjs.map +1 -1
  13. package/dist/cjs/lib/structures/router/RouterRoot.cjs +0 -1
  14. package/dist/cjs/lib/structures/router/RouterRoot.cjs.map +1 -1
  15. package/dist/cjs/lib/utils/_body/RequestHeadersProxy.cjs +100 -0
  16. package/dist/cjs/lib/utils/_body/RequestHeadersProxy.cjs.map +1 -0
  17. package/dist/cjs/lib/utils/_body/RequestProxy.cjs +123 -0
  18. package/dist/cjs/lib/utils/_body/RequestProxy.cjs.map +1 -0
  19. package/dist/cjs/lib/utils/_body/RequestURLProxy.cjs +179 -0
  20. package/dist/cjs/lib/utils/_body/RequestURLProxy.cjs.map +1 -0
  21. package/dist/cjs/lib/utils/constants.cjs +8 -0
  22. package/dist/cjs/lib/utils/constants.cjs.map +1 -0
  23. package/dist/cjs/listeners/_load.cjs.map +1 -1
  24. package/dist/cjs/middlewares/_load.cjs.map +1 -1
  25. package/dist/cjs/middlewares/body.cjs +1 -17
  26. package/dist/cjs/middlewares/body.cjs.map +1 -1
  27. package/dist/cjs/register.cjs +2 -3
  28. package/dist/cjs/register.cjs.map +1 -1
  29. package/dist/cjs/register.d.cts +0 -1
  30. package/dist/cjs/routes/_load.cjs.map +1 -1
  31. package/dist/cjs/routes/oauth/callback.post.cjs +1 -1
  32. package/dist/cjs/routes/oauth/callback.post.cjs.map +1 -1
  33. package/dist/esm/index.d.mts +79 -82
  34. package/dist/esm/index.mjs +1 -4
  35. package/dist/esm/index.mjs.map +1 -1
  36. package/dist/esm/lib/structures/Route.mjs +0 -5
  37. package/dist/esm/lib/structures/Route.mjs.map +1 -1
  38. package/dist/esm/lib/structures/api/ApiRequest.mjs +122 -5
  39. package/dist/esm/lib/structures/api/ApiRequest.mjs.map +1 -1
  40. package/dist/esm/lib/structures/http/Auth.mjs.map +1 -1
  41. package/dist/esm/lib/structures/http/HttpMethods.mjs +1 -0
  42. package/dist/esm/lib/structures/http/HttpMethods.mjs.map +1 -1
  43. package/dist/esm/lib/structures/http/Server.mjs +1 -8
  44. package/dist/esm/lib/structures/http/Server.mjs.map +1 -1
  45. package/dist/esm/lib/structures/router/RouterRoot.mjs +0 -1
  46. package/dist/esm/lib/structures/router/RouterRoot.mjs.map +1 -1
  47. package/dist/esm/lib/utils/_body/RequestHeadersProxy.mjs +95 -0
  48. package/dist/esm/lib/utils/_body/RequestHeadersProxy.mjs.map +1 -0
  49. package/dist/esm/lib/utils/_body/RequestProxy.mjs +111 -0
  50. package/dist/esm/lib/utils/_body/RequestProxy.mjs.map +1 -0
  51. package/dist/esm/lib/utils/_body/RequestURLProxy.mjs +167 -0
  52. package/dist/esm/lib/utils/_body/RequestURLProxy.mjs.map +1 -0
  53. package/dist/esm/lib/utils/constants.mjs +8 -0
  54. package/dist/esm/lib/utils/constants.mjs.map +1 -0
  55. package/dist/esm/listeners/_load.mjs.map +1 -1
  56. package/dist/esm/middlewares/_load.mjs.map +1 -1
  57. package/dist/esm/middlewares/body.mjs +2 -16
  58. package/dist/esm/middlewares/body.mjs.map +1 -1
  59. package/dist/esm/register.d.mts +0 -1
  60. package/dist/esm/register.mjs +2 -3
  61. package/dist/esm/register.mjs.map +1 -1
  62. package/dist/esm/routes/_load.mjs.map +1 -1
  63. package/dist/esm/routes/oauth/callback.post.mjs +1 -1
  64. package/dist/esm/routes/oauth/callback.post.mjs.map +1 -1
  65. package/package.json +3 -2
  66. package/dist/cjs/lib/structures/MediaParser.cjs +0 -79
  67. package/dist/cjs/lib/structures/MediaParser.cjs.map +0 -1
  68. package/dist/cjs/lib/structures/MediaParserStore.cjs +0 -27
  69. package/dist/cjs/lib/structures/MediaParserStore.cjs.map +0 -1
  70. package/dist/cjs/mediaParsers/_load.cjs +0 -20
  71. package/dist/cjs/mediaParsers/_load.cjs.map +0 -1
  72. package/dist/cjs/mediaParsers/applicationFormUrlEncoded.cjs +0 -22
  73. package/dist/cjs/mediaParsers/applicationFormUrlEncoded.cjs.map +0 -1
  74. package/dist/cjs/mediaParsers/applicationJson.cjs +0 -21
  75. package/dist/cjs/mediaParsers/applicationJson.cjs.map +0 -1
  76. package/dist/cjs/mediaParsers/textPlain.cjs +0 -21
  77. package/dist/cjs/mediaParsers/textPlain.cjs.map +0 -1
  78. package/dist/esm/lib/structures/MediaParser.mjs +0 -76
  79. package/dist/esm/lib/structures/MediaParser.mjs.map +0 -1
  80. package/dist/esm/lib/structures/MediaParserStore.mjs +0 -24
  81. package/dist/esm/lib/structures/MediaParserStore.mjs.map +0 -1
  82. package/dist/esm/mediaParsers/_load.mjs +0 -17
  83. package/dist/esm/mediaParsers/_load.mjs.map +0 -1
  84. package/dist/esm/mediaParsers/applicationFormUrlEncoded.mjs +0 -19
  85. package/dist/esm/mediaParsers/applicationFormUrlEncoded.mjs.map +0 -1
  86. package/dist/esm/mediaParsers/applicationJson.mjs +0 -18
  87. package/dist/esm/mediaParsers/applicationJson.mjs.map +0 -1
  88. package/dist/esm/mediaParsers/textPlain.mjs +0 -18
  89. package/dist/esm/mediaParsers/textPlain.mjs.map +0 -1
@@ -0,0 +1,123 @@
1
+ 'use strict';
2
+
3
+ var utilities = require('@sapphire/utilities');
4
+ var buffer = require('buffer');
5
+ var consumers = require('stream/consumers');
6
+ var web = require('stream/web');
7
+ var RequestHeadersProxy_cjs = require('./RequestHeadersProxy.cjs');
8
+ var RequestURLProxy_cjs = require('./RequestURLProxy.cjs');
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __typeError = (msg) => {
12
+ throw TypeError(msg);
13
+ };
14
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
16
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
17
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
18
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
19
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
20
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
21
+ var _request, _url, _cachedMethod, _cachedHasBody, _abortController, _bodyStream;
22
+ var _RequestProxy = class _RequestProxy {
23
+ constructor(request) {
24
+ __publicField(this, "cache", "default");
25
+ __publicField(this, "credentials", "same-origin");
26
+ __publicField(this, "destination", "");
27
+ __publicField(this, "integrity", "");
28
+ __publicField(this, "keepalive", false);
29
+ __publicField(this, "mode", "cors");
30
+ __publicField(this, "redirect", "follow");
31
+ __publicField(this, "referrer", "about:client");
32
+ __publicField(this, "referrerPolicy", "");
33
+ __publicField(this, "headers");
34
+ __publicField(this, "bodyUsed", false);
35
+ __publicField(this, "duplex", "half");
36
+ __privateAdd(this, _request);
37
+ __privateAdd(this, _url);
38
+ __privateAdd(this, _cachedMethod, null);
39
+ __privateAdd(this, _cachedHasBody, null);
40
+ __privateAdd(this, _abortController, null);
41
+ __privateAdd(this, _bodyStream, null);
42
+ __privateSet(this, _request, request);
43
+ __privateSet(this, _url, new RequestURLProxy_cjs.RequestURLProxy(request));
44
+ this.headers = new RequestHeadersProxy_cjs.RequestHeadersProxy(request);
45
+ }
46
+ get url() {
47
+ return __privateGet(this, _url).href;
48
+ }
49
+ get method() {
50
+ __privateGet(this, _cachedMethod) ?? __privateSet(this, _cachedMethod, __privateGet(this, _request).method?.toUpperCase() ?? "GET");
51
+ return __privateGet(this, _cachedMethod);
52
+ }
53
+ get signal() {
54
+ __privateGet(this, _abortController) ?? __privateSet(this, _abortController, new AbortController());
55
+ return __privateGet(this, _abortController).signal;
56
+ }
57
+ get body() {
58
+ if (!this.hasBody) return null;
59
+ __privateGet(this, _bodyStream) ?? __privateSet(this, _bodyStream, new web.ReadableStream({
60
+ start: /* @__PURE__ */ __name((controller) => {
61
+ __privateGet(this, _request).on("data", (chunk) => controller.enqueue(chunk)).once("error", (error) => {
62
+ controller.error(error);
63
+ __privateGet(this, _abortController)?.abort();
64
+ }).once("close", () => {
65
+ __privateGet(this, _abortController)?.abort();
66
+ }).once("end", () => {
67
+ controller.close();
68
+ });
69
+ }, "start")
70
+ }));
71
+ return __privateGet(this, _bodyStream);
72
+ }
73
+ async arrayBuffer() {
74
+ const { body } = this;
75
+ return utilities.isNullish(body) ? new ArrayBuffer(0) : consumers.arrayBuffer(body);
76
+ }
77
+ async blob() {
78
+ const arrayBuffer2 = await this.arrayBuffer();
79
+ return new buffer.Blob([arrayBuffer2], {
80
+ type: this.headers.get("content-type") ?? ""
81
+ });
82
+ }
83
+ async formData() {
84
+ return new Response(this.body, { headers: this.headers }).formData();
85
+ }
86
+ async json() {
87
+ return JSON.parse(await this.text());
88
+ }
89
+ async text() {
90
+ return new TextDecoder().decode(await this.arrayBuffer());
91
+ }
92
+ clone() {
93
+ return new _RequestProxy(__privateGet(this, _request));
94
+ }
95
+ get hasBody() {
96
+ if (__privateGet(this, _cachedHasBody) !== null) return __privateGet(this, _cachedHasBody);
97
+ const contentLengthString = this.headers.get("content-length");
98
+ const contentLength = utilities.isNullishOrEmpty(contentLengthString) ? 0 : Number(contentLengthString);
99
+ if (Number.isSafeInteger(contentLength) && contentLength > 0) {
100
+ __privateSet(this, _cachedHasBody, true);
101
+ return true;
102
+ }
103
+ const transferEncoding = this.headers.get("transfer-encoding");
104
+ if (transferEncoding?.includes("chunked")) {
105
+ __privateSet(this, _cachedHasBody, true);
106
+ return true;
107
+ }
108
+ __privateSet(this, _cachedHasBody, false);
109
+ return false;
110
+ }
111
+ };
112
+ _request = new WeakMap();
113
+ _url = new WeakMap();
114
+ _cachedMethod = new WeakMap();
115
+ _cachedHasBody = new WeakMap();
116
+ _abortController = new WeakMap();
117
+ _bodyStream = new WeakMap();
118
+ __name(_RequestProxy, "RequestProxy");
119
+ var RequestProxy = _RequestProxy;
120
+
121
+ exports.RequestProxy = RequestProxy;
122
+ //# sourceMappingURL=RequestProxy.cjs.map
123
+ //# sourceMappingURL=RequestProxy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestProxy.ts"],"names":["RequestURLProxy","RequestHeadersProxy","ReadableStream","isNullish","arrayBuffer","Blob","isNullishOrEmpty"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,IAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,CAAA;AAoBO,IAAM,aAAA,GAAN,MAAM,aAAgC,CAAA;AAAA,EAwBrC,YAAY,OAAqB,EAAA;AAvBxC,IAAA,aAAA,CAAA,IAAA,EAAO,OAAsB,EAAA,SAAA,CAAA,CAAA;AAC7B,IAAA,aAAA,CAAA,IAAA,EAAO,aAAkC,EAAA,aAAA,CAAA,CAAA;AACzC,IAAA,aAAA,CAAA,IAAA,EAAO,aAAkC,EAAA,EAAA,CAAA,CAAA;AACzC,IAAA,aAAA,CAAA,IAAA,EAAO,WAAoB,EAAA,EAAA,CAAA,CAAA;AAC3B,IAAA,aAAA,CAAA,IAAA,EAAO,WAAqB,EAAA,KAAA,CAAA,CAAA;AAE5B,IAAA,aAAA,CAAA,IAAA,EAAO,MAAoB,EAAA,MAAA,CAAA,CAAA;AAC3B,IAAA,aAAA,CAAA,IAAA,EAAO,UAA4B,EAAA,QAAA,CAAA,CAAA;AACnC,IAAA,aAAA,CAAA,IAAA,EAAO,UAAmB,EAAA,cAAA,CAAA,CAAA;AAC1B,IAAA,aAAA,CAAA,IAAA,EAAO,gBAAiC,EAAA,EAAA,CAAA,CAAA;AAExC,IAAO,aAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAEP,IAAA,aAAA,CAAA,IAAA,EAAO,UAAoB,EAAA,KAAA,CAAA,CAAA;AAC3B,IAAA,aAAA,CAAA,IAAA,EAAO,QAAS,EAAA,MAAA,CAAA,CAAA;AAEhB,IAAS,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AACT,IAAS,YAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AACT,IAAmC,YAAA,CAAA,IAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AACnC,IAAiC,YAAA,CAAA,IAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AACjC,IAA2C,YAAA,CAAA,IAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAC3C,IAAiD,YAAA,CAAA,IAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAGhD,IAAA,YAAA,CAAA,IAAA,EAAK,QAAW,EAAA,OAAA,CAAA,CAAA;AAChB,IAAK,YAAA,CAAA,IAAA,EAAA,IAAA,EAAO,IAAIA,mCAAA,CAAgB,OAAO,CAAA,CAAA,CAAA;AACvC,IAAK,IAAA,CAAA,OAAA,GAAU,IAAIC,2CAAA,CAAoB,OAAO,CAAA,CAAA;AAAA,GAC/C;AAAA,EAEA,IAAW,GAAc,GAAA;AACxB,IAAA,OAAO,mBAAK,IAAK,CAAA,CAAA,IAAA,CAAA;AAAA,GAClB;AAAA,EAEA,IAAW,MAAqB,GAAA;AAC/B,IAAA,YAAA,CAAA,IAAA,EAAK,kBAAL,YAAK,CAAA,IAAA,EAAA,aAAA,EAAmB,mBAAK,QAAS,CAAA,CAAA,MAAA,EAAQ,aAAiB,IAAA,KAAA,CAAA,CAAA;AAC/D,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AAAA,GACb;AAAA,EAEA,IAAW,MAAS,GAAA;AACnB,IAAA,YAAA,CAAA,IAAA,EAAK,gBAAL,CAAA,IAAA,YAAA,CAAA,IAAA,EAAK,gBAAqB,EAAA,IAAI,eAAgB,EAAA,CAAA,CAAA;AAC9C,IAAA,OAAO,mBAAK,gBAAiB,CAAA,CAAA,MAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,IAAW,IAA0C,GAAA;AACpD,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,EAAgB,OAAA,IAAA,CAAA;AAE1B,IAAA,YAAA,CAAA,IAAA,EAAK,WAAL,CAAA,IAAA,YAAA,CAAA,IAAA,EAAK,WAAgB,EAAA,IAAIC,kBAAe,CAAA;AAAA,MACvC,KAAA,0BAAQ,UAAe,KAAA;AACtB,QAAA,YAAA,CAAA,IAAA,EAAK,QACH,CAAA,CAAA,EAAA,CAAG,MAAQ,EAAA,CAAC,KAAU,KAAA,UAAA,CAAW,OAAQ,CAAA,KAAK,CAAC,CAAA,CAC/C,IAAK,CAAA,OAAA,EAAS,CAAC,KAAU,KAAA;AACzB,UAAA,UAAA,CAAW,MAAM,KAAK,CAAA,CAAA;AACtB,UAAA,YAAA,CAAA,IAAA,EAAK,mBAAkB,KAAM,EAAA,CAAA;AAAA,SAC7B,CAAA,CACA,IAAK,CAAA,OAAA,EAAS,MAAM;AACpB,UAAA,YAAA,CAAA,IAAA,EAAK,mBAAkB,KAAM,EAAA,CAAA;AAAA,SAC7B,CAAA,CACA,IAAK,CAAA,KAAA,EAAO,MAAM;AAClB,UAAA,UAAA,CAAW,KAAM,EAAA,CAAA;AAAA,SACjB,CAAA,CAAA;AAAA,OAZI,EAAA,OAAA,CAAA;AAAA,KAcP,CAAA,CAAA,CAAA;AAED,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AAAA,GACb;AAAA,EAEA,MAAa,WAAoC,GAAA;AAChD,IAAM,MAAA,EAAE,MAAS,GAAA,IAAA,CAAA;AACjB,IAAO,OAAAC,mBAAA,CAAU,IAAI,CAAI,GAAA,IAAI,YAAY,CAAC,CAAA,GAAIC,sBAAY,IAAI,CAAA,CAAA;AAAA,GAC/D;AAAA,EAEA,MAAa,IAAsB,GAAA;AAClC,IAAMA,MAAAA,YAAAA,GAAc,MAAM,IAAA,CAAK,WAAY,EAAA,CAAA;AAC3C,IAAA,OAAO,IAAIC,WAAA,CAAK,CAACD,YAAW,CAAG,EAAA;AAAA,MAC9B,IAAM,EAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,CAAI,cAAc,CAAK,IAAA,EAAA;AAAA,KAC1C,CAAA,CAAA;AAAA,GACF;AAAA,EAEA,MAAa,QAA8B,GAAA;AAC1C,IAAO,OAAA,IAAI,QAAS,CAAA,IAAA,CAAK,IAAM,EAAA,EAAE,SAAS,IAAK,CAAA,OAAA,EAAS,CAAA,CAAE,QAAS,EAAA,CAAA;AAAA,GACpE;AAAA,EAEA,MAAa,IAAyB,GAAA;AACrC,IAAA,OAAO,IAAK,CAAA,KAAA,CAAM,MAAM,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,GACpC;AAAA,EAEA,MAAa,IAAwB,GAAA;AACpC,IAAA,OAAO,IAAI,WAAY,EAAA,CAAE,OAAO,MAAM,IAAA,CAAK,aAAa,CAAA,CAAA;AAAA,GACzD;AAAA,EAEO,KAAiB,GAAA;AACvB,IAAO,OAAA,IAAI,aAAa,CAAA,YAAA,CAAA,IAAA,EAAK,QAAQ,CAAA,CAAA,CAAA;AAAA,GACtC;AAAA,EAEA,IAAY,OAAU,GAAA;AACrB,IAAA,IAAI,YAAK,CAAA,IAAA,EAAA,cAAA,CAAA,KAAmB,IAAM,EAAA,OAAO,YAAK,CAAA,IAAA,EAAA,cAAA,CAAA,CAAA;AAE9C,IAAA,MAAM,mBAAsB,GAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,CAAI,gBAAgB,CAAA,CAAA;AAC7D,IAAA,MAAM,gBAAgBE,0BAAiB,CAAA,mBAAmB,CAAI,GAAA,CAAA,GAAI,OAAO,mBAAmB,CAAA,CAAA;AAC5F,IAAA,IAAI,MAAO,CAAA,aAAA,CAAc,aAAa,CAAA,IAAK,gBAAgB,CAAG,EAAA;AAC7D,MAAA,YAAA,CAAA,IAAA,EAAK,cAAiB,EAAA,IAAA,CAAA,CAAA;AACtB,MAAO,OAAA,IAAA,CAAA;AAAA,KACR;AAEA,IAAA,MAAM,gBAAmB,GAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,CAAI,mBAAmB,CAAA,CAAA;AAC7D,IAAI,IAAA,gBAAA,EAAkB,QAAS,CAAA,SAAS,CAAG,EAAA;AAC1C,MAAA,YAAA,CAAA,IAAA,EAAK,cAAiB,EAAA,IAAA,CAAA,CAAA;AACtB,MAAO,OAAA,IAAA,CAAA;AAAA,KACR;AAEA,IAAA,YAAA,CAAA,IAAA,EAAK,cAAiB,EAAA,KAAA,CAAA,CAAA;AACtB,IAAO,OAAA,KAAA,CAAA;AAAA,GACR;AACD,CAAA,CAAA;AAjGU,QAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,IAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACT,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,cAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,gBAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,WAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAtB4C,MAAA,CAAA,aAAA,EAAA,cAAA,CAAA,CAAA;AAAtC,IAAM,YAAN,GAAA","file":"RequestProxy.cjs","sourcesContent":["import { isNullish, isNullishOrEmpty } from '@sapphire/utilities';\nimport { Blob } from 'node:buffer';\nimport { arrayBuffer } from 'node:stream/consumers';\nimport { ReadableStream } from 'node:stream/web';\nimport type {\n\tFormData,\n\tHeaders,\n\tReferrerPolicy,\n\tRequest,\n\tRequestCache,\n\tRequestCredentials,\n\tRequestDestination,\n\tRequestMode,\n\tRequestRedirect\n} from 'undici';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport type { MethodName } from '../../structures/http/HttpMethods';\nimport { RequestHeadersProxy } from './RequestHeadersProxy';\nimport { RequestURLProxy } from './RequestURLProxy';\n\nexport class RequestProxy implements Request {\n\tpublic cache: RequestCache = 'default';\n\tpublic credentials: RequestCredentials = 'same-origin';\n\tpublic destination: RequestDestination = '';\n\tpublic integrity: string = '';\n\tpublic keepalive: boolean = false;\n\n\tpublic mode: RequestMode = 'cors';\n\tpublic redirect: RequestRedirect = 'follow';\n\tpublic referrer: string = 'about:client';\n\tpublic referrerPolicy: ReferrerPolicy = '';\n\n\tpublic headers: Headers;\n\n\tpublic bodyUsed: boolean = false;\n\tpublic duplex = 'half' as const;\n\n\treadonly #request: ApiRequest;\n\treadonly #url: RequestURLProxy;\n\t#cachedMethod: MethodName | null = null;\n\t#cachedHasBody: boolean | null = null;\n\t#abortController: AbortController | null = null;\n\t#bodyStream: ReadableStream<Uint8Array> | null = null;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.#request = request;\n\t\tthis.#url = new RequestURLProxy(request);\n\t\tthis.headers = new RequestHeadersProxy(request);\n\t}\n\n\tpublic get url(): string {\n\t\treturn this.#url.href;\n\t}\n\n\tpublic get method(): MethodName {\n\t\tthis.#cachedMethod ??= (this.#request.method?.toUpperCase() ?? 'GET') as MethodName;\n\t\treturn this.#cachedMethod;\n\t}\n\n\tpublic get signal() {\n\t\tthis.#abortController ??= new AbortController();\n\t\treturn this.#abortController.signal;\n\t}\n\n\tpublic get body(): ReadableStream<Uint8Array> | null {\n\t\tif (!this.hasBody) return null;\n\n\t\tthis.#bodyStream ??= new ReadableStream({\n\t\t\tstart: (controller) => {\n\t\t\t\tthis.#request\n\t\t\t\t\t.on('data', (chunk) => controller.enqueue(chunk))\n\t\t\t\t\t.once('error', (error) => {\n\t\t\t\t\t\tcontroller.error(error);\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('close', () => {\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('end', () => {\n\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn this.#bodyStream;\n\t}\n\n\tpublic async arrayBuffer(): Promise<ArrayBuffer> {\n\t\tconst { body } = this;\n\t\treturn isNullish(body) ? new ArrayBuffer(0) : arrayBuffer(body);\n\t}\n\n\tpublic async blob(): Promise<Blob> {\n\t\tconst arrayBuffer = await this.arrayBuffer();\n\t\treturn new Blob([arrayBuffer], {\n\t\t\ttype: this.headers.get('content-type') ?? ''\n\t\t});\n\t}\n\n\tpublic async formData(): Promise<FormData> {\n\t\treturn new Response(this.body, { headers: this.headers }).formData(); // NOSONAR\n\t}\n\n\tpublic async json(): Promise<unknown> {\n\t\treturn JSON.parse(await this.text());\n\t}\n\n\tpublic async text(): Promise<string> {\n\t\treturn new TextDecoder().decode(await this.arrayBuffer());\n\t}\n\n\tpublic clone(): Request {\n\t\treturn new RequestProxy(this.#request);\n\t}\n\n\tprivate get hasBody() {\n\t\tif (this.#cachedHasBody !== null) return this.#cachedHasBody;\n\n\t\tconst contentLengthString = this.headers.get('content-length');\n\t\tconst contentLength = isNullishOrEmpty(contentLengthString) ? 0 : Number(contentLengthString);\n\t\tif (Number.isSafeInteger(contentLength) && contentLength > 0) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst transferEncoding = this.headers.get('transfer-encoding');\n\t\tif (transferEncoding?.includes('chunked')) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.#cachedHasBody = false;\n\t\treturn false;\n\t}\n}\n"]}
@@ -0,0 +1,179 @@
1
+ 'use strict';
2
+
3
+ var utilities = require('@sapphire/utilities');
4
+ var constants_cjs = require('../constants.cjs');
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __typeError = (msg) => {
8
+ throw TypeError(msg);
9
+ };
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
12
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
13
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
14
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
15
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
16
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
17
+ var _protocol, _hostname, _port, _pathname, _search, _searchParams, _request;
18
+ var _RequestURLProxy = class _RequestURLProxy {
19
+ constructor(request) {
20
+ __publicField(this, "hash", "");
21
+ __publicField(this, "password", "");
22
+ __publicField(this, "username", "");
23
+ __privateAdd(this, _protocol, null);
24
+ __privateAdd(this, _hostname, null);
25
+ __privateAdd(this, _port, null);
26
+ __privateAdd(this, _pathname, null);
27
+ __privateAdd(this, _search, null);
28
+ __privateAdd(this, _searchParams, null);
29
+ __privateAdd(this, _request);
30
+ __privateSet(this, _request, request);
31
+ }
32
+ get host() {
33
+ return __privateGet(this, _request).headers.host ?? "";
34
+ }
35
+ set host(value) {
36
+ __privateSet(this, _hostname, null);
37
+ __privateSet(this, _port, null);
38
+ __privateGet(this, _request).headers.host = value;
39
+ }
40
+ get hostname() {
41
+ if (__privateGet(this, _hostname) === null) {
42
+ const [hostname, port] = parseHost(__privateGet(this, _request).headers.host);
43
+ __privateSet(this, _hostname, hostname);
44
+ __privateSet(this, _port, port === -1 ? "" : String(port));
45
+ }
46
+ return __privateGet(this, _hostname);
47
+ }
48
+ set hostname(value) {
49
+ __privateSet(this, _hostname, value);
50
+ }
51
+ get port() {
52
+ if (__privateGet(this, _port) === null) {
53
+ const [hostname, port] = parseHost(__privateGet(this, _request).headers.host);
54
+ __privateSet(this, _hostname, hostname);
55
+ __privateSet(this, _port, port === -1 ? String(__privateGet(this, _request).socket.localPort ?? "") : String(port));
56
+ }
57
+ return __privateGet(this, _port);
58
+ }
59
+ set port(value) {
60
+ __privateSet(this, _port, String(Number(value || "")));
61
+ }
62
+ get pathname() {
63
+ if (__privateGet(this, _pathname) === null) {
64
+ const [pathname, search] = parsePath(__privateGet(this, _request).url);
65
+ __privateSet(this, _pathname, pathname);
66
+ __privateGet(this, _search) ?? __privateSet(this, _search, search);
67
+ }
68
+ return __privateGet(this, _pathname);
69
+ }
70
+ set pathname(value) {
71
+ const normalized = value.startsWith("/") ? value : `/${value}`;
72
+ if (normalized === __privateGet(this, _pathname)) return;
73
+ __privateSet(this, _pathname, normalized);
74
+ __privateGet(this, _request).url = normalized + this.search;
75
+ }
76
+ get search() {
77
+ if (__privateGet(this, _search) === null) {
78
+ const [pathname, search] = parsePath(__privateGet(this, _request).url);
79
+ __privateGet(this, _pathname) ?? __privateSet(this, _pathname, pathname);
80
+ __privateSet(this, _search, search);
81
+ }
82
+ return __privateGet(this, _search);
83
+ }
84
+ set search(value) {
85
+ let normalized;
86
+ if (value === "?") {
87
+ normalized = "";
88
+ } else if (value && !value.startsWith("?")) {
89
+ normalized = `?${value}`;
90
+ } else {
91
+ normalized = value;
92
+ }
93
+ if (normalized === __privateGet(this, _search)) return;
94
+ __privateSet(this, _search, normalized);
95
+ __privateSet(this, _searchParams, null);
96
+ __privateGet(this, _request).url = this.pathname + normalized;
97
+ }
98
+ get searchParams() {
99
+ __privateGet(this, _searchParams) ?? __privateSet(this, _searchParams, new URLSearchParams(this.search));
100
+ return __privateGet(this, _searchParams);
101
+ }
102
+ set searchParams(value) {
103
+ __privateSet(this, _searchParams, value);
104
+ this.search = value.toString();
105
+ }
106
+ get protocol() {
107
+ __privateGet(this, _protocol) ?? __privateSet(this, _protocol, __privateGet(this, _request).socket.encrypted || __privateGet(this, _request).headers["x-forwarded-proto"] === "https" ? "https:" : "http:");
108
+ return __privateGet(this, _protocol);
109
+ }
110
+ set protocol(value) {
111
+ __privateSet(this, _protocol, value);
112
+ }
113
+ get origin() {
114
+ return `${this.protocol}//${this.host}`;
115
+ }
116
+ set origin(_value) {
117
+ }
118
+ get href() {
119
+ return `${this.protocol}//${this.host}${this.pathname}${this.search}`;
120
+ }
121
+ set href(value) {
122
+ const url = new URL(value);
123
+ __privateSet(this, _protocol, url.protocol);
124
+ this.username = url.username;
125
+ this.password = url.password;
126
+ __privateSet(this, _hostname, url.hostname);
127
+ __privateSet(this, _port, url.port);
128
+ __privateSet(this, _pathname, url.pathname);
129
+ __privateSet(this, _search, url.search);
130
+ this.hash = url.hash;
131
+ }
132
+ toString() {
133
+ return this.href;
134
+ }
135
+ toJSON() {
136
+ return this.href;
137
+ }
138
+ // eslint-disable-next-line @typescript-eslint/class-literal-property-style
139
+ get [Symbol.toStringTag]() {
140
+ return "URL";
141
+ }
142
+ [constants_cjs.NodeUtilInspectSymbol]() {
143
+ return this.href;
144
+ }
145
+ };
146
+ _protocol = new WeakMap();
147
+ _hostname = new WeakMap();
148
+ _port = new WeakMap();
149
+ _pathname = new WeakMap();
150
+ _search = new WeakMap();
151
+ _searchParams = new WeakMap();
152
+ _request = new WeakMap();
153
+ __name(_RequestURLProxy, "RequestURLProxy");
154
+ var RequestURLProxy = _RequestURLProxy;
155
+ function parsePath(input) {
156
+ const url = (input ?? "/").replaceAll("\\", "/");
157
+ const index = url.indexOf("?");
158
+ if (index === -1) {
159
+ return [url, ""];
160
+ }
161
+ return [url.slice(0, index), url.slice(index)];
162
+ }
163
+ __name(parsePath, "parsePath");
164
+ function parseHost(host) {
165
+ if (utilities.isNullishOrEmpty(host)) {
166
+ return ["localhost", -1];
167
+ }
168
+ const index = host.indexOf(":");
169
+ if (index === -1) {
170
+ return [host, -1];
171
+ }
172
+ const port = Number(host.slice(index));
173
+ return [host.slice(0, index), Number.isSafeInteger(port) ? port : -1];
174
+ }
175
+ __name(parseHost, "parseHost");
176
+
177
+ exports.RequestURLProxy = RequestURLProxy;
178
+ //# sourceMappingURL=RequestURLProxy.cjs.map
179
+ //# sourceMappingURL=RequestURLProxy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestURLProxy.ts"],"names":["NodeUtilInspectSymbol","isNullishOrEmpty"],"mappings":"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","file":"RequestURLProxy.cjs","sourcesContent":["import { isNullishOrEmpty } from '@sapphire/utilities';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport { NodeUtilInspectSymbol } from '../constants';\n\nexport class RequestURLProxy implements URL {\n\tpublic hash: string = '';\n\tpublic password: string = '';\n\tpublic username: string = '';\n\n\t#protocol: URLProtocol | null = null;\n\t#hostname: string | null = null;\n\t#port: string | null = null;\n\n\t#pathname: string | null = null;\n\t#search: string | null = null;\n\t#searchParams: URLSearchParams | null = null;\n\n\treadonly #request: ApiRequest;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.#request = request;\n\t}\n\n\tpublic get host(): string {\n\t\treturn this.#request.headers.host ?? '';\n\t}\n\n\tpublic set host(value: string) {\n\t\tthis.#hostname = null;\n\t\tthis.#port = null;\n\t\tthis.#request.headers.host = value;\n\t}\n\n\tpublic get hostname(): string {\n\t\tif (this.#hostname === null) {\n\t\t\tconst [hostname, port] = parseHost(this.#request.headers.host);\n\t\t\tthis.#hostname = hostname;\n\t\t\tthis.#port = port === -1 ? '' : String(port);\n\t\t}\n\n\t\treturn this.#hostname;\n\t}\n\n\tpublic set hostname(value: string) {\n\t\tthis.#hostname = value;\n\t}\n\n\tpublic get port(): string {\n\t\tif (this.#port === null) {\n\t\t\tconst [hostname, port] = parseHost(this.#request.headers.host);\n\t\t\tthis.#hostname = hostname;\n\t\t\tthis.#port = port === -1 ? String(this.#request.socket.localPort ?? '') : String(port);\n\t\t}\n\n\t\treturn this.#port;\n\t}\n\n\tpublic set port(value: string) {\n\t\tthis.#port = String(Number(value || ''));\n\t}\n\n\tpublic get pathname(): string {\n\t\tif (this.#pathname === null) {\n\t\t\tconst [pathname, search] = parsePath(this.#request.url);\n\t\t\tthis.#pathname = pathname;\n\t\t\tthis.#search ??= search;\n\t\t}\n\n\t\treturn this.#pathname;\n\t}\n\n\tpublic set pathname(value: string) {\n\t\tconst normalized = value.startsWith('/') ? value : `/${value}`;\n\t\tif (normalized === this.#pathname) return;\n\n\t\tthis.#pathname = normalized;\n\t\tthis.#request.url = normalized + this.search;\n\t}\n\n\tpublic get search(): string {\n\t\tif (this.#search === null) {\n\t\t\tconst [pathname, search] = parsePath(this.#request.url);\n\t\t\tthis.#pathname ??= pathname;\n\t\t\tthis.#search = search;\n\t\t}\n\n\t\treturn this.#search;\n\t}\n\n\tpublic set search(value: string) {\n\t\tlet normalized: string;\n\t\tif (value === '?') {\n\t\t\tnormalized = '';\n\t\t} else if (value && !value.startsWith('?')) {\n\t\t\tnormalized = `?${value}`;\n\t\t} else {\n\t\t\tnormalized = value;\n\t\t}\n\n\t\tif (normalized === this.#search) return;\n\n\t\tthis.#search = normalized;\n\t\tthis.#searchParams = null;\n\t\tthis.#request.url = this.pathname + normalized;\n\t}\n\n\tpublic get searchParams(): URLSearchParams {\n\t\tthis.#searchParams ??= new URLSearchParams(this.search);\n\t\treturn this.#searchParams;\n\t}\n\n\tpublic set searchParams(value: URLSearchParams) {\n\t\tthis.#searchParams = value;\n\t\tthis.search = value.toString();\n\t}\n\n\tpublic get protocol(): URLProtocol {\n\t\tthis.#protocol ??= (this.#request.socket as any).encrypted || this.#request.headers['x-forwarded-proto'] === 'https' ? 'https:' : 'http:';\n\t\treturn this.#protocol;\n\t}\n\n\tpublic set protocol(value: URLProtocol) {\n\t\tthis.#protocol = value;\n\t}\n\n\tpublic get origin(): string {\n\t\treturn `${this.protocol}//${this.host}`;\n\t}\n\n\tpublic set origin(_value: string) {\n\t\t// No-op\n\t}\n\n\tpublic get href(): string {\n\t\treturn `${this.protocol}//${this.host}${this.pathname}${this.search}`;\n\t}\n\n\tpublic set href(value: string) {\n\t\tconst url = new URL(value);\n\t\tthis.#protocol = url.protocol as URLProtocol;\n\t\tthis.username = url.username;\n\t\tthis.password = url.password;\n\t\tthis.#hostname = url.hostname;\n\t\tthis.#port = url.port;\n\t\tthis.#pathname = url.pathname;\n\t\tthis.#search = url.search;\n\t\tthis.hash = url.hash;\n\t}\n\n\tpublic toString(): string {\n\t\treturn this.href;\n\t}\n\n\tpublic toJSON(): string {\n\t\treturn this.href;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/class-literal-property-style\n\tpublic get [Symbol.toStringTag]() {\n\t\treturn 'URL';\n\t}\n\n\tpublic [NodeUtilInspectSymbol]() {\n\t\treturn this.href;\n\t}\n}\n\nexport type URLProtocol = 'https:' | 'http:';\n\nfunction parsePath(input: string | undefined): [pathname: string, search: string] {\n\tconst url = (input ?? '/').replaceAll('\\\\', '/');\n\tconst index = url.indexOf('?');\n\tif (index === -1) {\n\t\treturn [url, ''];\n\t}\n\n\treturn [url.slice(0, index), url.slice(index)];\n}\n\nfunction parseHost(host: string | undefined): [hostname: string, port: number] {\n\tif (isNullishOrEmpty(host)) {\n\t\treturn ['localhost', -1];\n\t}\n\n\tconst index = host.indexOf(':');\n\tif (index === -1) {\n\t\treturn [host, -1];\n\t}\n\n\tconst port = Number(host.slice(index));\n\treturn [host.slice(0, index), Number.isSafeInteger(port) ? port : -1];\n}\n"]}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ // src/lib/utils/constants.ts
4
+ var NodeUtilInspectSymbol = Symbol.for("nodejs.util.inspect.custom");
5
+
6
+ exports.NodeUtilInspectSymbol = NodeUtilInspectSymbol;
7
+ //# sourceMappingURL=constants.cjs.map
8
+ //# sourceMappingURL=constants.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/utils/constants.ts"],"names":[],"mappings":";;;AAAa,IAAA,qBAAA,GAAwB,MAAO,CAAA,GAAA,CAAI,4BAA4B","file":"constants.cjs","sourcesContent":["export const NodeUtilInspectSymbol = Symbol.for('nodejs.util.inspect.custom');\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/listeners/_load.ts"],"names":["container","PluginRouteError","PluginServerMiddlewareError","PluginServerMiddlewareSuccess","PluginServerRequest","PluginServerRouterBranchMethodNotAllowed","PluginServerRouterBranchNotFound","PluginServerRouterFound"],"mappings":";;;;;;;;;;;;;AASO,SAAS,aAAgB,GAAA;AAC/B,EAAA,MAAM,KAAQ,GAAA,WAAA,CAAA;AACd,EAAK,KAAAA,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,kBAAoB,EAAA,KAAA,EAAOC,mCAAkB,EAAA,KAAA,EAAO,CAAA,CAAA;AAC5F,EAAK,KAAAD,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,6BAA+B,EAAA,KAAA,EAAOE,8CAA6B,EAAA,KAAA,EAAO,CAAA,CAAA;AAClH,EAAK,KAAAF,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,+BAAiC,EAAA,KAAA,EAAOG,gDAA+B,EAAA,KAAA,EAAO,CAAA,CAAA;AACtH,EAAK,KAAAH,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,qBAAuB,EAAA,KAAA,EAAOI,sCAAqB,EAAA,KAAA,EAAO,CAAA,CAAA;AAClG,EAAK,KAAAJ,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,0CAA4C,EAAA,KAAA,EAAOK,2DAA0C,EAAA,KAAA,EAAO,CAAA,CAAA;AAC5I,EAAK,KAAAL,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,kCAAoC,EAAA,KAAA,EAAOM,mDAAkC,EAAA,KAAA,EAAO,CAAA,CAAA;AAC5H,EAAK,KAAAN,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,yBAA2B,EAAA,KAAA,EAAOO,0CAAyB,EAAA,KAAA,EAAO,CAAA,CAAA;AAC3G,CAAA;AATgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginListener as PluginRouteError } from './PluginRouteError';\nimport { PluginListener as PluginServerMiddlewareError } from './PluginServerMiddlewareError';\nimport { PluginListener as PluginServerMiddlewareSuccess } from './PluginServerMiddlewareSuccess';\nimport { PluginListener as PluginServerRequest } from './PluginServerRequest';\nimport { PluginListener as PluginServerRouterBranchMethodNotAllowed } from './PluginServerRouterBranchMethodNotAllowed';\nimport { PluginListener as PluginServerRouterBranchNotFound } from './PluginServerRouterBranchNotFound';\nimport { PluginListener as PluginServerRouterFound } from './PluginServerRouterFound';\n\nexport function loadListeners() {\n\tconst store = 'listeners' 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":["container","PluginRouteError","PluginServerMiddlewareError","PluginServerMiddlewareSuccess","PluginServerRequest","PluginServerRouterBranchMethodNotAllowed","PluginServerRouterBranchNotFound","PluginServerRouterFound"],"mappings":";;;;;;;;;;;;;AASO,SAAS,aAAgB,GAAA;AAC/B,EAAA,MAAM,KAAQ,GAAA,WAAA,CAAA;AACd,EAAK,KAAAA,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,kBAAoB,EAAA,KAAA,EAAOC,mCAAkB,EAAA,KAAA,EAAO,CAAA,CAAA;AAC5F,EAAK,KAAAD,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,6BAA+B,EAAA,KAAA,EAAOE,8CAA6B,EAAA,KAAA,EAAO,CAAA,CAAA;AAClH,EAAK,KAAAF,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,+BAAiC,EAAA,KAAA,EAAOG,gDAA+B,EAAA,KAAA,EAAO,CAAA,CAAA;AACtH,EAAK,KAAAH,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,qBAAuB,EAAA,KAAA,EAAOI,sCAAqB,EAAA,KAAA,EAAO,CAAA,CAAA;AAClG,EAAK,KAAAJ,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,0CAA4C,EAAA,KAAA,EAAOK,2DAA0C,EAAA,KAAA,EAAO,CAAA,CAAA;AAC5I,EAAK,KAAAL,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,kCAAoC,EAAA,KAAA,EAAOM,mDAAkC,EAAA,KAAA,EAAO,CAAA,CAAA;AAC5H,EAAK,KAAAN,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,yBAA2B,EAAA,KAAA,EAAOO,0CAAyB,EAAA,KAAA,EAAO,CAAA,CAAA;AAC3G,CAAA;AATgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginListener as PluginRouteError } from './PluginRouteError';\nimport { PluginListener as PluginServerMiddlewareError } from './PluginServerMiddlewareError';\nimport { PluginListener as PluginServerMiddlewareSuccess } from './PluginServerMiddlewareSuccess';\nimport { PluginListener as PluginServerRequest } from './PluginServerRequest';\nimport { PluginListener as PluginServerRouterBranchMethodNotAllowed } from './PluginServerRouterBranchMethodNotAllowed';\nimport { PluginListener as PluginServerRouterBranchNotFound } from './PluginServerRouterBranchNotFound';\nimport { PluginListener as PluginServerRouterFound } from './PluginServerRouterFound';\n\nexport function loadListeners() {\n\tconst store = 'listeners';\n\tvoid container.stores.loadPiece({ name: 'PluginRouteError', piece: PluginRouteError, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerMiddlewareError', piece: PluginServerMiddlewareError, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerMiddlewareSuccess', piece: PluginServerMiddlewareSuccess, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRequest', piece: PluginServerRequest, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRouterBranchMethodNotAllowed', piece: PluginServerRouterBranchMethodNotAllowed, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRouterBranchNotFound', piece: PluginServerRouterBranchNotFound, store });\n\tvoid container.stores.loadPiece({ name: 'PluginServerRouterFound', piece: PluginServerRouterFound, store });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/_load.ts"],"names":["container","PluginAuth","PluginBody","PluginCookies","PluginHeaders"],"mappings":";;;;;;;;;;AAMO,SAAS,eAAkB,GAAA;AACjC,EAAA,MAAM,KAAQ,GAAA,aAAA,CAAA;AACd,EAAK,KAAAA,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,MAAQ,EAAA,KAAA,EAAOC,yBAAY,EAAA,KAAA,EAAO,CAAA,CAAA;AAC1E,EAAK,KAAAD,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,MAAQ,EAAA,KAAA,EAAOE,yBAAY,EAAA,KAAA,EAAO,CAAA,CAAA;AAC1E,EAAK,KAAAF,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,SAAW,EAAA,KAAA,EAAOG,4BAAe,EAAA,KAAA,EAAO,CAAA,CAAA;AAChF,EAAK,KAAAH,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,SAAW,EAAA,KAAA,EAAOI,4BAAe,EAAA,KAAA,EAAO,CAAA,CAAA;AACjF,CAAA;AANgB,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginMiddleware as PluginAuth } from './auth';\nimport { PluginMiddleware as PluginBody } from './body';\nimport { PluginMiddleware as PluginCookies } from './cookies';\nimport { PluginMiddleware as PluginHeaders } from './headers';\n\nexport function loadMiddlewares() {\n\tconst store = 'middlewares' 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":["container","PluginAuth","PluginBody","PluginCookies","PluginHeaders"],"mappings":";;;;;;;;;;AAMO,SAAS,eAAkB,GAAA;AACjC,EAAA,MAAM,KAAQ,GAAA,aAAA,CAAA;AACd,EAAK,KAAAA,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,MAAQ,EAAA,KAAA,EAAOC,yBAAY,EAAA,KAAA,EAAO,CAAA,CAAA;AAC1E,EAAK,KAAAD,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,MAAQ,EAAA,KAAA,EAAOE,yBAAY,EAAA,KAAA,EAAO,CAAA,CAAA;AAC1E,EAAK,KAAAF,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,SAAW,EAAA,KAAA,EAAOG,4BAAe,EAAA,KAAA,EAAO,CAAA,CAAA;AAChF,EAAK,KAAAH,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,SAAW,EAAA,KAAA,EAAOI,4BAAe,EAAA,KAAA,EAAO,CAAA,CAAA;AACjF,CAAA;AANgB,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginMiddleware as PluginAuth } from './auth';\nimport { PluginMiddleware as PluginBody } from './body';\nimport { PluginMiddleware as PluginCookies } from './cookies';\nimport { PluginMiddleware as PluginHeaders } from './headers';\n\nexport function loadMiddlewares() {\n\tconst store = 'middlewares';\n\tvoid container.stores.loadPiece({ name: 'auth', piece: PluginAuth, store });\n\tvoid container.stores.loadPiece({ name: 'body', piece: PluginBody, store });\n\tvoid container.stores.loadPiece({ name: 'cookies', piece: PluginCookies, store });\n\tvoid container.stores.loadPiece({ name: 'headers', piece: PluginHeaders, store });\n}\n"]}
@@ -4,16 +4,12 @@ var HttpCodes_cjs = require('../lib/structures/http/HttpCodes.cjs');
4
4
  var Middleware_cjs = require('../lib/structures/Middleware.cjs');
5
5
 
6
6
  var __defProp = Object.defineProperty;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
7
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
- var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
10
8
  var _PluginMiddleware = class _PluginMiddleware extends Middleware_cjs.Middleware {
11
9
  constructor(context) {
12
10
  super(context, { position: 20 });
13
- __publicField(this, "mediaParsers");
14
- this.mediaParsers = this.container.server.mediaParsers;
15
11
  }
16
- async run(request, response) {
12
+ run(request, response) {
17
13
  if (!request.route) return;
18
14
  const contentType = request.headers["content-type"];
19
15
  if (typeof contentType !== "string") return;
@@ -23,18 +19,6 @@ var _PluginMiddleware = class _PluginMiddleware extends Middleware_cjs.Middlewar
23
19
  const maximumLength = request.route.maximumBodyLength;
24
20
  if (length > maximumLength) {
25
21
  response.status(HttpCodes_cjs.HttpCodes.PayloadTooLarge).json({ error: "Exceeded maximum content length." });
26
- return;
27
- }
28
- const type = this.mediaParsers.parseContentType(contentType);
29
- const parser = this.mediaParsers.get(type);
30
- if (!parser || !parser.accepts(request.route)) {
31
- response.status(HttpCodes_cjs.HttpCodes.UnsupportedMediaType).json({ error: `Unsupported type ${type}.` });
32
- return;
33
- }
34
- try {
35
- request.body = await parser.run(request);
36
- } catch {
37
- response.status(HttpCodes_cjs.HttpCodes.BadRequest).json({ error: `Cannot parse ${type} data.` });
38
22
  }
39
23
  }
40
24
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/body.ts"],"names":["Middleware","HttpCodes"],"mappings":";;;;;;;;;AAIO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyBA,yBAAW,CAAA;AAAA,EAGzC,YAAY,OAAmC,EAAA;AACrD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,QAAU,EAAA,EAAA,EAAI,CAAA,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,CAAOC,wBAAU,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,CAAOA,uBAAU,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,CAAOA,uBAAU,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.cjs","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":["Middleware","HttpCodes"],"mappings":";;;;;;;AAGO,IAAM,iBAAA,GAAN,MAAM,iBAAA,SAAyBA,yBAAW,CAAA;AAAA,EACzC,YAAY,OAAmC,EAAA;AACrD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,QAAU,EAAA,EAAA,EAAI,CAAA,CAAA;AAAA,GAChC;AAAA,EAEgB,GAAA,CAAI,SAA6B,QAA+B,EAAA;AAC/E,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,CAAOC,wBAAU,eAAe,CAAA,CAAE,KAAK,EAAE,KAAA,EAAO,oCAAoC,CAAA,CAAA;AAAA,KAC9F;AAAA,GACD;AACD,CAAA,CAAA;AAvBiD,MAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA,CAAA;AAA1C,IAAM,gBAAN,GAAA","file":"body.cjs","sourcesContent":["import { HttpCodes } from '../lib/structures/http/HttpCodes';\nimport { Middleware } from '../lib/structures/Middleware';\n\nexport class PluginMiddleware extends Middleware {\n\tpublic constructor(context: Middleware.LoaderContext) {\n\t\tsuper(context, { position: 20 });\n\t}\n\n\tpublic override run(request: Middleware.Request, response: Middleware.Response) {\n\t\tif (!request.route) return;\n\n\t\t// RFC 1341 4.\n\t\tconst contentType = request.headers['content-type'];\n\t\tif (typeof contentType !== 'string') return;\n\n\t\t// RFC 7230 3.3.2.\n\t\tconst lengthString = request.headers['content-length'];\n\t\tif (typeof lengthString !== 'string') return;\n\n\t\t// Verify if the content length is lower than accepted:\n\t\tconst length = Number(lengthString);\n\t\tconst maximumLength = request.route.maximumBodyLength;\n\t\tif (length > maximumLength) {\n\t\t\tresponse.status(HttpCodes.PayloadTooLarge).json({ error: 'Exceeded maximum content length.' });\n\t\t}\n\t}\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index_cjs = require('./index.cjs');
4
3
  var framework = require('@sapphire/framework');
4
+ var index_cjs = require('./index.cjs');
5
5
 
6
6
  var __defProp = Object.defineProperty;
7
7
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -11,9 +11,8 @@ var _Api = class _Api extends framework.Plugin {
11
11
  */
12
12
  static [framework.postInitialization](options) {
13
13
  this.server = new index_cjs.Server(options.api);
14
- this.stores.register(this.server.routes).register(this.server.mediaParsers).register(this.server.middlewares);
14
+ this.stores.register(this.server.routes).register(this.server.middlewares);
15
15
  index_cjs.loadListeners();
16
- index_cjs.loadMediaParsers();
17
16
  index_cjs.loadMiddlewares();
18
17
  index_cjs.loadRoutes();
19
18
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/register.ts"],"names":["Plugin","postInitialization","Server","loadListeners","loadMediaParsers","loadMiddlewares","loadRoutes","preLogin","SapphireClient"],"mappings":";;;;;;;AASO,IAAM,IAAA,GAAN,MAAM,IAAA,SAAYA,gBAAO,CAAA;AAAA;AAAA;AAAA;AAAA,EAI/B,QAAeC,4BAAkB,CAAA,CAAwB,OAA8B,EAAA;AACtF,IAAA,IAAA,CAAK,MAAS,GAAA,IAAIC,gBAAO,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,IAAcC,uBAAA,EAAA,CAAA;AACd,IAAiBC,0BAAA,EAAA,CAAA;AACjB,IAAgBC,yBAAA,EAAA,CAAA;AAChB,IAAWC,oBAAA,EAAA,CAAA;AAAA,GACZ;AAAA;AAAA;AAAA;AAAA,EAKA,cAAqBC,kBAAQ,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;AA6BPC,wBAAA,CAAe,OAAQ,CAAA,8BAAA,CAA+B,GAAI,CAAAP,4BAAkB,GAAG,wBAAwB,CAAA,CAAA;AACvGO,wBAAA,CAAe,OAAQ,CAAA,oBAAA,CAAqB,GAAI,CAAAD,kBAAQ,GAAG,cAAc,CAAA","file":"register.cjs","sourcesContent":["import './index';\n\nimport { Plugin, postInitialization, preLogin, SapphireClient } from '@sapphire/framework';\nimport type { ClientOptions } from 'discord.js';\nimport { loadListeners, 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":["Plugin","postInitialization","Server","loadListeners","loadMiddlewares","loadRoutes","preLogin","SapphireClient"],"mappings":";;;;;;;AAOO,IAAM,IAAA,GAAN,MAAM,IAAA,SAAYA,gBAAO,CAAA;AAAA;AAAA;AAAA;AAAA,EAI/B,QAAeC,4BAAkB,CAAA,CAAwB,OAA8B,EAAA;AACtF,IAAA,IAAA,CAAK,MAAS,GAAA,IAAIC,gBAAO,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AACpC,IAAK,IAAA,CAAA,MAAA,CACH,SAAS,IAAK,CAAA,MAAA,CAAO,MAAM,CAC3B,CAAA,QAAA,CAAS,IAAK,CAAA,MAAA,CAAO,WAAW,CAAA,CAAA;AAElC,IAAcC,uBAAA,EAAA,CAAA;AACd,IAAgBC,yBAAA,EAAA,CAAA;AAChB,IAAWC,oBAAA,EAAA,CAAA;AAAA,GACZ;AAAA;AAAA;AAAA;AAAA,EAKA,cAAqBC,kBAAQ,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;AAzBgC,MAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAAzB,IAAM,GAAN,GAAA,KAAA;AA2BPC,wBAAA,CAAe,OAAQ,CAAA,8BAAA,CAA+B,GAAI,CAAAN,4BAAkB,GAAG,wBAAwB,CAAA,CAAA;AACvGM,wBAAA,CAAe,OAAQ,CAAA,oBAAA,CAAqB,GAAI,CAAAD,kBAAQ,GAAG,cAAc,CAAA","file":"register.cjs","sourcesContent":["import { Plugin, postInitialization, preLogin, SapphireClient } from '@sapphire/framework';\nimport type { ClientOptions } from 'discord.js';\nimport { loadListeners, loadMiddlewares, loadRoutes, Server } from './index';\n\n/**\n * @since 1.0.0\n */\nexport class Api extends Plugin {\n\t/**\n\t * @since 1.0.0\n\t */\n\tpublic static [postInitialization](this: SapphireClient, options: ClientOptions): void {\n\t\tthis.server = new Server(options.api);\n\t\tthis.stores\n\t\t\t.register(this.server.routes) //\n\t\t\t.register(this.server.middlewares);\n\n\t\tloadListeners();\n\t\tloadMiddlewares();\n\t\tloadRoutes();\n\t}\n\n\t/**\n\t * @since 1.0.0\n\t */\n\tpublic static 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,4 +1,3 @@
1
- import './index.cjs';
2
1
  import { Plugin, postInitialization, SapphireClient, preLogin } from '@sapphire/framework';
3
2
  import { ClientOptions } from 'discord.js';
4
3
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/_load.ts"],"names":["container","PluginOAuthCallback","PluginOAuthLogout"],"mappings":";;;;;;;;AAIO,SAAS,UAAa,GAAA;AAC5B,EAAA,MAAM,KAAQ,GAAA,QAAA,CAAA;AACd,EAAK,KAAAA,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,UAAY,EAAA,KAAA,EAAOC,6BAAqB,EAAA,KAAA,EAAO,CAAA,CAAA;AACvF,EAAK,KAAAD,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,QAAU,EAAA,KAAA,EAAOE,2BAAmB,EAAA,KAAA,EAAO,CAAA,CAAA;AACpF,CAAA;AAJgB,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginRoute as PluginOAuthCallback } from './oauth/callback.post';\nimport { PluginRoute as PluginOAuthLogout } from './oauth/logout.post';\n\nexport function loadRoutes() {\n\tconst store = 'routes' 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":["container","PluginOAuthCallback","PluginOAuthLogout"],"mappings":";;;;;;;;AAIO,SAAS,UAAa,GAAA;AAC5B,EAAA,MAAM,KAAQ,GAAA,QAAA,CAAA;AACd,EAAK,KAAAA,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,UAAY,EAAA,KAAA,EAAOC,6BAAqB,EAAA,KAAA,EAAO,CAAA,CAAA;AACvF,EAAK,KAAAD,gBAAA,CAAU,OAAO,SAAU,CAAA,EAAE,MAAM,QAAU,EAAA,KAAA,EAAOE,2BAAmB,EAAA,KAAA,EAAO,CAAA,CAAA;AACpF,CAAA;AAJgB,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA","file":"_load.cjs","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginRoute as PluginOAuthCallback } from './oauth/callback.post';\nimport { PluginRoute as PluginOAuthLogout } from './oauth/logout.post';\n\nexport function loadRoutes() {\n\tconst store = 'routes';\n\tvoid container.stores.loadPiece({ name: 'callback', piece: PluginOAuthCallback, store });\n\tvoid container.stores.loadPiece({ name: 'logout', piece: PluginOAuthLogout, store });\n}\n"]}
@@ -19,7 +19,7 @@ var _PluginRoute = class _PluginRoute extends Route_cjs.Route {
19
19
  this.redirectUri = server.auth?.redirect;
20
20
  }
21
21
  async run(request, response) {
22
- const body = request.body;
22
+ const body = await request.readBodyJson();
23
23
  if (typeof body?.code !== "string") {
24
24
  return response.badRequest();
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/routes/oauth/callback.post.ts"],"names":["Route","HttpCodes","fetch","OAuth2Routes","stringify"],"mappings":"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","file":"callback.post.cjs","sourcesContent":["import { OAuth2Routes, type RESTPostOAuth2AccessTokenResult, type RESTPostOAuth2AccessTokenURLEncodedData } from 'discord.js';\nimport { stringify } from 'querystring';\nimport { fetch } from 'undici';\nimport { Route } from '../../lib/structures/Route';\nimport { HttpCodes } from '../../lib/structures/http/HttpCodes';\n\nexport class PluginRoute extends Route {\n\tprivate readonly redirectUri: string | undefined;\n\n\tpublic constructor(context: Route.LoaderContext) {\n\t\tsuper(context, { route: 'oauth/callback', methods: ['POST'] });\n\n\t\tconst { server } = this.container;\n\t\tthis.enabled = server.auth !== null;\n\t\tthis.redirectUri = server.auth?.redirect;\n\t}\n\n\tpublic override async run(request: Route.Request, response: Route.Response) {\n\t\tconst body = 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":["Route","HttpCodes","fetch","OAuth2Routes","stringify"],"mappings":"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","file":"callback.post.cjs","sourcesContent":["import { OAuth2Routes, type RESTPostOAuth2AccessTokenResult, type RESTPostOAuth2AccessTokenURLEncodedData } from 'discord.js';\nimport { stringify } from 'querystring';\nimport { fetch } from 'undici';\nimport { Route } from '../../lib/structures/Route';\nimport { HttpCodes } from '../../lib/structures/http/HttpCodes';\n\nexport class PluginRoute extends Route {\n\tprivate readonly redirectUri: string | undefined;\n\n\tpublic constructor(context: Route.LoaderContext) {\n\t\tsuper(context, { route: 'oauth/callback', methods: ['POST'] });\n\n\t\tconst { server } = this.container;\n\t\tthis.enabled = server.auth !== null;\n\t\tthis.redirectUri = server.auth?.redirect;\n\t}\n\n\tpublic override async run(request: Route.Request, response: Route.Response) {\n\t\tconst body = (await request.readBodyJson()) as OAuth2BodyData;\n\t\tif (typeof body?.code !== 'string') {\n\t\t\treturn response.badRequest();\n\t\t}\n\n\t\tconst value = await this.fetchAuth(body);\n\t\tif (value === null) {\n\t\t\treturn response.status(HttpCodes.InternalServerError).json({ error: 'Failed to fetch the token.' });\n\t\t}\n\n\t\tconst now = Date.now();\n\t\tconst auth = this.container.server.auth!;\n\t\tconst data = await auth.fetchData(value.access_token);\n\t\tif (!data.user) {\n\t\t\treturn response.status(HttpCodes.InternalServerError).json({ error: 'Failed to fetch the user.' });\n\t\t}\n\n\t\tconst token = auth.encrypt({\n\t\t\tid: data.user.id,\n\t\t\texpires: now + value.expires_in * 1000,\n\t\t\trefresh: value.refresh_token,\n\t\t\ttoken: value.access_token\n\t\t});\n\n\t\tresponse.cookies.add(auth.cookie, token, { maxAge: value.expires_in });\n\t\treturn response.json(data);\n\t}\n\n\tprivate async fetchAuth(body: OAuth2BodyData) {\n\t\tconst { id, secret } = this.container.server.auth!;\n\n\t\tconst data: RESTPostOAuth2AccessTokenURLEncodedData = {\n\t\t\t/* eslint-disable @typescript-eslint/naming-convention */\n\t\t\tclient_id: id,\n\t\t\tclient_secret: secret,\n\t\t\tcode: body.code,\n\t\t\tgrant_type: 'authorization_code',\n\t\t\tredirect_uri: this.redirectUri ?? body.redirectUri\n\t\t\t/* eslint-enable @typescript-eslint/naming-convention */\n\t\t};\n\n\t\tconst result = await fetch(OAuth2Routes.tokenURL, {\n\t\t\tmethod: 'POST',\n\t\t\tbody: stringify(data as any),\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/x-www-form-urlencoded'\n\t\t\t}\n\t\t});\n\n\t\tconst json = await result.json();\n\t\tif (result.ok) return json as RESTPostOAuth2AccessTokenResult;\n\n\t\tthis.container.logger.error(json);\n\t\treturn null;\n\t}\n}\n\n/**\n * The OAuth2 body data sent to the callback.\n * @since 1.2.0\n */\nexport interface OAuth2BodyData {\n\t/**\n\t * The code sent by the client.\n\t * @since 1.2.0\n\t */\n\tcode: string;\n\n\t/**\n\t * The client's ID.\n\t * @since 1.2.0\n\t */\n\tclientId: string;\n\n\t/**\n\t * The redirect URI.\n\t * @since 1.2.0\n\t */\n\tredirectUri: string;\n}\n"]}