fetch-http-message
Version:
Generate an http message string using the fetch API
1 lines • 6.76 kB
Source Map (JSON)
{"version":3,"file":"fetch-http-message.cjs","sources":["../../src/blobToString.ts","../../src/index.ts"],"sourcesContent":["// https://stackoverflow.com/a/23024613/3150390\n/* c8 ignore start */\nexport default function blobToString(b: Blob): string {\n const u = URL.createObjectURL(b);\n const x = new XMLHttpRequest();\n x.open('GET', u, false);\n x.send();\n URL.revokeObjectURL(u);\n return x.responseText;\n}\n/* c8 ignore stop */\n","import blobToString from './blobToString';\n\nexport interface HeadersObject {\n [key: string]: string;\n}\n\n// https://github.com/node-fetch/node-fetch/blob/main/%40types/index.d.ts\nexport type HeadersInit = Headers | HeadersObject | Record<string, string> | Iterable<readonly [string, string]> | Iterable<Iterable<string>>;\nconst hasHeaders = typeof Headers !== 'undefined';\n\nexport type BodyInit = Blob | Buffer | URLSearchParams | string;\nconst hasBlob = typeof Blob !== 'undefined';\nconst hasBuffer = typeof Buffer !== 'undefined';\nconst hasURLSearchParams = typeof URLSearchParams !== 'undefined';\n\n// export type RequestRedirect = 'error' | 'follow' | 'manual';\nexport interface RequestInit {\n body?: BodyInit | null;\n headers?: HeadersInit;\n method?: string;\n // redirect?: RequestRedirect;\n}\n\nexport type RequestInfo = string | Request;\nexport interface Request {\n readonly headers: Headers | HeadersObject;\n readonly method: string;\n // readonly redirect: RequestRedirect;\n readonly url: string;\n}\n\nfunction isRequest(object) {\n return typeof object === 'object';\n}\n\n/**\n * Generate an http message string using the fetch API\n *\n * @param input Fetch input\n * @param init Fetch init\n * @returns The http message string\n */\nexport default function fetchHttpMessage(input: RequestInfo, init?: RequestInit): string {\n if (input === undefined) throw new Error('Input is expected');\n if (init === undefined) init = {};\n\n let url: string;\n if (isRequest(input)) url = (input as Request).url;\n else {\n url = input as string;\n input = {} as Request;\n }\n\n let method = init.method || (input as Request).method || 'GET';\n method = method.toUpperCase();\n const lines = [`${method} ${url} HTTP/1.1`];\n\n const headers = init.headers || (input as Request).headers;\n if (headers !== undefined) {\n /* c8 ignore start */\n if (hasHeaders && headers instanceof Headers) {\n // @ts-ignore\n for (const pair of (headers as Headers).entries()) lines.push(`${pair[0]}: ${pair[1]}`);\n } else {\n /* c8 ignore stop */\n for (const key in headers as HeadersObject) lines.push(`${key}: ${headers[key]}`);\n }\n }\n\n const body = init.body;\n if (body !== undefined) {\n if (~['GET', 'HEAD'].indexOf(method)) throw new Error(`Option body not valid with method ${method}`);\n /* c8 ignore start */\n if (hasBlob && body instanceof Blob) {\n lines.push('');\n lines.push(blobToString(body));\n } else if (\n /* c8 ignore stop */\n typeof body === 'string' ||\n body instanceof String ||\n /* c8 ignore start */\n (hasBuffer && body instanceof Buffer) ||\n (hasURLSearchParams && body instanceof URLSearchParams)\n /* c8 ignore stop */\n ) {\n lines.push('');\n lines.push(body.toString());\n } else throw new Error('Option body should be convertible to a string');\n }\n return lines.join('\\r\\n');\n}\n"],"names":["blobToString","b","u","URL","createObjectURL","x","XMLHttpRequest","open","send","revokeObjectURL","responseText","hasHeaders","Headers","hasBlob","Blob","hasBuffer","Buffer","hasURLSearchParams","URLSearchParams","isRequest","object","fetchHttpMessage","input","init","undefined","Error","url","method","toUpperCase","lines","headers","entries","pair","push","key","body","indexOf","String","toString","join"],"mappings":"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"}