{"version":3,"file":"index.mjs","sources":["../src/snapshot.ts","../src/Client.ts","../src/BareTypes.ts","../src/md5.ts","../src/splitHeaderUtil.ts","../src/V3.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\nexport const WebSocketFields = {\n\tprototype: {\n\t\tsend: WebSocket.prototype.send,\n\t},\n\tCLOSED: WebSocket.CLOSED,\n\tCLOSING: WebSocket.CLOSING,\n\tCONNECTING: WebSocket.CONNECTING,\n\tOPEN: WebSocket.OPEN,\n};\n","export abstract 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","export 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 BareWebSocketMeta {\n\tprotocol: string;\n\tsetCookies: string[];\n}\n\nexport type BareHTTPProtocol = \"blob:\" | \"http:\" | \"https:\" | string;\nexport type BareWSProtocol = \"ws:\" | \"wss:\" | string;\n\nexport const maxRedirects = 20;\n\nexport interface BareMaintainer {\n\temail?: string;\n\twebsite?: string;\n}\n\nexport interface 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 interface BareManifest {\n\tmaintainer?: BareMaintainer;\n\tproject?: BareProject;\n\tversions: string[];\n\tlanguage: BareLanguage;\n\tmemoryUsage?: number;\n}\n\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 * 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\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\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\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\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\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\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\n\t\treturn rawMD5(string);\n\t}\n\tif (!raw) {\n\t\treturn hexHMACMD5(key, string);\n\t}\n\n\treturn rawHMACMD5(key, string);\n}\n","import { BareError } from \"./BareTypes\";\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 { Client } from \"./Client\";\nimport { BareError } from \"./BareTypes\";\nimport type {\n\tBareResponseHeaders,\n\tSocketClientToServer,\n\tSocketServerToClient,\n} from \"./V3Types.js\";\nimport md5 from \"./md5.js\";\nimport { WebSocketFields } from \"./snapshot.js\";\nimport { joinHeaders, splitHeaders } from \"./splitHeaderUtil.js\";\nimport type {\n\tProxyTransport,\n\tRawHeaders,\n\tTransferrableResponse,\n} from \"@mercuryworkshop/proxy-transports\";\n\nexport default class ClientV3 extends Client implements ProxyTransport {\n\tws: URL;\n\thttp: URL;\n\tready = true;\n\n\tconstructor(server: URL) {\n\t\tsuper(3, server);\n\n\t\tthis.ws = new URL(this.base);\n\t\tthis.http = new URL(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\n\tasync init() {\n\t\tthis.ready = true;\n\t}\n\tconnect(\n\t\turl: URL,\n\t\tprotocols: string[],\n\t\trequestHeaders: RawHeaders = [],\n\t\tonopen: (protocol: string, extensions: string) => void,\n\t\tonmessage: (data: Blob | ArrayBuffer | string) => void,\n\t\tonclose: (code: number, reason: string) => void,\n\t\tonerror: (error: string) => void\n\t): [\n\t\t(data: Blob | ArrayBuffer | string) => void,\n\t\t(code: number, reason: string) => void,\n\t] {\n\t\tconst ws = new WebSocket(this.ws);\n\t\trequestHeaders.push([\"Host\", url.host])\n\t\trequestHeaders.push([\"Upgrade\", \"websocket\"])\n\t\trequestHeaders.push([\"Connection\", \"Upgrade\"])\n\n\t\tconst cleanup = () => {\n\t\t\tws.removeEventListener(\"close\", closeListener);\n\t\t\tws.removeEventListener(\"message\", messageListener);\n\t\t};\n\n\t\tconst messageListener = (event: MessageEvent) => {\n\t\t\tcleanup();\n\n\t\t\t// ws.binaryType is irrelevant when sending text\n\t\t\tif (typeof event.data !== \"string\")\n\t\t\t\tthrow new TypeError(\"the first websocket message was not a text frame\");\n\n\t\t\tconst message = JSON.parse(event.data) as SocketServerToClient;\n\n\t\t\t// finally\n\t\t\tif (message.type !== \"open\")\n\t\t\t\tthrow new TypeError(\"message was not of open type\");\n\n\n\t\t\tonopen(message.protocol, \"\");\n\n\t\t\tws.addEventListener(\"message\", (ev) => {\n\t\t\t\tonmessage(ev.data);\n\t\t\t});\n\n\t\t\tws.addEventListener(\"close\", (ev) => {\n\t\t\t\tonclose(ev.code, ev.reason);\n\t\t\t});\n\t\t};\n\n\t\tconst closeListener = (event: CloseEvent) => {\n\t\t\tonclose(event.code, event.reason);\n\t\t\tcleanup();\n\t\t};\n\n\t\tws.addEventListener(\"message\", messageListener);\n\t\tws.addEventListener(\"close\", closeListener);\n\n\t\t// CONNECTED TO THE BARE SERVER, NOT THE REMOTE\n\t\tws.addEventListener(\n\t\t\t\"open\",\n\t\t\t(event) => {\n\t\t\t\tWebSocketFields.prototype.send.call(\n\t\t\t\t\tws,\n\t\t\t\t\tJSON.stringify({\n\t\t\t\t\t\ttype: \"connect\",\n\t\t\t\t\t\tremote: url.toString(),\n\t\t\t\t\t\tprotocols,\n\t\t\t\t\t\theaders: Object.fromEntries(requestHeaders),\n\t\t\t\t\t\tforwardHeaders: [],\n\t\t\t\t\t} as unknown as SocketClientToServer)\n\t\t\t\t);\n\t\t\t},\n\t\t\t// only block the open event once\n\t\t\t{ once: true }\n\t\t);\n\n\t\treturn [ws.send.bind(ws), ws.close.bind(ws)];\n\t}\n\n\tasync request(\n\t\tremote: URL,\n\t\tmethod: string,\n\t\tbody: BodyInit | null,\n\t\theaders: RawHeaders,\n\t\tsignal: AbortSignal | undefined\n\t): Promise<TransferrableResponse> {\n\t\tconst options: RequestInit = {\n\t\t\tcredentials: \"omit\",\n\t\t\tmethod: method,\n\t\t\tsignal,\n\t\t\t//@ts-expect-error this exists but isnt typed ig\n\t\t\tduplex: \"half\",\n\t\t};\n\n\t\tif (body !== undefined) {\n\t\t\toptions.body = body;\n\t\t}\n\t\t\n\t\theaders.push([\"Host\", remote.host])\n\t\toptions.headers = this.createBareHeaders(remote, headers);\n\n\t\tconst response = await fetch(\n\t\t\tthis.http + \"?cache=\" + md5(remote.toString()),\n\t\t\toptions\n\t\t);\n\n\t\tconst readResponse = await this.readBareResponse(response);\n\n\t\treturn {\n\t\t\tbody: response.body!,\n\t\t\theaders: readResponse.headers,\n\t\t\tstatus: readResponse.status,\n\t\t\tstatusText: readResponse.statusText,\n\t\t};\n\t}\n\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 responseHeaders = joinHeaders(response.headers);\n\n\t\tconst result: Partial<BareResponseHeaders> = {};\n\n\t\tconst xBareStatus = responseHeaders.get(\"x-bare-status\");\n\t\tif (xBareStatus !== null) result.status = parseInt(xBareStatus);\n\n\t\tconst xBareStatusText = responseHeaders.get(\"x-bare-status-text\");\n\t\tif (xBareStatusText !== null) result.statusText = xBareStatusText;\n\n\t\tconst xBareHeaders = responseHeaders.get(\"x-bare-headers\");\n\t\tif (xBareHeaders !== null) result.headers = Object.entries(JSON.parse(xBareHeaders));\n\n\t\treturn result as BareResponseHeaders;\n\t}\n\tcreateBareHeaders(\n\t\tremote: URL,\n\t\tbareHeaders: RawHeaders,\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-url\", remote.toString());\n\t\theaders.set(\"x-bare-headers\", JSON.stringify(Object.fromEntries(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"],"names":[],"mappings":"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"}