forked from amethystnetwork-dev/Hypertabs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
bare-client.js.map
1 lines (1 loc) · 69.9 KB
/
bare-client.js.map
1
{"version":3,"file":"bare-client.js","sources":["../src/snapshot.ts","../src/Client.ts","../src/encodeProtocol.ts","../src/V1.ts","../src/md5.ts","../src/splitHeaderUtil.ts","../src/V2.ts","../src/BareClient.ts"],"sourcesContent":["// The user likely has overwritten all networking functions after importing bare-client\n// It is our responsibility to make sure components of Bare-Client are using native networking functions\n\n// These exports are provided to plugins by @rollup/plugin-inject\n\nexport const fetch = globalThis.fetch;\nexport const WebSocket = globalThis.WebSocket;\nexport const Request = globalThis.Request;\nexport const Response = globalThis.Response;\nexport const XMLHttpRequest = globalThis.XMLHttpRequest;\n","import type {\n\tBareBodyInit,\n\tBareCache,\n\tBareHeaders,\n\tBareHTTPProtocol,\n\tBareMethod,\n\tBareResponse,\n\tBareWebSocket,\n\tBareWSProtocol,\n} from './BareClient';\n\nexport const statusEmpty = [101, 204, 205, 304];\nexport const statusRedirect = [301, 302, 303, 307, 308];\n\nexport interface BareErrorBody {\n\tcode: string;\n\tid: string;\n\tmessage?: string;\n\tstack?: string;\n}\n\nexport class BareError extends Error {\n\tstatus: number;\n\tbody: BareErrorBody;\n\tconstructor(status: number, body: BareErrorBody) {\n\t\tsuper(body.message || body.code);\n\t\tthis.status = status;\n\t\tthis.body = body;\n\t}\n}\n\nexport interface GenericClient {\n\tconnect(\n\t\trequestHeaders: BareHeaders,\n\t\tprotocol: BareWSProtocol,\n\t\thost: string,\n\t\tport: string | number,\n\t\tpath: string\n\t): Promise<BareWebSocket>;\n\trequest(\n\t\tmethod: BareMethod,\n\t\trequestHeaders: BareHeaders,\n\t\tbody: BareBodyInit,\n\t\tprotocol: BareHTTPProtocol,\n\t\thost: string,\n\t\tport: string | number,\n\t\tpath: string,\n\t\tcache: BareCache | undefined,\n\t\tsignal: AbortSignal | undefined\n\t): Promise<BareResponse>;\n}\n\nexport default class Client {\n\tprotected base: URL;\n\t/**\n\t *\n\t * @param version Version provided by extension\n\t * @param server Bare Server URL provided by BareClient\n\t */\n\tconstructor(version: number, server: URL) {\n\t\tthis.base = new URL(`./v${version}/`, server);\n\t}\n}\n","const validChars =\n\t\"!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz|~\";\nconst reserveChar = '%';\n\nexport function validProtocol(protocol: string): boolean {\n\tfor (let i = 0; i < protocol.length; i++) {\n\t\tconst char = protocol[i];\n\n\t\tif (!validChars.includes(char)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport function encodeProtocol(protocol: string): string {\n\tlet result = '';\n\n\tfor (let i = 0; i < protocol.length; i++) {\n\t\tconst char = protocol[i];\n\n\t\tif (validChars.includes(char) && char !== reserveChar) {\n\t\t\tresult += char;\n\t\t} else {\n\t\t\tconst code = char.charCodeAt(0);\n\t\t\tresult += reserveChar + code.toString(16).padStart(2, '0');\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function decodeProtocol(protocol: string): string {\n\tlet result = '';\n\n\tfor (let i = 0; i < protocol.length; i++) {\n\t\tconst char = protocol[i];\n\n\t\tif (char === reserveChar) {\n\t\t\tconst code = parseInt(protocol.slice(i + 1, i + 3), 16);\n\t\t\tconst decoded = String.fromCharCode(code);\n\n\t\t\tresult += decoded;\n\t\t\ti += 2;\n\t\t} else {\n\t\t\tresult += char;\n\t\t}\n\t}\n\n\treturn result;\n}\n","import type {\n\tBareBodyInit,\n\tBareCache,\n\tBareHeaders,\n\tBareHTTPProtocol,\n\tBareMethod,\n\tBareResponse,\n\tBareWebSocket,\n\tBareWSProtocol,\n\tXBare,\n} from './BareClient.js';\nimport type { GenericClient} from './Client.js';\nimport Client, { BareError, statusEmpty } from './Client.js';\nimport { encodeProtocol } from './encodeProtocol.js';\n\nexport default class ClientV1 extends Client implements GenericClient {\n\tws: URL;\n\thttp: URL;\n\tnewMeta: URL;\n\tgetMeta: URL;\n\tconstructor(server: URL) {\n\t\tsuper(1, server);\n\n\t\tthis.ws = new URL(this.base);\n\t\tthis.http = new URL(this.base);\n\t\tthis.newMeta = new URL('ws-new-meta', this.base);\n\t\tthis.getMeta = new URL('ws-meta', this.base);\n\n\t\tif (this.ws.protocol === 'https:') {\n\t\t\tthis.ws.protocol = 'wss:';\n\t\t} else {\n\t\t\tthis.ws.protocol = 'ws:';\n\t\t}\n\t}\n\tasync connect(\n\t\trequestHeaders: BareHeaders,\n\t\tprotocol: BareWSProtocol,\n\t\thost: string,\n\t\tport: string | number,\n\t\tpath: string\n\t): Promise<BareWebSocket> {\n\t\tconst assignMeta = await fetch(this.newMeta, { method: 'GET' });\n\n\t\tif (!assignMeta.ok) {\n\t\t\tthrow new BareError(assignMeta.status, await assignMeta.json());\n\t\t}\n\n\t\tconst id = await assignMeta.text();\n\n\t\tconst socket: WebSocket & Partial<BareWebSocket> = new WebSocket(this.ws, [\n\t\t\t'bare',\n\t\t\tencodeProtocol(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\tremote: {\n\t\t\t\t\t\tprotocol,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tport,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t},\n\t\t\t\t\theaders: requestHeaders,\n\t\t\t\t\tforward_headers: [\n\t\t\t\t\t\t'accept-encoding',\n\t\t\t\t\t\t'accept-language',\n\t\t\t\t\t\t'sec-websocket-extensions',\n\t\t\t\t\t\t'sec-websocket-key',\n\t\t\t\t\t\t'sec-websocket-version',\n\t\t\t\t\t],\n\t\t\t\t\tid,\n\t\t\t\t})\n\t\t\t),\n\t\t]);\n\n\t\tsocket.meta = new Promise<XBare>((resolve, reject) => {\n\t\t\tsocket.addEventListener('open', async () => {\n\t\t\t\tconst outgoing = await fetch(this.getMeta, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'x-bare-id': id,\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'GET',\n\t\t\t\t});\n\n\t\t\t\tif (!outgoing.ok) {\n\t\t\t\t\treject(new BareError(outgoing.status, await outgoing.json()));\n\t\t\t\t}\n\n\t\t\t\tresolve(await outgoing.json());\n\t\t\t});\n\n\t\t\tsocket.addEventListener('error', reject);\n\t\t});\n\n\t\treturn <BareWebSocket>socket;\n\t}\n\tasync request(\n\t\tmethod: BareMethod,\n\t\trequestHeaders: BareHeaders,\n\t\tbody: BareBodyInit,\n\t\tprotocol: BareHTTPProtocol,\n\t\thost: string,\n\t\tport: string | number,\n\t\tpath: string,\n\t\tcache: BareCache | undefined,\n\t\tsignal: AbortSignal | undefined\n\t): Promise<BareResponse> {\n\t\tif (protocol.startsWith('blob:')) {\n\t\t\tconst response = await fetch(`blob:${location.origin}${path}`);\n\t\t\tconst result: Response & Partial<BareResponse> = new Response(\n\t\t\t\tresponse.body,\n\t\t\t\tresponse\n\t\t\t);\n\n\t\t\tresult.rawHeaders = Object.fromEntries(response.headers);\n\t\t\tresult.rawResponse = response;\n\n\t\t\treturn <BareResponse>result;\n\t\t}\n\n\t\tconst bareHeaders: BareHeaders = {};\n\n\t\tif (requestHeaders instanceof Headers) {\n\t\t\tfor (const [header, value] of requestHeaders) {\n\t\t\t\tbareHeaders[header] = value;\n\t\t\t}\n\t\t} else {\n\t\t\tfor (const header in requestHeaders) {\n\t\t\t\tbareHeaders[header] = requestHeaders[header];\n\t\t\t}\n\t\t}\n\n\t\tconst forwardHeaders = ['accept-encoding', 'accept-language'];\n\n\t\tconst options: RequestInit = {\n\t\t\tcredentials: 'omit',\n\t\t\tmethod: method,\n\t\t\tsignal,\n\t\t};\n\n\t\tif (body !== undefined) {\n\t\t\toptions.body = body;\n\t\t}\n\n\t\t// bare can be an absolute path containing no origin, it becomes relative to the script\n\t\tconst request = new Request(this.http, options);\n\n\t\tthis.writeBareRequest(\n\t\t\trequest,\n\t\t\tprotocol,\n\t\t\thost,\n\t\t\tpath,\n\t\t\tport,\n\t\t\tbareHeaders,\n\t\t\tforwardHeaders\n\t\t);\n\n\t\tconst response = await fetch(request);\n\n\t\tconst readResponse = await this.readBareResponse(response);\n\n\t\tconst result: Partial<BareResponse> = new Response(\n\t\t\tstatusEmpty.includes(readResponse.status) ? undefined : response.body,\n\t\t\t{\n\t\t\t\tstatus: readResponse.status,\n\t\t\t\tstatusText: readResponse.statusText ?? undefined,\n\t\t\t\theaders: readResponse.headers,\n\t\t\t}\n\t\t);\n\n\t\tresult.rawHeaders = readResponse.rawHeaders;\n\t\tresult.rawResponse = response;\n\n\t\treturn <BareResponse>result;\n\t}\n\tprivate async readBareResponse(response: Response) {\n\t\tif (!response.ok) {\n\t\t\tthrow new BareError(response.status, await response.json());\n\t\t}\n\n\t\tconst requiredHeaders = [\n\t\t\t'x-bare-status',\n\t\t\t'x-bare-status-text',\n\t\t\t'x-bare-headers',\n\t\t];\n\n\t\tfor (const header of requiredHeaders) {\n\t\t\tif (!response.headers.has(header)) {\n\t\t\t\tthrow new BareError(500, {\n\t\t\t\t\tcode: 'IMPL_MISSING_BARE_HEADER',\n\t\t\t\t\tid: `response.headers.${header}`,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst status = parseInt(response.headers.get('x-bare-status')!);\n\t\tconst statusText = response.headers.get('x-bare-status-text')!;\n\t\tconst rawHeaders = JSON.parse(response.headers.get('x-bare-headers')!);\n\t\tconst headers = new Headers(rawHeaders);\n\n\t\treturn {\n\t\t\tstatus,\n\t\t\tstatusText,\n\t\t\trawHeaders,\n\t\t\theaders,\n\t\t};\n\t}\n\tprivate writeBareRequest(\n\t\trequest: Request,\n\t\tprotocol: BareHTTPProtocol,\n\t\thost: string,\n\t\tpath: string,\n\t\tport: string | number,\n\t\tbareHeaders: BareHeaders,\n\t\tforwardHeaders: string[]\n\t) {\n\t\trequest.headers.set('x-bare-protocol', protocol);\n\t\trequest.headers.set('x-bare-host', host);\n\t\trequest.headers.set('x-bare-path', path);\n\t\trequest.headers.set('x-bare-port', port.toString());\n\t\trequest.headers.set('x-bare-headers', JSON.stringify(bareHeaders));\n\t\trequest.headers.set(\n\t\t\t'x-bare-forward-headers',\n\t\t\tJSON.stringify(forwardHeaders)\n\t\t);\n\t}\n}\n","/*\n * JavaScript MD5\n * Adopted from https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/**\n * Add integers, wrapping at 2^32.\n * This uses 16-bit operations internally to work around bugs in interpreters.\n *\n * @param x First integer\n * @param y Second integer\n * @returns Sum\n */\nfunction safeAdd(x: number, y: number): number {\n\tconst lsw = (x & 0xffff) + (y & 0xffff);\n\tconst msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n\treturn (msw << 16) | (lsw & 0xffff);\n}\n\n/**\n * Bitwise rotate a 32-bit number to the left.\n *\n * @param num 32-bit number\n * @param cnt Rotation count\n * @returns Rotated number\n */\nfunction bitRotateLeft(num: number, cnt: number): number {\n\treturn (num << cnt) | (num >>> (32 - cnt));\n}\n\n/**\n * Basic operation the algorithm uses.\n *\n * @param q q\n * @param a a\n * @param b b\n * @param x x\n * @param s s\n * @param t t\n * @returns Result\n */\nfunction md5cmn(\n\tq: number,\n\ta: number,\n\tb: number,\n\tx: number,\n\ts: number,\n\tt: number\n): number {\n\treturn safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n/**\n * Basic operation the algorithm uses.\n *\n * @param a a\n * @param b b\n * @param c c\n * @param d d\n * @param x x\n * @param s s\n * @param t t\n * @returns Result\n */\nfunction md5ff(\n\ta: number,\n\tb: number,\n\tc: number,\n\td: number,\n\tx: number,\n\ts: number,\n\tt: number\n): number {\n\treturn md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\n/**\n * Basic operation the algorithm uses.\n *\n * @param a a\n * @param b b\n * @param c c\n * @param d d\n * @param x x\n * @param s s\n * @param t t\n * @returns Result\n */\nfunction md5gg(\n\ta: number,\n\tb: number,\n\tc: number,\n\td: number,\n\tx: number,\n\ts: number,\n\tt: number\n): number {\n\treturn md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\n/**\n * Basic operation the algorithm uses.\n *\n * @param a a\n * @param b b\n * @param c c\n * @param d d\n * @param x x\n * @param s s\n * @param t t\n * @returns Result\n */\nfunction md5hh(\n\ta: number,\n\tb: number,\n\tc: number,\n\td: number,\n\tx: number,\n\ts: number,\n\tt: number\n): number {\n\treturn md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n/**\n * Basic operation the algorithm uses.\n *\n * @param a a\n * @param b b\n * @param c c\n * @param d d\n * @param x x\n * @param s s\n * @param t t\n * @returns Result\n */\nfunction md5ii(\n\ta: number,\n\tb: number,\n\tc: number,\n\td: number,\n\tx: number,\n\ts: number,\n\tt: number\n): number {\n\treturn md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\n/**\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n *\n * @param x Array of little-endian words\n * @param len Bit length\n * @returns MD5 Array\n */\nfunction binlMD5(x: number[], len: number): number[] {\n\t/* append padding */\n\tx[len >> 5] |= 0x80 << len % 32;\n\tx[(((len + 64) >>> 9) << 4) + 14] = len;\n\n\tlet a = 1732584193;\n\tlet b = -271733879;\n\tlet c = -1732584194;\n\tlet d = 271733878;\n\n\tfor (let i = 0; i < x.length; i += 16) {\n\t\tconst olda = a;\n\t\tconst oldb = b;\n\t\tconst oldc = c;\n\t\tconst oldd = d;\n\n\t\ta = md5ff(a, b, c, d, x[i], 7, -680876936);\n\t\td = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n\t\tc = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n\t\tb = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n\t\ta = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n\t\td = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n\t\tc = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n\t\tb = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n\t\ta = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n\t\td = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n\t\tc = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n\t\tb = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n\t\ta = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n\t\td = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n\t\tc = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n\t\tb = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n\t\ta = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n\t\td = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n\t\tc = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n\t\tb = md5gg(b, c, d, a, x[i], 20, -373897302);\n\t\ta = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n\t\td = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n\t\tc = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n\t\tb = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n\t\ta = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n\t\td = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n\t\tc = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n\t\tb = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n\t\ta = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n\t\td = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n\t\tc = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n\t\tb = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n\t\ta = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n\t\td = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n\t\tc = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n\t\tb = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n\t\ta = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n\t\td = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n\t\tc = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n\t\tb = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n\t\ta = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n\t\td = md5hh(d, a, b, c, x[i], 11, -358537222);\n\t\tc = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n\t\tb = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n\t\ta = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n\t\td = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n\t\tc = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n\t\tb = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n\t\ta = md5ii(a, b, c, d, x[i], 6, -198630844);\n\t\td = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n\t\tc = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n\t\tb = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n\t\ta = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n\t\td = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n\t\tc = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n\t\tb = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n\t\ta = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n\t\td = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n\t\tc = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n\t\tb = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n\t\ta = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n\t\td = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n\t\tc = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n\t\tb = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n\t\ta = safeAdd(a, olda);\n\t\tb = safeAdd(b, oldb);\n\t\tc = safeAdd(c, oldc);\n\t\td = safeAdd(d, oldd);\n\t}\n\treturn [a, b, c, d];\n}\n\n/**\n * Convert an array of little-endian words to a string\n *\n * @param input MD5 Array\n * @returns MD5 string\n */\nfunction binl2rstr(input: number[]): string {\n\tlet output = '';\n\tconst length32 = input.length * 32;\n\tfor (let i = 0; i < length32; i += 8) {\n\t\toutput += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff);\n\t}\n\treturn output;\n}\n\n/**\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n *\n * @param input Raw input string\n * @returns Array of little-endian words\n */\nfunction rstr2binl(input: string): number[] {\n\tconst output: number[] = [];\n\tconst outputLen = input.length >> 2;\n\tfor (let i = 0; i < outputLen; i += 1) {\n\t\toutput[i] = 0;\n\t}\n\tconst length8 = input.length * 8;\n\tfor (let i = 0; i < length8; i += 8) {\n\t\toutput[i >> 5]! |= (input.charCodeAt(i / 8) & 0xff) << i % 32;\n\t}\n\treturn <number[]>output;\n}\n\n/**\n * Calculate the MD5 of a raw string\n *\n * @param s Input string\n * @returns Raw MD5 string\n */\nfunction rstrMD5(s: string): string {\n\treturn binl2rstr(binlMD5(rstr2binl(s), s.length * 8));\n}\n\n/**\n * Calculates the HMAC-MD5 of a key and some data (raw strings)\n *\n * @param key HMAC key\n * @param data Raw input string\n * @returns Raw MD5 string\n */\nfunction rstrHMACMD5(key: string, data: string): string {\n\tlet bkey = rstr2binl(key);\n\tconst ipad: number[] = [];\n\tconst opad: number[] = [];\n\tif (bkey.length > 16) {\n\t\tbkey = binlMD5(bkey, key.length * 8);\n\t}\n\tfor (let i = 0; i < 16; i += 1) {\n\t\tipad[i] = bkey[i] ^ 0x36363636;\n\t\topad[i] = bkey[i] ^ 0x5c5c5c5c;\n\t}\n\tconst hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n\treturn binl2rstr(binlMD5(opad.concat(hash), 512 + 128));\n}\n\n/**\n * Convert a raw string to a hex string\n *\n * @param input Raw input string\n * @returns Hex encoded string\n */\nfunction rstr2hex(input: string): string {\n\tconst hexTab = '0123456789abcdef';\n\tlet output = '';\n\tfor (let i = 0; i < input.length; i += 1) {\n\t\tconst x = input.charCodeAt(i);\n\t\toutput += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);\n\t}\n\treturn output;\n}\n\n/**\n * Encode a string as UTF-8\n *\n * @param input Input string\n * @returns UTF8 string\n */\nfunction str2rstrUTF8(input: string): string {\n\treturn unescape(encodeURIComponent(input));\n}\n\n/**\n * Encodes input string as raw MD5 string\n *\n * @param s Input string\n * @returns Raw MD5 string\n */\nfunction rawMD5(s: string): string {\n\treturn rstrMD5(str2rstrUTF8(s));\n}\n/**\n * Encodes input string as Hex encoded string\n *\n * @param s Input string\n * @returns Hex encoded string\n */\nfunction hexMD5(s: string): string {\n\treturn rstr2hex(rawMD5(s));\n}\n/**\n * Calculates the raw HMAC-MD5 for the given key and data\n *\n * @param k HMAC key\n * @param d Input string\n * @returns Raw MD5 string\n */\nfunction rawHMACMD5(k: string, d: string): string {\n\treturn rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));\n}\n/**\n * Calculates the Hex encoded HMAC-MD5 for the given key and data\n *\n * @param k HMAC key\n * @param d Input string\n * @returns Raw MD5 string\n */\nfunction hexHMACMD5(k: string, d: string): string {\n\treturn rstr2hex(rawHMACMD5(k, d));\n}\n\n/**\n * Calculates MD5 value for a given string.\n * If a key is provided, calculates the HMAC-MD5 value.\n * Returns a Hex encoded string unless the raw argument is given.\n *\n * @param string Input string\n * @param key HMAC key\n * @param raw Raw output switch\n * @returns MD5 output\n */\nexport default function md5(\n\tstring: string,\n\tkey?: string,\n\traw?: boolean\n): string {\n\tif (!key) {\n\t\tif (!raw) {\n\t\t\treturn hexMD5(string);\n\t\t}\n\t\treturn rawMD5(string);\n\t}\n\tif (!raw) {\n\t\treturn hexHMACMD5(key, string);\n\t}\n\treturn rawHMACMD5(key, string);\n}\n","import { BareError } from './Client';\n\nconst MAX_HEADER_VALUE = 3072;\n\n/**\n *\n * Splits headers according to spec\n * @param headers\n * @returns Split headers\n */\nexport function splitHeaders(headers: Headers): Headers {\n\tconst output = new Headers(headers);\n\n\tif (headers.has('x-bare-headers')) {\n\t\tconst value = headers.get('x-bare-headers')!;\n\n\t\tif (value.length > MAX_HEADER_VALUE) {\n\t\t\toutput.delete('x-bare-headers');\n\n\t\t\tlet split = 0;\n\n\t\t\tfor (let i = 0; i < value.length; i += MAX_HEADER_VALUE) {\n\t\t\t\tconst part = value.slice(i, i + MAX_HEADER_VALUE);\n\n\t\t\t\tconst id = split++;\n\t\t\t\toutput.set(`x-bare-headers-${id}`, `;${part}`);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output;\n}\n\n/**\n * Joins headers according to spec\n * @param headers\n * @returns Joined headers\n */\nexport function joinHeaders(headers: Headers): Headers {\n\tconst output = new Headers(headers);\n\n\tconst prefix = 'x-bare-headers';\n\n\tif (headers.has(`${prefix}-0`)) {\n\t\tconst join: string[] = [];\n\n\t\tfor (const [header, value] of headers) {\n\t\t\tif (!header.startsWith(prefix)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!value.startsWith(';')) {\n\t\t\t\tthrow new BareError(400, {\n\t\t\t\t\tcode: 'INVALID_BARE_HEADER',\n\t\t\t\t\tid: `request.headers.${header}`,\n\t\t\t\t\tmessage: `Value didn't begin with semi-colon.`,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst id = parseInt(header.slice(prefix.length + 1));\n\n\t\t\tjoin[id] = value.slice(1);\n\n\t\t\toutput.delete(header);\n\t\t}\n\n\t\toutput.set(prefix, join.join(''));\n\t}\n\n\treturn output;\n}\n","import type {\n\tBareBodyInit,\n\tBareCache,\n\tBareHeaders,\n\tBareHTTPProtocol,\n\tBareMethod,\n\tBareResponse,\n\tBareWebSocket,\n\tBareWSProtocol,\n\tXBare,\n} from './BareClient';\nimport type { GenericClient } from './Client';\nimport Client, { BareError, statusEmpty } from './Client';\nimport md5 from './md5';\nimport { joinHeaders, splitHeaders } from './splitHeaderUtil';\n\nexport default class ClientV2 extends Client implements GenericClient {\n\tws: URL;\n\thttp: URL;\n\tnewMeta: URL;\n\tgetMeta: URL;\n\tconstructor(server: URL) {\n\t\tsuper(2, server);\n\n\t\tthis.ws = new URL(this.base);\n\t\tthis.http = new URL(this.base);\n\t\tthis.newMeta = new URL('./ws-new-meta', this.base);\n\t\tthis.getMeta = new URL(`./ws-meta`, this.base);\n\n\t\tif (this.ws.protocol === 'https:') {\n\t\t\tthis.ws.protocol = 'wss:';\n\t\t} else {\n\t\t\tthis.ws.protocol = 'ws:';\n\t\t}\n\t}\n\tasync connect(\n\t\trequestHeaders: BareHeaders,\n\t\tprotocol: BareWSProtocol,\n\t\thost: string,\n\t\tport: string | number,\n\t\tpath: string\n\t): Promise<BareWebSocket> {\n\t\tconst request = new Request(this.newMeta, {\n\t\t\theaders: this.createBareHeaders(\n\t\t\t\tprotocol,\n\t\t\t\thost,\n\t\t\t\tpath,\n\t\t\t\tport,\n\t\t\t\trequestHeaders\n\t\t\t),\n\t\t});\n\n\t\tconst assign_meta = await fetch(request);\n\n\t\tif (!assign_meta.ok) {\n\t\t\tthrow new BareError(assign_meta.status, await assign_meta.json());\n\t\t}\n\n\t\tconst id = await assign_meta.text();\n\n\t\tconst socket: WebSocket & Partial<BareWebSocket> = new WebSocket(this.ws, [\n\t\t\tid,\n\t\t]);\n\n\t\tsocket.meta = new Promise<XBare>((resolve, reject) => {\n\t\t\tsocket.addEventListener('open', async () => {\n\t\t\t\tconst outgoing = await fetch(this.getMeta, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'x-bare-id': id,\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'GET',\n\t\t\t\t});\n\n\t\t\t\tresolve(await await this.readBareResponse(outgoing));\n\t\t\t});\n\n\t\t\tsocket.addEventListener('error', reject);\n\t\t});\n\n\t\treturn <BareWebSocket>socket;\n\t}\n\tasync request(\n\t\tmethod: BareMethod,\n\t\trequestHeaders: BareHeaders,\n\t\tbody: BareBodyInit,\n\t\tprotocol: BareHTTPProtocol,\n\t\thost: string,\n\t\tport: string | number,\n\t\tpath: string,\n\t\tcache: BareCache | undefined,\n\t\tsignal: AbortSignal | undefined\n\t): Promise<BareResponse> {\n\t\tif (protocol.startsWith('blob:')) {\n\t\t\tconst response = await fetch(`blob:${location.origin}${path}`);\n\t\t\tconst result: Response & Partial<BareResponse> = new Response(\n\t\t\t\tresponse.body,\n\t\t\t\tresponse\n\t\t\t);\n\n\t\t\tresult.rawHeaders = Object.fromEntries(response.headers);\n\t\t\tresult.rawResponse = response;\n\n\t\t\treturn <BareResponse>result;\n\t\t}\n\n\t\tconst bareHeaders: BareHeaders = {};\n\n\t\tif (requestHeaders instanceof Headers) {\n\t\t\tfor (const [header, value] of requestHeaders) {\n\t\t\t\tbareHeaders[header] = value;\n\t\t\t}\n\t\t} else {\n\t\t\tfor (const header in requestHeaders) {\n\t\t\t\tbareHeaders[header] = requestHeaders[header];\n\t\t\t}\n\t\t}\n\n\t\tconst options: RequestInit = {\n\t\t\tcredentials: 'omit',\n\t\t\tmethod: method,\n\t\t\tsignal,\n\t\t};\n\n\t\tif (cache !== 'only-if-cached') {\n\t\t\toptions.cache = <RequestCache>cache;\n\t\t}\n\n\t\tif (body !== undefined) {\n\t\t\toptions.body = body;\n\t\t}\n\n\t\toptions.headers = this.createBareHeaders(\n\t\t\tprotocol,\n\t\t\thost,\n\t\t\tpath,\n\t\t\tport,\n\t\t\tbareHeaders\n\t\t);\n\n\t\tconst request = new Request(\n\t\t\tthis.http + '?cache=' + md5(`${protocol}${host}${port}${path}`),\n\t\t\toptions\n\t\t);\n\n\t\tconst response = await fetch(request);\n\n\t\tconst readResponse = await this.readBareResponse(response);\n\n\t\tconst result: Response & Partial<BareResponse> = new Response(\n\t\t\tstatusEmpty.includes(readResponse.status!) ? undefined : response.body,\n\t\t\t{\n\t\t\t\tstatus: readResponse.status!,\n\t\t\t\tstatusText: readResponse.statusText ?? undefined,\n\t\t\t\theaders: readResponse.headers!,\n\t\t\t}\n\t\t);\n\n\t\tresult.rawHeaders = readResponse.rawHeaders;\n\t\tresult.rawResponse = response;\n\n\t\treturn <BareResponse>result;\n\t}\n\tprivate async readBareResponse(response: Response): Promise<XBare> {\n\t\tif (!response.ok) {\n\t\t\tthrow new BareError(response.status, await response.json());\n\t\t}\n\n\t\tconst responseHeaders = joinHeaders(response.headers);\n\n\t\tconst result: XBare = {};\n\n\t\tif (responseHeaders.has('x-bare-status')) {\n\t\t\tresult.status = parseInt(responseHeaders.get('x-bare-status')!);\n\t\t}\n\n\t\tif (responseHeaders.has('x-bare-status-text')) {\n\t\t\tresult.statusText = responseHeaders.get('x-bare-status-text')!;\n\t\t}\n\n\t\tif (responseHeaders.has('x-bare-headers')) {\n\t\t\tresult.rawHeaders = JSON.parse(responseHeaders.get('x-bare-headers')!);\n\t\t\tresult.headers = new Headers(<HeadersInit>result.rawHeaders);\n\t\t}\n\n\t\treturn result;\n\t}\n\tcreateBareHeaders(\n\t\tprotocol: BareWSProtocol | BareHTTPProtocol,\n\t\thost: string,\n\t\tpath: string,\n\t\tport: number | string,\n\t\tbareHeaders: BareHeaders,\n\t\tforwardHeaders: string[] = [],\n\t\tpassHeaders: string[] = [],\n\t\tpassStatus: number[] = []\n\t) {\n\t\tconst headers = new Headers();\n\n\t\theaders.set('x-bare-protocol', protocol);\n\t\theaders.set('x-bare-host', host);\n\t\theaders.set('x-bare-path', path);\n\t\theaders.set('x-bare-port', port.toString());\n\t\theaders.set('x-bare-headers', JSON.stringify(bareHeaders));\n\n\t\tfor (const header of forwardHeaders) {\n\t\t\theaders.append('x-bare-forward-headers', header);\n\t\t}\n\n\t\tfor (const header of passHeaders) {\n\t\t\theaders.append('x-bare-pass-headers', header);\n\t\t}\n\n\t\tfor (const status of passStatus) {\n\t\t\theaders.append('x-bare-pass-status', status.toString());\n\t\t}\n\n\t\tsplitHeaders(headers);\n\n\t\treturn headers;\n\t}\n}\n","import type { GenericClient } from './Client';\nimport { statusRedirect } from './Client';\nimport ClientV1 from './V1';\nimport ClientV2 from './V2';\nimport { validProtocol } from './encodeProtocol';\n\n// Implements the protocol for requesting bare data from a server\n// See ../Server/Send.mjs\n\nexport * from './Client';\n\nconst clientCtors: [string, { new (server: URL): GenericClient }][] = [\n\t['v2', ClientV2],\n\t['v1', ClientV1],\n];\n\nexport type BareMethod =\n\t| 'GET'\n\t| 'POST'\n\t| 'DELETE'\n\t| 'OPTIONS'\n\t| 'PUT'\n\t| 'PATCH'\n\t| 'UPDATE'\n\t| string;\n\nexport type BareCache =\n\t| 'default'\n\t| 'no-store'\n\t| 'reload'\n\t| 'no-cache'\n\t| 'force-cache'\n\t| 'only-if-cached'\n\t| string;\n\nexport interface XBare {\n\tstatus?: number;\n\tstatusText?: string;\n\theaders?: Headers;\n\trawHeaders?: BareHeaders;\n}\n\nexport type BareHTTPProtocol = 'blob:' | 'http:' | 'https:' | string;\nexport type BareWSProtocol = 'ws:' | 'wss:' | string;\n\nexport type urlLike = URL | string;\n\nexport const maxRedirects = 20;\n\nexport type BareHeaders = { [key: string]: string | string[] };\n\n/**\n * WebSocket with an additional property.\n */\nexport type BareWebSocket = WebSocket & { meta: Promise<XBare> };\n\n/**\n * A Response with additional properties.\n */\nexport type BareResponse = Response & {\n\trawResponse: Response;\n\trawHeaders: BareHeaders;\n};\n\n/**\n * A BareResponse with additional properties.\n */\nexport type BareResponseFetch = BareResponse & { finalURL: string };\nexport type BareBodyInit =\n\t| Blob\n\t| BufferSource\n\t| FormData\n\t| URLSearchParams\n\t| ReadableStream\n\t| undefined\n\t| null;\n\nexport type BareFetchInit = {\n\tmethod?: BareMethod;\n\theaders?: Headers | BareHeaders;\n\tbody?: BareBodyInit;\n\tcache?: BareCache;\n\tredirect?: 'follow' | 'manual' | 'error' | string;\n\tsignal?: AbortSignal;\n};\n\nexport type BareMaintainer = {\n\temail?: string;\n\twebsite?: string;\n};\n\nexport type BareProject = {\n\tname?: string;\n\tdescription?: string;\n\temail?: string;\n\twebsite?: string;\n\trepository?: string;\n\tversion?: string;\n};\n\nexport type BareLanguage =\n\t| 'NodeJS'\n\t| 'ServiceWorker'\n\t| 'Deno'\n\t| 'Java'\n\t| 'PHP'\n\t| 'Rust'\n\t| 'C'\n\t| 'C++'\n\t| 'C#'\n\t| 'Ruby'\n\t| 'Go'\n\t| 'Crystal'\n\t| 'Shell'\n\t| string;\n\nexport type BareManifest = {\n\tmaintainer?: BareMaintainer;\n\tproject?: BareProject;\n\tversions: string[];\n\tlanguage: BareLanguage;\n\tmemoryUsage?: number;\n};\n\nasync function fetchManifest(\n\tserver: string | URL,\n\tsignal?: AbortSignal\n): Promise<BareManifest> {\n\tconst outgoing = await fetch(server, { signal });\n\n\tif (!outgoing.ok) {\n\t\tthrow new Error(\n\t\t\t`Unable to fetch Bare meta: ${outgoing.status} ${await outgoing.text()}`\n\t\t);\n\t}\n\n\treturn await outgoing.json();\n}\n\nexport default class BareClient {\n\t/**\n\t * @depricated Use .manifest instead.\n\t */\n\tget data(): BareClient['manfiest'] {\n\t\treturn this.manfiest;\n\t}\n\tmanfiest?: BareManifest;\n\tprivate client?: GenericClient;\n\tprivate server: URL;\n\tprivate working?: Promise<void>;\n\tprivate onDemand: boolean;\n\tprivate onDemandSignal?: AbortSignal;\n\t/**\n\t * Lazily create a BareClient. Calls to fetch and connect will request the manifest once on-demand.\n\t * @param server A full URL to the bare server.\n\t * @param signal An abort signal for fetching the manifest on demand.\n\t */\n\tconstructor(server: string | URL, signal?: AbortSignal);\n\t/**\n\t * Immediately create a BareClient.\n\t * @param server A full URL to the bare server.\n\t * @param manfiest A Bare server manifest.\n\t */\n\tconstructor(server: string | URL, manfiest: BareManifest);\n\tconstructor(server: string | URL, _?: BareManifest | AbortSignal) {\n\t\tthis.server = new URL(server);\n\n\t\tif (!_ || _ instanceof AbortSignal) {\n\t\t\tthis.onDemand = true;\n\t\t\tthis.onDemandSignal = _;\n\t\t} else {\n\t\t\tthis.onDemand = false;\n\t\t\tthis.manfiest = _;\n\t\t\tthis.getClient();\n\t\t}\n\t}\n\tprivate demand() {\n\t\tif (!this.onDemand) return;\n\n\t\tif (!this.working)\n\t\t\tthis.working = fetchManifest(this.server, this.onDemandSignal).then(\n\t\t\t\t(manfiest) => {\n\t\t\t\t\tthis.manfiest = manfiest;\n\t\t\t\t\tthis.getClient();\n\t\t\t\t}\n\t\t\t);\n\n\t\treturn this.working;\n\t}\n\tprivate getClient() {\n\t\t// newest-oldest\n\t\tfor (const [version, ctor] of clientCtors) {\n\t\t\tif (this.data!.versions.includes(version)) {\n\t\t\t\tthis.client = new ctor(this.server);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(`Unable to find compatible client version.`);\n\t}\n\tasync request(\n\t\tmethod: BareMethod,\n\t\trequestHeaders: BareHeaders,\n\t\tbody: BareBodyInit,\n\t\tprotocol: BareHTTPProtocol,\n\t\thost: string,\n\t\tport: string | number,\n\t\tpath: string,\n\t\tcache: BareCache | undefined,\n\t\tsignal: AbortSignal | undefined\n\t): Promise<BareResponse> {\n\t\tawait this.demand();\n\n\t\treturn await this.client!.request(\n\t\t\tmethod,\n\t\t\trequestHeaders,\n\t\t\tbody,\n\t\t\tprotocol,\n\t\t\thost,\n\t\t\tport,\n\t\t\tpath,\n\t\t\tcache,\n\t\t\tsignal\n\t\t);\n\t}\n\tasync connect(\n\t\trequestHeaders: BareHeaders,\n\t\tprotocol: BareWSProtocol,\n\t\thost: string,\n\t\tport: string | number,\n\t\tpath: string\n\t): Promise<BareWebSocket> {\n\t\tawait this.demand();\n\n\t\treturn this.client!.connect(requestHeaders, protocol, host, port, path);\n\t}\n\t/**\n\t *\n\t * @param url\n\t * @param headers\n\t * @param protocols\n\t * @returns\n\t */\n\tcreateWebSocket(\n\t\turl: urlLike,\n\t\theaders: BareHeaders = {},\n\t\tprotocols: string | string[] = []\n\t): Promise<BareWebSocket> {\n\t\tconst requestHeaders: BareHeaders =\n\t\t\theaders instanceof Headers ? Object.fromEntries(headers) : headers;\n\n\t\turl = new URL(url);\n\n\t\t// user is expected to specify user-agent and origin\n\t\t// both are in spec\n\n\t\trequestHeaders['Host'] = url.host;\n\t\t// requestHeaders['Origin'] = origin;\n\t\trequestHeaders['Pragma'] = 'no-cache';\n\t\trequestHeaders['Cache-Control'] = 'no-cache';\n\t\trequestHeaders['Upgrade'] = 'websocket';\n\t\t// requestHeaders['User-Agent'] = navigator.userAgent;\n\t\trequestHeaders['Connection'] = 'Upgrade';\n\n\t\tif (typeof protocols === 'string') {\n\t\t\tprotocols = [protocols];\n\t\t}\n\n\t\tfor (const proto of protocols) {\n\t\t\tif (!validProtocol(proto)) {\n\t\t\t\tthrow new DOMException(\n\t\t\t\t\t`Failed to construct 'WebSocket': The subprotocol '${proto}' is invalid.`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (protocols.length) {\n\t\t\theaders['Sec-Websocket-Protocol'] = protocols.join(', ');\n\t\t}\n\n\t\treturn this.connect(\n\t\t\theaders,\n\t\t\turl.protocol,\n\t\t\turl.hostname,\n\t\t\turl.port,\n\t\t\turl.pathname + url.search\n\t\t);\n\t}\n\tasync fetch(\n\t\turl: urlLike | Request,\n\t\tinit: BareFetchInit = {}\n\t): Promise<BareResponseFetch> {\n\t\tif (url instanceof Request) {\n\t\t\t// behave similar to the browser when fetch is called with (Request, Init)\n\t\t\tif (init) {\n\t\t\t\turl = new URL(url.url);\n\t\t\t} else {\n\t\t\t\tinit = url;\n\t\t\t\turl = new URL(url.url);\n\t\t\t}\n\t\t} else {\n\t\t\turl = new URL(url);\n\t\t}\n\n\t\tlet method: BareMethod;\n\n\t\tif (typeof init.method === 'string') {\n\t\t\tmethod = init.method;\n\t\t} else {\n\t\t\tmethod = 'GET';\n\t\t}\n\n\t\tlet body: BareBodyInit;\n\n\t\tif (init.body !== undefined && init.body !== null) {\n\t\t\tbody = init.body;\n\t\t}\n\n\t\tlet headers: BareHeaders;\n\n\t\tif (typeof init.headers === 'object' && init.headers !== null) {\n\t\t\tif (init.headers instanceof Headers) {\n\t\t\t\theaders = Object.fromEntries(init.headers);\n\t\t\t} else {\n\t\t\t\theaders = init.headers;\n\t\t\t}\n\t\t} else {\n\t\t\theaders = {};\n\t\t}\n\n\t\tlet cache: BareCache;\n\n\t\tif (typeof init.cache === 'string') {\n\t\t\tcache = init.cache;\n\t\t} else {\n\t\t\tcache = 'default';\n\t\t}\n\n\t\tlet signal: AbortSignal | undefined;\n\n\t\tif (init.signal instanceof AbortSignal) {\n\t\t\tsignal = init.signal;\n\t\t}\n\n\t\tfor (let i = 0; ; i++) {\n\t\t\tlet port;\n\n\t\t\tif (url.port === '') {\n\t\t\t\tif (url.protocol === 'https:') {\n\t\t\t\t\tport = '443';\n\t\t\t\t} else {\n\t\t\t\t\tport = '80';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tport = url.port;\n\t\t\t}\n\n\t\t\theaders.host = url.host;\n\n\t\t\tconst response: BareResponse & Partial<BareResponseFetch> =\n\t\t\t\tawait this.request(\n\t\t\t\t\tmethod,\n\t\t\t\t\theaders,\n\t\t\t\t\tbody,\n\t\t\t\t\turl.protocol,\n\t\t\t\t\turl.hostname,\n\t\t\t\t\tport,\n\t\t\t\t\turl.pathname + url.search,\n\t\t\t\t\tcache,\n\t\t\t\t\tsignal\n\t\t\t\t);\n\n\t\t\tresponse.finalURL = url.toString();\n\n\t\t\tif (statusRedirect.includes(response.status)) {\n\t\t\t\tswitch (init.redirect) {\n\t\t\t\t\tdefault:\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\tif (maxRedirects > i && response.headers.has('location')) {\n\t\t\t\t\t\t\turl = new URL(response.headers.get('location')!, url);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow new TypeError('Failed to fetch');\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\tthrow new TypeError('Failed to fetch');\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\treturn <BareResponseFetch>response;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn <BareResponseFetch>response;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n *\n * Facilitates fetching the Bare server and constructing a BareClient.\n * @param server Bare server\n * @param signal Abort signal when fetching the manifest\n */\nexport async function createBareClient(\n\tserver: string | URL,\n\tsignal?: AbortSignal\n): Promise<BareClient> {\n\tconst manfiest = await fetchManifest(server, signal);\n\n\treturn new BareClient(server, manfiest);\n}\n"],"names":[],"mappings":"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"}