@sapphire/plugin-api 8.3.1-next.d23894e → 8.3.1

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ # [@sapphire/plugin-api@8.3.1](https://github.com/sapphiredev/plugins/compare/@sapphire/plugin-api@8.3.0...@sapphire/plugin-api@8.3.1) - (2025-06-29)
6
+
7
+ ## 🐛 Bug Fixes
8
+
9
+ - **deps:** Update all non-major dependencies ([4c42df2](https://github.com/sapphiredev/plugins/commit/4c42df2a7ec779aa20b039ead15a7a5e586a2211)) ([#756](https://github.com/sapphiredev/plugins/pull/756) by @renovate[bot])
10
+ - **deps:** Update all non-major dependencies ([ae08934](https://github.com/sapphiredev/plugins/commit/ae089340f9e923b9e1d3a8373d703dfcfaff0183)) ([#754](https://github.com/sapphiredev/plugins/pull/754) by @renovate[bot])
11
+ - **deps:** Update all non-major dependencies ([d23894e](https://github.com/sapphiredev/plugins/commit/d23894e01c8ca84f8ff06b6921cbdc350b668f21)) ([#752](https://github.com/sapphiredev/plugins/pull/752) by @renovate[bot])
12
+
5
13
  # [@sapphire/plugin-api@8.3.0](https://github.com/sapphiredev/plugins/compare/@sapphire/plugin-api@8.2.1...@sapphire/plugin-api@8.3.0) - (2025-06-11)
6
14
 
7
15
  ## 🏠 Refactor
@@ -19,7 +19,7 @@ var _load_cjs$1 = require('./middlewares/_load.cjs');
19
19
  var _load_cjs$2 = require('./routes/_load.cjs');
20
20
 
21
21
  // src/index.ts
22
- var version = "8.3.1-next.d23894e";
22
+ var version = "8.3.1";
23
23
 
24
24
  Object.defineProperty(exports, "loadListeners", {
25
25
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoDO,IAAM,OAAkB,GAAA","file":"index.cjs","sourcesContent":["import type { Server, ServerOptions } from './lib/structures/http/Server';\nimport type { MiddlewareStore } from './lib/structures/MiddlewareStore';\nimport type { RouteStore } from './lib/structures/RouteStore';\n\nexport * from './lib/structures/api/ApiRequest';\nexport * from './lib/structures/api/ApiResponse';\nexport * from './lib/structures/api/CookieStore';\nexport * from './lib/structures/http/Auth';\nexport * from './lib/structures/http/HttpCodes';\nexport * from './lib/structures/http/HttpMethods';\nexport * from './lib/structures/http/Server';\nexport * from './lib/structures/Middleware';\nexport * from './lib/structures/MiddlewareStore';\nexport * from './lib/structures/Route';\nexport * from './lib/structures/router/RouterBranch';\nexport * from './lib/structures/router/RouterNode';\nexport * from './lib/structures/router/RouterRoot';\nexport * from './lib/structures/RouteStore';\nexport type * from '@sapphire/iana-mime-types';\n\nexport { loadListeners } from './listeners/_load';\nexport { loadMiddlewares } from './middlewares/_load';\nexport { loadRoutes } from './routes/_load';\n\ndeclare module 'discord.js' {\n\tinterface Client {\n\t\tserver: Server;\n\t}\n\n\tinterface ClientOptions {\n\t\tapi?: ServerOptions;\n\t}\n}\n\ndeclare module '@sapphire/pieces' {\n\tinterface StoreRegistryEntries {\n\t\troutes: RouteStore;\n\t\tmiddlewares: MiddlewareStore;\n\t}\n\n\tinterface Container {\n\t\tserver: Server;\n\t}\n}\n\n/**\n * The [@sapphire/plugin-api](https://github.com/sapphiredev/plugins/blob/main/packages/api) version that you are currently using.\n * An example use of this is showing it of in a bot information command.\n *\n * Note to Sapphire developers: This needs to explicitly be `string` so it is not typed as the string that gets replaced by esbuild\n */\n// eslint-disable-next-line @typescript-eslint/no-inferrable-types\nexport const version: string = '8.3.1-next.d23894e';\n"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoDO,IAAM,OAAkB,GAAA","file":"index.cjs","sourcesContent":["import type { Server, ServerOptions } from './lib/structures/http/Server';\nimport type { MiddlewareStore } from './lib/structures/MiddlewareStore';\nimport type { RouteStore } from './lib/structures/RouteStore';\n\nexport * from './lib/structures/api/ApiRequest';\nexport * from './lib/structures/api/ApiResponse';\nexport * from './lib/structures/api/CookieStore';\nexport * from './lib/structures/http/Auth';\nexport * from './lib/structures/http/HttpCodes';\nexport * from './lib/structures/http/HttpMethods';\nexport * from './lib/structures/http/Server';\nexport * from './lib/structures/Middleware';\nexport * from './lib/structures/MiddlewareStore';\nexport * from './lib/structures/Route';\nexport * from './lib/structures/router/RouterBranch';\nexport * from './lib/structures/router/RouterNode';\nexport * from './lib/structures/router/RouterRoot';\nexport * from './lib/structures/RouteStore';\nexport type * from '@sapphire/iana-mime-types';\n\nexport { loadListeners } from './listeners/_load';\nexport { loadMiddlewares } from './middlewares/_load';\nexport { loadRoutes } from './routes/_load';\n\ndeclare module 'discord.js' {\n\tinterface Client {\n\t\tserver: Server;\n\t}\n\n\tinterface ClientOptions {\n\t\tapi?: ServerOptions;\n\t}\n}\n\ndeclare module '@sapphire/pieces' {\n\tinterface StoreRegistryEntries {\n\t\troutes: RouteStore;\n\t\tmiddlewares: MiddlewareStore;\n\t}\n\n\tinterface Container {\n\t\tserver: Server;\n\t}\n}\n\n/**\n * The [@sapphire/plugin-api](https://github.com/sapphiredev/plugins/blob/main/packages/api) version that you are currently using.\n * An example use of this is showing it of in a bot information command.\n *\n * Note to Sapphire developers: This needs to explicitly be `string` so it is not typed as the string that gets replaced by esbuild\n */\n// eslint-disable-next-line @typescript-eslint/no-inferrable-types\nexport const version: string = '8.3.1';\n"]}
@@ -44,6 +44,10 @@ var _RequestProxy = class _RequestProxy {
44
44
  __privateSet(this, _url, new RequestURLProxy_cjs.RequestURLProxy(request));
45
45
  this.headers = new RequestHeadersProxy_cjs.RequestHeadersProxy(request);
46
46
  }
47
+ async bytes() {
48
+ const { body } = this;
49
+ return utilities.isNullish(body) ? new Uint8Array(0) : new Uint8Array(await consumers.arrayBuffer(body));
50
+ }
47
51
  get url() {
48
52
  return __privateGet(this, _url).href;
49
53
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestProxy.ts"],"names":["RequestURLProxy","RequestHeadersProxy","ReadableStream","isNullish","arrayBuffer","Blob","Response","isNullishOrEmpty"],"mappings":"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","file":"RequestProxy.cjs","sourcesContent":["import { isNullish, isNullishOrEmpty } from '@sapphire/utilities';\nimport { Blob } from 'node:buffer';\nimport { arrayBuffer } from 'node:stream/consumers';\nimport { ReadableStream } from 'node:stream/web';\nimport {\n\tResponse,\n\ttype FormData,\n\ttype Headers,\n\ttype ReferrerPolicy,\n\ttype Request,\n\ttype RequestCache,\n\ttype RequestCredentials,\n\ttype RequestDestination,\n\ttype RequestMode,\n\ttype RequestRedirect\n} from 'undici';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport type { MethodName } from '../../structures/http/HttpMethods';\nimport { RequestHeadersProxy } from './RequestHeadersProxy';\nimport { RequestURLProxy } from './RequestURLProxy';\n\nexport class RequestProxy implements Request {\n\tpublic cache: RequestCache = 'default';\n\tpublic credentials: RequestCredentials = 'same-origin';\n\tpublic destination: RequestDestination = '';\n\tpublic integrity: string = '';\n\tpublic keepalive: boolean = false;\n\n\tpublic mode: RequestMode = 'cors';\n\tpublic redirect: RequestRedirect = 'follow';\n\tpublic referrer: string = 'about:client';\n\tpublic referrerPolicy: ReferrerPolicy = '';\n\n\tpublic headers: Headers;\n\n\tpublic bodyUsed: boolean = false;\n\tpublic duplex = 'half' as const;\n\n\treadonly #request: ApiRequest;\n\treadonly #url: RequestURLProxy;\n\t#cachedMethod: MethodName | null = null;\n\t#cachedHasBody: boolean | null = null;\n\t#abortController: AbortController | null = null;\n\t#bodyStream: ReadableStream<Uint8Array> | null = null;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.#request = request;\n\t\tthis.#url = new RequestURLProxy(request);\n\t\tthis.headers = new RequestHeadersProxy(request);\n\t}\n\n\tpublic get url(): string {\n\t\treturn this.#url.href;\n\t}\n\n\tpublic get method(): MethodName {\n\t\tthis.#cachedMethod ??= (this.#request.method?.toUpperCase() ?? 'GET') as MethodName;\n\t\treturn this.#cachedMethod;\n\t}\n\n\tpublic get signal(): AbortSignal {\n\t\tthis.#abortController ??= new AbortController();\n\t\treturn this.#abortController.signal;\n\t}\n\n\tpublic get body(): ReadableStream<Uint8Array> | null {\n\t\tif (!this.hasBody) return null;\n\n\t\tthis.#bodyStream ??= new ReadableStream<Uint8Array>({\n\t\t\tstart: (controller) => {\n\t\t\t\tthis.#request\n\t\t\t\t\t.on('data', (chunk) => controller.enqueue(chunk))\n\t\t\t\t\t.once('error', (error) => {\n\t\t\t\t\t\tcontroller.error(error);\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('close', () => {\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('end', () => {\n\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn this.#bodyStream;\n\t}\n\n\tpublic async arrayBuffer(): Promise<ArrayBuffer> {\n\t\tconst { body } = this;\n\t\treturn isNullish(body) ? new ArrayBuffer(0) : arrayBuffer(body);\n\t}\n\n\tpublic async blob(): Promise<Blob> {\n\t\tconst arrayBuffer = await this.arrayBuffer();\n\t\treturn new Blob([arrayBuffer], {\n\t\t\ttype: this.headers.get('content-type') ?? ''\n\t\t});\n\t}\n\n\tpublic async formData(): Promise<FormData> {\n\t\treturn new Response(this.body, { headers: this.headers }).formData(); // NOSONAR\n\t}\n\n\tpublic async json(): Promise<unknown> {\n\t\treturn JSON.parse(await this.text());\n\t}\n\n\tpublic async text(): Promise<string> {\n\t\treturn new TextDecoder().decode(await this.arrayBuffer());\n\t}\n\n\tpublic clone(): Request {\n\t\treturn new RequestProxy(this.#request);\n\t}\n\n\tprivate get hasBody(): boolean {\n\t\tif (this.#cachedHasBody !== null) return this.#cachedHasBody;\n\n\t\tconst contentLengthString = this.headers.get('content-length');\n\t\tconst contentLength = isNullishOrEmpty(contentLengthString) ? 0 : Number(contentLengthString);\n\t\tif (Number.isSafeInteger(contentLength) && contentLength > 0) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst transferEncoding = this.headers.get('transfer-encoding');\n\t\tif (transferEncoding?.includes('chunked')) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.#cachedHasBody = false;\n\t\treturn false;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestProxy.ts"],"names":["RequestURLProxy","RequestHeadersProxy","isNullish","arrayBuffer","ReadableStream","Blob","Response","isNullishOrEmpty"],"mappings":"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","file":"RequestProxy.cjs","sourcesContent":["import { isNullish, isNullishOrEmpty } from '@sapphire/utilities';\nimport { Blob } from 'node:buffer';\nimport { arrayBuffer } from 'node:stream/consumers';\nimport { ReadableStream } from 'node:stream/web';\nimport {\n\tResponse,\n\ttype FormData,\n\ttype Headers,\n\ttype ReferrerPolicy,\n\ttype Request,\n\ttype RequestCache,\n\ttype RequestCredentials,\n\ttype RequestDestination,\n\ttype RequestMode,\n\ttype RequestRedirect\n} from 'undici';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport type { MethodName } from '../../structures/http/HttpMethods';\nimport { RequestHeadersProxy } from './RequestHeadersProxy';\nimport { RequestURLProxy } from './RequestURLProxy';\n\nexport class RequestProxy implements Request {\n\tpublic cache: RequestCache = 'default';\n\tpublic credentials: RequestCredentials = 'same-origin';\n\tpublic destination: RequestDestination = '';\n\tpublic integrity: string = '';\n\tpublic keepalive: boolean = false;\n\n\tpublic mode: RequestMode = 'cors';\n\tpublic redirect: RequestRedirect = 'follow';\n\tpublic referrer: string = 'about:client';\n\tpublic referrerPolicy: ReferrerPolicy = '';\n\n\tpublic headers: Headers;\n\n\tpublic bodyUsed: boolean = false;\n\tpublic duplex = 'half' as const;\n\n\treadonly #request: ApiRequest;\n\treadonly #url: RequestURLProxy;\n\t#cachedMethod: MethodName | null = null;\n\t#cachedHasBody: boolean | null = null;\n\t#abortController: AbortController | null = null;\n\t#bodyStream: ReadableStream<Uint8Array> | null = null;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.#request = request;\n\t\tthis.#url = new RequestURLProxy(request);\n\t\tthis.headers = new RequestHeadersProxy(request);\n\t}\n\n\tpublic async bytes(): Promise<Uint8Array> {\n\t\tconst { body } = this;\n\t\treturn isNullish(body) ? new Uint8Array(0) : new Uint8Array(await arrayBuffer(body));\n\t}\n\n\tpublic get url(): string {\n\t\treturn this.#url.href;\n\t}\n\n\tpublic get method(): MethodName {\n\t\tthis.#cachedMethod ??= (this.#request.method?.toUpperCase() ?? 'GET') as MethodName;\n\t\treturn this.#cachedMethod;\n\t}\n\n\tpublic get signal(): AbortSignal {\n\t\tthis.#abortController ??= new AbortController();\n\t\treturn this.#abortController.signal;\n\t}\n\n\tpublic get body(): ReadableStream<Uint8Array> | null {\n\t\tif (!this.hasBody) return null;\n\n\t\tthis.#bodyStream ??= new ReadableStream<Uint8Array>({\n\t\t\tstart: (controller) => {\n\t\t\t\tthis.#request\n\t\t\t\t\t.on('data', (chunk) => controller.enqueue(chunk))\n\t\t\t\t\t.once('error', (error) => {\n\t\t\t\t\t\tcontroller.error(error);\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('close', () => {\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('end', () => {\n\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn this.#bodyStream;\n\t}\n\n\tpublic async arrayBuffer(): Promise<ArrayBuffer> {\n\t\tconst { body } = this;\n\t\treturn isNullish(body) ? new ArrayBuffer(0) : arrayBuffer(body);\n\t}\n\n\tpublic async blob(): Promise<Blob> {\n\t\tconst arrayBuffer = await this.arrayBuffer();\n\t\treturn new Blob([arrayBuffer], {\n\t\t\ttype: this.headers.get('content-type') ?? ''\n\t\t});\n\t}\n\n\tpublic async formData(): Promise<FormData> {\n\t\treturn new Response(this.body, { headers: this.headers }).formData(); // NOSONAR\n\t}\n\n\tpublic async json(): Promise<unknown> {\n\t\treturn JSON.parse(await this.text());\n\t}\n\n\tpublic async text(): Promise<string> {\n\t\treturn new TextDecoder().decode(await this.arrayBuffer());\n\t}\n\n\tpublic clone(): Request {\n\t\treturn new RequestProxy(this.#request);\n\t}\n\n\tprivate get hasBody(): boolean {\n\t\tif (this.#cachedHasBody !== null) return this.#cachedHasBody;\n\n\t\tconst contentLengthString = this.headers.get('content-length');\n\t\tconst contentLength = isNullishOrEmpty(contentLengthString) ? 0 : Number(contentLengthString);\n\t\tif (Number.isSafeInteger(contentLength) && contentLength > 0) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst transferEncoding = this.headers.get('transfer-encoding');\n\t\tif (transferEncoding?.includes('chunked')) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.#cachedHasBody = false;\n\t\treturn false;\n\t}\n}\n"]}
@@ -17,7 +17,7 @@ export { loadListeners } from './listeners/_load.mjs';
17
17
  export { loadMiddlewares } from './middlewares/_load.mjs';
18
18
  export { loadRoutes } from './routes/_load.mjs';
19
19
 
20
- var version = "8.3.1-next.d23894e";
20
+ var version = "8.3.1";
21
21
 
22
22
  export { version };
23
23
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAoDO,IAAM,OAAkB,GAAA","file":"index.mjs","sourcesContent":["import type { Server, ServerOptions } from './lib/structures/http/Server';\nimport type { MiddlewareStore } from './lib/structures/MiddlewareStore';\nimport type { RouteStore } from './lib/structures/RouteStore';\n\nexport * from './lib/structures/api/ApiRequest';\nexport * from './lib/structures/api/ApiResponse';\nexport * from './lib/structures/api/CookieStore';\nexport * from './lib/structures/http/Auth';\nexport * from './lib/structures/http/HttpCodes';\nexport * from './lib/structures/http/HttpMethods';\nexport * from './lib/structures/http/Server';\nexport * from './lib/structures/Middleware';\nexport * from './lib/structures/MiddlewareStore';\nexport * from './lib/structures/Route';\nexport * from './lib/structures/router/RouterBranch';\nexport * from './lib/structures/router/RouterNode';\nexport * from './lib/structures/router/RouterRoot';\nexport * from './lib/structures/RouteStore';\nexport type * from '@sapphire/iana-mime-types';\n\nexport { loadListeners } from './listeners/_load';\nexport { loadMiddlewares } from './middlewares/_load';\nexport { loadRoutes } from './routes/_load';\n\ndeclare module 'discord.js' {\n\tinterface Client {\n\t\tserver: Server;\n\t}\n\n\tinterface ClientOptions {\n\t\tapi?: ServerOptions;\n\t}\n}\n\ndeclare module '@sapphire/pieces' {\n\tinterface StoreRegistryEntries {\n\t\troutes: RouteStore;\n\t\tmiddlewares: MiddlewareStore;\n\t}\n\n\tinterface Container {\n\t\tserver: Server;\n\t}\n}\n\n/**\n * The [@sapphire/plugin-api](https://github.com/sapphiredev/plugins/blob/main/packages/api) version that you are currently using.\n * An example use of this is showing it of in a bot information command.\n *\n * Note to Sapphire developers: This needs to explicitly be `string` so it is not typed as the string that gets replaced by esbuild\n */\n// eslint-disable-next-line @typescript-eslint/no-inferrable-types\nexport const version: string = '8.3.1-next.d23894e';\n"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAoDO,IAAM,OAAkB,GAAA","file":"index.mjs","sourcesContent":["import type { Server, ServerOptions } from './lib/structures/http/Server';\nimport type { MiddlewareStore } from './lib/structures/MiddlewareStore';\nimport type { RouteStore } from './lib/structures/RouteStore';\n\nexport * from './lib/structures/api/ApiRequest';\nexport * from './lib/structures/api/ApiResponse';\nexport * from './lib/structures/api/CookieStore';\nexport * from './lib/structures/http/Auth';\nexport * from './lib/structures/http/HttpCodes';\nexport * from './lib/structures/http/HttpMethods';\nexport * from './lib/structures/http/Server';\nexport * from './lib/structures/Middleware';\nexport * from './lib/structures/MiddlewareStore';\nexport * from './lib/structures/Route';\nexport * from './lib/structures/router/RouterBranch';\nexport * from './lib/structures/router/RouterNode';\nexport * from './lib/structures/router/RouterRoot';\nexport * from './lib/structures/RouteStore';\nexport type * from '@sapphire/iana-mime-types';\n\nexport { loadListeners } from './listeners/_load';\nexport { loadMiddlewares } from './middlewares/_load';\nexport { loadRoutes } from './routes/_load';\n\ndeclare module 'discord.js' {\n\tinterface Client {\n\t\tserver: Server;\n\t}\n\n\tinterface ClientOptions {\n\t\tapi?: ServerOptions;\n\t}\n}\n\ndeclare module '@sapphire/pieces' {\n\tinterface StoreRegistryEntries {\n\t\troutes: RouteStore;\n\t\tmiddlewares: MiddlewareStore;\n\t}\n\n\tinterface Container {\n\t\tserver: Server;\n\t}\n}\n\n/**\n * The [@sapphire/plugin-api](https://github.com/sapphiredev/plugins/blob/main/packages/api) version that you are currently using.\n * An example use of this is showing it of in a bot information command.\n *\n * Note to Sapphire developers: This needs to explicitly be `string` so it is not typed as the string that gets replaced by esbuild\n */\n// eslint-disable-next-line @typescript-eslint/no-inferrable-types\nexport const version: string = '8.3.1';\n"]}
@@ -32,6 +32,10 @@ var _RequestProxy = class _RequestProxy {
32
32
  __privateSet(this, _url, new RequestURLProxy(request));
33
33
  this.headers = new RequestHeadersProxy(request);
34
34
  }
35
+ async bytes() {
36
+ const { body } = this;
37
+ return isNullish(body) ? new Uint8Array(0) : new Uint8Array(await arrayBuffer(body));
38
+ }
35
39
  get url() {
36
40
  return __privateGet(this, _url).href;
37
41
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestProxy.ts"],"names":["arrayBuffer"],"mappings":"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","file":"RequestProxy.mjs","sourcesContent":["import { isNullish, isNullishOrEmpty } from '@sapphire/utilities';\nimport { Blob } from 'node:buffer';\nimport { arrayBuffer } from 'node:stream/consumers';\nimport { ReadableStream } from 'node:stream/web';\nimport {\n\tResponse,\n\ttype FormData,\n\ttype Headers,\n\ttype ReferrerPolicy,\n\ttype Request,\n\ttype RequestCache,\n\ttype RequestCredentials,\n\ttype RequestDestination,\n\ttype RequestMode,\n\ttype RequestRedirect\n} from 'undici';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport type { MethodName } from '../../structures/http/HttpMethods';\nimport { RequestHeadersProxy } from './RequestHeadersProxy';\nimport { RequestURLProxy } from './RequestURLProxy';\n\nexport class RequestProxy implements Request {\n\tpublic cache: RequestCache = 'default';\n\tpublic credentials: RequestCredentials = 'same-origin';\n\tpublic destination: RequestDestination = '';\n\tpublic integrity: string = '';\n\tpublic keepalive: boolean = false;\n\n\tpublic mode: RequestMode = 'cors';\n\tpublic redirect: RequestRedirect = 'follow';\n\tpublic referrer: string = 'about:client';\n\tpublic referrerPolicy: ReferrerPolicy = '';\n\n\tpublic headers: Headers;\n\n\tpublic bodyUsed: boolean = false;\n\tpublic duplex = 'half' as const;\n\n\treadonly #request: ApiRequest;\n\treadonly #url: RequestURLProxy;\n\t#cachedMethod: MethodName | null = null;\n\t#cachedHasBody: boolean | null = null;\n\t#abortController: AbortController | null = null;\n\t#bodyStream: ReadableStream<Uint8Array> | null = null;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.#request = request;\n\t\tthis.#url = new RequestURLProxy(request);\n\t\tthis.headers = new RequestHeadersProxy(request);\n\t}\n\n\tpublic get url(): string {\n\t\treturn this.#url.href;\n\t}\n\n\tpublic get method(): MethodName {\n\t\tthis.#cachedMethod ??= (this.#request.method?.toUpperCase() ?? 'GET') as MethodName;\n\t\treturn this.#cachedMethod;\n\t}\n\n\tpublic get signal(): AbortSignal {\n\t\tthis.#abortController ??= new AbortController();\n\t\treturn this.#abortController.signal;\n\t}\n\n\tpublic get body(): ReadableStream<Uint8Array> | null {\n\t\tif (!this.hasBody) return null;\n\n\t\tthis.#bodyStream ??= new ReadableStream<Uint8Array>({\n\t\t\tstart: (controller) => {\n\t\t\t\tthis.#request\n\t\t\t\t\t.on('data', (chunk) => controller.enqueue(chunk))\n\t\t\t\t\t.once('error', (error) => {\n\t\t\t\t\t\tcontroller.error(error);\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('close', () => {\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('end', () => {\n\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn this.#bodyStream;\n\t}\n\n\tpublic async arrayBuffer(): Promise<ArrayBuffer> {\n\t\tconst { body } = this;\n\t\treturn isNullish(body) ? new ArrayBuffer(0) : arrayBuffer(body);\n\t}\n\n\tpublic async blob(): Promise<Blob> {\n\t\tconst arrayBuffer = await this.arrayBuffer();\n\t\treturn new Blob([arrayBuffer], {\n\t\t\ttype: this.headers.get('content-type') ?? ''\n\t\t});\n\t}\n\n\tpublic async formData(): Promise<FormData> {\n\t\treturn new Response(this.body, { headers: this.headers }).formData(); // NOSONAR\n\t}\n\n\tpublic async json(): Promise<unknown> {\n\t\treturn JSON.parse(await this.text());\n\t}\n\n\tpublic async text(): Promise<string> {\n\t\treturn new TextDecoder().decode(await this.arrayBuffer());\n\t}\n\n\tpublic clone(): Request {\n\t\treturn new RequestProxy(this.#request);\n\t}\n\n\tprivate get hasBody(): boolean {\n\t\tif (this.#cachedHasBody !== null) return this.#cachedHasBody;\n\n\t\tconst contentLengthString = this.headers.get('content-length');\n\t\tconst contentLength = isNullishOrEmpty(contentLengthString) ? 0 : Number(contentLengthString);\n\t\tif (Number.isSafeInteger(contentLength) && contentLength > 0) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst transferEncoding = this.headers.get('transfer-encoding');\n\t\tif (transferEncoding?.includes('chunked')) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.#cachedHasBody = false;\n\t\treturn false;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/lib/utils/_body/RequestProxy.ts"],"names":["arrayBuffer"],"mappings":"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","file":"RequestProxy.mjs","sourcesContent":["import { isNullish, isNullishOrEmpty } from '@sapphire/utilities';\nimport { Blob } from 'node:buffer';\nimport { arrayBuffer } from 'node:stream/consumers';\nimport { ReadableStream } from 'node:stream/web';\nimport {\n\tResponse,\n\ttype FormData,\n\ttype Headers,\n\ttype ReferrerPolicy,\n\ttype Request,\n\ttype RequestCache,\n\ttype RequestCredentials,\n\ttype RequestDestination,\n\ttype RequestMode,\n\ttype RequestRedirect\n} from 'undici';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport type { MethodName } from '../../structures/http/HttpMethods';\nimport { RequestHeadersProxy } from './RequestHeadersProxy';\nimport { RequestURLProxy } from './RequestURLProxy';\n\nexport class RequestProxy implements Request {\n\tpublic cache: RequestCache = 'default';\n\tpublic credentials: RequestCredentials = 'same-origin';\n\tpublic destination: RequestDestination = '';\n\tpublic integrity: string = '';\n\tpublic keepalive: boolean = false;\n\n\tpublic mode: RequestMode = 'cors';\n\tpublic redirect: RequestRedirect = 'follow';\n\tpublic referrer: string = 'about:client';\n\tpublic referrerPolicy: ReferrerPolicy = '';\n\n\tpublic headers: Headers;\n\n\tpublic bodyUsed: boolean = false;\n\tpublic duplex = 'half' as const;\n\n\treadonly #request: ApiRequest;\n\treadonly #url: RequestURLProxy;\n\t#cachedMethod: MethodName | null = null;\n\t#cachedHasBody: boolean | null = null;\n\t#abortController: AbortController | null = null;\n\t#bodyStream: ReadableStream<Uint8Array> | null = null;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.#request = request;\n\t\tthis.#url = new RequestURLProxy(request);\n\t\tthis.headers = new RequestHeadersProxy(request);\n\t}\n\n\tpublic async bytes(): Promise<Uint8Array> {\n\t\tconst { body } = this;\n\t\treturn isNullish(body) ? new Uint8Array(0) : new Uint8Array(await arrayBuffer(body));\n\t}\n\n\tpublic get url(): string {\n\t\treturn this.#url.href;\n\t}\n\n\tpublic get method(): MethodName {\n\t\tthis.#cachedMethod ??= (this.#request.method?.toUpperCase() ?? 'GET') as MethodName;\n\t\treturn this.#cachedMethod;\n\t}\n\n\tpublic get signal(): AbortSignal {\n\t\tthis.#abortController ??= new AbortController();\n\t\treturn this.#abortController.signal;\n\t}\n\n\tpublic get body(): ReadableStream<Uint8Array> | null {\n\t\tif (!this.hasBody) return null;\n\n\t\tthis.#bodyStream ??= new ReadableStream<Uint8Array>({\n\t\t\tstart: (controller) => {\n\t\t\t\tthis.#request\n\t\t\t\t\t.on('data', (chunk) => controller.enqueue(chunk))\n\t\t\t\t\t.once('error', (error) => {\n\t\t\t\t\t\tcontroller.error(error);\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('close', () => {\n\t\t\t\t\t\tthis.#abortController?.abort();\n\t\t\t\t\t})\n\t\t\t\t\t.once('end', () => {\n\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn this.#bodyStream;\n\t}\n\n\tpublic async arrayBuffer(): Promise<ArrayBuffer> {\n\t\tconst { body } = this;\n\t\treturn isNullish(body) ? new ArrayBuffer(0) : arrayBuffer(body);\n\t}\n\n\tpublic async blob(): Promise<Blob> {\n\t\tconst arrayBuffer = await this.arrayBuffer();\n\t\treturn new Blob([arrayBuffer], {\n\t\t\ttype: this.headers.get('content-type') ?? ''\n\t\t});\n\t}\n\n\tpublic async formData(): Promise<FormData> {\n\t\treturn new Response(this.body, { headers: this.headers }).formData(); // NOSONAR\n\t}\n\n\tpublic async json(): Promise<unknown> {\n\t\treturn JSON.parse(await this.text());\n\t}\n\n\tpublic async text(): Promise<string> {\n\t\treturn new TextDecoder().decode(await this.arrayBuffer());\n\t}\n\n\tpublic clone(): Request {\n\t\treturn new RequestProxy(this.#request);\n\t}\n\n\tprivate get hasBody(): boolean {\n\t\tif (this.#cachedHasBody !== null) return this.#cachedHasBody;\n\n\t\tconst contentLengthString = this.headers.get('content-length');\n\t\tconst contentLength = isNullishOrEmpty(contentLengthString) ? 0 : Number(contentLengthString);\n\t\tif (Number.isSafeInteger(contentLength) && contentLength > 0) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst transferEncoding = this.headers.get('transfer-encoding');\n\t\tif (transferEncoding?.includes('chunked')) {\n\t\t\tthis.#cachedHasBody = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.#cachedHasBody = false;\n\t\treturn false;\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapphire/plugin-api",
3
- "version": "8.3.1-next.d23894e",
3
+ "version": "8.3.1",
4
4
  "description": "Plugin for @sapphire/framework to expose a REST API",
5
5
  "author": "@sapphire",
6
6
  "license": "MIT",
@@ -54,8 +54,8 @@
54
54
  "@types/ws": "^8.18.1",
55
55
  "@vladfrangu/async_event_emitter": "2.4.6",
56
56
  "cookie-es": "^1.2.2",
57
- "tldts": "^7.0.8",
58
- "undici": "^7.10.0"
57
+ "tldts": "^7.0.9",
58
+ "undici": "^7.11.0"
59
59
  },
60
60
  "repository": {
61
61
  "type": "git",
@@ -88,7 +88,7 @@
88
88
  "devDependencies": {
89
89
  "@favware/cliff-jumper": "^6.0.0",
90
90
  "@favware/rollup-type-bundler": "^4.0.0",
91
- "concurrently": "^9.1.2",
91
+ "concurrently": "^9.2.0",
92
92
  "tsup": "^8.5.0",
93
93
  "tsx": "^4.20.3",
94
94
  "typedoc": "^0.26.11",