@sapphire/plugin-api 7.0.0-next.d2c9aaa → 7.0.0-next.d9dd30c
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/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +10 -10
- package/dist/cjs/lib/structures/api/ApiRequest.cjs.map +1 -1
- package/dist/cjs/lib/utils/_body/RequestHeadersProxy.cjs.map +1 -1
- package/dist/cjs/lib/utils/_body/RequestProxy.cjs +2 -1
- package/dist/cjs/lib/utils/_body/RequestProxy.cjs.map +1 -1
- package/dist/esm/index.d.mts +10 -10
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/lib/structures/api/ApiRequest.mjs.map +1 -1
- package/dist/esm/lib/utils/_body/RequestHeadersProxy.mjs.map +1 -1
- package/dist/esm/lib/utils/_body/RequestProxy.mjs +1 -0
- package/dist/esm/lib/utils/_body/RequestProxy.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/lib/structures/api/ApiRequest.ts"],"names":[],"mappings":";;;;;AAAA,IAAA,cAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/structures/api/ApiRequest.ts"],"names":[],"mappings":"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","file":"ApiRequest.mjs","sourcesContent":["import { isNullishOrEmpty } from '@sapphire/utilities';\nimport type { Blob } from 'node:buffer';\nimport { IncomingMessage } from 'node:http';\nimport type { FormData, Request } from 'undici';\nimport type { MimeType } from '../../utils/MimeType';\nimport { RequestProxy } from '../../utils/_body/RequestProxy';\nimport type { Route } from '../Route';\nimport type { AuthData } from '../http/Auth';\nimport type { RouterNode } from '../router/RouterNode';\n\nexport class ApiRequest extends IncomingMessage {\n\t/**\n\t * The query parameters.\n\t */\n\tpublic query: Record<string, string | string[]> = {};\n\n\t/**\n\t * The URI parameters.\n\t */\n\tpublic params: Record<string, string> = {};\n\n\t/**\n\t * The authorization information. This field indicates three possible values:\n\t *\n\t * - `undefined`: The authorization middleware has not been executed yet.\n\t * - `null`: The user is not authorized.\n\t * - `AuthData`: The user is authorized.\n\t */\n\tpublic auth?: AuthData | null;\n\n\t/**\n\t * The router node that matched the request. The field indicates three\n\t * possible values:\n\t *\n\t * - `undefined`: The router handler has not been executed yet.\n\t * - `null`: The router handler has been executed, but no node matched the\n\t * request.\n\t * - `RouterNode`: The router handler has been executed and a node matched\n\t * the request.\n\t *\n\t * @since 7.0.0\n\t */\n\tpublic routerNode?: RouterNode | null;\n\n\t/**\n\t * The route that matched the request. The field indicates three possible\n\t * values:\n\t *\n\t * - `undefined`: The router handler has not been executed yet.\n\t * - `null`: The router handler has been executed, but no route matched the\n\t * request.\n\t * - `Route`: The router handler has been executed and a route matched the\n\t * request.\n\t *\n\t * @since 7.0.0\n\t */\n\tpublic route?: Route | null;\n\n\t/**\n\t * The response object. This field is cached to prevent multiple response\n\t * objects from being created.\n\t */\n\t#cachedRequest: Request | null = null;\n\n\tget #isFormContentType() {\n\t\tconst contentType = this.asWeb().headers.get('content-type') as MimeType | null;\n\n\t\t// If Content-Type isn't sent, we can't assume it's a form.\n\t\tif (isNullishOrEmpty(contentType)) return false;\n\n\t\t// If the Content-Type is application/x-www-form-urlencoded or multipart/form-data, it's a form.\n\t\treturn contentType.startsWith('application/x-www-form-urlencoded') || contentType.startsWith('multipart/form-data');\n\t}\n\n\t/**\n\t * The response object, used to validate the request's headers and body.\n\t */\n\tpublic asWeb(): Request {\n\t\tthis.#cachedRequest ??= new RequestProxy(this);\n\t\treturn this.#cachedRequest;\n\t}\n\n\t/**\n\t * Reads the request body and tries to parse using JSON or form-urlencoded.\n\t *\n\t * @example\n\t * ```typescript\n\t * const body = await request.readBody();\n\t * ```\n\t *\n\t * @returns The result of the body parsing\n\t */\n\tpublic readBody(): Promise<unknown> {\n\t\treturn this.#isFormContentType ? this.readBodyFormData() : this.readBodyJson();\n\t}\n\n\t/**\n\t * Reads the request body as an {@link ArrayBuffer}.\n\t *\n\t * @returns The result of the body parsing\n\t */\n\tpublic readBodyArrayBuffer(): Promise<ArrayBuffer> {\n\t\treturn this.asWeb().arrayBuffer();\n\t}\n\n\t/**\n\t * Reads the request body as a {@link Blob}.\n\t *\n\t * @returns The result of the body parsing\n\t */\n\tpublic readBodyBlob(): Promise<Blob> {\n\t\treturn this.asWeb().blob();\n\t}\n\n\t/**\n\t * Reads the request body as a {@link FormData}.\n\t *\n\t * @remarks\n\t *\n\t * This will throw an error if the content type is not one of the following:\n\t *\n\t * - `application/x-www-form-urlencoded`\n\t * - `multipart/form-data`\n\t *\n\t * @returns The result of the body parsing\n\t */\n\tpublic readBodyFormData(): Promise<FormData> {\n\t\treturn this.asWeb().formData(); // NOSONAR\n\t}\n\n\t/**\n\t * Reads the request body as text, using {@link TextDecoder}. Afterward, it\n\t * parses the body as JSON with {@link JSON.parse}.\n\t *\n\t * @returns The result of the body parsing\n\t */\n\tpublic readBodyJson(): Promise<unknown> {\n\t\treturn this.asWeb().json();\n\t}\n\n\t/**\n\t * Reads the request body as text, using {@link TextDecoder}.\n\t *\n\t * @returns The result of the body parsing\n\t */\n\tpublic readBodyText(): Promise<string> {\n\t\treturn this.asWeb().text();\n\t}\n\n\t/**\n\t * Identical to {@link ApiRequest.readBody}, but it validates the result.\n\t *\n\t * @param validator The validator function to use on the body parsing result\n\t * @returns The validated body\n\t */\n\tpublic readValidatedBody<Type>(validator: ValidatorFunction<unknown, Type>) {\n\t\treturn this.readBody().then(validator);\n\t}\n\n\t/**\n\t * Identical to {@link ApiRequest.readBodyFormData}, but it validates the\n\t * result.\n\t *\n\t * @param validator The validator function to use on the body parsing result\n\t * @returns The validated body\n\t */\n\tpublic readValidatedBodyFormData<Type>(validator: ValidatorFunction<FormData, Type>) {\n\t\treturn this.readBodyFormData().then(validator);\n\t}\n\n\t/**\n\t * Identical to {@link ApiRequest.readBodyJson}, but it validates the result.\n\t *\n\t * @param validator The validator function to use on the body parsing result\n\t * @returns The validated body\n\t */\n\tpublic readValidatedBodyJson<Type>(validator: ValidatorFunction<unknown, Type>) {\n\t\treturn this.readBodyJson().then(validator);\n\t}\n\n\t/**\n\t * Identical to {@link ApiRequest.readBodyText}, but it validates the result.\n\t *\n\t * @param validator The validator function to use on the body parsing result\n\t * @returns The validated body\n\t */\n\tpublic readValidatedBodyText<Type>(validator: ValidatorFunction<string, Type>) {\n\t\treturn this.readBodyText().then(validator);\n\t}\n}\n\nexport type ValidatorFunction<Data, Type> = (data: Data) => Type;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/lib/utils/_body/RequestHeadersProxy.ts"],"names":[],"mappings":"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","file":"RequestHeadersProxy.mjs","sourcesContent":["import { isNullishOrEmpty } from '@sapphire/utilities';\nimport { splitSetCookieString } from 'cookie-es';\nimport type { Headers, SpecIterableIterator } from 'undici
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/utils/_body/RequestHeadersProxy.ts"],"names":[],"mappings":"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","file":"RequestHeadersProxy.mjs","sourcesContent":["import { isNullishOrEmpty } from '@sapphire/utilities';\nimport { splitSetCookieString } from 'cookie-es';\nimport type { Headers, SpecIterableIterator } from 'undici';\nimport type { ApiRequest } from '../../structures/api/ApiRequest';\nimport { NodeUtilInspectSymbol } from '../constants';\n\nexport class RequestHeadersProxy implements Headers {\n\tprivate readonly request: ApiRequest;\n\n\tpublic constructor(request: ApiRequest) {\n\t\tthis.request = request;\n\t}\n\n\tpublic append(name: string, value: string): void {\n\t\tconst { headers } = this.request;\n\t\tconst current = headers[name];\n\t\tif (current) {\n\t\t\tif (Array.isArray(current)) {\n\t\t\t\tcurrent.push(value);\n\t\t\t} else {\n\t\t\t\theaders[name] = [current, value];\n\t\t\t}\n\t\t} else {\n\t\t\theaders[name] = value;\n\t\t}\n\t}\n\n\tpublic delete(name: string): void {\n\t\tthis.request.headers[name] = undefined;\n\t}\n\n\tpublic get(name: string): string | null {\n\t\treturn normalizeValue(this.request.headers[name]);\n\t}\n\n\tpublic has(name: string): boolean {\n\t\treturn !isNullishOrEmpty(this.request.headers[name]);\n\t}\n\n\tpublic set(name: string, value: string): void {\n\t\tthis.request.headers[name] = value;\n\t}\n\n\tpublic getSetCookie(): string[] {\n\t\tconst setCookie = this.get('set-cookie');\n\t\treturn setCookie === null ? [] : splitSetCookieString(setCookie);\n\t}\n\n\tpublic forEach(callbackfn: (value: string, key: string, iterable: Headers) => void, thisArg?: unknown): void {\n\t\tfor (const [key, value] of this.entries()) {\n\t\t\tcallbackfn.call(thisArg, value, key, this);\n\t\t}\n\t}\n\n\tpublic *keys(): SpecIterableIterator<string> {\n\t\tconst { headers } = this.request;\n\t\tfor (const key of Object.keys(headers)) {\n\t\t\tconst value = headers[key];\n\n\t\t\tif (!isNullishOrEmpty(value)) {\n\t\t\t\tyield key;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic *values(): SpecIterableIterator<string> {\n\t\tconst { headers } = this.request;\n\t\tfor (const key of Object.keys(headers)) {\n\t\t\tconst value = headers[key];\n\n\t\t\tif (!isNullishOrEmpty(value)) {\n\t\t\t\tyield normalizeValue(value);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic *entries(): SpecIterableIterator<[string, string]> {\n\t\tconst { headers } = this.request;\n\t\tfor (const key of Object.keys(headers)) {\n\t\t\tconst value = headers[key];\n\n\t\t\tif (!isNullishOrEmpty(value)) {\n\t\t\t\tyield [key, normalizeValue(value)];\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic [Symbol.iterator](): SpecIterableIterator<[string, string]> {\n\t\treturn this.entries();\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/class-literal-property-style\n\tpublic get [Symbol.toStringTag]() {\n\t\treturn 'Headers';\n\t}\n\n\tpublic [NodeUtilInspectSymbol]() {\n\t\treturn Object.fromEntries(this.entries());\n\t}\n}\n\nfunction normalizeValue(value: string | string[] | undefined): string {\n\tif (Array.isArray(value)) {\n\t\treturn value.join(', ');\n\t}\n\n\treturn String(value ?? '');\n}\n"]}
|
|
@@ -3,6 +3,7 @@ import { isNullish, isNullishOrEmpty } from '@sapphire/utilities';
|
|
|
3
3
|
import { Blob } from 'node:buffer';
|
|
4
4
|
import { arrayBuffer } from 'node:stream/consumers';
|
|
5
5
|
import { ReadableStream } from 'node:stream/web';
|
|
6
|
+
import { Response } from 'undici';
|
|
6
7
|
import { RequestHeadersProxy } from './RequestHeadersProxy.mjs';
|
|
7
8
|
import { RequestURLProxy } from './RequestURLProxy.mjs';
|
|
8
9
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/lib/utils/_body/RequestProxy.ts"],"names":["arrayBuffer"],"mappings":"
|
|
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"]}
|