fetch-nodeshim 0.2.1-canary-83f2b69271c3dc3d97aa9c6a60ae2ddbe62a46ae → 0.3.0-canary-4913c1df1c113e5c07d128c574512b23632ce954

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.
@@ -1 +1 @@
1
- {"version":3,"file":"minifetch.js","sources":["../src/body.ts","../src/encoding.ts","../src/webstd.ts","../src/fetch.ts"],"sourcesContent":["import { Readable } from 'node:stream';\nimport { isAnyArrayBuffer } from 'node:util/types';\nimport { randomBytes } from 'node:crypto';\nimport { Blob, FormData, URLSearchParams } from './webstd';\n\nexport type BodyInit =\n | Exclude<RequestInit['body'], undefined | null>\n | FormDataPolyfill\n | Readable;\n\nexport interface BodyState {\n contentLength: number | null;\n contentType: string | null;\n body: Readable | ReadableStream | Uint8Array | null;\n}\n\ninterface FormDataPolyfill extends Readable {\n getBoundary(): string;\n getLengthSync(): number;\n hasKnownLength(): number;\n}\n\nconst CRLF = '\\r\\n';\nconst CRLF_LENGTH = 2;\nconst BOUNDARY = '-'.repeat(2);\n\nconst isReadable = (object: any): object is Readable =>\n Readable.isReadable(object);\n\nconst isIterable = (\n object: any\n): object is AsyncIterable<any> | Iterable<any> =>\n typeof object[Symbol.asyncIterator] === 'function' ||\n typeof object[Symbol.iterator] === 'function';\n\nconst isMultipartFormDataStream = (object: any): object is FormDataPolyfill =>\n typeof object.getBoundary === 'function' &&\n typeof object.hasKnownLength === 'function' &&\n typeof object.getLengthSync === 'function' &&\n Readable.isReadable(object);\n\nconst isFormData = (object: any): object is FormData =>\n typeof object === 'object' &&\n typeof object.append === 'function' &&\n typeof object.set === 'function' &&\n typeof object.get === 'function' &&\n typeof object.getAll === 'function' &&\n typeof object.delete === 'function' &&\n typeof object.keys === 'function' &&\n typeof object.values === 'function' &&\n typeof object.entries === 'function' &&\n typeof object.constructor === 'function' &&\n object[Symbol.toStringTag] === 'FormData';\n\nconst isURLSearchParameters = (object: any): object is URLSearchParams =>\n typeof object === 'object' &&\n typeof object.append === 'function' &&\n typeof object.delete === 'function' &&\n typeof object.get === 'function' &&\n typeof object.getAll === 'function' &&\n typeof object.has === 'function' &&\n typeof object.set === 'function' &&\n typeof object.sort === 'function' &&\n object[Symbol.toStringTag] === 'URLSearchParams';\n\nconst isReadableStream = (object: any): object is ReadableStream =>\n typeof object === 'object' &&\n typeof object.getReader === 'function' &&\n typeof object.cancel === 'function' &&\n typeof object.tee === 'function';\n\nconst isBlob = (object: any): object is Blob => {\n if (\n typeof object === 'object' &&\n typeof object.arrayBuffer === 'function' &&\n typeof object.type === 'string' &&\n typeof object.stream === 'function' &&\n typeof object.constructor === 'function'\n ) {\n const tag = object[Symbol.toStringTag];\n return tag.startsWith('Blob') || tag.startsWith('File');\n } else {\n return false;\n }\n};\n\nconst makeFormBoundary = (): string =>\n `formdata-${randomBytes(8).toString('hex')}`;\n\nconst getFormHeader = (\n boundary: string,\n name: string,\n field: File | Blob | string\n): string => {\n let header = `${BOUNDARY}${boundary}${CRLF}`;\n header += `Content-Disposition: form-data; name=\"${name}\"`;\n if (isBlob(field)) {\n header += `; filename=\"${(field as File).name ?? 'blob'}\"${CRLF}`;\n header += `Content-Type: ${field.type || 'application/octet-stream'}`;\n }\n return `${header}${CRLF}${CRLF}`;\n};\n\nconst getFormFooter = (boundary: string) =>\n `${BOUNDARY}${boundary}${BOUNDARY}${CRLF}${CRLF}`;\n\nexport const getFormDataLength = (form: FormData, boundary: string) => {\n let length = Buffer.byteLength(getFormFooter(boundary));\n for (const [name, value] of form)\n length +=\n Buffer.byteLength(getFormHeader(boundary, name, value)) +\n (isBlob(value) ? value.size : Buffer.byteLength(`${value}`)) +\n CRLF_LENGTH;\n return length;\n};\n\nasync function* generatorOfFormData(\n form: FormData,\n boundary: string\n): AsyncGenerator<ArrayBufferLike> {\n const encoder = new TextEncoder();\n for (const [name, value] of form) {\n if (isBlob(value)) {\n yield encoder.encode(getFormHeader(boundary, name, value));\n yield* value.stream();\n yield encoder.encode(CRLF);\n } else {\n yield encoder.encode(getFormHeader(boundary, name, value) + value + CRLF);\n }\n }\n yield encoder.encode(getFormFooter(boundary));\n}\n\nconst encoder = new TextEncoder();\n\nexport const extractBody = (object: BodyInit | null): BodyState => {\n let type: string | null = null;\n let body: Readable | ReadableStream | Uint8Array | null;\n let size: number | null = null;\n if (object == null) {\n body = null;\n size = 0;\n } else if (typeof object === 'string') {\n const bytes = encoder.encode(`${object}`);\n type = 'text/plain;charset=UTF-8';\n size = bytes.byteLength;\n body = bytes;\n } else if (isURLSearchParameters(object)) {\n const bytes = encoder.encode(object.toString());\n body = bytes;\n size = bytes.byteLength;\n type = 'application/x-www-form-urlencoded;charset=UTF-8';\n } else if (isBlob(object)) {\n size = object.size;\n type = object.type || null;\n body = object.stream();\n } else if (object instanceof Uint8Array) {\n body = object;\n size = object.byteLength;\n } else if (isAnyArrayBuffer(object)) {\n const bytes = new Uint8Array(object);\n body = bytes;\n size = bytes.byteLength;\n } else if (ArrayBuffer.isView(object)) {\n const bytes = new Uint8Array(\n object.buffer,\n object.byteOffset,\n object.byteLength\n );\n body = bytes;\n size = bytes.byteLength;\n } else if (isReadableStream(object)) {\n body = object;\n } else if (isFormData(object)) {\n const boundary = makeFormBoundary();\n type = `multipart/form-data; boundary=${boundary}`;\n size = getFormDataLength(object, boundary);\n body = Readable.from(generatorOfFormData(object, boundary));\n } else if (isMultipartFormDataStream(object)) {\n type = `multipart/form-data; boundary=${object.getBoundary()}`;\n size = object.hasKnownLength() ? object.getLengthSync() : null;\n body = object as Readable;\n } else if (isReadable(object)) {\n body = object as Readable;\n } else if (isIterable(object)) {\n body = Readable.from(object);\n } else {\n const bytes = encoder.encode(`${object}`);\n type = 'text/plain;charset=UTF-8';\n body = bytes;\n size = bytes.byteLength;\n }\n return {\n contentLength: size,\n contentType: type,\n body,\n };\n};\n","import { PassThrough, Transform, TransformCallback } from 'node:stream';\nimport * as zlib from 'node:zlib';\n\n/** @see https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2 */\ntype Encoding = 'gzip' | 'x-gzip' | 'deflate' | 'x-deflate' | 'br' | {};\n\n/** @see https://github.com/nodejs/undici/pull/2650 */\nclass InflateStream extends Transform {\n _opts?: zlib.ZlibOptions;\n _inflate?: Transform;\n\n constructor(opts?: zlib.ZlibOptions) {\n super();\n this._opts = opts;\n }\n\n _transform(\n chunk: Buffer,\n encoding: BufferEncoding,\n callback: TransformCallback\n ) {\n if (!this._inflate) {\n if (chunk.length === 0) {\n callback();\n return;\n }\n this._inflate =\n (chunk[0] & 0x0f) === 0x08\n ? zlib.createInflate(this._opts)\n : zlib.createInflateRaw(this._opts);\n this._inflate.on('data', this.push.bind(this));\n this._inflate.on('end', () => this.push(null));\n this._inflate.on('error', err => this.destroy(err));\n }\n this._inflate.write(chunk, encoding, callback);\n }\n\n _final(callback: TransformCallback) {\n if (this._inflate) {\n this._inflate.end();\n this._inflate = undefined;\n }\n callback();\n }\n}\n\nexport const createContentDecoder = (encoding: Encoding | {}) => {\n // See: https://github.com/nodejs/undici/blob/008187b/lib/web/fetch/index.js#L2138-L2160\n switch (encoding) {\n case 'br':\n return zlib.createBrotliDecompress({\n flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH,\n });\n case 'gzip':\n case 'x-gzip':\n return zlib.createGunzip({\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH,\n });\n case 'deflate':\n case 'x-deflate':\n return new InflateStream({\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH,\n });\n default:\n return new PassThrough();\n }\n};\n","import * as buffer from 'node:buffer';\n\ntype Or<T, U> = void extends T ? U : T;\n\nexport type HeadersInit =\n | string[][]\n | Record<string, string | ReadonlyArray<string>>\n | _Headers;\n\nexport type FormDataEntryValue = string | _File;\n\nexport type RequestInfo = string | _URL | _Request;\n\ninterface _Iterable<T, TReturn = any, TNext = any>\n extends Or<\n Iterable<T, TReturn, TNext>,\n globalThis.Iterable<T, TReturn, TNext>\n > {}\ninterface _AsyncIterable<T, TReturn = any, TNext = any>\n extends Or<\n AsyncIterable<T, TReturn, TNext>,\n globalThis.AsyncIterable<T, TReturn, TNext>\n > {}\ninterface _ReadableStream<T = any>\n extends Or<ReadableStream<T>, globalThis.ReadableStream<T>> {}\n\n// NOTE: AsyncIterable<Uint8Array> is left out\nexport type BodyInit =\n | ArrayBuffer\n | _Blob\n | NodeJS.ArrayBufferView\n | _URLSearchParams\n | _ReadableStream\n | _AsyncIterable<Uint8Array>\n | _FormData\n | _Iterable<Uint8Array>\n | null\n | string;\n\n// See: https://nodejs.org/docs/latest-v20.x/api/globals.html#class-file\n// The `File` global was only added in Node.js 20\ninterface _File extends _Blob, Or<File, globalThis.File> {\n readonly name: string;\n readonly lastModified: number;\n}\ninterface _File extends Or<globalThis.File, buffer.File> {}\ninterface FileClass extends Or<typeof globalThis.File, typeof buffer.File> {}\nconst _File: FileClass = globalThis.File || buffer.File;\nif (typeof globalThis.File === 'undefined') {\n globalThis.File = _File;\n}\n\n// There be dragons here.\n// This is complex because of overlapping definitions in lib.dom, @types/node, and undici-types\n// Some types define and overload constructor interfaces with type interfaces\n// Here, we have to account for global differences and split the overloads apart\n\ninterface _RequestInit extends Or<RequestInit, globalThis.RequestInit> {\n duplex?: 'half';\n}\ninterface _ResponseInit extends Or<ResponseInit, globalThis.ResponseInit> {}\n\ninterface _Blob extends Or<Blob, globalThis.Blob> {}\ninterface BlobClass extends Or<typeof Blob, typeof globalThis.Blob> {}\nconst _Blob: BlobClass = Blob;\n\ninterface _URLSearchParams\n extends Or<URLSearchParams, globalThis.URLSearchParams> {}\ninterface URLSearchParamsClass\n extends Or<typeof URLSearchParams, typeof globalThis.URLSearchParams> {}\nconst _URLSearchParams: URLSearchParamsClass = URLSearchParams as any;\n\ninterface _URL extends Or<URL, globalThis.URL> {}\ninterface URLClass extends Or<typeof URL, typeof globalThis.URL> {}\nconst _URL: URLClass = URL;\n\ninterface _Request extends Or<Request, globalThis.Request> {}\ninterface RequestClass extends Or<typeof Request, typeof globalThis.Request> {\n new (\n input: RequestInfo,\n init?: _RequestInit | Or<RequestInit, globalThis.RequestInit>\n ): _Request;\n}\nconst _Request: RequestClass = Request;\n\ninterface _Response extends Or<Response, globalThis.Response> {}\ninterface ResponseClass\n extends Or<typeof Response, typeof globalThis.Response> {\n new (body?: BodyInit, init?: _ResponseInit): _Response;\n}\nconst _Response: ResponseClass = Response;\n\ninterface _Headers extends Or<Headers, globalThis.Headers> {}\ninterface HeadersClass extends Or<typeof Headers, typeof globalThis.Headers> {\n new (init?: HeadersInit): _Headers;\n}\nconst _Headers: HeadersClass = Headers;\n\ninterface _FormData\n extends Or<\n FormData & _Iterable<[string, FormDataEntryValue]>,\n globalThis.FormData\n > {}\ninterface FormDataClass\n extends Or<typeof FormData, typeof globalThis.FormData> {}\nconst _FormData: FormDataClass = FormData;\n\nexport {\n type _RequestInit as RequestInit,\n type _ResponseInit as ResponseInit,\n _Blob as Blob,\n _File as File,\n _URL as URL,\n _URLSearchParams as URLSearchParams,\n _Request as Request,\n _Response as Response,\n _Headers as Headers,\n _FormData as FormData,\n};\n","import { Stream, Readable, pipeline } from 'node:stream';\nimport * as https from 'node:https';\nimport * as http from 'node:http';\nimport * as url from 'node:url';\n\nimport { extractBody } from './body';\nimport { createContentDecoder } from './encoding';\nimport { URL, Request, RequestInit, Response } from './webstd';\n\n/** Maximum allowed redirects (matching Chromium's limit) */\nconst MAX_REDIRECTS = 20;\n\n/** Convert Node.js raw headers array to Headers */\nconst headersOfRawHeaders = (rawHeaders: readonly string[]): Headers => {\n const headers = new Headers();\n for (let i = 0; i < rawHeaders.length; i += 2)\n headers.set(rawHeaders[i], rawHeaders[i + 1]);\n return headers;\n};\n\n/** Assign Headers to a Node.js OutgoingMessage (request) */\nconst assignOutgoingMessageHeaders = (\n outgoing: http.OutgoingMessage,\n headers: Headers\n) => {\n if (typeof outgoing.setHeaders === 'function') {\n outgoing.setHeaders(headers);\n } else {\n for (const [key, value] of headers) outgoing.setHeader(key, value);\n }\n};\n\n/** Normalize methods and disallow special methods */\nconst toRedirectOption = (\n redirect: string | undefined\n): 'follow' | 'manual' | 'error' => {\n switch (redirect) {\n case 'follow':\n case 'manual':\n case 'error':\n return redirect;\n case undefined:\n return 'follow';\n default:\n throw new TypeError(\n `Request constructor: ${redirect} is not an accepted type. Expected one of follow, manual, error.`\n );\n }\n};\n\n/** Normalize methods and disallow special methods */\nconst methodToHttpOption = (method: string | undefined): string => {\n switch (method) {\n case 'CONNECT':\n case 'TRACE':\n case 'TRACK':\n throw new TypeError(\n `Failed to construct 'Request': '${method}' HTTP method is unsupported.`\n );\n default:\n return method ? method.toUpperCase() : 'GET';\n }\n};\n\n/** Convert URL to Node.js HTTP request options and disallow unsupported protocols */\nconst urlToHttpOptions = (input: URL) => {\n const _url = new URL(input);\n switch (_url.protocol) {\n // TODO: 'file:' and 'data:' support\n case 'http:':\n case 'https:':\n return url.urlToHttpOptions(_url);\n default:\n throw new TypeError(`URL scheme \"${_url.protocol}\" is not supported.`);\n }\n};\n\n/** Returns if `input` is a Request object */\nconst isRequest = (input: any): input is Request =>\n input != null && typeof input === 'object' && 'body' in input;\n\n/** Returns if status `code` is a redirect code */\nconst isRedirectCode = (\n code: number | undefined\n): code is 301 | 302 | 303 | 307 | 308 =>\n code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n\nfunction createResponse(\n body: ConstructorParameters<typeof Response>[0] | null,\n init: ResponseInit,\n params: {\n url: string;\n redirected: boolean;\n type: 'basic' | 'cors' | 'default' | 'error' | 'opaque' | 'opaqueredirect';\n }\n) {\n const response = new Response(body, init);\n Object.defineProperty(response, 'url', { value: params.url });\n if (params.type !== 'default')\n Object.defineProperty(response, 'type', { value: params.type });\n if (params.redirected)\n Object.defineProperty(response, 'redirected', { value: params.redirected });\n return response;\n}\n\nasync function _fetch(\n input: string | URL | Request,\n requestInit?: RequestInit\n): Promise<Response> {\n const initFromRequest = isRequest(input);\n const initUrl = initFromRequest ? input.url : input;\n const initBody = initFromRequest ? input.body : requestInit?.body || null;\n const signal = initFromRequest\n ? input.signal\n : requestInit?.signal || undefined;\n const redirect = toRedirectOption(\n initFromRequest ? input.redirect : requestInit?.redirect\n );\n\n let requestUrl = new URL(initUrl);\n let requestBody = extractBody(initBody);\n let redirects = 0;\n\n const requestHeaders = new Headers(\n requestInit?.headers || (initFromRequest ? input.headers : undefined)\n );\n const requestOptions = {\n ...urlToHttpOptions(requestUrl),\n method: methodToHttpOption(\n initFromRequest ? input.method : requestInit?.method\n ),\n signal,\n } satisfies http.RequestOptions;\n\n function _call(\n resolve: (response: Response | Promise<Response>) => void,\n reject: (reason?: any) => void\n ) {\n const method = requestOptions.method;\n const protocol = requestOptions.protocol === 'https:' ? https : http;\n const outgoing = protocol.request(requestOptions);\n\n outgoing.on('response', incoming => {\n incoming.setTimeout(0); // Forcefully disable timeout\n\n const init = {\n status: incoming.statusCode,\n statusText: incoming.statusMessage,\n headers: headersOfRawHeaders(incoming.rawHeaders),\n } satisfies ResponseInit;\n\n if (isRedirectCode(init.status)) {\n const location = init.headers.get('Location');\n const locationURL =\n location != null ? new URL(location, requestUrl) : null;\n if (redirect === 'error') {\n // TODO: do we need a special Error instance here?\n reject(\n new Error(\n 'URI requested responds with a redirect, redirect mode is set to error'\n )\n );\n return;\n } else if (redirect === 'manual' && locationURL !== null) {\n init.headers.set('Location', locationURL.toString());\n } else if (redirect === 'follow' && locationURL !== null) {\n if (++redirects > MAX_REDIRECTS) {\n reject(new Error(`maximum redirect reached at: ${requestUrl}`));\n return;\n } else if (\n locationURL.protocol !== 'http:' &&\n locationURL.protocol !== 'https:'\n ) {\n // TODO: do we need a special Error instance here?\n reject(new Error('URL scheme must be a HTTP(S) scheme'));\n return;\n }\n\n if (\n init.status === 303 ||\n ((init.status === 301 || init.status === 302) && method === 'POST')\n ) {\n requestBody = extractBody(null);\n requestOptions.method = 'GET';\n requestHeaders.delete('Content-Length');\n } else if (\n requestBody.body != null &&\n requestBody.contentLength == null\n ) {\n reject(new Error('Cannot follow redirect with a streamed body'));\n return;\n } else {\n requestBody = extractBody(initBody);\n }\n\n Object.assign(\n requestOptions,\n urlToHttpOptions((requestUrl = locationURL))\n );\n return _call(resolve, reject);\n }\n }\n\n const destroy = (reason?: any) => {\n signal?.removeEventListener('abort', destroy);\n if (reason) {\n incoming.destroy(signal?.aborted ? signal.reason : reason);\n reject(signal?.aborted ? signal.reason : reason);\n }\n };\n\n signal?.addEventListener('abort', destroy);\n\n let body: Readable | null = incoming;\n const encoding = init.headers.get('Content-Encoding')?.toLowerCase();\n if (method === 'HEAD' || init.status === 204 || init.status === 304) {\n body = null;\n } else if (encoding != null) {\n init.headers.set('Content-Encoding', encoding);\n body = pipeline(body, createContentDecoder(encoding), destroy);\n }\n\n resolve(\n createResponse(body, init, {\n type: 'default',\n url: requestUrl.toString(),\n redirected: redirects > 0,\n })\n );\n });\n\n outgoing.on('error', reject);\n\n if (!requestHeaders.has('Accept')) requestHeaders.set('Accept', '*/*');\n if (requestBody.contentType)\n requestHeaders.set('Content-Type', requestBody.contentType);\n\n if (requestBody.body == null && (method === 'POST' || method === 'PUT')) {\n requestHeaders.set('Content-Length', '0');\n } else if (requestBody.body != null && requestBody.contentLength != null) {\n requestHeaders.set('Content-Length', `${requestBody.contentLength}`);\n }\n\n assignOutgoingMessageHeaders(outgoing, requestHeaders);\n\n if (requestBody.body == null) {\n outgoing.end();\n } else if (requestBody.body instanceof Uint8Array) {\n outgoing.write(requestBody.body);\n outgoing.end();\n } else {\n const body =\n requestBody.body instanceof Stream\n ? requestBody.body\n : Readable.fromWeb(requestBody.body);\n pipeline(body, outgoing, error => {\n if (error) reject(error);\n });\n }\n }\n\n return await new Promise(_call);\n}\n\nexport { _fetch as fetch };\n"],"names":["CRLF","BOUNDARY","repeat","isBlob","object","arrayBuffer","type","stream","constructor","tag","Symbol","toStringTag","startsWith","getFormHeader","boundary","name","field","header","getFormFooter","encoder","TextEncoder","extractBody","body","size","bytes","encode","byteLength","append","delete","get","getAll","has","set","sort","isURLSearchParameters","toString","Uint8Array","isAnyArrayBuffer","ArrayBuffer","isView","buffer","byteOffset","getReader","cancel","tee","isReadableStream","keys","values","entries","isFormData","randomBytes","getFormDataLength","form","length","Buffer","value","Readable","from","async","generatorOfFormData","getBoundary","hasKnownLength","getLengthSync","isReadable","isMultipartFormDataStream","asyncIterator","iterator","isIterable","contentLength","contentType","InflateStream","Transform","opts","super","this","_opts","_transform","chunk","encoding","callback","_inflate","zlib","createInflate","createInflateRaw","on","push","bind","err","destroy","write","_final","end","undefined","_File","globalThis","File","_Blob","Blob","_URLSearchParams","URLSearchParams","_URL","URL","_Request","Request","_Response","Response","_Headers","Headers","_FormData","FormData","headersOfRawHeaders","rawHeaders","headers","i","methodToHttpOption","method","TypeError","toUpperCase","urlToHttpOptions","input","_url","protocol","url","_fetch","requestInit","initFromRequest","isRequest","initUrl","initBody","signal","redirect","toRedirectOption","requestUrl","requestBody","redirects","requestHeaders","requestOptions","Promise","_call","resolve","reject","outgoing","https","http","request","incoming","setTimeout","init","status","statusCode","statusText","statusMessage","code","location","locationURL","Error","Object","assign","reason","removeEventListener","aborted","addEventListener","toLowerCase","pipeline","createBrotliDecompress","flush","constants","BROTLI_OPERATION_FLUSH","finishFlush","createGunzip","Z_SYNC_FLUSH","PassThrough","createContentDecoder","createResponse","params","response","defineProperty","redirected","assignOutgoingMessageHeaders","setHeaders","key","setHeader","Stream","fromWeb","error"],"mappings":"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"}
1
+ {"version":3,"file":"minifetch.js","sources":["../src/webstd.ts","../src/body.ts","../src/encoding.ts","../src/fetch.ts"],"sourcesContent":["import * as buffer from 'node:buffer';\n\ntype Or<T, U> = void extends T ? U : T;\n\nexport type HeadersInit =\n | string[][]\n | Record<string, string | ReadonlyArray<string>>\n | _Headers;\n\nexport type FormDataEntryValue = string | _File;\n\nexport type RequestInfo = string | _URL | _Request;\n\ninterface _Iterable<T, TReturn = any, TNext = any>\n extends Or<\n Iterable<T, TReturn, TNext>,\n globalThis.Iterable<T, TReturn, TNext>\n > {}\ninterface _AsyncIterable<T, TReturn = any, TNext = any>\n extends Or<\n AsyncIterable<T, TReturn, TNext>,\n globalThis.AsyncIterable<T, TReturn, TNext>\n > {}\ninterface _ReadableStream<T = any>\n extends Or<ReadableStream<T>, globalThis.ReadableStream<T>> {}\n\n// NOTE: AsyncIterable<Uint8Array> is left out\nexport type BodyInit =\n | ArrayBuffer\n | _Blob\n | NodeJS.ArrayBufferView\n | _URLSearchParams\n | _ReadableStream\n | _AsyncIterable<Uint8Array>\n | _FormData\n | _Iterable<Uint8Array>\n | null\n | string;\n\n// See: https://nodejs.org/docs/latest-v20.x/api/globals.html#class-file\n// The `File` global was only added in Node.js 20\ninterface _File extends _Blob, Or<File, globalThis.File> {\n readonly name: string;\n readonly lastModified: number;\n}\ninterface _File extends Or<globalThis.File, buffer.File> {}\ninterface FileClass extends Or<typeof globalThis.File, typeof buffer.File> {}\nconst _File: FileClass = globalThis.File || buffer.File;\nif (typeof globalThis.File === 'undefined') {\n globalThis.File = _File;\n}\n\n// There be dragons here.\n// This is complex because of overlapping definitions in lib.dom, @types/node, and undici-types\n// Some types define and overload constructor interfaces with type interfaces\n// Here, we have to account for global differences and split the overloads apart\n\ninterface _RequestInit extends Or<RequestInit, globalThis.RequestInit> {\n duplex?: 'half';\n}\ninterface _ResponseInit extends Or<ResponseInit, globalThis.ResponseInit> {}\n\ninterface _Blob extends Or<Blob, globalThis.Blob> {}\ninterface BlobClass extends Or<typeof Blob, typeof globalThis.Blob> {}\nconst _Blob: BlobClass = Blob;\n\ninterface _URLSearchParams\n extends Or<URLSearchParams, globalThis.URLSearchParams> {}\ninterface URLSearchParamsClass\n extends Or<typeof URLSearchParams, typeof globalThis.URLSearchParams> {}\nconst _URLSearchParams: URLSearchParamsClass = URLSearchParams as any;\n\ninterface _URL extends Or<URL, globalThis.URL> {}\ninterface URLClass extends Or<typeof URL, typeof globalThis.URL> {}\nconst _URL: URLClass = URL;\n\ninterface _Request extends Or<Request, globalThis.Request> {}\ninterface RequestClass extends Or<typeof Request, typeof globalThis.Request> {\n new (\n input: RequestInfo,\n init?: _RequestInit | Or<RequestInit, globalThis.RequestInit>\n ): _Request;\n}\nconst _Request: RequestClass = Request;\n\ninterface _Response extends Or<Response, globalThis.Response> {}\ninterface ResponseClass\n extends Or<typeof Response, typeof globalThis.Response> {\n new (body?: BodyInit, init?: _ResponseInit): _Response;\n}\nconst _Response: ResponseClass = Response;\n\ninterface _Headers extends Or<Headers, globalThis.Headers> {}\ninterface HeadersClass extends Or<typeof Headers, typeof globalThis.Headers> {\n new (init?: HeadersInit): _Headers;\n}\nconst _Headers: HeadersClass = Headers;\n\ninterface _FormData\n extends Or<\n FormData & _Iterable<[string, FormDataEntryValue]>,\n globalThis.FormData\n > {}\ninterface FormDataClass\n extends Or<typeof FormData, typeof globalThis.FormData> {}\nconst _FormData: FormDataClass = FormData;\n\nexport {\n type _RequestInit as RequestInit,\n type _ResponseInit as ResponseInit,\n _Blob as Blob,\n _File as File,\n _URL as URL,\n _URLSearchParams as URLSearchParams,\n _Request as Request,\n _Response as Response,\n _Headers as Headers,\n _FormData as FormData,\n};\n","import { Readable } from 'node:stream';\nimport { isAnyArrayBuffer } from 'node:util/types';\nimport { randomBytes } from 'node:crypto';\nimport { Response, Blob, FormData, URLSearchParams } from './webstd';\n\nexport type BodyInit =\n | Exclude<RequestInit['body'], undefined | null>\n | FormDataPolyfill\n | Readable;\n\nexport interface BodyState {\n contentLength: number | null;\n contentType: string | null;\n body: Readable | ReadableStream | Uint8Array | null;\n}\n\ninterface FormDataPolyfill extends Readable {\n getBoundary(): string;\n getLengthSync(): number;\n hasKnownLength(): number;\n}\n\nconst CRLF = '\\r\\n';\nconst CRLF_LENGTH = 2;\nconst BOUNDARY = '-'.repeat(2);\n\nconst isReadable = (object: any): object is Readable =>\n Readable.isReadable(object);\n\nconst isIterable = (\n object: any\n): object is AsyncIterable<any> | Iterable<any> =>\n typeof object[Symbol.asyncIterator] === 'function' ||\n typeof object[Symbol.iterator] === 'function';\n\nconst isMultipartFormDataStream = (object: any): object is FormDataPolyfill =>\n typeof object.getBoundary === 'function' &&\n typeof object.hasKnownLength === 'function' &&\n typeof object.getLengthSync === 'function' &&\n Readable.isReadable(object);\n\nconst isFormData = (object: any): object is FormData =>\n typeof object === 'object' &&\n typeof object.append === 'function' &&\n typeof object.set === 'function' &&\n typeof object.get === 'function' &&\n typeof object.getAll === 'function' &&\n typeof object.delete === 'function' &&\n typeof object.keys === 'function' &&\n typeof object.values === 'function' &&\n typeof object.entries === 'function' &&\n typeof object.constructor === 'function' &&\n object[Symbol.toStringTag] === 'FormData';\n\nconst isURLSearchParameters = (object: any): object is URLSearchParams =>\n typeof object === 'object' &&\n typeof object.append === 'function' &&\n typeof object.delete === 'function' &&\n typeof object.get === 'function' &&\n typeof object.getAll === 'function' &&\n typeof object.has === 'function' &&\n typeof object.set === 'function' &&\n typeof object.sort === 'function' &&\n object[Symbol.toStringTag] === 'URLSearchParams';\n\nconst isReadableStream = (object: any): object is ReadableStream =>\n typeof object === 'object' &&\n typeof object.getReader === 'function' &&\n typeof object.cancel === 'function' &&\n typeof object.tee === 'function';\n\nconst isBlob = (object: any): object is Blob => {\n if (\n typeof object === 'object' &&\n typeof object.arrayBuffer === 'function' &&\n typeof object.type === 'string' &&\n typeof object.stream === 'function' &&\n typeof object.constructor === 'function'\n ) {\n const tag = object[Symbol.toStringTag];\n return tag.startsWith('Blob') || tag.startsWith('File');\n } else {\n return false;\n }\n};\n\nconst makeFormBoundary = (): string =>\n `formdata-${randomBytes(8).toString('hex')}`;\n\nconst getFormHeader = (\n boundary: string,\n name: string,\n field: File | Blob | string\n): string => {\n let header = `${BOUNDARY}${boundary}${CRLF}`;\n header += `Content-Disposition: form-data; name=\"${name}\"`;\n if (isBlob(field)) {\n header += `; filename=\"${(field as File).name ?? 'blob'}\"${CRLF}`;\n header += `Content-Type: ${field.type || 'application/octet-stream'}`;\n }\n return `${header}${CRLF}${CRLF}`;\n};\n\nconst getFormFooter = (boundary: string) =>\n `${BOUNDARY}${boundary}${BOUNDARY}${CRLF}${CRLF}`;\n\nexport const getFormDataLength = (form: FormData, boundary: string) => {\n let length = Buffer.byteLength(getFormFooter(boundary));\n for (const [name, value] of form)\n length +=\n Buffer.byteLength(getFormHeader(boundary, name, value)) +\n (isBlob(value) ? value.size : Buffer.byteLength(`${value}`)) +\n CRLF_LENGTH;\n return length;\n};\n\nasync function* generatorOfFormData(\n form: FormData,\n boundary: string\n): AsyncGenerator<ArrayBufferLike> {\n const encoder = new TextEncoder();\n for (const [name, value] of form) {\n if (isBlob(value)) {\n yield encoder.encode(getFormHeader(boundary, name, value));\n yield* value.stream();\n yield encoder.encode(CRLF);\n } else {\n yield encoder.encode(getFormHeader(boundary, name, value) + value + CRLF);\n }\n }\n yield encoder.encode(getFormFooter(boundary));\n}\n\nconst encoder = new TextEncoder();\n\nexport const extractBody = (object: BodyInit | null): BodyState => {\n let type: string | null = null;\n let body: Readable | ReadableStream | Uint8Array | null;\n let size: number | null = null;\n if (object == null) {\n body = null;\n size = 0;\n } else if (typeof object === 'string') {\n const bytes = encoder.encode(`${object}`);\n type = 'text/plain;charset=UTF-8';\n size = bytes.byteLength;\n body = bytes;\n } else if (isURLSearchParameters(object)) {\n const bytes = encoder.encode(object.toString());\n body = bytes;\n size = bytes.byteLength;\n type = 'application/x-www-form-urlencoded;charset=UTF-8';\n } else if (isBlob(object)) {\n size = object.size;\n type = object.type || null;\n body = object.stream();\n } else if (object instanceof Uint8Array) {\n body = object;\n size = object.byteLength;\n } else if (isAnyArrayBuffer(object)) {\n const bytes = new Uint8Array(object);\n body = bytes;\n size = bytes.byteLength;\n } else if (ArrayBuffer.isView(object)) {\n const bytes = new Uint8Array(\n object.buffer,\n object.byteOffset,\n object.byteLength\n );\n body = bytes;\n size = bytes.byteLength;\n } else if (isReadableStream(object)) {\n body = object;\n } else if (isFormData(object)) {\n const boundary = makeFormBoundary();\n type = `multipart/form-data; boundary=${boundary}`;\n size = getFormDataLength(object, boundary);\n body = Readable.from(generatorOfFormData(object, boundary));\n } else if (isMultipartFormDataStream(object)) {\n type = `multipart/form-data; boundary=${object.getBoundary()}`;\n size = object.hasKnownLength() ? object.getLengthSync() : null;\n body = object as Readable;\n } else if (isReadable(object)) {\n body = object as Readable;\n } else if (isIterable(object)) {\n body = Readable.from(object);\n } else {\n const bytes = encoder.encode(`${object}`);\n type = 'text/plain;charset=UTF-8';\n body = bytes;\n size = bytes.byteLength;\n }\n return {\n contentLength: size,\n contentType: type,\n body,\n };\n};\n\nconst kBodyInternals = Symbol('kBodyInternals');\n\nexport class Body {\n private [kBodyInternals]: BodyState;\n\n constructor(init: BodyInit | null) {\n this[kBodyInternals] = extractBody(init);\n }\n\n get body() {\n return this[kBodyInternals].body;\n }\n\n get bodyUsed() {\n const { body } = this[kBodyInternals];\n if (isReadable(body)) {\n return Readable.isDisturbed(body);\n } else if (isReadableStream(body)) {\n return body.locked;\n } else {\n return false;\n }\n }\n\n async arrayBuffer() {\n const { body } = this[kBodyInternals];\n return isAnyArrayBuffer(body)\n ? body\n : new Response(this.body).arrayBuffer();\n }\n\n async formData() {\n const { body, contentLength, contentType } = this[kBodyInternals];\n const headers = {};\n if (contentLength) headers['Content-Length'] = contentLength;\n if (contentType) headers['Content-Type'] = contentType;\n return new Response(body, { headers }).formData();\n }\n\n async blob() {\n const { contentType } = this[kBodyInternals];\n return new Blob([await this.arrayBuffer()], {\n type: contentType ?? undefined,\n });\n }\n\n async json() {\n const text = await this.text();\n return JSON.parse(text);\n }\n\n async text() {\n return new TextDecoder().decode(await this.arrayBuffer());\n }\n}\n","import { PassThrough, Transform, TransformCallback } from 'node:stream';\nimport * as zlib from 'node:zlib';\n\n/** @see https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2 */\ntype Encoding = 'gzip' | 'x-gzip' | 'deflate' | 'x-deflate' | 'br' | {};\n\n/** @see https://github.com/nodejs/undici/pull/2650 */\nclass InflateStream extends Transform {\n _opts?: zlib.ZlibOptions;\n _inflate?: Transform;\n\n constructor(opts?: zlib.ZlibOptions) {\n super();\n this._opts = opts;\n }\n\n _transform(\n chunk: Buffer,\n encoding: BufferEncoding,\n callback: TransformCallback\n ) {\n if (!this._inflate) {\n if (chunk.length === 0) {\n callback();\n return;\n }\n this._inflate =\n (chunk[0] & 0x0f) === 0x08\n ? zlib.createInflate(this._opts)\n : zlib.createInflateRaw(this._opts);\n this._inflate.on('data', this.push.bind(this));\n this._inflate.on('end', () => this.push(null));\n this._inflate.on('error', err => this.destroy(err));\n }\n this._inflate.write(chunk, encoding, callback);\n }\n\n _final(callback: TransformCallback) {\n if (this._inflate) {\n this._inflate.end();\n this._inflate = undefined;\n }\n callback();\n }\n}\n\nexport const createContentDecoder = (encoding: Encoding | {}) => {\n // See: https://github.com/nodejs/undici/blob/008187b/lib/web/fetch/index.js#L2138-L2160\n switch (encoding) {\n case 'br':\n return zlib.createBrotliDecompress({\n flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH,\n });\n case 'gzip':\n case 'x-gzip':\n return zlib.createGunzip({\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH,\n });\n case 'deflate':\n case 'x-deflate':\n return new InflateStream({\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH,\n });\n default:\n return new PassThrough();\n }\n};\n","import { Stream, Readable, pipeline } from 'node:stream';\nimport * as https from 'node:https';\nimport * as http from 'node:http';\nimport * as url from 'node:url';\n\nimport { extractBody } from './body';\nimport { createContentDecoder } from './encoding';\nimport { URL, Request, RequestInit, Response } from './webstd';\n\n/** Maximum allowed redirects (matching Chromium's limit) */\nconst MAX_REDIRECTS = 20;\n\n/** Convert Node.js raw headers array to Headers */\nconst headersOfRawHeaders = (rawHeaders: readonly string[]): Headers => {\n const headers = new Headers();\n for (let i = 0; i < rawHeaders.length; i += 2)\n headers.set(rawHeaders[i], rawHeaders[i + 1]);\n return headers;\n};\n\n/** Assign Headers to a Node.js OutgoingMessage (request) */\nconst assignOutgoingMessageHeaders = (\n outgoing: http.OutgoingMessage,\n headers: Headers\n) => {\n if (typeof outgoing.setHeaders === 'function') {\n outgoing.setHeaders(headers);\n } else {\n for (const [key, value] of headers) outgoing.setHeader(key, value);\n }\n};\n\n/** Normalize methods and disallow special methods */\nconst toRedirectOption = (\n redirect: string | undefined\n): 'follow' | 'manual' | 'error' => {\n switch (redirect) {\n case 'follow':\n case 'manual':\n case 'error':\n return redirect;\n case undefined:\n return 'follow';\n default:\n throw new TypeError(\n `Request constructor: ${redirect} is not an accepted type. Expected one of follow, manual, error.`\n );\n }\n};\n\n/** Normalize methods and disallow special methods */\nconst methodToHttpOption = (method: string | undefined): string => {\n switch (method) {\n case 'CONNECT':\n case 'TRACE':\n case 'TRACK':\n throw new TypeError(\n `Failed to construct 'Request': '${method}' HTTP method is unsupported.`\n );\n default:\n return method ? method.toUpperCase() : 'GET';\n }\n};\n\n/** Convert URL to Node.js HTTP request options and disallow unsupported protocols */\nconst urlToHttpOptions = (input: URL) => {\n const _url = new URL(input);\n switch (_url.protocol) {\n // TODO: 'file:' and 'data:' support\n case 'http:':\n case 'https:':\n return url.urlToHttpOptions(_url);\n default:\n throw new TypeError(`URL scheme \"${_url.protocol}\" is not supported.`);\n }\n};\n\n/** Returns if `input` is a Request object */\nconst isRequest = (input: any): input is Request =>\n input != null && typeof input === 'object' && 'body' in input;\n\n/** Returns if status `code` is a redirect code */\nconst isRedirectCode = (\n code: number | undefined\n): code is 301 | 302 | 303 | 307 | 308 =>\n code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n\nfunction createResponse(\n body: ConstructorParameters<typeof Response>[0] | null,\n init: ResponseInit,\n params: {\n url: string;\n redirected: boolean;\n type: 'basic' | 'cors' | 'default' | 'error' | 'opaque' | 'opaqueredirect';\n }\n) {\n const response = new Response(body, init);\n Object.defineProperty(response, 'url', { value: params.url });\n if (params.type !== 'default')\n Object.defineProperty(response, 'type', { value: params.type });\n if (params.redirected)\n Object.defineProperty(response, 'redirected', { value: params.redirected });\n return response;\n}\n\nasync function _fetch(\n input: string | URL | Request,\n requestInit?: RequestInit\n): Promise<Response> {\n const initFromRequest = isRequest(input);\n const initUrl = initFromRequest ? input.url : input;\n const initBody = initFromRequest ? input.body : requestInit?.body || null;\n const signal = initFromRequest\n ? input.signal\n : requestInit?.signal || undefined;\n const redirect = toRedirectOption(\n initFromRequest ? input.redirect : requestInit?.redirect\n );\n\n let requestUrl = new URL(initUrl);\n let requestBody = extractBody(initBody);\n let redirects = 0;\n\n const requestHeaders = new Headers(\n requestInit?.headers || (initFromRequest ? input.headers : undefined)\n );\n const requestOptions = {\n ...urlToHttpOptions(requestUrl),\n method: methodToHttpOption(\n initFromRequest ? input.method : requestInit?.method\n ),\n signal,\n } satisfies http.RequestOptions;\n\n function _call(\n resolve: (response: Response | Promise<Response>) => void,\n reject: (reason?: any) => void\n ) {\n const method = requestOptions.method;\n const protocol = requestOptions.protocol === 'https:' ? https : http;\n const outgoing = protocol.request(requestOptions);\n\n outgoing.on('response', incoming => {\n incoming.setTimeout(0); // Forcefully disable timeout\n\n const init = {\n status: incoming.statusCode,\n statusText: incoming.statusMessage,\n headers: headersOfRawHeaders(incoming.rawHeaders),\n } satisfies ResponseInit;\n\n if (isRedirectCode(init.status)) {\n const location = init.headers.get('Location');\n const locationURL =\n location != null ? new URL(location, requestUrl) : null;\n if (redirect === 'error') {\n // TODO: do we need a special Error instance here?\n reject(\n new Error(\n 'URI requested responds with a redirect, redirect mode is set to error'\n )\n );\n return;\n } else if (redirect === 'manual' && locationURL !== null) {\n init.headers.set('Location', locationURL.toString());\n } else if (redirect === 'follow' && locationURL !== null) {\n if (++redirects > MAX_REDIRECTS) {\n reject(new Error(`maximum redirect reached at: ${requestUrl}`));\n return;\n } else if (\n locationURL.protocol !== 'http:' &&\n locationURL.protocol !== 'https:'\n ) {\n // TODO: do we need a special Error instance here?\n reject(new Error('URL scheme must be a HTTP(S) scheme'));\n return;\n }\n\n if (\n init.status === 303 ||\n ((init.status === 301 || init.status === 302) && method === 'POST')\n ) {\n requestBody = extractBody(null);\n requestOptions.method = 'GET';\n requestHeaders.delete('Content-Length');\n } else if (\n requestBody.body != null &&\n requestBody.contentLength == null\n ) {\n reject(new Error('Cannot follow redirect with a streamed body'));\n return;\n } else {\n requestBody = extractBody(initBody);\n }\n\n Object.assign(\n requestOptions,\n urlToHttpOptions((requestUrl = locationURL))\n );\n return _call(resolve, reject);\n }\n }\n\n const destroy = (reason?: any) => {\n signal?.removeEventListener('abort', destroy);\n if (reason) {\n incoming.destroy(signal?.aborted ? signal.reason : reason);\n reject(signal?.aborted ? signal.reason : reason);\n }\n };\n\n signal?.addEventListener('abort', destroy);\n\n let body: Readable | null = incoming;\n const encoding = init.headers.get('Content-Encoding')?.toLowerCase();\n if (method === 'HEAD' || init.status === 204 || init.status === 304) {\n body = null;\n } else if (encoding != null) {\n init.headers.set('Content-Encoding', encoding);\n body = pipeline(body, createContentDecoder(encoding), destroy);\n }\n\n resolve(\n createResponse(body, init, {\n type: 'default',\n url: requestUrl.toString(),\n redirected: redirects > 0,\n })\n );\n });\n\n outgoing.on('error', reject);\n\n if (!requestHeaders.has('Accept')) requestHeaders.set('Accept', '*/*');\n if (requestBody.contentType)\n requestHeaders.set('Content-Type', requestBody.contentType);\n\n if (requestBody.body == null && (method === 'POST' || method === 'PUT')) {\n requestHeaders.set('Content-Length', '0');\n } else if (requestBody.body != null && requestBody.contentLength != null) {\n requestHeaders.set('Content-Length', `${requestBody.contentLength}`);\n }\n\n assignOutgoingMessageHeaders(outgoing, requestHeaders);\n\n if (requestBody.body == null) {\n outgoing.end();\n } else if (requestBody.body instanceof Uint8Array) {\n outgoing.write(requestBody.body);\n outgoing.end();\n } else {\n const body =\n requestBody.body instanceof Stream\n ? requestBody.body\n : Readable.fromWeb(requestBody.body);\n pipeline(body, outgoing, error => {\n if (error) reject(error);\n });\n }\n }\n\n return await new Promise(_call);\n}\n\nexport { _fetch as fetch };\n"],"names":["_File","globalThis","File","buffer","_Blob","Blob","_URLSearchParams","URLSearchParams","_URL","URL","_Request","Request","_Response","Response","_Headers","Headers","_FormData","FormData","CRLF","BOUNDARY","repeat","isReadable","object","Readable","isReadableStream","getReader","cancel","tee","isBlob","arrayBuffer","type","stream","constructor","tag","Symbol","toStringTag","startsWith","getFormHeader","boundary","name","field","header","getFormFooter","encoder","TextEncoder","extractBody","body","size","bytes","encode","byteLength","append","delete","get","getAll","has","set","sort","isURLSearchParameters","toString","Uint8Array","isAnyArrayBuffer","ArrayBuffer","isView","byteOffset","keys","values","entries","isFormData","randomBytes","getFormDataLength","form","length","Buffer","value","from","async","generatorOfFormData","getBoundary","hasKnownLength","getLengthSync","isMultipartFormDataStream","asyncIterator","iterator","isIterable","contentLength","contentType","kBodyInternals","InflateStream","Transform","opts","super","this","_opts","_transform","chunk","encoding","callback","_inflate","zlib","createInflate","createInflateRaw","on","push","bind","err","destroy","write","_final","end","undefined","headersOfRawHeaders","rawHeaders","headers","i","methodToHttpOption","method","TypeError","toUpperCase","urlToHttpOptions","input","_url","protocol","url","_fetch","requestInit","initFromRequest","isRequest","initUrl","initBody","signal","redirect","toRedirectOption","requestUrl","requestBody","redirects","requestHeaders","requestOptions","Promise","_call","resolve","reject","outgoing","https","http","request","incoming","setTimeout","init","status","statusCode","statusText","statusMessage","code","location","locationURL","Error","Object","assign","reason","removeEventListener","aborted","addEventListener","toLowerCase","pipeline","createBrotliDecompress","flush","constants","BROTLI_OPERATION_FLUSH","finishFlush","createGunzip","Z_SYNC_FLUSH","PassThrough","createContentDecoder","createResponse","params","response","defineProperty","redirected","assignOutgoingMessageHeaders","setHeaders","key","setHeader","Stream","fromWeb","error","Body","bodyUsed","isDisturbed","locked","formData","blob","json","text","JSON","parse","TextDecoder","decode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CMA,IAAAA,IAAmBC,WAAWC,QAAQC,EAAOD;;AACnD,SAA+B,MAApBD,WAAWC;EACpBD,WAAWC,OAAOF;;;AAedI,IAAAA,IAAmBC;;AAMnBC,IAAAA,IAAyCC;;AAIzCC,IAAAA,IAAiBC;;AASjBC,IAAAA,IAAyBC;;AAOzBC,IAAAA,IAA2BC;;AAM3BC,IAAAA,IAAyBC;;AASzBC,IAAAA,IAA2BC;;ACnFjC,IAAMC,IAAO;;AAEb,IAAMC,IAAW,IAAIC,OAAO;;AAE5B,IAAMC,aAAcC,KAClBC,WAASF,WAAWC;;AAsCtB,IAAME,mBAAoBF,KACN,mBAAXA,KACqB,qBAArBA,EAAOG,aACW,qBAAlBH,EAAOI,UACQ,qBAAfJ,EAAOK;;AAEhB,IAAMC,SAAUN;EACd,IACoB,mBAAXA,KACuB,qBAAvBA,EAAOO,eACS,mBAAhBP,EAAOQ,QACW,qBAAlBR,EAAOS,UACgB,qBAAvBT,EAAOU,aACd;IACA,IAAMC,IAAMX,EAAOY,OAAOC;IAC1B,OAAOF,EAAIG,WAAW,WAAWH,EAAIG,WAAW;AAClD;IACE,QAAO;;AACT;;AAMF,IAAMC,gBAAgBA,CACpBC,GACAC,GACAC;EAEA,IAAIC,IAAS,GAAGtB,IAAWmB,IAAWpB;EACtCuB,KAAU,yCAAyCF;EACnD,IAAIX,OAAOY,IAAQ;IACjBC,KAAU,eAAgBD,EAAeD,QAAQ,UAAUrB;IAC3DuB,KAAU,iBAAiBD,EAAMV,QAAQ;AAC3C;EACA,OAAO,GAAGW,IAASvB,IAAOA;AAAM;;AAGlC,IAAMwB,gBAAiBJ,KACrB,GAAGnB,IAAWmB,IAAWnB,IAAWD,IAAOA;;AA6B7C,IAAMyB,IAAU,IAAIC;;AAEb,IAAMC,cAAevB;EAC1B,IAAIQ,IAAsB;EAC1B,IAAIgB;EACJ,IAAIC,IAAsB;EAC1B,IAAc,QAAVzB,GAAgB;IAClBwB,IAAO;IACPC,IAAO;AACT,SAAO,IAAsB,mBAAXzB,GAAqB;IACrC,IAAM0B,IAAQL,EAAQM,OAAO,GAAG3B;IAChCQ,IAAO;IACPiB,IAAOC,EAAME;IACbJ,IAAOE;AACT,SAAO,IA7FsB1B,MACX,mBAAXA,KACkB,qBAAlBA,EAAO6B,UACW,qBAAlB7B,EAAO8B,UACQ,qBAAf9B,EAAO+B,OACW,qBAAlB/B,EAAOgC,UACQ,qBAAfhC,EAAOiC,OACQ,qBAAfjC,EAAOkC,OACS,qBAAhBlC,EAAOmC,QACiB,sBAA/BnC,EAAOY,OAAOC,aAoFHuB,CAAsBpC,IAAS;IACxC,IAAM0B,IAAQL,EAAQM,OAAO3B,EAAOqC;IACpCb,IAAOE;IACPD,IAAOC,EAAME;IACbpB,IAAO;AACT,SAAO,IAAIF,OAAON,IAAS;IACzByB,IAAOzB,EAAOyB;IACdjB,IAAOR,EAAOQ,QAAQ;IACtBgB,IAAOxB,EAAOS;AAChB,SAAO,IAAIT,aAAkBsC,YAAY;IACvCd,IAAOxB;IACPyB,IAAOzB,EAAO4B;AAChB,SAAO,IAAIW,EAAAA,iBAAiBvC,IAAS;IACnC,IAAM0B,IAAQ,IAAIY,WAAWtC;IAC7BwB,IAAOE;IACPD,IAAOC,EAAME;AACd,SAAM,IAAIY,YAAYC,OAAOzC,IAAS;IACrC,IAAM0B,IAAQ,IAAIY,WAChBtC,EAAOnB,QACPmB,EAAO0C,YACP1C,EAAO4B;IAETJ,IAAOE;IACPD,IAAOC,EAAME;AACf,SAAO,IAAI1B,iBAAiBF;IAC1BwB,IAAOxB;SACF,IApIWA,MACA,mBAAXA,KACkB,qBAAlBA,EAAO6B,UACQ,qBAAf7B,EAAOkC,OACQ,qBAAflC,EAAO+B,OACW,qBAAlB/B,EAAOgC,UACW,qBAAlBhC,EAAO8B,UACS,qBAAhB9B,EAAO2C,QACW,qBAAlB3C,EAAO4C,UACY,qBAAnB5C,EAAO6C,WACgB,qBAAvB7C,EAAOU,eACiB,eAA/BV,EAAOY,OAAOC,aAyHHiC,CAAW9C,IAAS;IAC7B,IAAMgB,IAvFR,YAAY+B,EAAWA,YAAC,GAAGV,SAAS;IAwFlC7B,IAAO,iCAAiCQ;IACxCS,IAtE6BuB,EAACC,GAAgBjC;MAChD,IAAIkC,IAASC,OAAOvB,WAAWR,cAAcJ;MAC7C,KAAK,KAAOC,GAAMmC,MAAUH;QAC1BC,KACEC,OAAOvB,WAAWb,cAAcC,GAAUC,GAAMmC,OAC/C9C,OAAO8C,KAASA,EAAM3B,OAAO0B,OAAOvB,WAAW,GAAGwB,QAxFrC;;MA0FlB,OAAOF;AAAM,MA+DJF,CAAkBhD,GAAQgB;IACjCQ,IAAOvB,EAAQA,SAACoD,KA7DpBC,gBAAgBC,oBACdN,GACAjC;MAEA,IAAMK,IAAU,IAAIC;MACpB,KAAK,KAAOL,GAAMmC,MAAUH;QAC1B,IAAI3C,OAAO8C,IAAQ;gBACX/B,EAAQM,OAAOZ,cAAcC,GAAUC,GAAMmC;iBAC5CA,EAAM3C;gBACPY,EAAQM,OAAO/B;AACvB;gBACQyB,EAAQM,OAAOZ,cAAcC,GAAUC,GAAMmC,KAASA,IAAQxD;;;YAGlEyB,EAAQM,OAAOP,cAAcJ;AACrC,KA8CyBuC,CAAoBvD,GAAQgB;AACnD,SAAO,IA/I0BhB,MACH,qBAAvBA,EAAOwD,eACmB,qBAA1BxD,EAAOyD,kBACkB,qBAAzBzD,EAAO0D,iBACdzD,EAAQA,SAACF,WAAWC,GA2IT2D,CAA0B3D,IAAS;IAC5CQ,IAAO,iCAAiCR,EAAOwD;IAC/C/B,IAAOzB,EAAOyD,mBAAmBzD,EAAO0D,kBAAkB;IAC1DlC,IAAOxB;AACT,SAAO,IAAID,WAAWC;IACpBwB,IAAOxB;SACF,IA1JPA,MAEwC,qBAAjCA,EAAOY,OAAOgD,kBACc,qBAA5B5D,EAAOY,OAAOiD,UAuJVC,CAAW9D;IACpBwB,IAAOvB,EAAAA,SAASoD,KAAKrD;SAChB;IACL,IAAM0B,IAAQL,EAAQM,OAAO,GAAG3B;IAChCQ,IAAO;IACPgB,IAAOE;IACPD,IAAOC,EAAME;AACf;EACA,OAAO;IACLmC,eAAetC;IACfuC,aAAaxD;IACbgB;;AACD;;AAGH,IAAMyC,IAAiBrD,OAAO;;AChM9B,MAAMsD,sBAAsBC,EAAAA;EAI1BzD,WAAAA,CAAY0D;IACVC;IACAC,KAAKC,QAAQH;AACf;EAEAI,UAAAA,CACEC,GACAC,GACAC;IAEA,KAAKL,KAAKM,UAAU;MAClB,IAAqB,MAAjBH,EAAMvB,QAAc;QACtByB;QACA;AACF;MACAL,KAAKM,WACmB,MAAV,KAAXH,EAAM,MACHI,EAAKC,cAAcR,KAAKC,SACxBM,EAAKE,iBAAiBT,KAAKC;MACjCD,KAAKM,SAASI,GAAG,QAAQV,KAAKW,KAAKC,KAAKZ;MACxCA,KAAKM,SAASI,GAAG,QAAO,MAAMV,KAAKW,KAAK;MACxCX,KAAKM,SAASI,GAAG,UAASG,KAAOb,KAAKc,QAAQD;AAChD;IACAb,KAAKM,SAASS,MAAMZ,GAAOC,GAAUC;AACvC;EAEAW,MAAAA,CAAOX;IACL,IAAIL,KAAKM,UAAU;MACjBN,KAAKM,SAASW;MACdjB,KAAKM,gBAAWY;AAClB;IACAb;AACF;;;AC9BF,IAAMc,sBAAuBC;EAC3B,IAAMC,IAAU,IAAIlG;EACpB,KAAK,IAAImG,IAAI,GAAGA,IAAIF,EAAWxC,QAAQ0C,KAAK;IAC1CD,EAAQzD,IAAIwD,EAAWE,IAAIF,EAAWE,IAAI;;EAC5C,OAAOD;AAAO;;AAkChB,IAAME,qBAAsBC;EAC1B,QAAQA;GACN,KAAK;GACL,KAAK;GACL,KAAK;IACH,MAAM,IAAIC,UACR,mCAAmCD;;GAEvC;IACE,OAAOA,IAASA,EAAOE,gBAAgB;;AAC3C;;AAIF,IAAMC,mBAAoBC;EACxB,IAAMC,IAAO,IAAIhH,EAAI+G;EACrB,QAAQC,EAAKC;GAEX,KAAK;GACL,KAAK;IACH,OAAOC,EAAIJ,iBAAiBE;;GAC9B;IACE,MAAM,IAAIJ,UAAU,eAAeI,EAAKC;;AAC5C;;AA+BF9C,eAAegD,OACbJ,GACAK;EAEA,IAAMC,IA/BWN,MACR,QAATA,KAAkC,mBAAVA,KAAsB,UAAUA,EA8BhCO,CAAUP;EAClC,IAAMQ,IAAUF,IAAkBN,EAAMG,MAAMH;EAC9C,IAAMS,IAAWH,IAAkBN,EAAM1E,OAAO+E,GAAa/E,QAAQ;EACrE,IAAMoF,IAASJ,IACXN,EAAMU,SACNL,GAAaK,eAAUpB;EAC3B,IAAMqB,IAjFNA;IAEA,QAAQA;KACN,KAAK;KACL,KAAK;KACL,KAAK;MACH,OAAOA;;KACT,UAAKrB;MACH,OAAO;;KACT;MACE,MAAM,IAAIO,UACR,wBAAwBc;;AAE9B,IAoEiBC,CACfN,IAAkBN,EAAMW,WAAWN,GAAaM;EAGlD,IAAIE,IAAa,IAAI5H,EAAIuH;EACzB,IAAIM,IAAczF,YAAYoF;EAC9B,IAAIM,IAAY;EAEhB,IAAMC,IAAiB,IAAIzH,QACzB8G,GAAaZ,YAAYa,IAAkBN,EAAMP,eAAUH;EAE7D,IAAM2B,IAAiB;OAClBlB,iBAAiBc;IACpBjB,QAAQD,mBACNW,IAAkBN,EAAMJ,SAASS,GAAaT;IAEhDc;;EAkIF,aAAa,IAAIQ,SA/HjB,SAASC,MACPC,GACAC;IAEA,IAAMzB,IAASqB,EAAerB;IAE9B,IAAM0B,KADuC,aAA5BL,EAAef,WAAwBqB,IAAQC,GACtCC,QAAQR;IAElCK,EAASxC,GAAG,aAAY4C;MACtBA,EAASC,WAAW;MAEpB,IAAMC,IAAO;QACXC,QAAQH,EAASI;QACjBC,YAAYL,EAASM;QACrBvC,SAASF,oBAAoBmC,EAASlC;;MAGxC,IAlEK,SAFTyC,IAoEuBL,EAAKC,WAlEH,QAATI,KAAyB,QAATA,KAAyB,QAATA,KAAyB,QAATA,GAkE3B;QAC/B,IAAMC,IAAWN,EAAKnC,QAAQ5D,IAAI;QAClC,IAAMsG,IACQ,QAAZD,IAAmB,IAAIjJ,EAAIiJ,GAAUrB,KAAc;QACrD,IAAiB,YAAbF,GAAsB;UAExBU,EACE,IAAIe,MACF;UAGJ;AACD,eAAM,IAAiB,aAAbzB,KAAyC,SAAhBwB;UAClCP,EAAKnC,QAAQzD,IAAI,YAAYmG,EAAYhG;eACpC,IAAiB,aAAbwE,KAAyC,SAAhBwB,GAAsB;UACxD,MAAMpB,IA5JM,IA4JqB;YAC/BM,EAAO,IAAIe,MAAM,gCAAgCvB;YACjD;AACF,iBAAO,IACoB,YAAzBsB,EAAYjC,YACa,aAAzBiC,EAAYjC,UACZ;YAEAmB,EAAO,IAAIe,MAAM;YACjB;AACF;UAEA,IACkB,QAAhBR,EAAKC,WACa,QAAhBD,EAAKC,UAAkC,QAAhBD,EAAKC,WAA8B,WAAXjC,GACjD;YACAkB,IAAczF,YAAY;YAC1B4F,EAAerB,SAAS;YACxBoB,EAAepF,OAAO;AACxB,iBAAO,IACe,QAApBkF,EAAYxF,QACiB,QAA7BwF,EAAYjD,eACZ;YACAwD,EAAO,IAAIe,MAAM;YACjB;AACF;YACEtB,IAAczF,YAAYoF;;UAG5B4B,OAAOC,OACLrB,GACAlB,iBAAkBc,IAAasB;UAEjC,OAAOhB,MAAMC,GAASC;AACxB;AACF;MAtHJY;MAwHI,IAAM/C,UAAWqD;QACf7B,GAAQ8B,oBAAoB,SAAStD;QACrC,IAAIqD,GAAQ;UACVb,EAASxC,QAAQwB,GAAQ+B,UAAU/B,EAAO6B,SAASA;UACnDlB,EAAOX,GAAQ+B,UAAU/B,EAAO6B,SAASA;AAC3C;AAAA;MAGF7B,GAAQgC,iBAAiB,SAASxD;MAElC,IAAI5D,IAAwBoG;MAC5B,IAAMlD,IAAWoD,EAAKnC,QAAQ5D,IAAI,qBAAqB8G;MACvD,IAAe,WAAX/C,KAAqC,QAAhBgC,EAAKC,UAAkC,QAAhBD,EAAKC;QACnDvG,IAAO;aACF,IAAgB,QAAZkD,GAAkB;QAC3BoD,EAAKnC,QAAQzD,IAAI,oBAAoBwC;QACrClD,IAAOsH,EAAQA,SAACtH,GD7KakD;UAEnC,QAAQA;WACN,KAAK;YACH,OAAOG,EAAKkE,uBAAuB;cACjCC,OAAOnE,EAAKoE,UAAUC;cACtBC,aAAatE,EAAKoE,UAAUC;;;WAEhC,KAAK;WACL,KAAK;YACH,OAAOrE,EAAKuE,aAAa;cACvBJ,OAAOnE,EAAKoE,UAAUI;cACtBF,aAAatE,EAAKoE,UAAUI;;;WAEhC,KAAK;WACL,KAAK;YACH,OAAO,IAAInF,cAAc;cACvB8E,OAAOnE,EAAKoE,UAAUI;cACtBF,aAAatE,EAAKoE,UAAUI;;;WAEhC;YACE,OAAO,IAAIC,EAAAA;;AACf,UCuJ4BC,CAAqB7E,IAAWU;AACxD;MAEAkC,EAvIN,SAASkC,eACPhI,GACAsG,GACA2B;QAMA,IAAMC,IAAW,IAAInK,EAASiC,GAAMsG;QACpCS,OAAOoB,eAAeD,GAAU,OAAO;UAAEtG,OAAOqG,EAAOpD;;QACvD,IAAoB,cAAhBoD,EAAOjJ;UACT+H,OAAOoB,eAAeD,GAAU,QAAQ;YAAEtG,OAAOqG,EAAOjJ;;;QAC1D,IAAIiJ,EAAOG;UACTrB,OAAOoB,eAAeD,GAAU,cAAc;YAAEtG,OAAOqG,EAAOG;;;QAChE,OAAOF;AACT,OAwHQF,CAAehI,GAAMsG,GAAM;QACzBtH,MAAM;QACN6F,KAAKU,EAAW1E;QAChBuH,YAAY3C,IAAY;;AAE3B;IAGHO,EAASxC,GAAG,SAASuC;IAErB,KAAKL,EAAejF,IAAI;MAAWiF,EAAehF,IAAI,UAAU;;IAChE,IAAI8E,EAAYhD;MACdkD,EAAehF,IAAI,gBAAgB8E,EAAYhD;;IAEjD,IAAwB,QAApBgD,EAAYxF,SAA4B,WAAXsE,KAAgC,UAAXA;MACpDoB,EAAehF,IAAI,kBAAkB;WAChC,IAAwB,QAApB8E,EAAYxF,QAA6C,QAA7BwF,EAAYjD;MACjDmD,EAAehF,IAAI,kBAAkB,GAAG8E,EAAYjD;;IA3NrB8F,EACnCrC,GACA7B;MAEA,IAAmC,qBAAxB6B,EAASsC;QAClBtC,EAASsC,WAAWnE;;QAEpB,KAAK,KAAOoE,GAAK3G,MAAUuC;UAAS6B,EAASwC,UAAUD,GAAK3G;;;AAC9D,MAsNEyG,CAA6BrC,GAAUN;IAEvC,IAAwB,QAApBF,EAAYxF;MACdgG,EAASjC;WACJ,IAAIyB,EAAYxF,gBAAgBc,YAAY;MACjDkF,EAASnC,MAAM2B,EAAYxF;MAC3BgG,EAASjC;AACX,WAAO;MACL,IAAM/D,IACJwF,EAAYxF,gBAAgByI,WACxBjD,EAAYxF,OACZvB,WAASiK,QAAQlD,EAAYxF;MACnCsH,WAAStH,GAAMgG,IAAU2C;QACvB,IAAIA;UAAO5C,EAAO4C;;AAAM;AAE5B;AACF;AAGF;;;;eF7DO,MAAMC;EAGX1J,WAAAA,CAAYoH;IACVxD,KAAKL,KAAkB1C,YAAYuG;AACrC;EAEA,QAAItG;IACF,OAAO8C,KAAKL,GAAgBzC;AAC9B;EAEA,YAAI6I;IACF,KAAM7I,MAAEA,KAAS8C,KAAKL;IACtB,IAAIlE,WAAWyB;MACb,OAAOvB,EAAQA,SAACqK,YAAY9I;WACvB,IAAItB,iBAAiBsB;MAC1B,OAAOA,EAAK+I;;MAEZ,QAAO;;AAEX;EAEA,iBAAMhK;IACJ,KAAMiB,MAAEA,KAAS8C,KAAKL;IACtB,OAAO1B,EAAgBA,iBAACf,KACpBA,IACA,IAAIjC,EAAS+E,KAAK9C,MAAMjB;AAC9B;EAEA,cAAMiK;IACJ,KAAMhJ,MAAEA,GAAIuC,eAAEA,GAAaC,aAAEA,KAAgBM,KAAKL;IAClD,IAAM0B,IAAU,CAAE;IAClB,IAAI5B;MAAe4B,EAAQ,oBAAoB5B;;IAC/C,IAAIC;MAAa2B,EAAQ,kBAAkB3B;;IAC3C,OAAO,IAAIzE,EAASiC,GAAM;MAAEmE;OAAW6E;AACzC;EAEA,UAAMC;IACJ,KAAMzG,aAAEA,KAAgBM,KAAKL;IAC7B,OAAO,IAAIlF,EAAK,QAAOuF,KAAK/D,iBAAgB;MAC1CC,MAAMwD,UAAewB;;AAEzB;EAEA,UAAMkF;IACJ,IAAMC,UAAarG,KAAKqG;IACxB,OAAOC,KAAKC,MAAMF;AACpB;EAEA,UAAMA;IACJ,QAAO,IAAIG,aAAcC,aAAazG,KAAK/D;AAC7C;;;;;;;;;;;;;;;;;;;"}
@@ -10,13 +10,37 @@ import { isAnyArrayBuffer as f } from "node:util/types";
10
10
 
11
11
  import { randomBytes as l } from "node:crypto";
12
12
 
13
- import * as c from "node:zlib";
13
+ import * as c from "node:buffer";
14
14
 
15
- import * as u from "node:buffer";
15
+ import * as u from "node:zlib";
16
16
 
17
- var d = "\r\n";
17
+ var d = globalThis.File || c.File;
18
18
 
19
- var p = "-".repeat(2);
19
+ if (void 0 === globalThis.File) {
20
+ globalThis.File = d;
21
+ }
22
+
23
+ var y = Blob;
24
+
25
+ var p = URLSearchParams;
26
+
27
+ var h = URL;
28
+
29
+ var v = Request;
30
+
31
+ var m = Response;
32
+
33
+ var b = Headers;
34
+
35
+ var g = FormData;
36
+
37
+ var w = "\r\n";
38
+
39
+ var L = "-".repeat(2);
40
+
41
+ var isReadable = t => e.isReadable(t);
42
+
43
+ var isReadableStream = e => "object" == typeof e && "function" == typeof e.getReader && "function" == typeof e.cancel && "function" == typeof e.tee;
20
44
 
21
45
  var isBlob = e => {
22
46
  if ("object" == typeof e && "function" == typeof e.arrayBuffer && "string" == typeof e.type && "function" == typeof e.stream && "function" == typeof e.constructor) {
@@ -28,18 +52,18 @@ var isBlob = e => {
28
52
  };
29
53
 
30
54
  var getFormHeader = (e, t, r) => {
31
- var n = `${p}${e}${d}`;
55
+ var n = `${L}${e}${w}`;
32
56
  n += `Content-Disposition: form-data; name="${t}"`;
33
57
  if (isBlob(r)) {
34
- n += `; filename="${r.name ?? "blob"}"${d}`;
58
+ n += `; filename="${r.name ?? "blob"}"${w}`;
35
59
  n += `Content-Type: ${r.type || "application/octet-stream"}`;
36
60
  }
37
- return `${n}${d}${d}`;
61
+ return `${n}${w}${w}`;
38
62
  };
39
63
 
40
- var getFormFooter = e => `${p}${e}${p}${d}${d}`;
64
+ var getFormFooter = e => `${L}${e}${L}${w}${w}`;
41
65
 
42
- var y = new TextEncoder;
66
+ var T = new TextEncoder;
43
67
 
44
68
  var extractBody = t => {
45
69
  var r = null;
@@ -49,12 +73,12 @@ var extractBody = t => {
49
73
  n = null;
50
74
  o = 0;
51
75
  } else if ("string" == typeof t) {
52
- var a = y.encode(`${t}`);
76
+ var a = T.encode(`${t}`);
53
77
  r = "text/plain;charset=UTF-8";
54
78
  o = a.byteLength;
55
79
  n = a;
56
80
  } else if ((e => "object" == typeof e && "function" == typeof e.append && "function" == typeof e.delete && "function" == typeof e.get && "function" == typeof e.getAll && "function" == typeof e.has && "function" == typeof e.set && "function" == typeof e.sort && "URLSearchParams" === e[Symbol.toStringTag])(t)) {
57
- var s = y.encode(t.toString());
81
+ var s = T.encode(t.toString());
58
82
  n = s;
59
83
  o = s.byteLength;
60
84
  r = "application/x-www-form-urlencoded;charset=UTF-8";
@@ -73,7 +97,7 @@ var extractBody = t => {
73
97
  var c = new Uint8Array(t.buffer, t.byteOffset, t.byteLength);
74
98
  n = c;
75
99
  o = c.byteLength;
76
- } else if ((e => "object" == typeof e && "function" == typeof e.getReader && "function" == typeof e.cancel && "function" == typeof e.tee)(t)) {
100
+ } else if (isReadableStream(t)) {
77
101
  n = t;
78
102
  } else if ((e => "object" == typeof e && "function" == typeof e.append && "function" == typeof e.set && "function" == typeof e.get && "function" == typeof e.getAll && "function" == typeof e.delete && "function" == typeof e.keys && "function" == typeof e.values && "function" == typeof e.entries && "function" == typeof e.constructor && "FormData" === e[Symbol.toStringTag])(t)) {
79
103
  var u = `formdata-${l(8).toString("hex")}`;
@@ -91,9 +115,9 @@ var extractBody = t => {
91
115
  if (isBlob(o)) {
92
116
  yield r.encode(getFormHeader(t, n, o));
93
117
  yield* o.stream();
94
- yield r.encode(d);
118
+ yield r.encode(w);
95
119
  } else {
96
- yield r.encode(getFormHeader(t, n, o) + o + d);
120
+ yield r.encode(getFormHeader(t, n, o) + o + w);
97
121
  }
98
122
  }
99
123
  yield r.encode(getFormFooter(t));
@@ -102,15 +126,15 @@ var extractBody = t => {
102
126
  r = `multipart/form-data; boundary=${t.getBoundary()}`;
103
127
  o = t.hasKnownLength() ? t.getLengthSync() : null;
104
128
  n = t;
105
- } else if ((t => e.isReadable(t))(t)) {
129
+ } else if (isReadable(t)) {
106
130
  n = t;
107
131
  } else if ((e => "function" == typeof e[Symbol.asyncIterator] || "function" == typeof e[Symbol.iterator])(t)) {
108
132
  n = e.from(t);
109
133
  } else {
110
- var p = y.encode(`${t}`);
134
+ var d = T.encode(`${t}`);
111
135
  r = "text/plain;charset=UTF-8";
112
- n = p;
113
- o = p.byteLength;
136
+ n = d;
137
+ o = d.byteLength;
114
138
  }
115
139
  return {
116
140
  contentLength: o,
@@ -119,6 +143,57 @@ var extractBody = t => {
119
143
  };
120
144
  };
121
145
 
146
+ var S = Symbol("kBodyInternals");
147
+
148
+ class Body {
149
+ constructor(e) {
150
+ this[S] = extractBody(e);
151
+ }
152
+ get body() {
153
+ return this[S].body;
154
+ }
155
+ get bodyUsed() {
156
+ var {body: t} = this[S];
157
+ if (isReadable(t)) {
158
+ return e.isDisturbed(t);
159
+ } else if (isReadableStream(t)) {
160
+ return t.locked;
161
+ } else {
162
+ return !1;
163
+ }
164
+ }
165
+ async arrayBuffer() {
166
+ var {body: e} = this[S];
167
+ return f(e) ? e : new m(this.body).arrayBuffer();
168
+ }
169
+ async formData() {
170
+ var {body: e, contentLength: t, contentType: r} = this[S];
171
+ var n = {};
172
+ if (t) {
173
+ n["Content-Length"] = t;
174
+ }
175
+ if (r) {
176
+ n["Content-Type"] = r;
177
+ }
178
+ return new m(e, {
179
+ headers: n
180
+ }).formData();
181
+ }
182
+ async blob() {
183
+ var {contentType: e} = this[S];
184
+ return new y([ await this.arrayBuffer() ], {
185
+ type: e ?? void 0
186
+ });
187
+ }
188
+ async json() {
189
+ var e = await this.text();
190
+ return JSON.parse(e);
191
+ }
192
+ async text() {
193
+ return (new TextDecoder).decode(await this.arrayBuffer());
194
+ }
195
+ }
196
+
122
197
  class InflateStream extends r {
123
198
  constructor(e) {
124
199
  super();
@@ -130,7 +205,7 @@ class InflateStream extends r {
130
205
  r();
131
206
  return;
132
207
  }
133
- this._inflate = 8 == (15 & e[0]) ? c.createInflate(this._opts) : c.createInflateRaw(this._opts);
208
+ this._inflate = 8 == (15 & e[0]) ? u.createInflate(this._opts) : u.createInflateRaw(this._opts);
134
209
  this._inflate.on("data", this.push.bind(this));
135
210
  this._inflate.on("end", (() => this.push(null)));
136
211
  this._inflate.on("error", (e => this.destroy(e)));
@@ -146,26 +221,6 @@ class InflateStream extends r {
146
221
  }
147
222
  }
148
223
 
149
- var h = globalThis.File || u.File;
150
-
151
- if (void 0 === globalThis.File) {
152
- globalThis.File = h;
153
- }
154
-
155
- var m = Blob;
156
-
157
- var v = URLSearchParams;
158
-
159
- var b = URL;
160
-
161
- var g = Request;
162
-
163
- var w = Response;
164
-
165
- var L = Headers;
166
-
167
- var T = FormData;
168
-
169
224
  var headersOfRawHeaders = e => {
170
225
  var t = new Headers;
171
226
  for (var r = 0; r < e.length; r += 2) {
@@ -187,7 +242,7 @@ var methodToHttpOption = e => {
187
242
  };
188
243
 
189
244
  var urlToHttpOptions = e => {
190
- var t = new b(e);
245
+ var t = new h(e);
191
246
  switch (t.protocol) {
192
247
  case "http:":
193
248
  case "https:":
@@ -201,9 +256,9 @@ var urlToHttpOptions = e => {
201
256
  async function _fetch(r, i) {
202
257
  var f = (e => null != e && "object" == typeof e && "body" in e)(r);
203
258
  var l = f ? r.url : r;
204
- var u = f ? r.body : i?.body || null;
259
+ var c = f ? r.body : i?.body || null;
205
260
  var d = f ? r.signal : i?.signal || void 0;
206
- var p = (e => {
261
+ var y = (e => {
207
262
  switch (e) {
208
263
  case "follow":
209
264
  case "manual":
@@ -217,18 +272,18 @@ async function _fetch(r, i) {
217
272
  throw new TypeError(`Request constructor: ${e} is not an accepted type. Expected one of follow, manual, error.`);
218
273
  }
219
274
  })(f ? r.redirect : i?.redirect);
220
- var y = new b(l);
221
- var h = extractBody(u);
222
- var m = 0;
223
- var v = new Headers(i?.headers || (f ? r.headers : void 0));
224
- var g = {
225
- ...urlToHttpOptions(y),
275
+ var p = new h(l);
276
+ var v = extractBody(c);
277
+ var b = 0;
278
+ var g = new Headers(i?.headers || (f ? r.headers : void 0));
279
+ var w = {
280
+ ...urlToHttpOptions(p),
226
281
  method: methodToHttpOption(f ? r.method : i?.method),
227
282
  signal: d
228
283
  };
229
284
  return await new Promise((function _call(r, i) {
230
- var f = g.method;
231
- var l = ("https:" === g.protocol ? a : s).request(g);
285
+ var f = w.method;
286
+ var l = ("https:" === w.protocol ? a : s).request(w);
232
287
  l.on("response", (e => {
233
288
  e.setTimeout(0);
234
289
  var o = {
@@ -238,31 +293,31 @@ async function _fetch(r, i) {
238
293
  };
239
294
  if (301 === (l = o.status) || 302 === l || 303 === l || 307 === l || 308 === l) {
240
295
  var a = o.headers.get("Location");
241
- var s = null != a ? new b(a, y) : null;
242
- if ("error" === p) {
296
+ var s = null != a ? new h(a, p) : null;
297
+ if ("error" === y) {
243
298
  i(new Error("URI requested responds with a redirect, redirect mode is set to error"));
244
299
  return;
245
- } else if ("manual" === p && null !== s) {
300
+ } else if ("manual" === y && null !== s) {
246
301
  o.headers.set("Location", s.toString());
247
- } else if ("follow" === p && null !== s) {
248
- if (++m > 20) {
249
- i(new Error(`maximum redirect reached at: ${y}`));
302
+ } else if ("follow" === y && null !== s) {
303
+ if (++b > 20) {
304
+ i(new Error(`maximum redirect reached at: ${p}`));
250
305
  return;
251
306
  } else if ("http:" !== s.protocol && "https:" !== s.protocol) {
252
307
  i(new Error("URL scheme must be a HTTP(S) scheme"));
253
308
  return;
254
309
  }
255
310
  if (303 === o.status || (301 === o.status || 302 === o.status) && "POST" === f) {
256
- h = extractBody(null);
257
- g.method = "GET";
258
- v.delete("Content-Length");
259
- } else if (null != h.body && null == h.contentLength) {
311
+ v = extractBody(null);
312
+ w.method = "GET";
313
+ g.delete("Content-Length");
314
+ } else if (null != v.body && null == v.contentLength) {
260
315
  i(new Error("Cannot follow redirect with a streamed body"));
261
316
  return;
262
317
  } else {
263
- h = extractBody(u);
318
+ v = extractBody(c);
264
319
  }
265
- Object.assign(g, urlToHttpOptions(y = s));
320
+ Object.assign(w, urlToHttpOptions(p = s));
266
321
  return _call(r, i);
267
322
  }
268
323
  }
@@ -284,23 +339,23 @@ async function _fetch(r, i) {
284
339
  L = n(L, (e => {
285
340
  switch (e) {
286
341
  case "br":
287
- return c.createBrotliDecompress({
288
- flush: c.constants.BROTLI_OPERATION_FLUSH,
289
- finishFlush: c.constants.BROTLI_OPERATION_FLUSH
342
+ return u.createBrotliDecompress({
343
+ flush: u.constants.BROTLI_OPERATION_FLUSH,
344
+ finishFlush: u.constants.BROTLI_OPERATION_FLUSH
290
345
  });
291
346
 
292
347
  case "gzip":
293
348
  case "x-gzip":
294
- return c.createGunzip({
295
- flush: c.constants.Z_SYNC_FLUSH,
296
- finishFlush: c.constants.Z_SYNC_FLUSH
349
+ return u.createGunzip({
350
+ flush: u.constants.Z_SYNC_FLUSH,
351
+ finishFlush: u.constants.Z_SYNC_FLUSH
297
352
  });
298
353
 
299
354
  case "deflate":
300
355
  case "x-deflate":
301
356
  return new InflateStream({
302
- flush: c.constants.Z_SYNC_FLUSH,
303
- finishFlush: c.constants.Z_SYNC_FLUSH
357
+ flush: u.constants.Z_SYNC_FLUSH,
358
+ finishFlush: u.constants.Z_SYNC_FLUSH
304
359
  });
305
360
 
306
361
  default:
@@ -309,7 +364,7 @@ async function _fetch(r, i) {
309
364
  })(T), destroy);
310
365
  }
311
366
  r(function createResponse(e, t, r) {
312
- var n = new w(e, t);
367
+ var n = new m(e, t);
313
368
  Object.defineProperty(n, "url", {
314
369
  value: r.url
315
370
  });
@@ -326,21 +381,21 @@ async function _fetch(r, i) {
326
381
  return n;
327
382
  }(L, o, {
328
383
  type: "default",
329
- url: y.toString(),
330
- redirected: m > 0
384
+ url: p.toString(),
385
+ redirected: b > 0
331
386
  }));
332
387
  }));
333
388
  l.on("error", i);
334
- if (!v.has("Accept")) {
335
- v.set("Accept", "*/*");
389
+ if (!g.has("Accept")) {
390
+ g.set("Accept", "*/*");
336
391
  }
337
- if (h.contentType) {
338
- v.set("Content-Type", h.contentType);
392
+ if (v.contentType) {
393
+ g.set("Content-Type", v.contentType);
339
394
  }
340
- if (null == h.body && ("POST" === f || "PUT" === f)) {
341
- v.set("Content-Length", "0");
342
- } else if (null != h.body && null != h.contentLength) {
343
- v.set("Content-Length", `${h.contentLength}`);
395
+ if (null == v.body && ("POST" === f || "PUT" === f)) {
396
+ g.set("Content-Length", "0");
397
+ } else if (null != v.body && null != v.contentLength) {
398
+ g.set("Content-Length", `${v.contentLength}`);
344
399
  }
345
400
  ((e, t) => {
346
401
  if ("function" == typeof e.setHeaders) {
@@ -350,14 +405,14 @@ async function _fetch(r, i) {
350
405
  e.setHeader(r, n);
351
406
  }
352
407
  }
353
- })(l, v);
354
- if (null == h.body) {
408
+ })(l, g);
409
+ if (null == v.body) {
355
410
  l.end();
356
- } else if (h.body instanceof Uint8Array) {
357
- l.write(h.body);
411
+ } else if (v.body instanceof Uint8Array) {
412
+ l.write(v.body);
358
413
  l.end();
359
414
  } else {
360
- var L = h.body instanceof o ? h.body : e.fromWeb(h.body);
415
+ var L = v.body instanceof o ? v.body : e.fromWeb(v.body);
361
416
  n(L, l, (e => {
362
417
  if (e) {
363
418
  i(e);
@@ -367,5 +422,5 @@ async function _fetch(r, i) {
367
422
  }));
368
423
  }
369
424
 
370
- export { m as Blob, h as File, T as FormData, L as Headers, g as Request, w as Response, b as URL, v as URLSearchParams, _fetch as default, _fetch as fetch };
425
+ export { y as Blob, Body, d as File, g as FormData, b as Headers, v as Request, m as Response, h as URL, p as URLSearchParams, _fetch as default, _fetch as fetch };
371
426
  //# sourceMappingURL=minifetch.mjs.map