- Add GETTING_STARTED.md with quick start guide and development modes - Add INSTALL.sh automated installation script - Add INSTALLATION_CHECKLIST.md, INSTALLATION_SUCCESS.md, and INSTALLATION_SUMMARY.md - Add QUICK_REFERENCE.md for common commands - Add SETUP_GUIDE.md with detailed setup instructions - Update README.md with improved project overview - Add did-wallet app dependencies and node_modules
8 lines
779 KiB
Plaintext
8 lines
779 KiB
Plaintext
{
|
|
"version": 3,
|
|
"sources": ["../../../node_modules/.pnpm/@isaacs+ttlcache@1.4.1/node_modules/@isaacs/ttlcache/index.js", "../../../node_modules/.pnpm/level-supports@4.0.1/node_modules/level-supports/index.js", "../../../node_modules/.pnpm/module-error@1.0.2/node_modules/module-error/index.js", "../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js", "../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js", "../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js", "../../../node_modules/.pnpm/level-transcoder@1.0.1/node_modules/level-transcoder/lib/text-endec.js", "../../../node_modules/.pnpm/level-transcoder@1.0.1/node_modules/level-transcoder/lib/encoding.js", "../../../node_modules/.pnpm/level-transcoder@1.0.1/node_modules/level-transcoder/lib/formats.js", "../../../node_modules/.pnpm/level-transcoder@1.0.1/node_modules/level-transcoder/lib/encodings.js", "../../../node_modules/.pnpm/level-transcoder@1.0.1/node_modules/level-transcoder/index.js", "../../../node_modules/.pnpm/events@3.3.0/node_modules/events/events.js", "../../../node_modules/.pnpm/catering@2.1.1/node_modules/catering/next-tick-browser.js", "../../../node_modules/.pnpm/catering@2.1.1/node_modules/catering/index.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/lib/common.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/abstract-iterator.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/lib/default-kv-iterator.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/lib/deferred-iterator.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/abstract-chained-batch.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/lib/default-chained-batch.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/lib/range-options.js", "../../../node_modules/.pnpm/queue-microtask@1.2.3/node_modules/queue-microtask/index.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/lib/next-tick-browser.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/lib/abstract-sublevel-iterator.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/lib/abstract-sublevel.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/abstract-level.js", "../../../node_modules/.pnpm/abstract-level@1.0.4/node_modules/abstract-level/index.js", "../../../node_modules/.pnpm/run-parallel-limit@1.1.0/node_modules/run-parallel-limit/index.js", "../../../node_modules/.pnpm/browser-level@1.0.1/node_modules/browser-level/util/key-range.js", "../../../node_modules/.pnpm/browser-level@1.0.1/node_modules/browser-level/util/deserialize.js", "../../../node_modules/.pnpm/browser-level@1.0.1/node_modules/browser-level/iterator.js", "../../../node_modules/.pnpm/browser-level@1.0.1/node_modules/browser-level/util/clear.js", "../../../node_modules/.pnpm/browser-level@1.0.1/node_modules/browser-level/index.js", "../../../node_modules/.pnpm/level@8.0.0/node_modules/level/browser.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/ours/primordials.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/ours/util.js", "../../../node_modules/.pnpm/abort-controller@3.0.0/node_modules/abort-controller/browser.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/ours/errors.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/validators.js", "../../../node_modules/.pnpm/process@0.11.10/node_modules/process/browser.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/utils.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/legacy.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js", "../../../node_modules/.pnpm/string_decoder@1.3.0/node_modules/string_decoder/lib/string_decoder.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/from.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/readable.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/writable.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/duplexify.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/duplex.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/transform.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/passthrough.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/compose.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/internal/streams/operators.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/stream/promises.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/stream.js", "../../../node_modules/.pnpm/readable-stream@4.4.2/node_modules/readable-stream/lib/ours/browser.js", "../src/cache.ts", "../../../node_modules/.pnpm/multiformats@11.0.2/node_modules/multiformats/vendor/base-x.js", "../../../node_modules/.pnpm/multiformats@11.0.2/node_modules/multiformats/src/bytes.js", "../../../node_modules/.pnpm/multiformats@11.0.2/node_modules/multiformats/src/bases/base.js", "../../../node_modules/.pnpm/multiformats@11.0.2/node_modules/multiformats/src/bases/base32.js", "../../../node_modules/.pnpm/multiformats@11.0.2/node_modules/multiformats/src/bases/base58.js", "../../../node_modules/.pnpm/multiformats@11.0.2/node_modules/multiformats/src/bases/base64.js", "../src/type-utils.ts", "../src/convert.ts", "../../../node_modules/.pnpm/multiformats@11.0.2/node_modules/multiformats/src/varint.js", "../../../node_modules/.pnpm/multiformats@11.0.2/node_modules/multiformats/vendor/varint.js", "../../../node_modules/.pnpm/multiformats@11.0.2/node_modules/multiformats/src/hashes/digest.js", "../../../node_modules/.pnpm/multiformats@11.0.2/node_modules/multiformats/src/cid.js", "../src/multicodec.ts", "../src/object.ts", "../src/stores.ts", "../src/stream.ts", "../src/stream-node.ts"],
|
|
"sourcesContent": ["// A simple TTL cache with max capacity option, ms resolution,\n// autopurge, and reasonably optimized performance\n// Relies on the fact that integer Object keys are kept sorted,\n// and managed very efficiently by V8.\n\n/* istanbul ignore next */\nconst perf =\n typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date\n\nconst now = () => perf.now()\nconst isPosInt = n => n && n === Math.floor(n) && n > 0 && isFinite(n)\nconst isPosIntOrInf = n => n === Infinity || isPosInt(n)\n\nclass TTLCache {\n constructor({\n max = Infinity,\n ttl,\n updateAgeOnGet = false,\n checkAgeOnGet = false,\n noUpdateTTL = false,\n dispose,\n noDisposeOnSet = false,\n } = {}) {\n // {[expirationTime]: [keys]}\n this.expirations = Object.create(null)\n // {key=>val}\n this.data = new Map()\n // {key=>expiration}\n this.expirationMap = new Map()\n if (ttl !== undefined && !isPosIntOrInf(ttl)) {\n throw new TypeError(\n 'ttl must be positive integer or Infinity if set'\n )\n }\n if (!isPosIntOrInf(max)) {\n throw new TypeError('max must be positive integer or Infinity')\n }\n this.ttl = ttl\n this.max = max\n this.updateAgeOnGet = !!updateAgeOnGet\n this.checkAgeOnGet = !!checkAgeOnGet\n this.noUpdateTTL = !!noUpdateTTL\n this.noDisposeOnSet = !!noDisposeOnSet\n if (dispose !== undefined) {\n if (typeof dispose !== 'function') {\n throw new TypeError('dispose must be function if set')\n }\n this.dispose = dispose\n }\n\n this.timer = undefined\n this.timerExpiration = undefined\n }\n\n setTimer(expiration, ttl) {\n if (this.timerExpiration < expiration) {\n return\n }\n\n if (this.timer) {\n clearTimeout(this.timer)\n }\n\n const t = setTimeout(() => {\n this.timer = undefined\n this.timerExpiration = undefined\n this.purgeStale()\n for (const exp in this.expirations) {\n this.setTimer(exp, exp - now())\n break\n }\n }, ttl)\n\n /* istanbul ignore else - affordance for non-node envs */\n if (t.unref) t.unref()\n\n this.timerExpiration = expiration\n this.timer = t\n }\n\n // hang onto the timer so we can clearTimeout if all items\n // are deleted. Deno doesn't have Timer.unref(), so it\n // hangs otherwise.\n cancelTimer() {\n if (this.timer) {\n clearTimeout(this.timer)\n this.timerExpiration = undefined\n this.timer = undefined\n }\n }\n\n /* istanbul ignore next */\n cancelTimers() {\n process.emitWarning(\n 'TTLCache.cancelTimers has been renamed to ' +\n 'TTLCache.cancelTimer (no \"s\"), and will be removed in the next ' +\n 'major version update'\n )\n return this.cancelTimer()\n }\n\n clear() {\n const entries =\n this.dispose !== TTLCache.prototype.dispose ? [...this] : []\n this.data.clear()\n this.expirationMap.clear()\n // no need for any purging now\n this.cancelTimer()\n this.expirations = Object.create(null)\n for (const [key, val] of entries) {\n this.dispose(val, key, 'delete')\n }\n }\n\n setTTL(key, ttl = this.ttl) {\n const current = this.expirationMap.get(key)\n if (current !== undefined) {\n // remove from the expirations list, so it isn't purged\n const exp = this.expirations[current]\n if (!exp || exp.length <= 1) {\n delete this.expirations[current]\n } else {\n this.expirations[current] = exp.filter(k => k !== key)\n }\n }\n\n if (ttl !== Infinity) {\n const expiration = Math.floor(now() + ttl)\n this.expirationMap.set(key, expiration)\n if (!this.expirations[expiration]) {\n this.expirations[expiration] = []\n this.setTimer(expiration, ttl)\n }\n this.expirations[expiration].push(key)\n } else {\n this.expirationMap.set(key, Infinity)\n }\n }\n\n set(\n key,\n val,\n {\n ttl = this.ttl,\n noUpdateTTL = this.noUpdateTTL,\n noDisposeOnSet = this.noDisposeOnSet,\n } = {}\n ) {\n if (!isPosIntOrInf(ttl)) {\n throw new TypeError('ttl must be positive integer or Infinity')\n }\n if (this.expirationMap.has(key)) {\n if (!noUpdateTTL) {\n this.setTTL(key, ttl)\n }\n // has old value\n const oldValue = this.data.get(key)\n if (oldValue !== val) {\n this.data.set(key, val)\n if (!noDisposeOnSet) {\n this.dispose(oldValue, key, 'set')\n }\n }\n } else {\n this.setTTL(key, ttl)\n this.data.set(key, val)\n }\n\n while (this.size > this.max) {\n this.purgeToCapacity()\n }\n\n return this\n }\n\n has(key) {\n return this.data.has(key)\n }\n\n getRemainingTTL(key) {\n const expiration = this.expirationMap.get(key)\n return expiration === Infinity\n ? expiration\n : expiration !== undefined\n ? Math.max(0, Math.ceil(expiration - now()))\n : 0\n }\n\n get(\n key,\n {\n updateAgeOnGet = this.updateAgeOnGet,\n ttl = this.ttl,\n checkAgeOnGet = this.checkAgeOnGet,\n } = {}\n ) {\n const val = this.data.get(key)\n if (checkAgeOnGet && this.getRemainingTTL(key) === 0) {\n this.delete(key)\n return undefined\n }\n if (updateAgeOnGet) {\n this.setTTL(key, ttl)\n }\n return val\n }\n\n dispose(_, __) {}\n\n delete(key) {\n const current = this.expirationMap.get(key)\n if (current !== undefined) {\n const value = this.data.get(key)\n this.data.delete(key)\n this.expirationMap.delete(key)\n const exp = this.expirations[current]\n if (exp) {\n if (exp.length <= 1) {\n delete this.expirations[current]\n } else {\n this.expirations[current] = exp.filter(k => k !== key)\n }\n }\n this.dispose(value, key, 'delete')\n if (this.size === 0) {\n this.cancelTimer()\n }\n return true\n }\n return false\n }\n\n purgeToCapacity() {\n for (const exp in this.expirations) {\n const keys = this.expirations[exp]\n if (this.size - keys.length >= this.max) {\n delete this.expirations[exp]\n const entries = []\n for (const key of keys) {\n entries.push([key, this.data.get(key)])\n this.data.delete(key)\n this.expirationMap.delete(key)\n }\n for (const [key, val] of entries) {\n this.dispose(val, key, 'evict')\n }\n } else {\n const s = this.size - this.max\n const entries = []\n for (const key of keys.splice(0, s)) {\n entries.push([key, this.data.get(key)])\n this.data.delete(key)\n this.expirationMap.delete(key)\n }\n for (const [key, val] of entries) {\n this.dispose(val, key, 'evict')\n }\n return\n }\n }\n }\n\n get size() {\n return this.data.size\n }\n\n purgeStale() {\n const n = Math.ceil(now())\n for (const exp in this.expirations) {\n if (exp === 'Infinity' || exp > n) {\n return\n }\n\n /* istanbul ignore next\n * mysterious need for a guard here?\n * https://github.com/isaacs/ttlcache/issues/26 */\n const keys = [...(this.expirations[exp] || [])]\n const entries = []\n delete this.expirations[exp]\n for (const key of keys) {\n entries.push([key, this.data.get(key)])\n this.data.delete(key)\n this.expirationMap.delete(key)\n }\n for (const [key, val] of entries) {\n this.dispose(val, key, 'stale')\n }\n }\n if (this.size === 0) {\n this.cancelTimer()\n }\n }\n\n *entries() {\n for (const exp in this.expirations) {\n for (const key of this.expirations[exp]) {\n yield [key, this.data.get(key)]\n }\n }\n }\n *keys() {\n for (const exp in this.expirations) {\n for (const key of this.expirations[exp]) {\n yield key\n }\n }\n }\n *values() {\n for (const exp in this.expirations) {\n for (const key of this.expirations[exp]) {\n yield this.data.get(key)\n }\n }\n }\n [Symbol.iterator]() {\n return this.entries()\n }\n}\n\nmodule.exports = TTLCache\n", "'use strict'\n\nexports.supports = function supports (...manifests) {\n const manifest = manifests.reduce((acc, m) => Object.assign(acc, m), {})\n\n return Object.assign(manifest, {\n snapshots: manifest.snapshots || false,\n permanence: manifest.permanence || false,\n seek: manifest.seek || false,\n clear: manifest.clear || false,\n getMany: manifest.getMany || false,\n keyIterator: manifest.keyIterator || false,\n valueIterator: manifest.valueIterator || false,\n iteratorNextv: manifest.iteratorNextv || false,\n iteratorAll: manifest.iteratorAll || false,\n status: manifest.status || false,\n createIfMissing: manifest.createIfMissing || false,\n errorIfExists: manifest.errorIfExists || false,\n deferredOpen: manifest.deferredOpen || false,\n promises: manifest.promises || false,\n streams: manifest.streams || false,\n encodings: Object.assign({}, manifest.encodings),\n events: Object.assign({}, manifest.events),\n additionalMethods: Object.assign({}, manifest.additionalMethods)\n })\n}\n", "'use strict'\n\nmodule.exports = class ModuleError extends Error {\n /**\n * @param {string} message Error message\n * @param {{ code?: string, cause?: Error, expected?: boolean, transient?: boolean }} [options]\n */\n constructor (message, options) {\n super(message || '')\n\n if (typeof options === 'object' && options !== null) {\n if (options.code) this.code = String(options.code)\n if (options.expected) this.expected = true\n if (options.transient) this.transient = true\n if (options.cause) this.cause = options.cause\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n }\n}\n", "'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n", "'use strict'\n\n/** @type {{ textEncoder: TextEncoder, textDecoder: TextDecoder }|null} */\nlet lazy = null\n\n/**\n * Get semi-global instances of TextEncoder and TextDecoder.\n * @returns {{ textEncoder: TextEncoder, textDecoder: TextDecoder }}\n */\nmodule.exports = function () {\n if (lazy === null) {\n lazy = {\n textEncoder: new TextEncoder(),\n textDecoder: new TextDecoder()\n }\n }\n\n return lazy\n}\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst formats = new Set(['buffer', 'view', 'utf8'])\n\n/**\n * @template TIn, TFormat, TOut\n * @abstract\n */\nclass Encoding {\n /**\n * @param {IEncoding<TIn,TFormat,TOut>} options\n */\n constructor (options) {\n /** @type {(data: TIn) => TFormat} */\n this.encode = options.encode || this.encode\n\n /** @type {(data: TFormat) => TOut} */\n this.decode = options.decode || this.decode\n\n /** @type {string} */\n this.name = options.name || this.name\n\n /** @type {string} */\n this.format = options.format || this.format\n\n if (typeof this.encode !== 'function') {\n throw new TypeError(\"The 'encode' property must be a function\")\n }\n\n if (typeof this.decode !== 'function') {\n throw new TypeError(\"The 'decode' property must be a function\")\n }\n\n this.encode = this.encode.bind(this)\n this.decode = this.decode.bind(this)\n\n if (typeof this.name !== 'string' || this.name === '') {\n throw new TypeError(\"The 'name' property must be a string\")\n }\n\n if (typeof this.format !== 'string' || !formats.has(this.format)) {\n throw new TypeError(\"The 'format' property must be one of 'buffer', 'view', 'utf8'\")\n }\n\n if (options.createViewTranscoder) {\n this.createViewTranscoder = options.createViewTranscoder\n }\n\n if (options.createBufferTranscoder) {\n this.createBufferTranscoder = options.createBufferTranscoder\n }\n\n if (options.createUTF8Transcoder) {\n this.createUTF8Transcoder = options.createUTF8Transcoder\n }\n }\n\n get commonName () {\n return /** @type {string} */ (this.name.split('+')[0])\n }\n\n /** @return {BufferFormat<TIn,TOut>} */\n createBufferTranscoder () {\n throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'buffer'`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n\n /** @return {ViewFormat<TIn,TOut>} */\n createViewTranscoder () {\n throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'view'`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n\n /** @return {UTF8Format<TIn,TOut>} */\n createUTF8Transcoder () {\n throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'utf8'`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n}\n\nexports.Encoding = Encoding\n\n/**\n * @typedef {import('./encoding').IEncoding<TIn,TFormat,TOut>} IEncoding\n * @template TIn, TFormat, TOut\n */\n\n/**\n * @typedef {import('./formats').BufferFormat<TIn,TOut>} BufferFormat\n * @template TIn, TOut\n */\n\n/**\n * @typedef {import('./formats').ViewFormat<TIn,TOut>} ViewFormat\n * @template TIn, TOut\n */\n\n/**\n * @typedef {import('./formats').UTF8Format<TIn,TOut>} UTF8Format\n * @template TIn, TOut\n */\n", "'use strict'\n\nconst { Buffer } = require('buffer') || {}\nconst { Encoding } = require('./encoding')\nconst textEndec = require('./text-endec')\n\n/**\n * @template TIn, TOut\n * @extends {Encoding<TIn,Buffer,TOut>}\n */\nclass BufferFormat extends Encoding {\n /**\n * @param {Omit<IEncoding<TIn, Buffer, TOut>, 'format'>} options\n */\n constructor (options) {\n super({ ...options, format: 'buffer' })\n }\n\n /** @override */\n createViewTranscoder () {\n return new ViewFormat({\n encode: this.encode, // Buffer is a view (UInt8Array)\n decode: (data) => this.decode(\n Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n ),\n name: `${this.name}+view`\n })\n }\n\n /** @override */\n createBufferTranscoder () {\n return this\n }\n}\n\n/**\n * @extends {Encoding<TIn,Uint8Array,TOut>}\n * @template TIn, TOut\n */\nclass ViewFormat extends Encoding {\n /**\n * @param {Omit<IEncoding<TIn, Uint8Array, TOut>, 'format'>} options\n */\n constructor (options) {\n super({ ...options, format: 'view' })\n }\n\n /** @override */\n createBufferTranscoder () {\n return new BufferFormat({\n encode: (data) => {\n const view = this.encode(data)\n return Buffer.from(view.buffer, view.byteOffset, view.byteLength)\n },\n decode: this.decode, // Buffer is a view (UInt8Array)\n name: `${this.name}+buffer`\n })\n }\n\n /** @override */\n createViewTranscoder () {\n return this\n }\n}\n\n/**\n * @extends {Encoding<TIn,string,TOut>}\n * @template TIn, TOut\n */\nclass UTF8Format extends Encoding {\n /**\n * @param {Omit<IEncoding<TIn, string, TOut>, 'format'>} options\n */\n constructor (options) {\n super({ ...options, format: 'utf8' })\n }\n\n /** @override */\n createBufferTranscoder () {\n return new BufferFormat({\n encode: (data) => Buffer.from(this.encode(data), 'utf8'),\n decode: (data) => this.decode(data.toString('utf8')),\n name: `${this.name}+buffer`\n })\n }\n\n /** @override */\n createViewTranscoder () {\n const { textEncoder, textDecoder } = textEndec()\n\n return new ViewFormat({\n encode: (data) => textEncoder.encode(this.encode(data)),\n decode: (data) => this.decode(textDecoder.decode(data)),\n name: `${this.name}+view`\n })\n }\n\n /** @override */\n createUTF8Transcoder () {\n return this\n }\n}\n\nexports.BufferFormat = BufferFormat\nexports.ViewFormat = ViewFormat\nexports.UTF8Format = UTF8Format\n\n/**\n * @typedef {import('./encoding').IEncoding<TIn,TFormat,TOut>} IEncoding\n * @template TIn, TFormat, TOut\n */\n", "'use strict'\n\nconst { Buffer } = require('buffer') || { Buffer: { isBuffer: () => false } }\nconst { textEncoder, textDecoder } = require('./text-endec')()\nconst { BufferFormat, ViewFormat, UTF8Format } = require('./formats')\n\n/** @type {<T>(v: T) => v} */\nconst identity = (v) => v\n\n/**\n * @type {typeof import('./encodings').utf8}\n */\nexports.utf8 = new UTF8Format({\n encode: function (data) {\n // On node 16.9.1 buffer.toString() is 5x faster than TextDecoder\n return Buffer.isBuffer(data)\n ? data.toString('utf8')\n : ArrayBuffer.isView(data)\n ? textDecoder.decode(data)\n : String(data)\n },\n decode: identity,\n name: 'utf8',\n createViewTranscoder () {\n return new ViewFormat({\n encode: function (data) {\n return ArrayBuffer.isView(data) ? data : textEncoder.encode(data)\n },\n decode: function (data) {\n return textDecoder.decode(data)\n },\n name: `${this.name}+view`\n })\n },\n createBufferTranscoder () {\n return new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data)\n ? data\n : ArrayBuffer.isView(data)\n ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n : Buffer.from(String(data), 'utf8')\n },\n decode: function (data) {\n return data.toString('utf8')\n },\n name: `${this.name}+buffer`\n })\n }\n})\n\n/**\n * @type {typeof import('./encodings').json}\n */\nexports.json = new UTF8Format({\n encode: JSON.stringify,\n decode: JSON.parse,\n name: 'json'\n})\n\n/**\n * @type {typeof import('./encodings').buffer}\n */\nexports.buffer = new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data)\n ? data\n : ArrayBuffer.isView(data)\n ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n : Buffer.from(String(data), 'utf8')\n },\n decode: identity,\n name: 'buffer',\n createViewTranscoder () {\n return new ViewFormat({\n encode: function (data) {\n return ArrayBuffer.isView(data) ? data : Buffer.from(String(data), 'utf8')\n },\n decode: function (data) {\n return Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n },\n name: `${this.name}+view`\n })\n }\n})\n\n/**\n * @type {typeof import('./encodings').view}\n */\nexports.view = new ViewFormat({\n encode: function (data) {\n return ArrayBuffer.isView(data) ? data : textEncoder.encode(data)\n },\n decode: identity,\n name: 'view',\n createBufferTranscoder () {\n return new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data)\n ? data\n : ArrayBuffer.isView(data)\n ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n : Buffer.from(String(data), 'utf8')\n },\n decode: identity,\n name: `${this.name}+buffer`\n })\n }\n})\n\n/**\n * @type {typeof import('./encodings').hex}\n */\nexports.hex = new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data) ? data : Buffer.from(String(data), 'hex')\n },\n decode: function (buffer) {\n return buffer.toString('hex')\n },\n name: 'hex'\n})\n\n/**\n * @type {typeof import('./encodings').base64}\n */\nexports.base64 = new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data) ? data : Buffer.from(String(data), 'base64')\n },\n decode: function (buffer) {\n return buffer.toString('base64')\n },\n name: 'base64'\n})\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst encodings = require('./lib/encodings')\nconst { Encoding } = require('./lib/encoding')\nconst { BufferFormat, ViewFormat, UTF8Format } = require('./lib/formats')\n\nconst kFormats = Symbol('formats')\nconst kEncodings = Symbol('encodings')\nconst validFormats = new Set(['buffer', 'view', 'utf8'])\n\n/** @template T */\nclass Transcoder {\n /**\n * @param {Array<'buffer'|'view'|'utf8'>} formats\n */\n constructor (formats) {\n if (!Array.isArray(formats)) {\n throw new TypeError(\"The first argument 'formats' must be an array\")\n } else if (!formats.every(f => validFormats.has(f))) {\n // Note: we only only support aliases in key- and valueEncoding options (where we already did)\n throw new TypeError(\"Format must be one of 'buffer', 'view', 'utf8'\")\n }\n\n /** @type {Map<string|MixedEncoding<any, any, any>, Encoding<any, any, any>>} */\n this[kEncodings] = new Map()\n this[kFormats] = new Set(formats)\n\n // Register encodings (done early in order to populate encodings())\n for (const k in encodings) {\n try {\n this.encoding(k)\n } catch (err) {\n /* istanbul ignore if: assertion */\n if (err.code !== 'LEVEL_ENCODING_NOT_SUPPORTED') throw err\n }\n }\n }\n\n /**\n * @returns {Array<Encoding<any,T,any>>}\n */\n encodings () {\n return Array.from(new Set(this[kEncodings].values()))\n }\n\n /**\n * @param {string|MixedEncoding<any, any, any>} encoding\n * @returns {Encoding<any, T, any>}\n */\n encoding (encoding) {\n let resolved = this[kEncodings].get(encoding)\n\n if (resolved === undefined) {\n if (typeof encoding === 'string' && encoding !== '') {\n resolved = lookup[encoding]\n\n if (!resolved) {\n throw new ModuleError(`Encoding '${encoding}' is not found`, {\n code: 'LEVEL_ENCODING_NOT_FOUND'\n })\n }\n } else if (typeof encoding !== 'object' || encoding === null) {\n throw new TypeError(\"First argument 'encoding' must be a string or object\")\n } else {\n resolved = from(encoding)\n }\n\n const { name, format } = resolved\n\n if (!this[kFormats].has(format)) {\n if (this[kFormats].has('view')) {\n resolved = resolved.createViewTranscoder()\n } else if (this[kFormats].has('buffer')) {\n resolved = resolved.createBufferTranscoder()\n } else if (this[kFormats].has('utf8')) {\n resolved = resolved.createUTF8Transcoder()\n } else {\n throw new ModuleError(`Encoding '${name}' cannot be transcoded`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n }\n\n for (const k of [encoding, name, resolved.name, resolved.commonName]) {\n this[kEncodings].set(k, resolved)\n }\n }\n\n return resolved\n }\n}\n\nexports.Transcoder = Transcoder\n\n/**\n * @param {MixedEncoding<any, any, any>} options\n * @returns {Encoding<any, any, any>}\n */\nfunction from (options) {\n if (options instanceof Encoding) {\n return options\n }\n\n // Loosely typed for ecosystem compatibility\n const maybeType = 'type' in options && typeof options.type === 'string' ? options.type : undefined\n const name = options.name || maybeType || `anonymous-${anonymousCount++}`\n\n switch (detectFormat(options)) {\n case 'view': return new ViewFormat({ ...options, name })\n case 'utf8': return new UTF8Format({ ...options, name })\n case 'buffer': return new BufferFormat({ ...options, name })\n default: {\n throw new TypeError(\"Format must be one of 'buffer', 'view', 'utf8'\")\n }\n }\n}\n\n/**\n * If format is not provided, fallback to detecting `level-codec`\n * or `multiformats` encodings, else assume a format of buffer.\n * @param {MixedEncoding<any, any, any>} options\n * @returns {string}\n */\nfunction detectFormat (options) {\n if ('format' in options && options.format !== undefined) {\n return options.format\n } else if ('buffer' in options && typeof options.buffer === 'boolean') {\n return options.buffer ? 'buffer' : 'utf8' // level-codec\n } else if ('code' in options && Number.isInteger(options.code)) {\n return 'view' // multiformats\n } else {\n return 'buffer'\n }\n}\n\n/**\n * @typedef {import('./lib/encoding').MixedEncoding<TIn,TFormat,TOut>} MixedEncoding\n * @template TIn, TFormat, TOut\n */\n\n/**\n * @type {Object.<string, Encoding<any, any, any>>}\n */\nconst aliases = {\n binary: encodings.buffer,\n 'utf-8': encodings.utf8\n}\n\n/**\n * @type {Object.<string, Encoding<any, any, any>>}\n */\nconst lookup = {\n ...encodings,\n ...aliases\n}\n\nlet anonymousCount = 0\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n", "module.exports = typeof queueMicrotask === 'function' ? queueMicrotask : (fn) => Promise.resolve().then(fn)\n", "'use strict'\n\nvar nextTick = require('./next-tick')\n\nexports.fromCallback = function (callback, symbol) {\n if (callback === undefined) {\n var promise = new Promise(function (resolve, reject) {\n callback = function (err, res) {\n if (err) reject(err)\n else resolve(res)\n }\n })\n\n callback[symbol !== undefined ? symbol : 'promise'] = promise\n } else if (typeof callback !== 'function') {\n throw new TypeError('Callback must be a function')\n }\n\n return callback\n}\n\nexports.fromPromise = function (promise, callback) {\n if (callback === undefined) return promise\n\n promise\n .then(function (res) { nextTick(() => callback(null, res)) })\n .catch(function (err) { nextTick(() => callback(err)) })\n}\n", "'use strict'\n\nexports.getCallback = function (options, callback) {\n return typeof options === 'function' ? options : callback\n}\n\nexports.getOptions = function (options, def) {\n if (typeof options === 'object' && options !== null) {\n return options\n }\n\n if (def !== undefined) {\n return def\n }\n\n return {}\n}\n", "'use strict'\n\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { getOptions, getCallback } = require('./lib/common')\n\nconst kPromise = Symbol('promise')\nconst kCallback = Symbol('callback')\nconst kWorking = Symbol('working')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\nconst kAutoClose = Symbol('autoClose')\nconst kFinishWork = Symbol('finishWork')\nconst kReturnMany = Symbol('returnMany')\nconst kClosing = Symbol('closing')\nconst kHandleClose = Symbol('handleClose')\nconst kClosed = Symbol('closed')\nconst kCloseCallbacks = Symbol('closeCallbacks')\nconst kKeyEncoding = Symbol('keyEncoding')\nconst kValueEncoding = Symbol('valueEncoding')\nconst kAbortOnClose = Symbol('abortOnClose')\nconst kLegacy = Symbol('legacy')\nconst kKeys = Symbol('keys')\nconst kValues = Symbol('values')\nconst kLimit = Symbol('limit')\nconst kCount = Symbol('count')\n\nconst emptyOptions = Object.freeze({})\nconst noop = () => {}\nlet warnedEnd = false\n\n// This class is an internal utility for common functionality between AbstractIterator,\n// AbstractKeyIterator and AbstractValueIterator. It's not exported.\nclass CommonIterator {\n constructor (db, options, legacy) {\n if (typeof db !== 'object' || db === null) {\n const hint = db === null ? 'null' : typeof db\n throw new TypeError(`The first argument must be an abstract-level database, received ${hint}`)\n }\n\n if (typeof options !== 'object' || options === null) {\n throw new TypeError('The second argument must be an options object')\n }\n\n this[kClosed] = false\n this[kCloseCallbacks] = []\n this[kWorking] = false\n this[kClosing] = false\n this[kAutoClose] = false\n this[kCallback] = null\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n this[kHandleClose] = this[kHandleClose].bind(this)\n this[kKeyEncoding] = options[kKeyEncoding]\n this[kValueEncoding] = options[kValueEncoding]\n this[kLegacy] = legacy\n this[kLimit] = Number.isInteger(options.limit) && options.limit >= 0 ? options.limit : Infinity\n this[kCount] = 0\n\n // Undocumented option to abort pending work on close(). Used by the\n // many-level module as a temporary solution to a blocked close().\n // TODO (next major): consider making this the default behavior. Native\n // implementations should have their own logic to safely close iterators.\n this[kAbortOnClose] = !!options.abortOnClose\n\n this.db = db\n this.db.attachResource(this)\n this.nextTick = db.nextTick\n }\n\n get count () {\n return this[kCount]\n }\n\n get limit () {\n return this[kLimit]\n }\n\n next (callback) {\n let promise\n\n if (callback === undefined) {\n promise = new Promise((resolve, reject) => {\n callback = (err, key, value) => {\n if (err) reject(err)\n else if (!this[kLegacy]) resolve(key)\n else if (key === undefined && value === undefined) resolve()\n else resolve([key, value])\n }\n })\n } else if (typeof callback !== 'function') {\n throw new TypeError('Callback must be a function')\n }\n\n if (this[kClosing]) {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call next() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n } else if (this[kWorking]) {\n this.nextTick(callback, new ModuleError('Iterator is busy: cannot call next() until previous call has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n }))\n } else {\n this[kWorking] = true\n this[kCallback] = callback\n\n if (this[kCount] >= this[kLimit]) this.nextTick(this[kHandleOne], null)\n else this._next(this[kHandleOne])\n }\n\n return promise\n }\n\n _next (callback) {\n this.nextTick(callback)\n }\n\n nextv (size, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, emptyOptions)\n\n if (!Number.isInteger(size)) {\n this.nextTick(callback, new TypeError(\"The first argument 'size' must be an integer\"))\n return callback[kPromise]\n }\n\n if (this[kClosing]) {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call nextv() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n } else if (this[kWorking]) {\n this.nextTick(callback, new ModuleError('Iterator is busy: cannot call nextv() until previous call has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n }))\n } else {\n if (size < 1) size = 1\n if (this[kLimit] < Infinity) size = Math.min(size, this[kLimit] - this[kCount])\n\n this[kWorking] = true\n this[kCallback] = callback\n\n if (size <= 0) this.nextTick(this[kHandleMany], null, [])\n else this._nextv(size, options, this[kHandleMany])\n }\n\n return callback[kPromise]\n }\n\n _nextv (size, options, callback) {\n const acc = []\n const onnext = (err, key, value) => {\n if (err) {\n return callback(err)\n } else if (this[kLegacy] ? key === undefined && value === undefined : key === undefined) {\n return callback(null, acc)\n }\n\n acc.push(this[kLegacy] ? [key, value] : key)\n\n if (acc.length === size) {\n callback(null, acc)\n } else {\n this._next(onnext)\n }\n }\n\n this._next(onnext)\n }\n\n all (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, emptyOptions)\n\n if (this[kClosing]) {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call all() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n } else if (this[kWorking]) {\n this.nextTick(callback, new ModuleError('Iterator is busy: cannot call all() until previous call has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n }))\n } else {\n this[kWorking] = true\n this[kCallback] = callback\n this[kAutoClose] = true\n\n if (this[kCount] >= this[kLimit]) this.nextTick(this[kHandleMany], null, [])\n else this._all(options, this[kHandleMany])\n }\n\n return callback[kPromise]\n }\n\n _all (options, callback) {\n // Must count here because we're directly calling _nextv()\n let count = this[kCount]\n const acc = []\n\n const nextv = () => {\n // Not configurable, because implementations should optimize _all().\n const size = this[kLimit] < Infinity ? Math.min(1e3, this[kLimit] - count) : 1e3\n\n if (size <= 0) {\n this.nextTick(callback, null, acc)\n } else {\n this._nextv(size, emptyOptions, onnextv)\n }\n }\n\n const onnextv = (err, items) => {\n if (err) {\n callback(err)\n } else if (items.length === 0) {\n callback(null, acc)\n } else {\n acc.push.apply(acc, items)\n count += items.length\n nextv()\n }\n }\n\n nextv()\n }\n\n [kFinishWork] () {\n const cb = this[kCallback]\n\n // Callback will be null if work was aborted on close\n if (this[kAbortOnClose] && cb === null) return noop\n\n this[kWorking] = false\n this[kCallback] = null\n\n if (this[kClosing]) this._close(this[kHandleClose])\n\n return cb\n }\n\n [kReturnMany] (cb, err, items) {\n if (this[kAutoClose]) {\n this.close(cb.bind(null, err, items))\n } else {\n cb(err, items)\n }\n }\n\n seek (target, options) {\n options = getOptions(options, emptyOptions)\n\n if (this[kClosing]) {\n // Don't throw here, to be kind to implementations that wrap\n // another db and don't necessarily control when the db is closed\n } else if (this[kWorking]) {\n throw new ModuleError('Iterator is busy: cannot call seek() until next() has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n })\n } else {\n const keyEncoding = this.db.keyEncoding(options.keyEncoding || this[kKeyEncoding])\n const keyFormat = keyEncoding.format\n\n if (options.keyEncoding !== keyFormat) {\n options = { ...options, keyEncoding: keyFormat }\n }\n\n const mapped = this.db.prefixKey(keyEncoding.encode(target), keyFormat)\n this._seek(mapped, options)\n }\n }\n\n _seek (target, options) {\n throw new ModuleError('Iterator does not support seek()', {\n code: 'LEVEL_NOT_SUPPORTED'\n })\n }\n\n close (callback) {\n callback = fromCallback(callback, kPromise)\n\n if (this[kClosed]) {\n this.nextTick(callback)\n } else if (this[kClosing]) {\n this[kCloseCallbacks].push(callback)\n } else {\n this[kClosing] = true\n this[kCloseCallbacks].push(callback)\n\n if (!this[kWorking]) {\n this._close(this[kHandleClose])\n } else if (this[kAbortOnClose]) {\n // Don't wait for work to finish. Subsequently ignore the result.\n const cb = this[kFinishWork]()\n\n cb(new ModuleError('Aborted on iterator close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n return callback[kPromise]\n }\n\n _close (callback) {\n this.nextTick(callback)\n }\n\n [kHandleClose] () {\n this[kClosed] = true\n this.db.detachResource(this)\n\n const callbacks = this[kCloseCallbacks]\n this[kCloseCallbacks] = []\n\n for (const cb of callbacks) {\n cb()\n }\n }\n\n async * [Symbol.asyncIterator] () {\n try {\n let item\n\n while ((item = (await this.next())) !== undefined) {\n yield item\n }\n } finally {\n if (!this[kClosed]) await this.close()\n }\n }\n}\n\n// For backwards compatibility this class is not (yet) called AbstractEntryIterator.\nclass AbstractIterator extends CommonIterator {\n constructor (db, options) {\n super(db, options, true)\n this[kKeys] = options.keys !== false\n this[kValues] = options.values !== false\n }\n\n [kHandleOne] (err, key, value) {\n const cb = this[kFinishWork]()\n if (err) return cb(err)\n\n try {\n key = this[kKeys] && key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n value = this[kValues] && value !== undefined ? this[kValueEncoding].decode(value) : undefined\n } catch (err) {\n return cb(new IteratorDecodeError('entry', err))\n }\n\n if (!(key === undefined && value === undefined)) {\n this[kCount]++\n }\n\n cb(null, key, value)\n }\n\n [kHandleMany] (err, entries) {\n const cb = this[kFinishWork]()\n if (err) return this[kReturnMany](cb, err)\n\n try {\n for (const entry of entries) {\n const key = entry[0]\n const value = entry[1]\n\n entry[0] = this[kKeys] && key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n entry[1] = this[kValues] && value !== undefined ? this[kValueEncoding].decode(value) : undefined\n }\n } catch (err) {\n return this[kReturnMany](cb, new IteratorDecodeError('entries', err))\n }\n\n this[kCount] += entries.length\n this[kReturnMany](cb, null, entries)\n }\n\n end (callback) {\n if (!warnedEnd && typeof console !== 'undefined') {\n warnedEnd = true\n console.warn(new ModuleError(\n 'The iterator.end() method was renamed to close() and end() is an alias that will be removed in a future version',\n { code: 'LEVEL_LEGACY' }\n ))\n }\n\n return this.close(callback)\n }\n}\n\nclass AbstractKeyIterator extends CommonIterator {\n constructor (db, options) {\n super(db, options, false)\n }\n\n [kHandleOne] (err, key) {\n const cb = this[kFinishWork]()\n if (err) return cb(err)\n\n try {\n key = key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n } catch (err) {\n return cb(new IteratorDecodeError('key', err))\n }\n\n if (key !== undefined) this[kCount]++\n cb(null, key)\n }\n\n [kHandleMany] (err, keys) {\n const cb = this[kFinishWork]()\n if (err) return this[kReturnMany](cb, err)\n\n try {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n keys[i] = key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n }\n } catch (err) {\n return this[kReturnMany](cb, new IteratorDecodeError('keys', err))\n }\n\n this[kCount] += keys.length\n this[kReturnMany](cb, null, keys)\n }\n}\n\nclass AbstractValueIterator extends CommonIterator {\n constructor (db, options) {\n super(db, options, false)\n }\n\n [kHandleOne] (err, value) {\n const cb = this[kFinishWork]()\n if (err) return cb(err)\n\n try {\n value = value !== undefined ? this[kValueEncoding].decode(value) : undefined\n } catch (err) {\n return cb(new IteratorDecodeError('value', err))\n }\n\n if (value !== undefined) this[kCount]++\n cb(null, value)\n }\n\n [kHandleMany] (err, values) {\n const cb = this[kFinishWork]()\n if (err) return this[kReturnMany](cb, err)\n\n try {\n for (let i = 0; i < values.length; i++) {\n const value = values[i]\n values[i] = value !== undefined ? this[kValueEncoding].decode(value) : undefined\n }\n } catch (err) {\n return this[kReturnMany](cb, new IteratorDecodeError('values', err))\n }\n\n this[kCount] += values.length\n this[kReturnMany](cb, null, values)\n }\n}\n\n// Internal utility, not typed or exported\nclass IteratorDecodeError extends ModuleError {\n constructor (subject, cause) {\n super(`Iterator could not decode ${subject}`, {\n code: 'LEVEL_DECODE_ERROR',\n cause\n })\n }\n}\n\n// To help migrating to abstract-level\nfor (const k of ['_ended property', '_nexting property', '_end method']) {\n Object.defineProperty(AbstractIterator.prototype, k.split(' ')[0], {\n get () { throw new ModuleError(`The ${k} has been removed`, { code: 'LEVEL_LEGACY' }) },\n set () { throw new ModuleError(`The ${k} has been removed`, { code: 'LEVEL_LEGACY' }) }\n })\n}\n\n// Exposed so that AbstractLevel can set these options\nAbstractIterator.keyEncoding = kKeyEncoding\nAbstractIterator.valueEncoding = kValueEncoding\n\nexports.AbstractIterator = AbstractIterator\nexports.AbstractKeyIterator = AbstractKeyIterator\nexports.AbstractValueIterator = AbstractValueIterator\n", "'use strict'\n\nconst { AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\n\nconst kIterator = Symbol('iterator')\nconst kCallback = Symbol('callback')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\n\nclass DefaultKeyIterator extends AbstractKeyIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kIterator] = db.iterator({ ...options, keys: true, values: false })\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n }\n}\n\nclass DefaultValueIterator extends AbstractValueIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kIterator] = db.iterator({ ...options, keys: false, values: true })\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n }\n}\n\nfor (const Iterator of [DefaultKeyIterator, DefaultValueIterator]) {\n const keys = Iterator === DefaultKeyIterator\n const mapEntry = keys ? (entry) => entry[0] : (entry) => entry[1]\n\n Iterator.prototype._next = function (callback) {\n this[kCallback] = callback\n this[kIterator].next(this[kHandleOne])\n }\n\n Iterator.prototype[kHandleOne] = function (err, key, value) {\n const callback = this[kCallback]\n if (err) callback(err)\n else callback(null, keys ? key : value)\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n this[kCallback] = callback\n this[kIterator].nextv(size, options, this[kHandleMany])\n }\n\n Iterator.prototype._all = function (options, callback) {\n this[kCallback] = callback\n this[kIterator].all(options, this[kHandleMany])\n }\n\n Iterator.prototype[kHandleMany] = function (err, entries) {\n const callback = this[kCallback]\n if (err) callback(err)\n else callback(null, entries.map(mapEntry))\n }\n\n Iterator.prototype._seek = function (target, options) {\n this[kIterator].seek(target, options)\n }\n\n Iterator.prototype._close = function (callback) {\n this[kIterator].close(callback)\n }\n}\n\n// Internal utilities, should be typed as AbstractKeyIterator and AbstractValueIterator\nexports.DefaultKeyIterator = DefaultKeyIterator\nexports.DefaultValueIterator = DefaultValueIterator\n", "'use strict'\n\nconst { AbstractIterator, AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\nconst ModuleError = require('module-error')\n\nconst kNut = Symbol('nut')\nconst kUndefer = Symbol('undefer')\nconst kFactory = Symbol('factory')\n\nclass DeferredIterator extends AbstractIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kNut] = null\n this[kFactory] = () => db.iterator(options)\n\n this.db.defer(() => this[kUndefer]())\n }\n}\n\nclass DeferredKeyIterator extends AbstractKeyIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kNut] = null\n this[kFactory] = () => db.keys(options)\n\n this.db.defer(() => this[kUndefer]())\n }\n}\n\nclass DeferredValueIterator extends AbstractValueIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kNut] = null\n this[kFactory] = () => db.values(options)\n\n this.db.defer(() => this[kUndefer]())\n }\n}\n\nfor (const Iterator of [DeferredIterator, DeferredKeyIterator, DeferredValueIterator]) {\n Iterator.prototype[kUndefer] = function () {\n if (this.db.status === 'open') {\n this[kNut] = this[kFactory]()\n }\n }\n\n Iterator.prototype._next = function (callback) {\n if (this[kNut] !== null) {\n this[kNut].next(callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._next(callback))\n } else {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call next() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n if (this[kNut] !== null) {\n this[kNut].nextv(size, options, callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._nextv(size, options, callback))\n } else {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call nextv() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n Iterator.prototype._all = function (options, callback) {\n if (this[kNut] !== null) {\n this[kNut].all(callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._all(options, callback))\n } else {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call all() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n Iterator.prototype._seek = function (target, options) {\n if (this[kNut] !== null) {\n // TODO: explain why we need _seek() rather than seek() here\n this[kNut]._seek(target, options)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._seek(target, options))\n }\n }\n\n Iterator.prototype._close = function (callback) {\n if (this[kNut] !== null) {\n this[kNut].close(callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._close(callback))\n } else {\n this.nextTick(callback)\n }\n }\n}\n\nexports.DeferredIterator = DeferredIterator\nexports.DeferredKeyIterator = DeferredKeyIterator\nexports.DeferredValueIterator = DeferredValueIterator\n", "'use strict'\n\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { getCallback, getOptions } = require('./lib/common')\n\nconst kPromise = Symbol('promise')\nconst kStatus = Symbol('status')\nconst kOperations = Symbol('operations')\nconst kFinishClose = Symbol('finishClose')\nconst kCloseCallbacks = Symbol('closeCallbacks')\n\nclass AbstractChainedBatch {\n constructor (db) {\n if (typeof db !== 'object' || db === null) {\n const hint = db === null ? 'null' : typeof db\n throw new TypeError(`The first argument must be an abstract-level database, received ${hint}`)\n }\n\n this[kOperations] = []\n this[kCloseCallbacks] = []\n this[kStatus] = 'open'\n this[kFinishClose] = this[kFinishClose].bind(this)\n\n this.db = db\n this.db.attachResource(this)\n this.nextTick = db.nextTick\n }\n\n get length () {\n return this[kOperations].length\n }\n\n put (key, value, options) {\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Batch is not open: cannot call put() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n })\n }\n\n const err = this.db._checkKey(key) || this.db._checkValue(value)\n if (err) throw err\n\n const db = options && options.sublevel != null ? options.sublevel : this.db\n const original = options\n const keyEncoding = db.keyEncoding(options && options.keyEncoding)\n const valueEncoding = db.valueEncoding(options && options.valueEncoding)\n const keyFormat = keyEncoding.format\n\n // Forward encoding options\n options = { ...options, keyEncoding: keyFormat, valueEncoding: valueEncoding.format }\n\n // Prevent double prefixing\n if (db !== this.db) {\n options.sublevel = null\n }\n\n const mappedKey = db.prefixKey(keyEncoding.encode(key), keyFormat)\n const mappedValue = valueEncoding.encode(value)\n\n this._put(mappedKey, mappedValue, options)\n this[kOperations].push({ ...original, type: 'put', key, value })\n\n return this\n }\n\n _put (key, value, options) {}\n\n del (key, options) {\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Batch is not open: cannot call del() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n })\n }\n\n const err = this.db._checkKey(key)\n if (err) throw err\n\n const db = options && options.sublevel != null ? options.sublevel : this.db\n const original = options\n const keyEncoding = db.keyEncoding(options && options.keyEncoding)\n const keyFormat = keyEncoding.format\n\n // Forward encoding options\n options = { ...options, keyEncoding: keyFormat }\n\n // Prevent double prefixing\n if (db !== this.db) {\n options.sublevel = null\n }\n\n this._del(db.prefixKey(keyEncoding.encode(key), keyFormat), options)\n this[kOperations].push({ ...original, type: 'del', key })\n\n return this\n }\n\n _del (key, options) {}\n\n clear () {\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Batch is not open: cannot call clear() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n })\n }\n\n this._clear()\n this[kOperations] = []\n\n return this\n }\n\n _clear () {}\n\n write (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options)\n\n if (this[kStatus] !== 'open') {\n this.nextTick(callback, new ModuleError('Batch is not open: cannot call write() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n }))\n } else if (this.length === 0) {\n this.close(callback)\n } else {\n this[kStatus] = 'writing'\n this._write(options, (err) => {\n this[kStatus] = 'closing'\n this[kCloseCallbacks].push(() => callback(err))\n\n // Emit after setting 'closing' status, because event may trigger a\n // db close which in turn triggers (idempotently) closing this batch.\n if (!err) this.db.emit('batch', this[kOperations])\n\n this._close(this[kFinishClose])\n })\n }\n\n return callback[kPromise]\n }\n\n _write (options, callback) {}\n\n close (callback) {\n callback = fromCallback(callback, kPromise)\n\n if (this[kStatus] === 'closing') {\n this[kCloseCallbacks].push(callback)\n } else if (this[kStatus] === 'closed') {\n this.nextTick(callback)\n } else {\n this[kCloseCallbacks].push(callback)\n\n if (this[kStatus] !== 'writing') {\n this[kStatus] = 'closing'\n this._close(this[kFinishClose])\n }\n }\n\n return callback[kPromise]\n }\n\n _close (callback) {\n this.nextTick(callback)\n }\n\n [kFinishClose] () {\n this[kStatus] = 'closed'\n this.db.detachResource(this)\n\n const callbacks = this[kCloseCallbacks]\n this[kCloseCallbacks] = []\n\n for (const cb of callbacks) {\n cb()\n }\n }\n}\n\nexports.AbstractChainedBatch = AbstractChainedBatch\n", "'use strict'\n\nconst { AbstractChainedBatch } = require('../abstract-chained-batch')\nconst ModuleError = require('module-error')\nconst kEncoded = Symbol('encoded')\n\n// Functional default for chained batch, with support of deferred open\nclass DefaultChainedBatch extends AbstractChainedBatch {\n constructor (db) {\n super(db)\n this[kEncoded] = []\n }\n\n _put (key, value, options) {\n this[kEncoded].push({ ...options, type: 'put', key, value })\n }\n\n _del (key, options) {\n this[kEncoded].push({ ...options, type: 'del', key })\n }\n\n _clear () {\n this[kEncoded] = []\n }\n\n // Assumes this[kEncoded] cannot change after write()\n _write (options, callback) {\n if (this.db.status === 'opening') {\n this.db.defer(() => this._write(options, callback))\n } else if (this.db.status === 'open') {\n if (this[kEncoded].length === 0) this.nextTick(callback)\n else this.db._batch(this[kEncoded], options, callback)\n } else {\n this.nextTick(callback, new ModuleError('Batch is not open: cannot call write() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n }))\n }\n }\n}\n\nexports.DefaultChainedBatch = DefaultChainedBatch\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst hasOwnProperty = Object.prototype.hasOwnProperty\nconst rangeOptions = new Set(['lt', 'lte', 'gt', 'gte'])\n\nmodule.exports = function (options, keyEncoding) {\n const result = {}\n\n for (const k in options) {\n if (!hasOwnProperty.call(options, k)) continue\n if (k === 'keyEncoding' || k === 'valueEncoding') continue\n\n if (k === 'start' || k === 'end') {\n throw new ModuleError(`The legacy range option '${k}' has been removed`, {\n code: 'LEVEL_LEGACY'\n })\n } else if (k === 'encoding') {\n // To help migrating to abstract-level\n throw new ModuleError(\"The levelup-style 'encoding' alias has been removed, use 'valueEncoding' instead\", {\n code: 'LEVEL_LEGACY'\n })\n }\n\n if (rangeOptions.has(k)) {\n // Note that we don't reject nullish and empty options here. While\n // those types are invalid as keys, they are valid as range options.\n result[k] = keyEncoding.encode(options[k])\n } else {\n result[k] = options[k]\n }\n }\n\n result.reverse = !!result.reverse\n result.limit = Number.isInteger(result.limit) && result.limit >= 0 ? result.limit : -1\n\n return result\n}\n", "/*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n", "'use strict'\n\nconst queueMicrotask = require('queue-microtask')\n\nmodule.exports = function (fn, ...args) {\n if (args.length === 0) {\n queueMicrotask(fn)\n } else {\n queueMicrotask(() => fn(...args))\n }\n}\n", "'use strict'\n\nconst { AbstractIterator, AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\n\nconst kUnfix = Symbol('unfix')\nconst kIterator = Symbol('iterator')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\nconst kCallback = Symbol('callback')\n\n// TODO: unfix natively if db supports it\nclass AbstractSublevelIterator extends AbstractIterator {\n constructor (db, options, iterator, unfix) {\n super(db, options)\n\n this[kIterator] = iterator\n this[kUnfix] = unfix\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n this[kCallback] = null\n }\n\n [kHandleOne] (err, key, value) {\n const callback = this[kCallback]\n if (err) return callback(err)\n if (key !== undefined) key = this[kUnfix](key)\n callback(err, key, value)\n }\n\n [kHandleMany] (err, entries) {\n const callback = this[kCallback]\n if (err) return callback(err)\n\n for (const entry of entries) {\n const key = entry[0]\n if (key !== undefined) entry[0] = this[kUnfix](key)\n }\n\n callback(err, entries)\n }\n}\n\nclass AbstractSublevelKeyIterator extends AbstractKeyIterator {\n constructor (db, options, iterator, unfix) {\n super(db, options)\n\n this[kIterator] = iterator\n this[kUnfix] = unfix\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n this[kCallback] = null\n }\n\n [kHandleOne] (err, key) {\n const callback = this[kCallback]\n if (err) return callback(err)\n if (key !== undefined) key = this[kUnfix](key)\n callback(err, key)\n }\n\n [kHandleMany] (err, keys) {\n const callback = this[kCallback]\n if (err) return callback(err)\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (key !== undefined) keys[i] = this[kUnfix](key)\n }\n\n callback(err, keys)\n }\n}\n\nclass AbstractSublevelValueIterator extends AbstractValueIterator {\n constructor (db, options, iterator) {\n super(db, options)\n this[kIterator] = iterator\n }\n}\n\nfor (const Iterator of [AbstractSublevelIterator, AbstractSublevelKeyIterator]) {\n Iterator.prototype._next = function (callback) {\n this[kCallback] = callback\n this[kIterator].next(this[kHandleOne])\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n this[kCallback] = callback\n this[kIterator].nextv(size, options, this[kHandleMany])\n }\n\n Iterator.prototype._all = function (options, callback) {\n this[kCallback] = callback\n this[kIterator].all(options, this[kHandleMany])\n }\n}\n\nfor (const Iterator of [AbstractSublevelValueIterator]) {\n Iterator.prototype._next = function (callback) {\n this[kIterator].next(callback)\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n this[kIterator].nextv(size, options, callback)\n }\n\n Iterator.prototype._all = function (options, callback) {\n this[kIterator].all(options, callback)\n }\n}\n\nfor (const Iterator of [AbstractSublevelIterator, AbstractSublevelKeyIterator, AbstractSublevelValueIterator]) {\n Iterator.prototype._seek = function (target, options) {\n this[kIterator].seek(target, options)\n }\n\n Iterator.prototype._close = function (callback) {\n this[kIterator].close(callback)\n }\n}\n\nexports.AbstractSublevelIterator = AbstractSublevelIterator\nexports.AbstractSublevelKeyIterator = AbstractSublevelKeyIterator\nexports.AbstractSublevelValueIterator = AbstractSublevelValueIterator\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst { Buffer } = require('buffer') || {}\nconst {\n AbstractSublevelIterator,\n AbstractSublevelKeyIterator,\n AbstractSublevelValueIterator\n} = require('./abstract-sublevel-iterator')\n\nconst kPrefix = Symbol('prefix')\nconst kUpperBound = Symbol('upperBound')\nconst kPrefixRange = Symbol('prefixRange')\nconst kParent = Symbol('parent')\nconst kUnfix = Symbol('unfix')\n\nconst textEncoder = new TextEncoder()\nconst defaults = { separator: '!' }\n\n// Wrapped to avoid circular dependency\nmodule.exports = function ({ AbstractLevel }) {\n class AbstractSublevel extends AbstractLevel {\n static defaults (options) {\n // To help migrating from subleveldown to abstract-level\n if (typeof options === 'string') {\n throw new ModuleError('The subleveldown string shorthand for { separator } has been removed', {\n code: 'LEVEL_LEGACY'\n })\n } else if (options && options.open) {\n throw new ModuleError('The subleveldown open option has been removed', {\n code: 'LEVEL_LEGACY'\n })\n }\n\n if (options == null) {\n return defaults\n } else if (!options.separator) {\n return { ...options, separator: '!' }\n } else {\n return options\n }\n }\n\n // TODO: add autoClose option, which if true, does parent.attachResource(this)\n constructor (db, name, options) {\n // Don't forward AbstractSublevel options to AbstractLevel\n const { separator, manifest, ...forward } = AbstractSublevel.defaults(options)\n name = trim(name, separator)\n\n // Reserve one character between separator and name to give us an upper bound\n const reserved = separator.charCodeAt(0) + 1\n const parent = db[kParent] || db\n\n // Keys should sort like ['!a!', '!a!!a!', '!a\"', '!aa!', '!b!'].\n // Use ASCII for consistent length between string, Buffer and Uint8Array\n if (!textEncoder.encode(name).every(x => x > reserved && x < 127)) {\n throw new ModuleError(`Prefix must use bytes > ${reserved} < ${127}`, {\n code: 'LEVEL_INVALID_PREFIX'\n })\n }\n\n super(mergeManifests(parent, manifest), forward)\n\n const prefix = (db.prefix || '') + separator + name + separator\n const upperBound = prefix.slice(0, -1) + String.fromCharCode(reserved)\n\n this[kParent] = parent\n this[kPrefix] = new MultiFormat(prefix)\n this[kUpperBound] = new MultiFormat(upperBound)\n this[kUnfix] = new Unfixer()\n\n this.nextTick = parent.nextTick\n }\n\n prefixKey (key, keyFormat) {\n if (keyFormat === 'utf8') {\n return this[kPrefix].utf8 + key\n } else if (key.byteLength === 0) {\n // Fast path for empty key (no copy)\n return this[kPrefix][keyFormat]\n } else if (keyFormat === 'view') {\n const view = this[kPrefix].view\n const result = new Uint8Array(view.byteLength + key.byteLength)\n\n result.set(view, 0)\n result.set(key, view.byteLength)\n\n return result\n } else {\n const buffer = this[kPrefix].buffer\n return Buffer.concat([buffer, key], buffer.byteLength + key.byteLength)\n }\n }\n\n // Not exposed for now.\n [kPrefixRange] (range, keyFormat) {\n if (range.gte !== undefined) {\n range.gte = this.prefixKey(range.gte, keyFormat)\n } else if (range.gt !== undefined) {\n range.gt = this.prefixKey(range.gt, keyFormat)\n } else {\n range.gte = this[kPrefix][keyFormat]\n }\n\n if (range.lte !== undefined) {\n range.lte = this.prefixKey(range.lte, keyFormat)\n } else if (range.lt !== undefined) {\n range.lt = this.prefixKey(range.lt, keyFormat)\n } else {\n range.lte = this[kUpperBound][keyFormat]\n }\n }\n\n get prefix () {\n return this[kPrefix].utf8\n }\n\n get db () {\n return this[kParent]\n }\n\n _open (options, callback) {\n // The parent db must open itself or be (re)opened by the user because\n // a sublevel should not initiate state changes on the rest of the db.\n this[kParent].open({ passive: true }, callback)\n }\n\n _put (key, value, options, callback) {\n this[kParent].put(key, value, options, callback)\n }\n\n _get (key, options, callback) {\n this[kParent].get(key, options, callback)\n }\n\n _getMany (keys, options, callback) {\n this[kParent].getMany(keys, options, callback)\n }\n\n _del (key, options, callback) {\n this[kParent].del(key, options, callback)\n }\n\n _batch (operations, options, callback) {\n this[kParent].batch(operations, options, callback)\n }\n\n _clear (options, callback) {\n // TODO (refactor): move to AbstractLevel\n this[kPrefixRange](options, options.keyEncoding)\n this[kParent].clear(options, callback)\n }\n\n _iterator (options) {\n // TODO (refactor): move to AbstractLevel\n this[kPrefixRange](options, options.keyEncoding)\n const iterator = this[kParent].iterator(options)\n const unfix = this[kUnfix].get(this[kPrefix].utf8.length, options.keyEncoding)\n return new AbstractSublevelIterator(this, options, iterator, unfix)\n }\n\n _keys (options) {\n this[kPrefixRange](options, options.keyEncoding)\n const iterator = this[kParent].keys(options)\n const unfix = this[kUnfix].get(this[kPrefix].utf8.length, options.keyEncoding)\n return new AbstractSublevelKeyIterator(this, options, iterator, unfix)\n }\n\n _values (options) {\n this[kPrefixRange](options, options.keyEncoding)\n const iterator = this[kParent].values(options)\n return new AbstractSublevelValueIterator(this, options, iterator)\n }\n }\n\n return { AbstractSublevel }\n}\n\nconst mergeManifests = function (parent, manifest) {\n return {\n // Inherit manifest of parent db\n ...parent.supports,\n\n // Disable unsupported features\n createIfMissing: false,\n errorIfExists: false,\n\n // Unset additional events because we're not forwarding them\n events: {},\n\n // Unset additional methods (like approximateSize) which we can't support here unless\n // the AbstractSublevel class is overridden by an implementation of `abstract-level`.\n additionalMethods: {},\n\n // Inherit manifest of custom AbstractSublevel subclass. Such a class is not\n // allowed to override encodings.\n ...manifest,\n\n encodings: {\n utf8: supportsEncoding(parent, 'utf8'),\n buffer: supportsEncoding(parent, 'buffer'),\n view: supportsEncoding(parent, 'view')\n }\n }\n}\n\nconst supportsEncoding = function (parent, encoding) {\n // Prefer a non-transcoded encoding for optimal performance\n return parent.supports.encodings[encoding]\n ? parent.keyEncoding(encoding).name === encoding\n : false\n}\n\nclass MultiFormat {\n constructor (key) {\n this.utf8 = key\n this.view = textEncoder.encode(key)\n this.buffer = Buffer ? Buffer.from(this.view.buffer, 0, this.view.byteLength) : {}\n }\n}\n\nclass Unfixer {\n constructor () {\n this.cache = new Map()\n }\n\n get (prefixLength, keyFormat) {\n let unfix = this.cache.get(keyFormat)\n\n if (unfix === undefined) {\n if (keyFormat === 'view') {\n unfix = function (prefixLength, key) {\n // Avoid Uint8Array#slice() because it copies\n return key.subarray(prefixLength)\n }.bind(null, prefixLength)\n } else {\n unfix = function (prefixLength, key) {\n // Avoid Buffer#subarray() because it's slow\n return key.slice(prefixLength)\n }.bind(null, prefixLength)\n }\n\n this.cache.set(keyFormat, unfix)\n }\n\n return unfix\n }\n}\n\nconst trim = function (str, char) {\n let start = 0\n let end = str.length\n\n while (start < end && str[start] === char) start++\n while (end > start && str[end - 1] === char) end--\n\n return str.slice(start, end)\n}\n", "'use strict'\n\nconst { supports } = require('level-supports')\nconst { Transcoder } = require('level-transcoder')\nconst { EventEmitter } = require('events')\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { AbstractIterator } = require('./abstract-iterator')\nconst { DefaultKeyIterator, DefaultValueIterator } = require('./lib/default-kv-iterator')\nconst { DeferredIterator, DeferredKeyIterator, DeferredValueIterator } = require('./lib/deferred-iterator')\nconst { DefaultChainedBatch } = require('./lib/default-chained-batch')\nconst { getCallback, getOptions } = require('./lib/common')\nconst rangeOptions = require('./lib/range-options')\n\nconst kPromise = Symbol('promise')\nconst kLanded = Symbol('landed')\nconst kResources = Symbol('resources')\nconst kCloseResources = Symbol('closeResources')\nconst kOperations = Symbol('operations')\nconst kUndefer = Symbol('undefer')\nconst kDeferOpen = Symbol('deferOpen')\nconst kOptions = Symbol('options')\nconst kStatus = Symbol('status')\nconst kDefaultOptions = Symbol('defaultOptions')\nconst kTranscoder = Symbol('transcoder')\nconst kKeyEncoding = Symbol('keyEncoding')\nconst kValueEncoding = Symbol('valueEncoding')\nconst noop = () => {}\n\nclass AbstractLevel extends EventEmitter {\n constructor (manifest, options) {\n super()\n\n if (typeof manifest !== 'object' || manifest === null) {\n throw new TypeError(\"The first argument 'manifest' must be an object\")\n }\n\n options = getOptions(options)\n const { keyEncoding, valueEncoding, passive, ...forward } = options\n\n this[kResources] = new Set()\n this[kOperations] = []\n this[kDeferOpen] = true\n this[kOptions] = forward\n this[kStatus] = 'opening'\n\n this.supports = supports(manifest, {\n status: true,\n promises: true,\n clear: true,\n getMany: true,\n deferredOpen: true,\n\n // TODO (next major): add seek\n snapshots: manifest.snapshots !== false,\n permanence: manifest.permanence !== false,\n\n // TODO: remove from level-supports because it's always supported\n keyIterator: true,\n valueIterator: true,\n iteratorNextv: true,\n iteratorAll: true,\n\n encodings: manifest.encodings || {},\n events: Object.assign({}, manifest.events, {\n opening: true,\n open: true,\n closing: true,\n closed: true,\n put: true,\n del: true,\n batch: true,\n clear: true\n })\n })\n\n this[kTranscoder] = new Transcoder(formats(this))\n this[kKeyEncoding] = this[kTranscoder].encoding(keyEncoding || 'utf8')\n this[kValueEncoding] = this[kTranscoder].encoding(valueEncoding || 'utf8')\n\n // Add custom and transcoder encodings to manifest\n for (const encoding of this[kTranscoder].encodings()) {\n if (!this.supports.encodings[encoding.commonName]) {\n this.supports.encodings[encoding.commonName] = true\n }\n }\n\n this[kDefaultOptions] = {\n empty: Object.freeze({}),\n entry: Object.freeze({\n keyEncoding: this[kKeyEncoding].commonName,\n valueEncoding: this[kValueEncoding].commonName\n }),\n key: Object.freeze({\n keyEncoding: this[kKeyEncoding].commonName\n })\n }\n\n // Let subclass finish its constructor\n this.nextTick(() => {\n if (this[kDeferOpen]) {\n this.open({ passive: false }, noop)\n }\n })\n }\n\n get status () {\n return this[kStatus]\n }\n\n keyEncoding (encoding) {\n return this[kTranscoder].encoding(encoding != null ? encoding : this[kKeyEncoding])\n }\n\n valueEncoding (encoding) {\n return this[kTranscoder].encoding(encoding != null ? encoding : this[kValueEncoding])\n }\n\n open (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n\n options = { ...this[kOptions], ...getOptions(options) }\n\n options.createIfMissing = options.createIfMissing !== false\n options.errorIfExists = !!options.errorIfExists\n\n const maybeOpened = (err) => {\n if (this[kStatus] === 'closing' || this[kStatus] === 'opening') {\n // Wait until pending state changes are done\n this.once(kLanded, err ? () => maybeOpened(err) : maybeOpened)\n } else if (this[kStatus] !== 'open') {\n callback(new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN',\n cause: err\n }))\n } else {\n callback()\n }\n }\n\n if (options.passive) {\n if (this[kStatus] === 'opening') {\n this.once(kLanded, maybeOpened)\n } else {\n this.nextTick(maybeOpened)\n }\n } else if (this[kStatus] === 'closed' || this[kDeferOpen]) {\n this[kDeferOpen] = false\n this[kStatus] = 'opening'\n this.emit('opening')\n\n this._open(options, (err) => {\n if (err) {\n this[kStatus] = 'closed'\n\n // Resources must be safe to close in any db state\n this[kCloseResources](() => {\n this.emit(kLanded)\n maybeOpened(err)\n })\n\n this[kUndefer]()\n return\n }\n\n this[kStatus] = 'open'\n this[kUndefer]()\n this.emit(kLanded)\n\n // Only emit public event if pending state changes are done\n if (this[kStatus] === 'open') this.emit('open')\n\n // TODO (next major): remove this alias\n if (this[kStatus] === 'open') this.emit('ready')\n\n maybeOpened()\n })\n } else if (this[kStatus] === 'open') {\n this.nextTick(maybeOpened)\n } else {\n this.once(kLanded, () => this.open(options, callback))\n }\n\n return callback[kPromise]\n }\n\n _open (options, callback) {\n this.nextTick(callback)\n }\n\n close (callback) {\n callback = fromCallback(callback, kPromise)\n\n const maybeClosed = (err) => {\n if (this[kStatus] === 'opening' || this[kStatus] === 'closing') {\n // Wait until pending state changes are done\n this.once(kLanded, err ? maybeClosed(err) : maybeClosed)\n } else if (this[kStatus] !== 'closed') {\n callback(new ModuleError('Database is not closed', {\n code: 'LEVEL_DATABASE_NOT_CLOSED',\n cause: err\n }))\n } else {\n callback()\n }\n }\n\n if (this[kStatus] === 'open') {\n this[kStatus] = 'closing'\n this.emit('closing')\n\n const cancel = (err) => {\n this[kStatus] = 'open'\n this[kUndefer]()\n this.emit(kLanded)\n maybeClosed(err)\n }\n\n this[kCloseResources](() => {\n this._close((err) => {\n if (err) return cancel(err)\n\n this[kStatus] = 'closed'\n this[kUndefer]()\n this.emit(kLanded)\n\n // Only emit public event if pending state changes are done\n if (this[kStatus] === 'closed') this.emit('closed')\n\n maybeClosed()\n })\n })\n } else if (this[kStatus] === 'closed') {\n this.nextTick(maybeClosed)\n } else {\n this.once(kLanded, () => this.close(callback))\n }\n\n return callback[kPromise]\n }\n\n [kCloseResources] (callback) {\n if (this[kResources].size === 0) {\n return this.nextTick(callback)\n }\n\n let pending = this[kResources].size\n let sync = true\n\n const next = () => {\n if (--pending === 0) {\n // We don't have tests for generic resources, so dezalgo\n if (sync) this.nextTick(callback)\n else callback()\n }\n }\n\n // In parallel so that all resources know they are closed\n for (const resource of this[kResources]) {\n resource.close(next)\n }\n\n sync = false\n this[kResources].clear()\n }\n\n _close (callback) {\n this.nextTick(callback)\n }\n\n get (key, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].entry)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.get(key, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const err = this._checkKey(key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const valueEncoding = this.valueEncoding(options.valueEncoding)\n const keyFormat = keyEncoding.format\n const valueFormat = valueEncoding.format\n\n // Forward encoding options to the underlying store\n if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n // Avoid spread operator because of https://bugs.chromium.org/p/chromium/issues/detail?id=1204540\n options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n }\n\n this._get(this.prefixKey(keyEncoding.encode(key), keyFormat), options, (err, value) => {\n if (err) {\n // Normalize not found error for backwards compatibility with abstract-leveldown and level(up)\n if (err.code === 'LEVEL_NOT_FOUND' || err.notFound || /NotFound/i.test(err)) {\n if (!err.code) err.code = 'LEVEL_NOT_FOUND' // Preferred way going forward\n if (!err.notFound) err.notFound = true // Same as level-errors\n if (!err.status) err.status = 404 // Same as level-errors\n }\n\n return callback(err)\n }\n\n try {\n value = valueEncoding.decode(value)\n } catch (err) {\n return callback(new ModuleError('Could not decode value', {\n code: 'LEVEL_DECODE_ERROR',\n cause: err\n }))\n }\n\n callback(null, value)\n })\n\n return callback[kPromise]\n }\n\n _get (key, options, callback) {\n this.nextTick(callback, new Error('NotFound'))\n }\n\n getMany (keys, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].entry)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.getMany(keys, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n if (!Array.isArray(keys)) {\n this.nextTick(callback, new TypeError(\"The first argument 'keys' must be an array\"))\n return callback[kPromise]\n }\n\n if (keys.length === 0) {\n this.nextTick(callback, null, [])\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const valueEncoding = this.valueEncoding(options.valueEncoding)\n const keyFormat = keyEncoding.format\n const valueFormat = valueEncoding.format\n\n // Forward encoding options\n if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n }\n\n const mappedKeys = new Array(keys.length)\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n const err = this._checkKey(key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n mappedKeys[i] = this.prefixKey(keyEncoding.encode(key), keyFormat)\n }\n\n this._getMany(mappedKeys, options, (err, values) => {\n if (err) return callback(err)\n\n try {\n for (let i = 0; i < values.length; i++) {\n if (values[i] !== undefined) {\n values[i] = valueEncoding.decode(values[i])\n }\n }\n } catch (err) {\n return callback(new ModuleError(`Could not decode one or more of ${values.length} value(s)`, {\n code: 'LEVEL_DECODE_ERROR',\n cause: err\n }))\n }\n\n callback(null, values)\n })\n\n return callback[kPromise]\n }\n\n _getMany (keys, options, callback) {\n this.nextTick(callback, null, new Array(keys.length).fill(undefined))\n }\n\n put (key, value, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].entry)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.put(key, value, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const err = this._checkKey(key) || this._checkValue(value)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const valueEncoding = this.valueEncoding(options.valueEncoding)\n const keyFormat = keyEncoding.format\n const valueFormat = valueEncoding.format\n\n // Forward encoding options\n if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n }\n\n const mappedKey = this.prefixKey(keyEncoding.encode(key), keyFormat)\n const mappedValue = valueEncoding.encode(value)\n\n this._put(mappedKey, mappedValue, options, (err) => {\n if (err) return callback(err)\n this.emit('put', key, value)\n callback()\n })\n\n return callback[kPromise]\n }\n\n _put (key, value, options, callback) {\n this.nextTick(callback)\n }\n\n del (key, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].key)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.del(key, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const err = this._checkKey(key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const keyFormat = keyEncoding.format\n\n // Forward encoding options\n if (options.keyEncoding !== keyFormat) {\n options = Object.assign({}, options, { keyEncoding: keyFormat })\n }\n\n this._del(this.prefixKey(keyEncoding.encode(key), keyFormat), options, (err) => {\n if (err) return callback(err)\n this.emit('del', key)\n callback()\n })\n\n return callback[kPromise]\n }\n\n _del (key, options, callback) {\n this.nextTick(callback)\n }\n\n batch (operations, options, callback) {\n if (!arguments.length) {\n if (this[kStatus] === 'opening') return new DefaultChainedBatch(this)\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n return this._chainedBatch()\n }\n\n if (typeof operations === 'function') callback = operations\n else callback = getCallback(options, callback)\n\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].empty)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.batch(operations, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n if (!Array.isArray(operations)) {\n this.nextTick(callback, new TypeError(\"The first argument 'operations' must be an array\"))\n return callback[kPromise]\n }\n\n if (operations.length === 0) {\n this.nextTick(callback)\n return callback[kPromise]\n }\n\n const mapped = new Array(operations.length)\n const { keyEncoding: ke, valueEncoding: ve, ...forward } = options\n\n for (let i = 0; i < operations.length; i++) {\n if (typeof operations[i] !== 'object' || operations[i] === null) {\n this.nextTick(callback, new TypeError('A batch operation must be an object'))\n return callback[kPromise]\n }\n\n const op = Object.assign({}, operations[i])\n\n if (op.type !== 'put' && op.type !== 'del') {\n this.nextTick(callback, new TypeError(\"A batch operation must have a type property that is 'put' or 'del'\"))\n return callback[kPromise]\n }\n\n const err = this._checkKey(op.key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const db = op.sublevel != null ? op.sublevel : this\n const keyEncoding = db.keyEncoding(op.keyEncoding || ke)\n const keyFormat = keyEncoding.format\n\n op.key = db.prefixKey(keyEncoding.encode(op.key), keyFormat)\n op.keyEncoding = keyFormat\n\n if (op.type === 'put') {\n const valueErr = this._checkValue(op.value)\n\n if (valueErr) {\n this.nextTick(callback, valueErr)\n return callback[kPromise]\n }\n\n const valueEncoding = db.valueEncoding(op.valueEncoding || ve)\n\n op.value = valueEncoding.encode(op.value)\n op.valueEncoding = valueEncoding.format\n }\n\n // Prevent double prefixing\n if (db !== this) {\n op.sublevel = null\n }\n\n mapped[i] = op\n }\n\n this._batch(mapped, forward, (err) => {\n if (err) return callback(err)\n this.emit('batch', operations)\n callback()\n })\n\n return callback[kPromise]\n }\n\n _batch (operations, options, callback) {\n this.nextTick(callback)\n }\n\n sublevel (name, options) {\n return this._sublevel(name, AbstractSublevel.defaults(options))\n }\n\n _sublevel (name, options) {\n return new AbstractSublevel(this, name, options)\n }\n\n prefixKey (key, keyFormat) {\n return key\n }\n\n clear (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].empty)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.clear(options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const original = options\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n\n options = rangeOptions(options, keyEncoding)\n options.keyEncoding = keyEncoding.format\n\n if (options.limit === 0) {\n this.nextTick(callback)\n } else {\n this._clear(options, (err) => {\n if (err) return callback(err)\n this.emit('clear', original)\n callback()\n })\n }\n\n return callback[kPromise]\n }\n\n _clear (options, callback) {\n this.nextTick(callback)\n }\n\n iterator (options) {\n const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n options = rangeOptions(options, keyEncoding)\n options.keys = options.keys !== false\n options.values = options.values !== false\n\n // We need the original encoding options in AbstractIterator in order to decode data\n options[AbstractIterator.keyEncoding] = keyEncoding\n options[AbstractIterator.valueEncoding] = valueEncoding\n\n // Forward encoding options to private API\n options.keyEncoding = keyEncoding.format\n options.valueEncoding = valueEncoding.format\n\n if (this[kStatus] === 'opening') {\n return new DeferredIterator(this, options)\n } else if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n\n return this._iterator(options)\n }\n\n _iterator (options) {\n return new AbstractIterator(this, options)\n }\n\n keys (options) {\n // Also include valueEncoding (though unused) because we may fallback to _iterator()\n const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n options = rangeOptions(options, keyEncoding)\n\n // We need the original encoding options in AbstractKeyIterator in order to decode data\n options[AbstractIterator.keyEncoding] = keyEncoding\n options[AbstractIterator.valueEncoding] = valueEncoding\n\n // Forward encoding options to private API\n options.keyEncoding = keyEncoding.format\n options.valueEncoding = valueEncoding.format\n\n if (this[kStatus] === 'opening') {\n return new DeferredKeyIterator(this, options)\n } else if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n\n return this._keys(options)\n }\n\n _keys (options) {\n return new DefaultKeyIterator(this, options)\n }\n\n values (options) {\n const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n options = rangeOptions(options, keyEncoding)\n\n // We need the original encoding options in AbstractValueIterator in order to decode data\n options[AbstractIterator.keyEncoding] = keyEncoding\n options[AbstractIterator.valueEncoding] = valueEncoding\n\n // Forward encoding options to private API\n options.keyEncoding = keyEncoding.format\n options.valueEncoding = valueEncoding.format\n\n if (this[kStatus] === 'opening') {\n return new DeferredValueIterator(this, options)\n } else if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n\n return this._values(options)\n }\n\n _values (options) {\n return new DefaultValueIterator(this, options)\n }\n\n defer (fn) {\n if (typeof fn !== 'function') {\n throw new TypeError('The first argument must be a function')\n }\n\n this[kOperations].push(fn)\n }\n\n [kUndefer] () {\n if (this[kOperations].length === 0) {\n return\n }\n\n const operations = this[kOperations]\n this[kOperations] = []\n\n for (const op of operations) {\n op()\n }\n }\n\n // TODO: docs and types\n attachResource (resource) {\n if (typeof resource !== 'object' || resource === null ||\n typeof resource.close !== 'function') {\n throw new TypeError('The first argument must be a resource object')\n }\n\n this[kResources].add(resource)\n }\n\n // TODO: docs and types\n detachResource (resource) {\n this[kResources].delete(resource)\n }\n\n _chainedBatch () {\n return new DefaultChainedBatch(this)\n }\n\n _checkKey (key) {\n if (key === null || key === undefined) {\n return new ModuleError('Key cannot be null or undefined', {\n code: 'LEVEL_INVALID_KEY'\n })\n }\n }\n\n _checkValue (value) {\n if (value === null || value === undefined) {\n return new ModuleError('Value cannot be null or undefined', {\n code: 'LEVEL_INVALID_VALUE'\n })\n }\n }\n}\n\n// Expose browser-compatible nextTick for dependents\n// TODO: after we drop node 10, also use queueMicrotask in node\nAbstractLevel.prototype.nextTick = require('./lib/next-tick')\n\nconst { AbstractSublevel } = require('./lib/abstract-sublevel')({ AbstractLevel })\n\nexports.AbstractLevel = AbstractLevel\nexports.AbstractSublevel = AbstractSublevel\n\nconst maybeError = function (db, callback) {\n if (db[kStatus] !== 'open') {\n db.nextTick(callback, new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n }))\n return true\n }\n\n return false\n}\n\nconst formats = function (db) {\n return Object.keys(db.supports.encodings)\n .filter(k => !!db.supports.encodings[k])\n}\n", "'use strict'\n\nexports.AbstractLevel = require('./abstract-level').AbstractLevel\nexports.AbstractSublevel = require('./abstract-level').AbstractSublevel\nexports.AbstractIterator = require('./abstract-iterator').AbstractIterator\nexports.AbstractKeyIterator = require('./abstract-iterator').AbstractKeyIterator\nexports.AbstractValueIterator = require('./abstract-iterator').AbstractValueIterator\nexports.AbstractChainedBatch = require('./abstract-chained-batch').AbstractChainedBatch\n", "/*! run-parallel-limit. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\nmodule.exports = runParallelLimit\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallelLimit (tasks, limit, cb) {\n if (typeof limit !== 'number') throw new Error('second argument must be a Number')\n let results, len, pending, keys, isErrored\n let isSync = true\n let next\n\n if (Array.isArray(tasks)) {\n results = []\n pending = len = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = len = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (err) isErrored = true\n if (--pending === 0 || err) {\n done(err)\n } else if (!isErrored && next < len) {\n let key\n if (keys) {\n key = keys[next]\n next += 1\n tasks[key](function (err, result) { each(key, err, result) })\n } else {\n key = next\n next += 1\n tasks[key](function (err, result) { each(key, err, result) })\n }\n }\n }\n\n next = limit\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.some(function (key, i) {\n tasks[key](function (err, result) { each(key, err, result) })\n if (i === limit - 1) return true // early return\n return false\n })\n } else {\n // array\n tasks.some(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n if (i === limit - 1) return true // early return\n return false\n })\n }\n\n isSync = false\n}\n", "/* global IDBKeyRange */\n\n'use strict'\n\nmodule.exports = function createKeyRange (options) {\n const lower = options.gte !== undefined ? options.gte : options.gt !== undefined ? options.gt : undefined\n const upper = options.lte !== undefined ? options.lte : options.lt !== undefined ? options.lt : undefined\n const lowerExclusive = options.gte === undefined\n const upperExclusive = options.lte === undefined\n\n if (lower !== undefined && upper !== undefined) {\n return IDBKeyRange.bound(lower, upper, lowerExclusive, upperExclusive)\n } else if (lower !== undefined) {\n return IDBKeyRange.lowerBound(lower, lowerExclusive)\n } else if (upper !== undefined) {\n return IDBKeyRange.upperBound(upper, upperExclusive)\n } else {\n return null\n }\n}\n", "'use strict'\n\nconst textEncoder = new TextEncoder()\n\nmodule.exports = function (data) {\n if (data instanceof Uint8Array) {\n return data\n } else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data)\n } else {\n // Non-binary data stored with an old version (level-js < 5.0.0)\n return textEncoder.encode(data)\n }\n}\n", "'use strict'\n\nconst { AbstractIterator } = require('abstract-level')\nconst createKeyRange = require('./util/key-range')\nconst deserialize = require('./util/deserialize')\n\nconst kCache = Symbol('cache')\nconst kFinished = Symbol('finished')\nconst kOptions = Symbol('options')\nconst kCurrentOptions = Symbol('currentOptions')\nconst kPosition = Symbol('position')\nconst kLocation = Symbol('location')\nconst kFirst = Symbol('first')\nconst emptyOptions = {}\n\nclass Iterator extends AbstractIterator {\n constructor (db, location, options) {\n super(db, options)\n\n this[kCache] = []\n this[kFinished] = this.limit === 0\n this[kOptions] = options\n this[kCurrentOptions] = { ...options }\n this[kPosition] = undefined\n this[kLocation] = location\n this[kFirst] = true\n }\n\n // Note: if called by _all() then size can be Infinity. This is an internal\n // detail; by design AbstractIterator.nextv() does not support Infinity.\n _nextv (size, options, callback) {\n this[kFirst] = false\n\n if (this[kFinished]) {\n return this.nextTick(callback, null, [])\n } else if (this[kCache].length > 0) {\n // TODO: mixing next and nextv is not covered by test suite\n size = Math.min(size, this[kCache].length)\n return this.nextTick(callback, null, this[kCache].splice(0, size))\n }\n\n // Adjust range by what we already visited\n if (this[kPosition] !== undefined) {\n if (this[kOptions].reverse) {\n this[kCurrentOptions].lt = this[kPosition]\n this[kCurrentOptions].lte = undefined\n } else {\n this[kCurrentOptions].gt = this[kPosition]\n this[kCurrentOptions].gte = undefined\n }\n }\n\n let keyRange\n\n try {\n keyRange = createKeyRange(this[kCurrentOptions])\n } catch (_) {\n // The lower key is greater than the upper key.\n // IndexedDB throws an error, but we'll just return 0 results.\n this[kFinished] = true\n return this.nextTick(callback, null, [])\n }\n\n const transaction = this.db.db.transaction([this[kLocation]], 'readonly')\n const store = transaction.objectStore(this[kLocation])\n const entries = []\n\n if (!this[kOptions].reverse) {\n let keys\n let values\n\n const complete = () => {\n // Wait for both requests to complete\n if (keys === undefined || values === undefined) return\n\n const length = Math.max(keys.length, values.length)\n\n if (length === 0 || size === Infinity) {\n this[kFinished] = true\n } else {\n this[kPosition] = keys[length - 1]\n }\n\n // Resize\n entries.length = length\n\n // Merge keys and values\n for (let i = 0; i < length; i++) {\n const key = keys[i]\n const value = values[i]\n\n entries[i] = [\n this[kOptions].keys && key !== undefined ? deserialize(key) : undefined,\n this[kOptions].values && value !== undefined ? deserialize(value) : undefined\n ]\n }\n\n maybeCommit(transaction)\n }\n\n // If keys were not requested and size is Infinity, we don't have to keep\n // track of position and can thus skip getting keys.\n if (this[kOptions].keys || size < Infinity) {\n store.getAllKeys(keyRange, size < Infinity ? size : undefined).onsuccess = (ev) => {\n keys = ev.target.result\n complete()\n }\n } else {\n keys = []\n this.nextTick(complete)\n }\n\n if (this[kOptions].values) {\n store.getAll(keyRange, size < Infinity ? size : undefined).onsuccess = (ev) => {\n values = ev.target.result\n complete()\n }\n } else {\n values = []\n this.nextTick(complete)\n }\n } else {\n // Can't use getAll() in reverse, so use a slower cursor that yields one item at a time\n // TODO: test if all target browsers support openKeyCursor\n const method = !this[kOptions].values && store.openKeyCursor ? 'openKeyCursor' : 'openCursor'\n\n store[method](keyRange, 'prev').onsuccess = (ev) => {\n const cursor = ev.target.result\n\n if (cursor) {\n const { key, value } = cursor\n this[kPosition] = key\n\n entries.push([\n this[kOptions].keys && key !== undefined ? deserialize(key) : undefined,\n this[kOptions].values && value !== undefined ? deserialize(value) : undefined\n ])\n\n if (entries.length < size) {\n cursor.continue()\n } else {\n maybeCommit(transaction)\n }\n } else {\n this[kFinished] = true\n }\n }\n }\n\n // If an error occurs (on the request), the transaction will abort.\n transaction.onabort = () => {\n callback(transaction.error || new Error('aborted by user'))\n callback = null\n }\n\n transaction.oncomplete = () => {\n callback(null, entries)\n callback = null\n }\n }\n\n _next (callback) {\n if (this[kCache].length > 0) {\n const [key, value] = this[kCache].shift()\n this.nextTick(callback, null, key, value)\n } else if (this[kFinished]) {\n this.nextTick(callback)\n } else {\n let size = Math.min(100, this.limit - this.count)\n\n if (this[kFirst]) {\n // It's common to only want one entry initially or after a seek()\n this[kFirst] = false\n size = 1\n }\n\n this._nextv(size, emptyOptions, (err, entries) => {\n if (err) return callback(err)\n this[kCache] = entries\n this._next(callback)\n })\n }\n }\n\n _all (options, callback) {\n this[kFirst] = false\n\n // TODO: mixing next and all is not covered by test suite\n const cache = this[kCache].splice(0, this[kCache].length)\n const size = this.limit - this.count - cache.length\n\n if (size <= 0) {\n return this.nextTick(callback, null, cache)\n }\n\n this._nextv(size, emptyOptions, (err, entries) => {\n if (err) return callback(err)\n if (cache.length > 0) entries = cache.concat(entries)\n callback(null, entries)\n })\n }\n\n _seek (target, options) {\n this[kFirst] = true\n this[kCache] = []\n this[kFinished] = false\n this[kPosition] = undefined\n\n // TODO: not covered by test suite\n this[kCurrentOptions] = { ...this[kOptions] }\n\n let keyRange\n\n try {\n keyRange = createKeyRange(this[kOptions])\n } catch (_) {\n this[kFinished] = true\n return\n }\n\n if (keyRange !== null && !keyRange.includes(target)) {\n this[kFinished] = true\n } else if (this[kOptions].reverse) {\n this[kCurrentOptions].lte = target\n } else {\n this[kCurrentOptions].gte = target\n }\n }\n}\n\nexports.Iterator = Iterator\n\nfunction maybeCommit (transaction) {\n // Commit (meaning close) now instead of waiting for auto-commit\n if (typeof transaction.commit === 'function') {\n transaction.commit()\n }\n}\n", "'use strict'\n\nmodule.exports = function clear (db, location, keyRange, options, callback) {\n if (options.limit === 0) return db.nextTick(callback)\n\n const transaction = db.db.transaction([location], 'readwrite')\n const store = transaction.objectStore(location)\n let count = 0\n\n transaction.oncomplete = function () {\n callback()\n }\n\n transaction.onabort = function () {\n callback(transaction.error || new Error('aborted by user'))\n }\n\n // A key cursor is faster (skips reading values) but not supported by IE\n // TODO: we no longer support IE. Test others\n const method = store.openKeyCursor ? 'openKeyCursor' : 'openCursor'\n const direction = options.reverse ? 'prev' : 'next'\n\n store[method](keyRange, direction).onsuccess = function (ev) {\n const cursor = ev.target.result\n\n if (cursor) {\n // Wait for a request to complete before continuing, saving CPU.\n store.delete(cursor.key).onsuccess = function () {\n if (options.limit <= 0 || ++count < options.limit) {\n cursor.continue()\n }\n }\n }\n }\n}\n", "/* global indexedDB */\n\n'use strict'\n\nconst { AbstractLevel } = require('abstract-level')\nconst ModuleError = require('module-error')\nconst parallel = require('run-parallel-limit')\nconst { fromCallback } = require('catering')\nconst { Iterator } = require('./iterator')\nconst deserialize = require('./util/deserialize')\nconst clear = require('./util/clear')\nconst createKeyRange = require('./util/key-range')\n\n// Keep as-is for compatibility with existing level-js databases\nconst DEFAULT_PREFIX = 'level-js-'\n\nconst kIDB = Symbol('idb')\nconst kNamePrefix = Symbol('namePrefix')\nconst kLocation = Symbol('location')\nconst kVersion = Symbol('version')\nconst kStore = Symbol('store')\nconst kOnComplete = Symbol('onComplete')\nconst kPromise = Symbol('promise')\n\nclass BrowserLevel extends AbstractLevel {\n constructor (location, options, _) {\n // To help migrating to abstract-level\n if (typeof options === 'function' || typeof _ === 'function') {\n throw new ModuleError('The levelup-style callback argument has been removed', {\n code: 'LEVEL_LEGACY'\n })\n }\n\n const { prefix, version, ...forward } = options || {}\n\n super({\n encodings: { view: true },\n snapshots: false,\n createIfMissing: false,\n errorIfExists: false,\n seek: true\n }, forward)\n\n if (typeof location !== 'string') {\n throw new Error('constructor requires a location string argument')\n }\n\n // TODO (next major): remove default prefix\n this[kLocation] = location\n this[kNamePrefix] = prefix == null ? DEFAULT_PREFIX : prefix\n this[kVersion] = parseInt(version || 1, 10)\n this[kIDB] = null\n }\n\n get location () {\n return this[kLocation]\n }\n\n get namePrefix () {\n return this[kNamePrefix]\n }\n\n get version () {\n return this[kVersion]\n }\n\n // Exposed for backwards compat and unit tests\n get db () {\n return this[kIDB]\n }\n\n get type () {\n return 'browser-level'\n }\n\n _open (options, callback) {\n const req = indexedDB.open(this[kNamePrefix] + this[kLocation], this[kVersion])\n\n req.onerror = function () {\n callback(req.error || new Error('unknown error'))\n }\n\n req.onsuccess = () => {\n this[kIDB] = req.result\n callback()\n }\n\n req.onupgradeneeded = (ev) => {\n const db = ev.target.result\n\n if (!db.objectStoreNames.contains(this[kLocation])) {\n db.createObjectStore(this[kLocation])\n }\n }\n }\n\n [kStore] (mode) {\n const transaction = this[kIDB].transaction([this[kLocation]], mode)\n return transaction.objectStore(this[kLocation])\n }\n\n [kOnComplete] (request, callback) {\n const transaction = request.transaction\n\n // Take advantage of the fact that a non-canceled request error aborts\n // the transaction. I.e. no need to listen for \"request.onerror\".\n transaction.onabort = function () {\n callback(transaction.error || new Error('aborted by user'))\n }\n\n transaction.oncomplete = function () {\n callback(null, request.result)\n }\n }\n\n _get (key, options, callback) {\n const store = this[kStore]('readonly')\n let req\n\n try {\n req = store.get(key)\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, function (err, value) {\n if (err) return callback(err)\n\n if (value === undefined) {\n return callback(new ModuleError('Entry not found', {\n code: 'LEVEL_NOT_FOUND'\n }))\n }\n\n callback(null, deserialize(value))\n })\n }\n\n _getMany (keys, options, callback) {\n const store = this[kStore]('readonly')\n const tasks = keys.map((key) => (next) => {\n let request\n\n try {\n request = store.get(key)\n } catch (err) {\n return next(err)\n }\n\n request.onsuccess = () => {\n const value = request.result\n next(null, value === undefined ? value : deserialize(value))\n }\n\n request.onerror = (ev) => {\n ev.stopPropagation()\n next(request.error)\n }\n })\n\n parallel(tasks, 16, callback)\n }\n\n _del (key, options, callback) {\n const store = this[kStore]('readwrite')\n let req\n\n try {\n req = store.delete(key)\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, callback)\n }\n\n _put (key, value, options, callback) {\n const store = this[kStore]('readwrite')\n let req\n\n try {\n // Will throw a DataError or DataCloneError if the environment\n // does not support serializing the key or value respectively.\n req = store.put(value, key)\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, callback)\n }\n\n // TODO: implement key and value iterators\n _iterator (options) {\n return new Iterator(this, this[kLocation], options)\n }\n\n _batch (operations, options, callback) {\n const store = this[kStore]('readwrite')\n const transaction = store.transaction\n let index = 0\n let error\n\n transaction.onabort = function () {\n callback(error || transaction.error || new Error('aborted by user'))\n }\n\n transaction.oncomplete = function () {\n callback()\n }\n\n // Wait for a request to complete before making the next, saving CPU.\n function loop () {\n const op = operations[index++]\n const key = op.key\n\n let req\n\n try {\n req = op.type === 'del' ? store.delete(key) : store.put(op.value, key)\n } catch (err) {\n error = err\n transaction.abort()\n return\n }\n\n if (index < operations.length) {\n req.onsuccess = loop\n } else if (typeof transaction.commit === 'function') {\n // Commit now instead of waiting for auto-commit\n transaction.commit()\n }\n }\n\n loop()\n }\n\n _clear (options, callback) {\n let keyRange\n let req\n\n try {\n keyRange = createKeyRange(options)\n } catch (e) {\n // The lower key is greater than the upper key.\n // IndexedDB throws an error, but we'll just do nothing.\n return this.nextTick(callback)\n }\n\n if (options.limit >= 0) {\n // IDBObjectStore#delete(range) doesn't have such an option.\n // Fall back to cursor-based implementation.\n return clear(this, this[kLocation], keyRange, options, callback)\n }\n\n try {\n const store = this[kStore]('readwrite')\n req = keyRange ? store.delete(keyRange) : store.clear()\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, callback)\n }\n\n _close (callback) {\n this[kIDB].close()\n this.nextTick(callback)\n }\n}\n\nBrowserLevel.destroy = function (location, prefix, callback) {\n if (typeof prefix === 'function') {\n callback = prefix\n prefix = DEFAULT_PREFIX\n }\n\n callback = fromCallback(callback, kPromise)\n const request = indexedDB.deleteDatabase(prefix + location)\n\n request.onsuccess = function () {\n callback()\n }\n\n request.onerror = function (err) {\n callback(err)\n }\n\n return callback[kPromise]\n}\n\nexports.BrowserLevel = BrowserLevel\n", "exports.Level = require('browser-level').BrowserLevel\n", "'use strict'\n\n/*\n This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at\n\n https://github.com/nodejs/node/blob/master/lib/internal/per_context/primordials.js\n\n Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\nmodule.exports = {\n ArrayIsArray(self) {\n return Array.isArray(self)\n },\n ArrayPrototypeIncludes(self, el) {\n return self.includes(el)\n },\n ArrayPrototypeIndexOf(self, el) {\n return self.indexOf(el)\n },\n ArrayPrototypeJoin(self, sep) {\n return self.join(sep)\n },\n ArrayPrototypeMap(self, fn) {\n return self.map(fn)\n },\n ArrayPrototypePop(self, el) {\n return self.pop(el)\n },\n ArrayPrototypePush(self, el) {\n return self.push(el)\n },\n ArrayPrototypeSlice(self, start, end) {\n return self.slice(start, end)\n },\n Error,\n FunctionPrototypeCall(fn, thisArgs, ...args) {\n return fn.call(thisArgs, ...args)\n },\n FunctionPrototypeSymbolHasInstance(self, instance) {\n return Function.prototype[Symbol.hasInstance].call(self, instance)\n },\n MathFloor: Math.floor,\n Number,\n NumberIsInteger: Number.isInteger,\n NumberIsNaN: Number.isNaN,\n NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER,\n NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER,\n NumberParseInt: Number.parseInt,\n ObjectDefineProperties(self, props) {\n return Object.defineProperties(self, props)\n },\n ObjectDefineProperty(self, name, prop) {\n return Object.defineProperty(self, name, prop)\n },\n ObjectGetOwnPropertyDescriptor(self, name) {\n return Object.getOwnPropertyDescriptor(self, name)\n },\n ObjectKeys(obj) {\n return Object.keys(obj)\n },\n ObjectSetPrototypeOf(target, proto) {\n return Object.setPrototypeOf(target, proto)\n },\n Promise,\n PromisePrototypeCatch(self, fn) {\n return self.catch(fn)\n },\n PromisePrototypeThen(self, thenFn, catchFn) {\n return self.then(thenFn, catchFn)\n },\n PromiseReject(err) {\n return Promise.reject(err)\n },\n ReflectApply: Reflect.apply,\n RegExpPrototypeTest(self, value) {\n return self.test(value)\n },\n SafeSet: Set,\n String,\n StringPrototypeSlice(self, start, end) {\n return self.slice(start, end)\n },\n StringPrototypeToLowerCase(self) {\n return self.toLowerCase()\n },\n StringPrototypeToUpperCase(self) {\n return self.toUpperCase()\n },\n StringPrototypeTrim(self) {\n return self.trim()\n },\n Symbol,\n SymbolFor: Symbol.for,\n SymbolAsyncIterator: Symbol.asyncIterator,\n SymbolHasInstance: Symbol.hasInstance,\n SymbolIterator: Symbol.iterator,\n TypedArrayPrototypeSet(self, buf, len) {\n return self.set(buf, len)\n },\n Uint8Array\n}\n", "'use strict'\n\nconst bufferModule = require('buffer')\nconst AsyncFunction = Object.getPrototypeOf(async function () {}).constructor\nconst Blob = globalThis.Blob || bufferModule.Blob\n/* eslint-disable indent */\nconst isBlob =\n typeof Blob !== 'undefined'\n ? function isBlob(b) {\n // eslint-disable-next-line indent\n return b instanceof Blob\n }\n : function isBlob(b) {\n return false\n }\n/* eslint-enable indent */\n\n// This is a simplified version of AggregateError\nclass AggregateError extends Error {\n constructor(errors) {\n if (!Array.isArray(errors)) {\n throw new TypeError(`Expected input to be an Array, got ${typeof errors}`)\n }\n let message = ''\n for (let i = 0; i < errors.length; i++) {\n message += ` ${errors[i].stack}\\n`\n }\n super(message)\n this.name = 'AggregateError'\n this.errors = errors\n }\n}\nmodule.exports = {\n AggregateError,\n kEmptyObject: Object.freeze({}),\n once(callback) {\n let called = false\n return function (...args) {\n if (called) {\n return\n }\n called = true\n callback.apply(this, args)\n }\n },\n createDeferredPromise: function () {\n let resolve\n let reject\n\n // eslint-disable-next-line promise/param-names\n const promise = new Promise((res, rej) => {\n resolve = res\n reject = rej\n })\n return {\n promise,\n resolve,\n reject\n }\n },\n promisify(fn) {\n return new Promise((resolve, reject) => {\n fn((err, ...args) => {\n if (err) {\n return reject(err)\n }\n return resolve(...args)\n })\n })\n },\n debuglog() {\n return function () {}\n },\n format(format, ...args) {\n // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args\n return format.replace(/%([sdifj])/g, function (...[_unused, type]) {\n const replacement = args.shift()\n if (type === 'f') {\n return replacement.toFixed(6)\n } else if (type === 'j') {\n return JSON.stringify(replacement)\n } else if (type === 's' && typeof replacement === 'object') {\n const ctor = replacement.constructor !== Object ? replacement.constructor.name : ''\n return `${ctor} {}`.trim()\n } else {\n return replacement.toString()\n }\n })\n },\n inspect(value) {\n // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options\n switch (typeof value) {\n case 'string':\n if (value.includes(\"'\")) {\n if (!value.includes('\"')) {\n return `\"${value}\"`\n } else if (!value.includes('`') && !value.includes('${')) {\n return `\\`${value}\\``\n }\n }\n return `'${value}'`\n case 'number':\n if (isNaN(value)) {\n return 'NaN'\n } else if (Object.is(value, -0)) {\n return String(value)\n }\n return value\n case 'bigint':\n return `${String(value)}n`\n case 'boolean':\n case 'undefined':\n return String(value)\n case 'object':\n return '{}'\n }\n },\n types: {\n isAsyncFunction(fn) {\n return fn instanceof AsyncFunction\n },\n isArrayBufferView(arr) {\n return ArrayBuffer.isView(arr)\n }\n },\n isBlob\n}\nmodule.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom')\n", "/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n", "'use strict'\n\nconst { format, inspect, AggregateError: CustomAggregateError } = require('./util')\n\n/*\n This file is a reduced and adapted version of the main lib/internal/errors.js file defined at\n\n https://github.com/nodejs/node/blob/master/lib/internal/errors.js\n\n Don't try to replace with the original file and keep it up to date (starting from E(...) definitions)\n with the upstream file.\n*/\n\nconst AggregateError = globalThis.AggregateError || CustomAggregateError\nconst kIsNodeError = Symbol('kIsNodeError')\nconst kTypes = [\n 'string',\n 'function',\n 'number',\n 'object',\n // Accept 'Function' and 'Object' as alternative to the lower cased version.\n 'Function',\n 'Object',\n 'boolean',\n 'bigint',\n 'symbol'\n]\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/\nconst nodeInternalPrefix = '__node_internal_'\nconst codes = {}\nfunction assert(value, message) {\n if (!value) {\n throw new codes.ERR_INTERNAL_ASSERTION(message)\n }\n}\n\n// Only use this for integers! Decimal numbers do not work with this function.\nfunction addNumericalSeparator(val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\nfunction getMessage(key, msg, args) {\n if (typeof msg === 'function') {\n assert(\n msg.length <= args.length,\n // Default options do not count.\n `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`\n )\n return msg(...args)\n }\n const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length\n assert(\n expectedLength === args.length,\n `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`\n )\n if (args.length === 0) {\n return msg\n }\n return format(msg, ...args)\n}\nfunction E(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n class NodeError extends Base {\n constructor(...args) {\n super(getMessage(code, message, args))\n }\n toString() {\n return `${this.name} [${code}]: ${this.message}`\n }\n }\n Object.defineProperties(NodeError.prototype, {\n name: {\n value: Base.name,\n writable: true,\n enumerable: false,\n configurable: true\n },\n toString: {\n value() {\n return `${this.name} [${code}]: ${this.message}`\n },\n writable: true,\n enumerable: false,\n configurable: true\n }\n })\n NodeError.prototype.code = code\n NodeError.prototype[kIsNodeError] = true\n codes[code] = NodeError\n}\nfunction hideStackFrames(fn) {\n // We rename the functions that will be hidden to cut off the stacktrace\n // at the outermost one\n const hidden = nodeInternalPrefix + fn.name\n Object.defineProperty(fn, 'name', {\n value: hidden\n })\n return fn\n}\nfunction aggregateTwoErrors(innerError, outerError) {\n if (innerError && outerError && innerError !== outerError) {\n if (Array.isArray(outerError.errors)) {\n // If `outerError` is already an `AggregateError`.\n outerError.errors.push(innerError)\n return outerError\n }\n const err = new AggregateError([outerError, innerError], outerError.message)\n err.code = outerError.code\n return err\n }\n return innerError || outerError\n}\nclass AbortError extends Error {\n constructor(message = 'The operation was aborted', options = undefined) {\n if (options !== undefined && typeof options !== 'object') {\n throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options)\n }\n super(message, options)\n this.code = 'ABORT_ERR'\n this.name = 'AbortError'\n }\n}\nE('ERR_ASSERTION', '%s', Error)\nE(\n 'ERR_INVALID_ARG_TYPE',\n (name, expected, actual) => {\n assert(typeof name === 'string', \"'name' must be a string\")\n if (!Array.isArray(expected)) {\n expected = [expected]\n }\n let msg = 'The '\n if (name.endsWith(' argument')) {\n // For cases like 'first argument'\n msg += `${name} `\n } else {\n msg += `\"${name}\" ${name.includes('.') ? 'property' : 'argument'} `\n }\n msg += 'must be '\n const types = []\n const instances = []\n const other = []\n for (const value of expected) {\n assert(typeof value === 'string', 'All expected entries have to be of type string')\n if (kTypes.includes(value)) {\n types.push(value.toLowerCase())\n } else if (classRegExp.test(value)) {\n instances.push(value)\n } else {\n assert(value !== 'object', 'The value \"object\" should be written as \"Object\"')\n other.push(value)\n }\n }\n\n // Special handle `object` in case other instances are allowed to outline\n // the differences between each other.\n if (instances.length > 0) {\n const pos = types.indexOf('object')\n if (pos !== -1) {\n types.splice(types, pos, 1)\n instances.push('Object')\n }\n }\n if (types.length > 0) {\n switch (types.length) {\n case 1:\n msg += `of type ${types[0]}`\n break\n case 2:\n msg += `one of type ${types[0]} or ${types[1]}`\n break\n default: {\n const last = types.pop()\n msg += `one of type ${types.join(', ')}, or ${last}`\n }\n }\n if (instances.length > 0 || other.length > 0) {\n msg += ' or '\n }\n }\n if (instances.length > 0) {\n switch (instances.length) {\n case 1:\n msg += `an instance of ${instances[0]}`\n break\n case 2:\n msg += `an instance of ${instances[0]} or ${instances[1]}`\n break\n default: {\n const last = instances.pop()\n msg += `an instance of ${instances.join(', ')}, or ${last}`\n }\n }\n if (other.length > 0) {\n msg += ' or '\n }\n }\n switch (other.length) {\n case 0:\n break\n case 1:\n if (other[0].toLowerCase() !== other[0]) {\n msg += 'an '\n }\n msg += `${other[0]}`\n break\n case 2:\n msg += `one of ${other[0]} or ${other[1]}`\n break\n default: {\n const last = other.pop()\n msg += `one of ${other.join(', ')}, or ${last}`\n }\n }\n if (actual == null) {\n msg += `. Received ${actual}`\n } else if (typeof actual === 'function' && actual.name) {\n msg += `. Received function ${actual.name}`\n } else if (typeof actual === 'object') {\n var _actual$constructor\n if (\n (_actual$constructor = actual.constructor) !== null &&\n _actual$constructor !== undefined &&\n _actual$constructor.name\n ) {\n msg += `. Received an instance of ${actual.constructor.name}`\n } else {\n const inspected = inspect(actual, {\n depth: -1\n })\n msg += `. Received ${inspected}`\n }\n } else {\n let inspected = inspect(actual, {\n colors: false\n })\n if (inspected.length > 25) {\n inspected = `${inspected.slice(0, 25)}...`\n }\n msg += `. Received type ${typeof actual} (${inspected})`\n }\n return msg\n },\n TypeError\n)\nE(\n 'ERR_INVALID_ARG_VALUE',\n (name, value, reason = 'is invalid') => {\n let inspected = inspect(value)\n if (inspected.length > 128) {\n inspected = inspected.slice(0, 128) + '...'\n }\n const type = name.includes('.') ? 'property' : 'argument'\n return `The ${type} '${name}' ${reason}. Received ${inspected}`\n },\n TypeError\n)\nE(\n 'ERR_INVALID_RETURN_VALUE',\n (input, name, value) => {\n var _value$constructor\n const type =\n value !== null &&\n value !== undefined &&\n (_value$constructor = value.constructor) !== null &&\n _value$constructor !== undefined &&\n _value$constructor.name\n ? `instance of ${value.constructor.name}`\n : `type ${typeof value}`\n return `Expected ${input} to be returned from the \"${name}\"` + ` function but got ${type}.`\n },\n TypeError\n)\nE(\n 'ERR_MISSING_ARGS',\n (...args) => {\n assert(args.length > 0, 'At least one arg needs to be specified')\n let msg\n const len = args.length\n args = (Array.isArray(args) ? args : [args]).map((a) => `\"${a}\"`).join(' or ')\n switch (len) {\n case 1:\n msg += `The ${args[0]} argument`\n break\n case 2:\n msg += `The ${args[0]} and ${args[1]} arguments`\n break\n default:\n {\n const last = args.pop()\n msg += `The ${args.join(', ')}, and ${last} arguments`\n }\n break\n }\n return `${msg} must be specified`\n },\n TypeError\n)\nE(\n 'ERR_OUT_OF_RANGE',\n (str, range, input) => {\n assert(range, 'Missing \"range\" argument')\n let received\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > 2n ** 32n || input < -(2n ** 32n)) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n } else {\n received = inspect(input)\n }\n return `The value of \"${str}\" is out of range. It must be ${range}. Received ${received}`\n },\n RangeError\n)\nE('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error)\nE('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error)\nE('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error)\nE('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error)\nE('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error)\nE('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError)\nE('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error)\nE('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error)\nE('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error)\nE('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error)\nE('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError)\nmodule.exports = {\n AbortError,\n aggregateTwoErrors: hideStackFrames(aggregateTwoErrors),\n hideStackFrames,\n codes\n}\n", "/* eslint jsdoc/require-jsdoc: \"error\" */\n\n'use strict'\n\nconst {\n ArrayIsArray,\n ArrayPrototypeIncludes,\n ArrayPrototypeJoin,\n ArrayPrototypeMap,\n NumberIsInteger,\n NumberIsNaN,\n NumberMAX_SAFE_INTEGER,\n NumberMIN_SAFE_INTEGER,\n NumberParseInt,\n ObjectPrototypeHasOwnProperty,\n RegExpPrototypeExec,\n String,\n StringPrototypeToUpperCase,\n StringPrototypeTrim\n} = require('../ours/primordials')\nconst {\n hideStackFrames,\n codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL }\n} = require('../ours/errors')\nconst { normalizeEncoding } = require('../ours/util')\nconst { isAsyncFunction, isArrayBufferView } = require('../ours/util').types\nconst signals = {}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isInt32(value) {\n return value === (value | 0)\n}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isUint32(value) {\n return value === value >>> 0\n}\nconst octalReg = /^[0-7]+$/\nconst modeDesc = 'must be a 32-bit unsigned integer or an octal string'\n\n/**\n * Parse and validate values that will be converted into mode_t (the S_*\n * constants). Only valid numbers and octal strings are allowed. They could be\n * converted to 32-bit unsigned integers or non-negative signed integers in the\n * C++ land, but any value higher than 0o777 will result in platform-specific\n * behaviors.\n *\n * @param {*} value Values to be validated\n * @param {string} name Name of the argument\n * @param {number} [def] If specified, will be returned for invalid values\n * @returns {number}\n */\nfunction parseFileMode(value, name, def) {\n if (typeof value === 'undefined') {\n value = def\n }\n if (typeof value === 'string') {\n if (RegExpPrototypeExec(octalReg, value) === null) {\n throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc)\n }\n value = NumberParseInt(value, 8)\n }\n validateUint32(value, name)\n return value\n}\n\n/**\n * @callback validateInteger\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInteger} */\nconst validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => {\n if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n})\n\n/**\n * @callback validateInt32\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInt32} */\nconst validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => {\n // The defaults for min and max correspond to the limits of 32-bit integers.\n if (typeof value !== 'number') {\n throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n if (!NumberIsInteger(value)) {\n throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n }\n if (value < min || value > max) {\n throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n }\n})\n\n/**\n * @callback validateUint32\n * @param {*} value\n * @param {string} name\n * @param {number|boolean} [positive=false]\n * @returns {asserts value is number}\n */\n\n/** @type {validateUint32} */\nconst validateUint32 = hideStackFrames((value, name, positive = false) => {\n if (typeof value !== 'number') {\n throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n if (!NumberIsInteger(value)) {\n throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n }\n const min = positive ? 1 : 0\n // 2 ** 32 === 4294967296\n const max = 4294967295\n if (value < min || value > max) {\n throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n }\n})\n\n/**\n * @callback validateString\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string}\n */\n\n/** @type {validateString} */\nfunction validateString(value, name) {\n if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value)\n}\n\n/**\n * @callback validateNumber\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateNumber} */\nfunction validateNumber(value, name, min = undefined, max) {\n if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n if (\n (min != null && value < min) ||\n (max != null && value > max) ||\n ((min != null || max != null) && NumberIsNaN(value))\n ) {\n throw new ERR_OUT_OF_RANGE(\n name,\n `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`,\n value\n )\n }\n}\n\n/**\n * @callback validateOneOf\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} oneOf\n */\n\n/** @type {validateOneOf} */\nconst validateOneOf = hideStackFrames((value, name, oneOf) => {\n if (!ArrayPrototypeIncludes(oneOf, value)) {\n const allowed = ArrayPrototypeJoin(\n ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))),\n ', '\n )\n const reason = 'must be one of: ' + allowed\n throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n }\n})\n\n/**\n * @callback validateBoolean\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean}\n */\n\n/** @type {validateBoolean} */\nfunction validateBoolean(value, name) {\n if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value)\n}\n\n/**\n * @param {any} options\n * @param {string} key\n * @param {boolean} defaultValue\n * @returns {boolean}\n */\nfunction getOwnPropertyValueOrDefault(options, key, defaultValue) {\n return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key]\n}\n\n/**\n * @callback validateObject\n * @param {*} value\n * @param {string} name\n * @param {{\n * allowArray?: boolean,\n * allowFunction?: boolean,\n * nullable?: boolean\n * }} [options]\n */\n\n/** @type {validateObject} */\nconst validateObject = hideStackFrames((value, name, options = null) => {\n const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false)\n const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false)\n const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false)\n if (\n (!nullable && value === null) ||\n (!allowArray && ArrayIsArray(value)) ||\n (typeof value !== 'object' && (!allowFunction || typeof value !== 'function'))\n ) {\n throw new ERR_INVALID_ARG_TYPE(name, 'Object', value)\n }\n})\n\n/**\n * @callback validateDictionary - We are using the Web IDL Standard definition\n * of \"dictionary\" here, which means any value\n * whose Type is either Undefined, Null, or\n * Object (which includes functions).\n * @param {*} value\n * @param {string} name\n * @see https://webidl.spec.whatwg.org/#es-dictionary\n * @see https://tc39.es/ecma262/#table-typeof-operator-results\n */\n\n/** @type {validateDictionary} */\nconst validateDictionary = hideStackFrames((value, name) => {\n if (value != null && typeof value !== 'object' && typeof value !== 'function') {\n throw new ERR_INVALID_ARG_TYPE(name, 'a dictionary', value)\n }\n})\n\n/**\n * @callback validateArray\n * @param {*} value\n * @param {string} name\n * @param {number} [minLength]\n * @returns {asserts value is any[]}\n */\n\n/** @type {validateArray} */\nconst validateArray = hideStackFrames((value, name, minLength = 0) => {\n if (!ArrayIsArray(value)) {\n throw new ERR_INVALID_ARG_TYPE(name, 'Array', value)\n }\n if (value.length < minLength) {\n const reason = `must be longer than ${minLength}`\n throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n }\n})\n\n/**\n * @callback validateStringArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string[]}\n */\n\n/** @type {validateStringArray} */\nfunction validateStringArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n validateString(value[i], `${name}[${i}]`)\n }\n}\n\n/**\n * @callback validateBooleanArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean[]}\n */\n\n/** @type {validateBooleanArray} */\nfunction validateBooleanArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n validateBoolean(value[i], `${name}[${i}]`)\n }\n}\n\n/**\n * @param {*} signal\n * @param {string} [name='signal']\n * @returns {asserts signal is keyof signals}\n */\nfunction validateSignalName(signal, name = 'signal') {\n validateString(signal, name)\n if (signals[signal] === undefined) {\n if (signals[StringPrototypeToUpperCase(signal)] !== undefined) {\n throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)')\n }\n throw new ERR_UNKNOWN_SIGNAL(signal)\n }\n}\n\n/**\n * @callback validateBuffer\n * @param {*} buffer\n * @param {string} [name='buffer']\n * @returns {asserts buffer is ArrayBufferView}\n */\n\n/** @type {validateBuffer} */\nconst validateBuffer = hideStackFrames((buffer, name = 'buffer') => {\n if (!isArrayBufferView(buffer)) {\n throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer)\n }\n})\n\n/**\n * @param {string} data\n * @param {string} encoding\n */\nfunction validateEncoding(data, encoding) {\n const normalizedEncoding = normalizeEncoding(encoding)\n const length = data.length\n if (normalizedEncoding === 'hex' && length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`)\n }\n}\n\n/**\n * Check that the port number is not NaN when coerced to a number,\n * is an integer and that it falls within the legal range of port numbers.\n * @param {*} port\n * @param {string} [name='Port']\n * @param {boolean} [allowZero=true]\n * @returns {number}\n */\nfunction validatePort(port, name = 'Port', allowZero = true) {\n if (\n (typeof port !== 'number' && typeof port !== 'string') ||\n (typeof port === 'string' && StringPrototypeTrim(port).length === 0) ||\n +port !== +port >>> 0 ||\n port > 0xffff ||\n (port === 0 && !allowZero)\n ) {\n throw new ERR_SOCKET_BAD_PORT(name, port, allowZero)\n }\n return port | 0\n}\n\n/**\n * @callback validateAbortSignal\n * @param {*} signal\n * @param {string} name\n */\n\n/** @type {validateAbortSignal} */\nconst validateAbortSignal = hideStackFrames((signal, name) => {\n if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n})\n\n/**\n * @callback validateFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validateFunction} */\nconst validateFunction = hideStackFrames((value, name) => {\n if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validatePlainFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validatePlainFunction} */\nconst validatePlainFunction = hideStackFrames((value, name) => {\n if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validateUndefined\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is undefined}\n */\n\n/** @type {validateUndefined} */\nconst validateUndefined = hideStackFrames((value, name) => {\n if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value)\n})\n\n/**\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} union\n */\nfunction validateUnion(value, name, union) {\n if (!ArrayPrototypeIncludes(union, value)) {\n throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value)\n }\n}\n\n/*\n The rules for the Link header field are described here:\n https://www.rfc-editor.org/rfc/rfc8288.html#section-3\n\n This regex validates any string surrounded by angle brackets\n (not necessarily a valid URI reference) followed by zero or more\n link-params separated by semicolons.\n*/\nconst linkValueRegExp = /^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/\n\n/**\n * @param {any} value\n * @param {string} name\n */\nfunction validateLinkHeaderFormat(value, name) {\n if (typeof value === 'undefined' || !RegExpPrototypeExec(linkValueRegExp, value)) {\n throw new ERR_INVALID_ARG_VALUE(\n name,\n value,\n 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"'\n )\n }\n}\n\n/**\n * @param {any} hints\n * @return {string}\n */\nfunction validateLinkHeaderValue(hints) {\n if (typeof hints === 'string') {\n validateLinkHeaderFormat(hints, 'hints')\n return hints\n } else if (ArrayIsArray(hints)) {\n const hintsLength = hints.length\n let result = ''\n if (hintsLength === 0) {\n return result\n }\n for (let i = 0; i < hintsLength; i++) {\n const link = hints[i]\n validateLinkHeaderFormat(link, 'hints')\n result += link\n if (i !== hintsLength - 1) {\n result += ', '\n }\n }\n return result\n }\n throw new ERR_INVALID_ARG_VALUE(\n 'hints',\n hints,\n 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"'\n )\n}\nmodule.exports = {\n isInt32,\n isUint32,\n parseFileMode,\n validateArray,\n validateStringArray,\n validateBooleanArray,\n validateBoolean,\n validateBuffer,\n validateDictionary,\n validateEncoding,\n validateFunction,\n validateInt32,\n validateInteger,\n validateNumber,\n validateObject,\n validateOneOf,\n validatePlainFunction,\n validatePort,\n validateSignalName,\n validateString,\n validateUint32,\n validateUndefined,\n validateUnion,\n validateAbortSignal,\n validateLinkHeaderValue\n}\n", "// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n", "'use strict'\n\nconst { Symbol, SymbolAsyncIterator, SymbolIterator, SymbolFor } = require('../../ours/primordials')\nconst kDestroyed = Symbol('kDestroyed')\nconst kIsErrored = Symbol('kIsErrored')\nconst kIsReadable = Symbol('kIsReadable')\nconst kIsDisturbed = Symbol('kIsDisturbed')\nconst kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise')\nconst kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction')\nfunction isReadableNodeStream(obj, strict = false) {\n var _obj$_readableState\n return !!(\n (\n obj &&\n typeof obj.pipe === 'function' &&\n typeof obj.on === 'function' &&\n (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) &&\n (!obj._writableState ||\n ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined\n ? undefined\n : _obj$_readableState.readable) !== false) &&\n // Duplex\n (!obj._writableState || obj._readableState)\n ) // Writable has .pipe.\n )\n}\n\nfunction isWritableNodeStream(obj) {\n var _obj$_writableState\n return !!(\n (\n obj &&\n typeof obj.write === 'function' &&\n typeof obj.on === 'function' &&\n (!obj._readableState ||\n ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined\n ? undefined\n : _obj$_writableState.writable) !== false)\n ) // Duplex\n )\n}\n\nfunction isDuplexNodeStream(obj) {\n return !!(\n obj &&\n typeof obj.pipe === 'function' &&\n obj._readableState &&\n typeof obj.on === 'function' &&\n typeof obj.write === 'function'\n )\n}\nfunction isNodeStream(obj) {\n return (\n obj &&\n (obj._readableState ||\n obj._writableState ||\n (typeof obj.write === 'function' && typeof obj.on === 'function') ||\n (typeof obj.pipe === 'function' && typeof obj.on === 'function'))\n )\n}\nfunction isReadableStream(obj) {\n return !!(\n obj &&\n !isNodeStream(obj) &&\n typeof obj.pipeThrough === 'function' &&\n typeof obj.getReader === 'function' &&\n typeof obj.cancel === 'function'\n )\n}\nfunction isWritableStream(obj) {\n return !!(obj && !isNodeStream(obj) && typeof obj.getWriter === 'function' && typeof obj.abort === 'function')\n}\nfunction isTransformStream(obj) {\n return !!(obj && !isNodeStream(obj) && typeof obj.readable === 'object' && typeof obj.writable === 'object')\n}\nfunction isWebStream(obj) {\n return isReadableStream(obj) || isWritableStream(obj) || isTransformStream(obj)\n}\nfunction isIterable(obj, isAsync) {\n if (obj == null) return false\n if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function'\n if (isAsync === false) return typeof obj[SymbolIterator] === 'function'\n return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function'\n}\nfunction isDestroyed(stream) {\n if (!isNodeStream(stream)) return null\n const wState = stream._writableState\n const rState = stream._readableState\n const state = wState || rState\n return !!(stream.destroyed || stream[kDestroyed] || (state !== null && state !== undefined && state.destroyed))\n}\n\n// Have been end():d.\nfunction isWritableEnded(stream) {\n if (!isWritableNodeStream(stream)) return null\n if (stream.writableEnded === true) return true\n const wState = stream._writableState\n if (wState !== null && wState !== undefined && wState.errored) return false\n if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null\n return wState.ended\n}\n\n// Have emitted 'finish'.\nfunction isWritableFinished(stream, strict) {\n if (!isWritableNodeStream(stream)) return null\n if (stream.writableFinished === true) return true\n const wState = stream._writableState\n if (wState !== null && wState !== undefined && wState.errored) return false\n if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null\n return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0))\n}\n\n// Have been push(null):d.\nfunction isReadableEnded(stream) {\n if (!isReadableNodeStream(stream)) return null\n if (stream.readableEnded === true) return true\n const rState = stream._readableState\n if (!rState || rState.errored) return false\n if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null\n return rState.ended\n}\n\n// Have emitted 'end'.\nfunction isReadableFinished(stream, strict) {\n if (!isReadableNodeStream(stream)) return null\n const rState = stream._readableState\n if (rState !== null && rState !== undefined && rState.errored) return false\n if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null\n return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0))\n}\nfunction isReadable(stream) {\n if (stream && stream[kIsReadable] != null) return stream[kIsReadable]\n if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null\n if (isDestroyed(stream)) return false\n return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream)\n}\nfunction isWritable(stream) {\n if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null\n if (isDestroyed(stream)) return false\n return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream)\n}\nfunction isFinished(stream, opts) {\n if (!isNodeStream(stream)) {\n return null\n }\n if (isDestroyed(stream)) {\n return true\n }\n if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) {\n return false\n }\n if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) {\n return false\n }\n return true\n}\nfunction isWritableErrored(stream) {\n var _stream$_writableStat, _stream$_writableStat2\n if (!isNodeStream(stream)) {\n return null\n }\n if (stream.writableErrored) {\n return stream.writableErrored\n }\n return (_stream$_writableStat =\n (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined\n ? undefined\n : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined\n ? _stream$_writableStat\n : null\n}\nfunction isReadableErrored(stream) {\n var _stream$_readableStat, _stream$_readableStat2\n if (!isNodeStream(stream)) {\n return null\n }\n if (stream.readableErrored) {\n return stream.readableErrored\n }\n return (_stream$_readableStat =\n (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined\n ? undefined\n : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined\n ? _stream$_readableStat\n : null\n}\nfunction isClosed(stream) {\n if (!isNodeStream(stream)) {\n return null\n }\n if (typeof stream.closed === 'boolean') {\n return stream.closed\n }\n const wState = stream._writableState\n const rState = stream._readableState\n if (\n typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' ||\n typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean'\n ) {\n return (\n (wState === null || wState === undefined ? undefined : wState.closed) ||\n (rState === null || rState === undefined ? undefined : rState.closed)\n )\n }\n if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) {\n return stream._closed\n }\n return null\n}\nfunction isOutgoingMessage(stream) {\n return (\n typeof stream._closed === 'boolean' &&\n typeof stream._defaultKeepAlive === 'boolean' &&\n typeof stream._removedConnection === 'boolean' &&\n typeof stream._removedContLen === 'boolean'\n )\n}\nfunction isServerResponse(stream) {\n return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream)\n}\nfunction isServerRequest(stream) {\n var _stream$req\n return (\n typeof stream._consuming === 'boolean' &&\n typeof stream._dumped === 'boolean' &&\n ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) ===\n undefined\n )\n}\nfunction willEmitClose(stream) {\n if (!isNodeStream(stream)) return null\n const wState = stream._writableState\n const rState = stream._readableState\n const state = wState || rState\n return (\n (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false)\n )\n}\nfunction isDisturbed(stream) {\n var _stream$kIsDisturbed\n return !!(\n stream &&\n ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined\n ? _stream$kIsDisturbed\n : stream.readableDidRead || stream.readableAborted)\n )\n}\nfunction isErrored(stream) {\n var _ref,\n _ref2,\n _ref3,\n _ref4,\n _ref5,\n _stream$kIsErrored,\n _stream$_readableStat3,\n _stream$_writableStat3,\n _stream$_readableStat4,\n _stream$_writableStat4\n return !!(\n stream &&\n ((_ref =\n (_ref2 =\n (_ref3 =\n (_ref4 =\n (_ref5 =\n (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined\n ? _stream$kIsErrored\n : stream.readableErrored) !== null && _ref5 !== undefined\n ? _ref5\n : stream.writableErrored) !== null && _ref4 !== undefined\n ? _ref4\n : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined\n ? undefined\n : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined\n ? _ref3\n : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined\n ? undefined\n : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined\n ? _ref2\n : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined\n ? undefined\n : _stream$_readableStat4.errored) !== null && _ref !== undefined\n ? _ref\n : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined\n ? undefined\n : _stream$_writableStat4.errored)\n )\n}\nmodule.exports = {\n kDestroyed,\n isDisturbed,\n kIsDisturbed,\n isErrored,\n kIsErrored,\n isReadable,\n kIsReadable,\n kIsClosedPromise,\n kControllerErrorFunction,\n isClosed,\n isDestroyed,\n isDuplexNodeStream,\n isFinished,\n isIterable,\n isReadableNodeStream,\n isReadableStream,\n isReadableEnded,\n isReadableFinished,\n isReadableErrored,\n isNodeStream,\n isWebStream,\n isWritable,\n isWritableNodeStream,\n isWritableStream,\n isWritableEnded,\n isWritableFinished,\n isWritableErrored,\n isServerRequest,\n isServerResponse,\n willEmitClose,\n isTransformStream\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes\nconst { kEmptyObject, once } = require('../../ours/util')\nconst { validateAbortSignal, validateFunction, validateObject, validateBoolean } = require('../validators')\nconst { Promise, PromisePrototypeThen } = require('../../ours/primordials')\nconst {\n isClosed,\n isReadable,\n isReadableNodeStream,\n isReadableStream,\n isReadableFinished,\n isReadableErrored,\n isWritable,\n isWritableNodeStream,\n isWritableStream,\n isWritableFinished,\n isWritableErrored,\n isNodeStream,\n willEmitClose: _willEmitClose,\n kIsClosedPromise\n} = require('./utils')\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function'\n}\nconst nop = () => {}\nfunction eos(stream, options, callback) {\n var _options$readable, _options$writable\n if (arguments.length === 2) {\n callback = options\n options = kEmptyObject\n } else if (options == null) {\n options = kEmptyObject\n } else {\n validateObject(options, 'options')\n }\n validateFunction(callback, 'callback')\n validateAbortSignal(options.signal, 'options.signal')\n callback = once(callback)\n if (isReadableStream(stream) || isWritableStream(stream)) {\n return eosWeb(stream, options, callback)\n }\n if (!isNodeStream(stream)) {\n throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n }\n const readable =\n (_options$readable = options.readable) !== null && _options$readable !== undefined\n ? _options$readable\n : isReadableNodeStream(stream)\n const writable =\n (_options$writable = options.writable) !== null && _options$writable !== undefined\n ? _options$writable\n : isWritableNodeStream(stream)\n const wState = stream._writableState\n const rState = stream._readableState\n const onlegacyfinish = () => {\n if (!stream.writable) {\n onfinish()\n }\n }\n\n // TODO (ronag): Improve soft detection to include core modules and\n // common ecosystem modules that do properly emit 'close' but fail\n // this generic check.\n let willEmitClose =\n _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable\n let writableFinished = isWritableFinished(stream, false)\n const onfinish = () => {\n writableFinished = true\n // Stream should not be destroyed here. If it is that\n // means that user space is doing something differently and\n // we cannot trust willEmitClose.\n if (stream.destroyed) {\n willEmitClose = false\n }\n if (willEmitClose && (!stream.readable || readable)) {\n return\n }\n if (!readable || readableFinished) {\n callback.call(stream)\n }\n }\n let readableFinished = isReadableFinished(stream, false)\n const onend = () => {\n readableFinished = true\n // Stream should not be destroyed here. If it is that\n // means that user space is doing something differently and\n // we cannot trust willEmitClose.\n if (stream.destroyed) {\n willEmitClose = false\n }\n if (willEmitClose && (!stream.writable || writable)) {\n return\n }\n if (!writable || writableFinished) {\n callback.call(stream)\n }\n }\n const onerror = (err) => {\n callback.call(stream, err)\n }\n let closed = isClosed(stream)\n const onclose = () => {\n closed = true\n const errored = isWritableErrored(stream) || isReadableErrored(stream)\n if (errored && typeof errored !== 'boolean') {\n return callback.call(stream, errored)\n }\n if (readable && !readableFinished && isReadableNodeStream(stream, true)) {\n if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n }\n if (writable && !writableFinished) {\n if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n }\n callback.call(stream)\n }\n const onclosed = () => {\n closed = true\n const errored = isWritableErrored(stream) || isReadableErrored(stream)\n if (errored && typeof errored !== 'boolean') {\n return callback.call(stream, errored)\n }\n callback.call(stream)\n }\n const onrequest = () => {\n stream.req.on('finish', onfinish)\n }\n if (isRequest(stream)) {\n stream.on('complete', onfinish)\n if (!willEmitClose) {\n stream.on('abort', onclose)\n }\n if (stream.req) {\n onrequest()\n } else {\n stream.on('request', onrequest)\n }\n } else if (writable && !wState) {\n // legacy streams\n stream.on('end', onlegacyfinish)\n stream.on('close', onlegacyfinish)\n }\n\n // Not all streams will emit 'close' after 'aborted'.\n if (!willEmitClose && typeof stream.aborted === 'boolean') {\n stream.on('aborted', onclose)\n }\n stream.on('end', onend)\n stream.on('finish', onfinish)\n if (options.error !== false) {\n stream.on('error', onerror)\n }\n stream.on('close', onclose)\n if (closed) {\n process.nextTick(onclose)\n } else if (\n (wState !== null && wState !== undefined && wState.errorEmitted) ||\n (rState !== null && rState !== undefined && rState.errorEmitted)\n ) {\n if (!willEmitClose) {\n process.nextTick(onclosed)\n }\n } else if (\n !readable &&\n (!willEmitClose || isReadable(stream)) &&\n (writableFinished || isWritable(stream) === false)\n ) {\n process.nextTick(onclosed)\n } else if (\n !writable &&\n (!willEmitClose || isWritable(stream)) &&\n (readableFinished || isReadable(stream) === false)\n ) {\n process.nextTick(onclosed)\n } else if (rState && stream.req && stream.aborted) {\n process.nextTick(onclosed)\n }\n const cleanup = () => {\n callback = nop\n stream.removeListener('aborted', onclose)\n stream.removeListener('complete', onfinish)\n stream.removeListener('abort', onclose)\n stream.removeListener('request', onrequest)\n if (stream.req) stream.req.removeListener('finish', onfinish)\n stream.removeListener('end', onlegacyfinish)\n stream.removeListener('close', onlegacyfinish)\n stream.removeListener('finish', onfinish)\n stream.removeListener('end', onend)\n stream.removeListener('error', onerror)\n stream.removeListener('close', onclose)\n }\n if (options.signal && !closed) {\n const abort = () => {\n // Keep it because cleanup removes it.\n const endCallback = callback\n cleanup()\n endCallback.call(\n stream,\n new AbortError(undefined, {\n cause: options.signal.reason\n })\n )\n }\n if (options.signal.aborted) {\n process.nextTick(abort)\n } else {\n const originalCallback = callback\n callback = once((...args) => {\n options.signal.removeEventListener('abort', abort)\n originalCallback.apply(stream, args)\n })\n options.signal.addEventListener('abort', abort)\n }\n }\n return cleanup\n}\nfunction eosWeb(stream, options, callback) {\n let isAborted = false\n let abort = nop\n if (options.signal) {\n abort = () => {\n isAborted = true\n callback.call(\n stream,\n new AbortError(undefined, {\n cause: options.signal.reason\n })\n )\n }\n if (options.signal.aborted) {\n process.nextTick(abort)\n } else {\n const originalCallback = callback\n callback = once((...args) => {\n options.signal.removeEventListener('abort', abort)\n originalCallback.apply(stream, args)\n })\n options.signal.addEventListener('abort', abort)\n }\n }\n const resolverFn = (...args) => {\n if (!isAborted) {\n process.nextTick(() => callback.apply(stream, args))\n }\n }\n PromisePrototypeThen(stream[kIsClosedPromise].promise, resolverFn, resolverFn)\n return nop\n}\nfunction finished(stream, opts) {\n var _opts\n let autoCleanup = false\n if (opts === null) {\n opts = kEmptyObject\n }\n if ((_opts = opts) !== null && _opts !== undefined && _opts.cleanup) {\n validateBoolean(opts.cleanup, 'cleanup')\n autoCleanup = opts.cleanup\n }\n return new Promise((resolve, reject) => {\n const cleanup = eos(stream, opts, (err) => {\n if (autoCleanup) {\n cleanup()\n }\n if (err) {\n reject(err)\n } else {\n resolve()\n }\n })\n })\n}\nmodule.exports = eos\nmodule.exports.finished = finished\n", "'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n aggregateTwoErrors,\n codes: { ERR_MULTIPLE_CALLBACK },\n AbortError\n} = require('../../ours/errors')\nconst { Symbol } = require('../../ours/primordials')\nconst { kDestroyed, isDestroyed, isFinished, isServerRequest } = require('./utils')\nconst kDestroy = Symbol('kDestroy')\nconst kConstruct = Symbol('kConstruct')\nfunction checkError(err, w, r) {\n if (err) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n err.stack // eslint-disable-line no-unused-expressions\n\n if (w && !w.errored) {\n w.errored = err\n }\n if (r && !r.errored) {\n r.errored = err\n }\n }\n}\n\n// Backwards compat. cb() is undocumented and unused in core but\n// unfortunately might be used by modules.\nfunction destroy(err, cb) {\n const r = this._readableState\n const w = this._writableState\n // With duplex streams we use the writable side for state.\n const s = w || r\n if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n if (typeof cb === 'function') {\n cb()\n }\n return this\n }\n\n // We set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n checkError(err, w, r)\n if (w) {\n w.destroyed = true\n }\n if (r) {\n r.destroyed = true\n }\n\n // If still constructing then defer calling _destroy.\n if (!s.constructed) {\n this.once(kDestroy, function (er) {\n _destroy(this, aggregateTwoErrors(er, err), cb)\n })\n } else {\n _destroy(this, err, cb)\n }\n return this\n}\nfunction _destroy(self, err, cb) {\n let called = false\n function onDestroy(err) {\n if (called) {\n return\n }\n called = true\n const r = self._readableState\n const w = self._writableState\n checkError(err, w, r)\n if (w) {\n w.closed = true\n }\n if (r) {\n r.closed = true\n }\n if (typeof cb === 'function') {\n cb(err)\n }\n if (err) {\n process.nextTick(emitErrorCloseNT, self, err)\n } else {\n process.nextTick(emitCloseNT, self)\n }\n }\n try {\n self._destroy(err || null, onDestroy)\n } catch (err) {\n onDestroy(err)\n }\n}\nfunction emitErrorCloseNT(self, err) {\n emitErrorNT(self, err)\n emitCloseNT(self)\n}\nfunction emitCloseNT(self) {\n const r = self._readableState\n const w = self._writableState\n if (w) {\n w.closeEmitted = true\n }\n if (r) {\n r.closeEmitted = true\n }\n if ((w !== null && w !== undefined && w.emitClose) || (r !== null && r !== undefined && r.emitClose)) {\n self.emit('close')\n }\n}\nfunction emitErrorNT(self, err) {\n const r = self._readableState\n const w = self._writableState\n if ((w !== null && w !== undefined && w.errorEmitted) || (r !== null && r !== undefined && r.errorEmitted)) {\n return\n }\n if (w) {\n w.errorEmitted = true\n }\n if (r) {\n r.errorEmitted = true\n }\n self.emit('error', err)\n}\nfunction undestroy() {\n const r = this._readableState\n const w = this._writableState\n if (r) {\n r.constructed = true\n r.closed = false\n r.closeEmitted = false\n r.destroyed = false\n r.errored = null\n r.errorEmitted = false\n r.reading = false\n r.ended = r.readable === false\n r.endEmitted = r.readable === false\n }\n if (w) {\n w.constructed = true\n w.destroyed = false\n w.closed = false\n w.closeEmitted = false\n w.errored = null\n w.errorEmitted = false\n w.finalCalled = false\n w.prefinished = false\n w.ended = w.writable === false\n w.ending = w.writable === false\n w.finished = w.writable === false\n }\n}\nfunction errorOrDestroy(stream, err, sync) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n const r = stream._readableState\n const w = stream._writableState\n if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n return this\n }\n if ((r !== null && r !== undefined && r.autoDestroy) || (w !== null && w !== undefined && w.autoDestroy))\n stream.destroy(err)\n else if (err) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n err.stack // eslint-disable-line no-unused-expressions\n\n if (w && !w.errored) {\n w.errored = err\n }\n if (r && !r.errored) {\n r.errored = err\n }\n if (sync) {\n process.nextTick(emitErrorNT, stream, err)\n } else {\n emitErrorNT(stream, err)\n }\n }\n}\nfunction construct(stream, cb) {\n if (typeof stream._construct !== 'function') {\n return\n }\n const r = stream._readableState\n const w = stream._writableState\n if (r) {\n r.constructed = false\n }\n if (w) {\n w.constructed = false\n }\n stream.once(kConstruct, cb)\n if (stream.listenerCount(kConstruct) > 1) {\n // Duplex\n return\n }\n process.nextTick(constructNT, stream)\n}\nfunction constructNT(stream) {\n let called = false\n function onConstruct(err) {\n if (called) {\n errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK())\n return\n }\n called = true\n const r = stream._readableState\n const w = stream._writableState\n const s = w || r\n if (r) {\n r.constructed = true\n }\n if (w) {\n w.constructed = true\n }\n if (s.destroyed) {\n stream.emit(kDestroy, err)\n } else if (err) {\n errorOrDestroy(stream, err, true)\n } else {\n process.nextTick(emitConstructNT, stream)\n }\n }\n try {\n stream._construct((err) => {\n process.nextTick(onConstruct, err)\n })\n } catch (err) {\n process.nextTick(onConstruct, err)\n }\n}\nfunction emitConstructNT(stream) {\n stream.emit(kConstruct)\n}\nfunction isRequest(stream) {\n return (stream === null || stream === undefined ? undefined : stream.setHeader) && typeof stream.abort === 'function'\n}\nfunction emitCloseLegacy(stream) {\n stream.emit('close')\n}\nfunction emitErrorCloseLegacy(stream, err) {\n stream.emit('error', err)\n process.nextTick(emitCloseLegacy, stream)\n}\n\n// Normalize destroy for legacy.\nfunction destroyer(stream, err) {\n if (!stream || isDestroyed(stream)) {\n return\n }\n if (!err && !isFinished(stream)) {\n err = new AbortError()\n }\n\n // TODO: Remove isRequest branches.\n if (isServerRequest(stream)) {\n stream.socket = null\n stream.destroy(err)\n } else if (isRequest(stream)) {\n stream.abort()\n } else if (isRequest(stream.req)) {\n stream.req.abort()\n } else if (typeof stream.destroy === 'function') {\n stream.destroy(err)\n } else if (typeof stream.close === 'function') {\n // TODO: Don't lose err?\n stream.close()\n } else if (err) {\n process.nextTick(emitErrorCloseLegacy, stream, err)\n } else {\n process.nextTick(emitCloseLegacy, stream)\n }\n if (!stream.destroyed) {\n stream[kDestroyed] = true\n }\n}\nmodule.exports = {\n construct,\n destroyer,\n destroy,\n undestroy,\n errorOrDestroy\n}\n", "'use strict'\n\nconst { ArrayIsArray, ObjectSetPrototypeOf } = require('../../ours/primordials')\nconst { EventEmitter: EE } = require('events')\nfunction Stream(opts) {\n EE.call(this, opts)\n}\nObjectSetPrototypeOf(Stream.prototype, EE.prototype)\nObjectSetPrototypeOf(Stream, EE)\nStream.prototype.pipe = function (dest, options) {\n const source = this\n function ondata(chunk) {\n if (dest.writable && dest.write(chunk) === false && source.pause) {\n source.pause()\n }\n }\n source.on('data', ondata)\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume()\n }\n }\n dest.on('drain', ondrain)\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend)\n source.on('close', onclose)\n }\n let didOnEnd = false\n function onend() {\n if (didOnEnd) return\n didOnEnd = true\n dest.end()\n }\n function onclose() {\n if (didOnEnd) return\n didOnEnd = true\n if (typeof dest.destroy === 'function') dest.destroy()\n }\n\n // Don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup()\n if (EE.listenerCount(this, 'error') === 0) {\n this.emit('error', er)\n }\n }\n prependListener(source, 'error', onerror)\n prependListener(dest, 'error', onerror)\n\n // Remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata)\n dest.removeListener('drain', ondrain)\n source.removeListener('end', onend)\n source.removeListener('close', onclose)\n source.removeListener('error', onerror)\n dest.removeListener('error', onerror)\n source.removeListener('end', cleanup)\n source.removeListener('close', cleanup)\n dest.removeListener('close', cleanup)\n }\n source.on('end', cleanup)\n source.on('close', cleanup)\n dest.on('close', cleanup)\n dest.emit('pipe', source)\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest\n}\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn)\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn)\n else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn)\n else emitter._events[event] = [fn, emitter._events[event]]\n}\nmodule.exports = {\n Stream,\n prependListener\n}\n", "'use strict'\n\nconst { AbortError, codes } = require('../../ours/errors')\nconst { isNodeStream, isWebStream, kControllerErrorFunction } = require('./utils')\nconst eos = require('./end-of-stream')\nconst { ERR_INVALID_ARG_TYPE } = codes\n\n// This method is inlined here for readable-stream\n// It also does not allow for signal to not exist on the stream\n// https://github.com/nodejs/node/pull/36061#discussion_r533718029\nconst validateAbortSignal = (signal, name) => {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n}\nmodule.exports.addAbortSignal = function addAbortSignal(signal, stream) {\n validateAbortSignal(signal, 'signal')\n if (!isNodeStream(stream) && !isWebStream(stream)) {\n throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n }\n return module.exports.addAbortSignalNoValidate(signal, stream)\n}\nmodule.exports.addAbortSignalNoValidate = function (signal, stream) {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n return stream\n }\n const onAbort = isNodeStream(stream)\n ? () => {\n stream.destroy(\n new AbortError(undefined, {\n cause: signal.reason\n })\n )\n }\n : () => {\n stream[kControllerErrorFunction](\n new AbortError(undefined, {\n cause: signal.reason\n })\n )\n }\n if (signal.aborted) {\n onAbort()\n } else {\n signal.addEventListener('abort', onAbort)\n eos(stream, () => signal.removeEventListener('abort', onAbort))\n }\n return stream\n}\n", "'use strict'\n\nconst { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { inspect } = require('../../ours/util')\nmodule.exports = class BufferList {\n constructor() {\n this.head = null\n this.tail = null\n this.length = 0\n }\n push(v) {\n const entry = {\n data: v,\n next: null\n }\n if (this.length > 0) this.tail.next = entry\n else this.head = entry\n this.tail = entry\n ++this.length\n }\n unshift(v) {\n const entry = {\n data: v,\n next: this.head\n }\n if (this.length === 0) this.tail = entry\n this.head = entry\n ++this.length\n }\n shift() {\n if (this.length === 0) return\n const ret = this.head.data\n if (this.length === 1) this.head = this.tail = null\n else this.head = this.head.next\n --this.length\n return ret\n }\n clear() {\n this.head = this.tail = null\n this.length = 0\n }\n join(s) {\n if (this.length === 0) return ''\n let p = this.head\n let ret = '' + p.data\n while ((p = p.next) !== null) ret += s + p.data\n return ret\n }\n concat(n) {\n if (this.length === 0) return Buffer.alloc(0)\n const ret = Buffer.allocUnsafe(n >>> 0)\n let p = this.head\n let i = 0\n while (p) {\n TypedArrayPrototypeSet(ret, p.data, i)\n i += p.data.length\n p = p.next\n }\n return ret\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n consume(n, hasStrings) {\n const data = this.head.data\n if (n < data.length) {\n // `slice` is the same for buffers and strings.\n const slice = data.slice(0, n)\n this.head.data = data.slice(n)\n return slice\n }\n if (n === data.length) {\n // First chunk is a perfect match.\n return this.shift()\n }\n // Result spans more than one buffer.\n return hasStrings ? this._getString(n) : this._getBuffer(n)\n }\n first() {\n return this.head.data\n }\n *[SymbolIterator]() {\n for (let p = this.head; p; p = p.next) {\n yield p.data\n }\n }\n\n // Consumes a specified amount of characters from the buffered data.\n _getString(n) {\n let ret = ''\n let p = this.head\n let c = 0\n do {\n const str = p.data\n if (n > str.length) {\n ret += str\n n -= str.length\n } else {\n if (n === str.length) {\n ret += str\n ++c\n if (p.next) this.head = p.next\n else this.head = this.tail = null\n } else {\n ret += StringPrototypeSlice(str, 0, n)\n this.head = p\n p.data = StringPrototypeSlice(str, n)\n }\n break\n }\n ++c\n } while ((p = p.next) !== null)\n this.length -= c\n return ret\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n _getBuffer(n) {\n const ret = Buffer.allocUnsafe(n)\n const retLen = n\n let p = this.head\n let c = 0\n do {\n const buf = p.data\n if (n > buf.length) {\n TypedArrayPrototypeSet(ret, buf, retLen - n)\n n -= buf.length\n } else {\n if (n === buf.length) {\n TypedArrayPrototypeSet(ret, buf, retLen - n)\n ++c\n if (p.next) this.head = p.next\n else this.head = this.tail = null\n } else {\n TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n)\n this.head = p\n p.data = buf.slice(n)\n }\n break\n }\n ++c\n } while ((p = p.next) !== null)\n this.length -= c\n return ret\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n [Symbol.for('nodejs.util.inspect.custom')](_, options) {\n return inspect(this, {\n ...options,\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n })\n }\n}\n", "'use strict'\n\nconst { MathFloor, NumberIsInteger } = require('../../ours/primordials')\nconst { ERR_INVALID_ARG_VALUE } = require('../../ours/errors').codes\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null\n}\nfunction getDefaultHighWaterMark(objectMode) {\n return objectMode ? 16 : 16 * 1024\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n const hwm = highWaterMarkFrom(options, isDuplex, duplexKey)\n if (hwm != null) {\n if (!NumberIsInteger(hwm) || hwm < 0) {\n const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'\n throw new ERR_INVALID_ARG_VALUE(name, hwm)\n }\n return MathFloor(hwm)\n }\n\n // Default value\n return getDefaultHighWaterMark(state.objectMode)\n}\nmodule.exports = {\n getHighWaterMark,\n getDefaultHighWaterMark\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}", "'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require('../../ours/errors').codes\nfunction from(Readable, iterable, opts) {\n let iterator\n if (typeof iterable === 'string' || iterable instanceof Buffer) {\n return new Readable({\n objectMode: true,\n ...opts,\n read() {\n this.push(iterable)\n this.push(null)\n }\n })\n }\n let isAsync\n if (iterable && iterable[SymbolAsyncIterator]) {\n isAsync = true\n iterator = iterable[SymbolAsyncIterator]()\n } else if (iterable && iterable[SymbolIterator]) {\n isAsync = false\n iterator = iterable[SymbolIterator]()\n } else {\n throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable)\n }\n const readable = new Readable({\n objectMode: true,\n highWaterMark: 1,\n // TODO(ronag): What options should be allowed?\n ...opts\n })\n\n // Flag to protect against _read\n // being called before last iteration completion.\n let reading = false\n readable._read = function () {\n if (!reading) {\n reading = true\n next()\n }\n }\n readable._destroy = function (error, cb) {\n PromisePrototypeThen(\n close(error),\n () => process.nextTick(cb, error),\n // nextTick is here in case cb throws\n (e) => process.nextTick(cb, e || error)\n )\n }\n async function close(error) {\n const hadError = error !== undefined && error !== null\n const hasThrow = typeof iterator.throw === 'function'\n if (hadError && hasThrow) {\n const { value, done } = await iterator.throw(error)\n await value\n if (done) {\n return\n }\n }\n if (typeof iterator.return === 'function') {\n const { value } = await iterator.return()\n await value\n }\n }\n async function next() {\n for (;;) {\n try {\n const { value, done } = isAsync ? await iterator.next() : iterator.next()\n if (done) {\n readable.push(null)\n } else {\n const res = value && typeof value.then === 'function' ? await value : value\n if (res === null) {\n reading = false\n throw new ERR_STREAM_NULL_VALUES()\n } else if (readable.push(res)) {\n continue\n } else {\n reading = false\n }\n }\n } catch (err) {\n readable.destroy(err)\n }\n break\n }\n }\n return readable\n}\nmodule.exports = from\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n;('use strict')\nconst {\n ArrayPrototypeIndexOf,\n NumberIsInteger,\n NumberIsNaN,\n NumberParseInt,\n ObjectDefineProperties,\n ObjectKeys,\n ObjectSetPrototypeOf,\n Promise,\n SafeSet,\n SymbolAsyncIterator,\n Symbol\n} = require('../../ours/primordials')\nmodule.exports = Readable\nReadable.ReadableState = ReadableState\nconst { EventEmitter: EE } = require('events')\nconst { Stream, prependListener } = require('./legacy')\nconst { Buffer } = require('buffer')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst eos = require('./end-of-stream')\nlet debug = require('../../ours/util').debuglog('stream', (fn) => {\n debug = fn\n})\nconst BufferList = require('./buffer_list')\nconst destroyImpl = require('./destroy')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n aggregateTwoErrors,\n codes: {\n ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED,\n ERR_OUT_OF_RANGE,\n ERR_STREAM_PUSH_AFTER_EOF,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT\n }\n} = require('../../ours/errors')\nconst { validateObject } = require('../validators')\nconst kPaused = Symbol('kPaused')\nconst { StringDecoder } = require('string_decoder')\nconst from = require('./from')\nObjectSetPrototypeOf(Readable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Readable, Stream)\nconst nop = () => {}\nconst { errorOrDestroy } = destroyImpl\nfunction ReadableState(options, stream, isDuplex) {\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n // Object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away.\n this.objectMode = !!(options && options.objectMode)\n if (isDuplex) this.objectMode = this.objectMode || !!(options && options.readableObjectMode)\n\n // The point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = options\n ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex)\n : getDefaultHighWaterMark(false)\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift().\n this.buffer = new BufferList()\n this.length = 0\n this.pipes = []\n this.flowing = null\n this.ended = false\n this.endEmitted = false\n this.reading = false\n\n // Stream is still being constructed and cannot be\n // destroyed until construction finished or failed.\n // Async construction is opt in, therefore we start as\n // constructed.\n this.constructed = true\n\n // A flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true\n\n // Whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false\n this.emittedReadable = false\n this.readableListening = false\n this.resumeScheduled = false\n this[kPaused] = null\n\n // True if the error was already emitted and should not be thrown again.\n this.errorEmitted = false\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = !options || options.emitClose !== false\n\n // Should .destroy() be called after 'end' (and potentially 'finish').\n this.autoDestroy = !options || options.autoDestroy !== false\n\n // Has it been destroyed.\n this.destroyed = false\n\n // Indicates whether the stream has errored. When true no further\n // _read calls, 'data' or 'readable' events should occur. This is needed\n // since when autoDestroy is disabled we need a way to tell whether the\n // stream has failed.\n this.errored = null\n\n // Indicates whether the stream has finished destroying.\n this.closed = false\n\n // True if close has been emitted or would have been emitted\n // depending on emitClose.\n this.closeEmitted = false\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n // Ref the piped dest which we need a drain event on it\n // type: null | Writable | Set<Writable>.\n this.awaitDrainWriters = null\n this.multiAwaitDrain = false\n\n // If true, a maybeReadMore has been scheduled.\n this.readingMore = false\n this.dataEmitted = false\n this.decoder = null\n this.encoding = null\n if (options && options.encoding) {\n this.decoder = new StringDecoder(options.encoding)\n this.encoding = options.encoding\n }\n}\nfunction Readable(options) {\n if (!(this instanceof Readable)) return new Readable(options)\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5.\n const isDuplex = this instanceof require('./duplex')\n this._readableState = new ReadableState(options, this, isDuplex)\n if (options) {\n if (typeof options.read === 'function') this._read = options.read\n if (typeof options.destroy === 'function') this._destroy = options.destroy\n if (typeof options.construct === 'function') this._construct = options.construct\n if (options.signal && !isDuplex) addAbortSignal(options.signal, this)\n }\n Stream.call(this, options)\n destroyImpl.construct(this, () => {\n if (this._readableState.needReadable) {\n maybeReadMore(this, this._readableState)\n }\n })\n}\nReadable.prototype.destroy = destroyImpl.destroy\nReadable.prototype._undestroy = destroyImpl.undestroy\nReadable.prototype._destroy = function (err, cb) {\n cb(err)\n}\nReadable.prototype[EE.captureRejectionSymbol] = function (err) {\n this.destroy(err)\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n return readableAddChunk(this, chunk, encoding, false)\n}\n\n// Unshift should *always* be something directly out of read().\nReadable.prototype.unshift = function (chunk, encoding) {\n return readableAddChunk(this, chunk, encoding, true)\n}\nfunction readableAddChunk(stream, chunk, encoding, addToFront) {\n debug('readableAddChunk', chunk)\n const state = stream._readableState\n let err\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding\n if (state.encoding !== encoding) {\n if (addToFront && state.encoding) {\n // When unshifting, if state.encoding is set, we have to save\n // the string in the BufferList with the state encoding.\n chunk = Buffer.from(chunk, encoding).toString(state.encoding)\n } else {\n chunk = Buffer.from(chunk, encoding)\n encoding = ''\n }\n }\n } else if (chunk instanceof Buffer) {\n encoding = ''\n } else if (Stream._isUint8Array(chunk)) {\n chunk = Stream._uint8ArrayToBuffer(chunk)\n encoding = ''\n } else if (chunk != null) {\n err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n }\n }\n if (err) {\n errorOrDestroy(stream, err)\n } else if (chunk === null) {\n state.reading = false\n onEofChunk(stream, state)\n } else if (state.objectMode || (chunk && chunk.length > 0)) {\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT())\n else if (state.destroyed || state.errored) return false\n else addChunk(stream, state, chunk, true)\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF())\n } else if (state.destroyed || state.errored) {\n return false\n } else {\n state.reading = false\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk)\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false)\n else maybeReadMore(stream, state)\n } else {\n addChunk(stream, state, chunk, false)\n }\n }\n } else if (!addToFront) {\n state.reading = false\n maybeReadMore(stream, state)\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0)\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) {\n // Use the guard to avoid creating `Set()` repeatedly\n // when we have multiple pipes.\n if (state.multiAwaitDrain) {\n state.awaitDrainWriters.clear()\n } else {\n state.awaitDrainWriters = null\n }\n state.dataEmitted = true\n stream.emit('data', chunk)\n } else {\n // Update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length\n if (addToFront) state.buffer.unshift(chunk)\n else state.buffer.push(chunk)\n if (state.needReadable) emitReadable(stream)\n }\n maybeReadMore(stream, state)\n}\nReadable.prototype.isPaused = function () {\n const state = this._readableState\n return state[kPaused] === true || state.flowing === false\n}\n\n// Backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n const decoder = new StringDecoder(enc)\n this._readableState.decoder = decoder\n // If setEncoding(null), decoder.encoding equals utf8.\n this._readableState.encoding = this._readableState.decoder.encoding\n const buffer = this._readableState.buffer\n // Iterate over current buffer to convert already stored Buffers:\n let content = ''\n for (const data of buffer) {\n content += decoder.write(data)\n }\n buffer.clear()\n if (content !== '') buffer.push(content)\n this._readableState.length = content.length\n return this\n}\n\n// Don't raise the hwm > 1GB.\nconst MAX_HWM = 0x40000000\nfunction computeNewHighWaterMark(n) {\n if (n > MAX_HWM) {\n throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n)\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts.\n n--\n n |= n >>> 1\n n |= n >>> 2\n n |= n >>> 4\n n |= n >>> 8\n n |= n >>> 16\n n++\n }\n return n\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || (state.length === 0 && state.ended)) return 0\n if (state.objectMode) return 1\n if (NumberIsNaN(n)) {\n // Only flow one buffer at a time.\n if (state.flowing && state.length) return state.buffer.first().length\n return state.length\n }\n if (n <= state.length) return n\n return state.ended ? state.length : 0\n}\n\n// You can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n)\n // Same as parseInt(undefined, 10), however V8 7.3 performance regressed\n // in this scenario, so we are doing it manually.\n if (n === undefined) {\n n = NaN\n } else if (!NumberIsInteger(n)) {\n n = NumberParseInt(n, 10)\n }\n const state = this._readableState\n const nOrig = n\n\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n)\n if (n !== 0) state.emittedReadable = false\n\n // If we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (\n n === 0 &&\n state.needReadable &&\n ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)\n ) {\n debug('read: emitReadable', state.length, state.ended)\n if (state.length === 0 && state.ended) endReadable(this)\n else emitReadable(this)\n return null\n }\n n = howMuchToRead(n, state)\n\n // If we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this)\n return null\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n let doRead = state.needReadable\n debug('need readable', doRead)\n\n // If we currently have less than the highWaterMark, then also read some.\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true\n debug('length less than watermark', doRead)\n }\n\n // However, if we've ended, then there's no point, if we're already\n // reading, then it's unnecessary, if we're constructing we have to wait,\n // and if we're destroyed or errored, then it's not allowed,\n if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) {\n doRead = false\n debug('reading, ended or constructing', doRead)\n } else if (doRead) {\n debug('do read')\n state.reading = true\n state.sync = true\n // If the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true\n\n // Call internal read method\n try {\n this._read(state.highWaterMark)\n } catch (err) {\n errorOrDestroy(this, err)\n }\n state.sync = false\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state)\n }\n let ret\n if (n > 0) ret = fromList(n, state)\n else ret = null\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark\n n = 0\n } else {\n state.length -= n\n if (state.multiAwaitDrain) {\n state.awaitDrainWriters.clear()\n } else {\n state.awaitDrainWriters = null\n }\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this)\n }\n if (ret !== null && !state.errorEmitted && !state.closeEmitted) {\n state.dataEmitted = true\n this.emit('data', ret)\n }\n return ret\n}\nfunction onEofChunk(stream, state) {\n debug('onEofChunk')\n if (state.ended) return\n if (state.decoder) {\n const chunk = state.decoder.end()\n if (chunk && chunk.length) {\n state.buffer.push(chunk)\n state.length += state.objectMode ? 1 : chunk.length\n }\n }\n state.ended = true\n if (state.sync) {\n // If we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call.\n emitReadable(stream)\n } else {\n // Emit 'readable' now to make sure it gets picked up.\n state.needReadable = false\n state.emittedReadable = true\n // We have to emit readable now that we are EOF. Modules\n // in the ecosystem (e.g. dicer) rely on this event being sync.\n emitReadable_(stream)\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n const state = stream._readableState\n debug('emitReadable', state.needReadable, state.emittedReadable)\n state.needReadable = false\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing)\n state.emittedReadable = true\n process.nextTick(emitReadable_, stream)\n }\n}\nfunction emitReadable_(stream) {\n const state = stream._readableState\n debug('emitReadable_', state.destroyed, state.length, state.ended)\n if (!state.destroyed && !state.errored && (state.length || state.ended)) {\n stream.emit('readable')\n state.emittedReadable = false\n }\n\n // The stream needs another readable event if:\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark\n flow(stream)\n}\n\n// At this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore && state.constructed) {\n state.readingMore = true\n process.nextTick(maybeReadMore_, stream, state)\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (\n !state.reading &&\n !state.ended &&\n (state.length < state.highWaterMark || (state.flowing && state.length === 0))\n ) {\n const len = state.length\n debug('maybeReadMore read 0')\n stream.read(0)\n if (len === state.length)\n // Didn't get any data, stop spinning.\n break\n }\n state.readingMore = false\n}\n\n// Abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_read()')\n}\nReadable.prototype.pipe = function (dest, pipeOpts) {\n const src = this\n const state = this._readableState\n if (state.pipes.length === 1) {\n if (!state.multiAwaitDrain) {\n state.multiAwaitDrain = true\n state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : [])\n }\n }\n state.pipes.push(dest)\n debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts)\n const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr\n const endFn = doEnd ? onend : unpipe\n if (state.endEmitted) process.nextTick(endFn)\n else src.once('end', endFn)\n dest.on('unpipe', onunpipe)\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe')\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true\n cleanup()\n }\n }\n }\n function onend() {\n debug('onend')\n dest.end()\n }\n let ondrain\n let cleanedUp = false\n function cleanup() {\n debug('cleanup')\n // Cleanup event handlers once the pipe is broken.\n dest.removeListener('close', onclose)\n dest.removeListener('finish', onfinish)\n if (ondrain) {\n dest.removeListener('drain', ondrain)\n }\n dest.removeListener('error', onerror)\n dest.removeListener('unpipe', onunpipe)\n src.removeListener('end', onend)\n src.removeListener('end', unpipe)\n src.removeListener('data', ondata)\n cleanedUp = true\n\n // If the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain()\n }\n function pause() {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if (!cleanedUp) {\n if (state.pipes.length === 1 && state.pipes[0] === dest) {\n debug('false write response, pause', 0)\n state.awaitDrainWriters = dest\n state.multiAwaitDrain = false\n } else if (state.pipes.length > 1 && state.pipes.includes(dest)) {\n debug('false write response, pause', state.awaitDrainWriters.size)\n state.awaitDrainWriters.add(dest)\n }\n src.pause()\n }\n if (!ondrain) {\n // When the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n ondrain = pipeOnDrain(src, dest)\n dest.on('drain', ondrain)\n }\n }\n src.on('data', ondata)\n function ondata(chunk) {\n debug('ondata')\n const ret = dest.write(chunk)\n debug('dest.write', ret)\n if (ret === false) {\n pause()\n }\n }\n\n // If the dest has an error, then stop piping into it.\n // However, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er)\n unpipe()\n dest.removeListener('error', onerror)\n if (dest.listenerCount('error') === 0) {\n const s = dest._writableState || dest._readableState\n if (s && !s.errorEmitted) {\n // User incorrectly emitted 'error' directly on the stream.\n errorOrDestroy(dest, er)\n } else {\n dest.emit('error', er)\n }\n }\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror)\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish)\n unpipe()\n }\n dest.once('close', onclose)\n function onfinish() {\n debug('onfinish')\n dest.removeListener('close', onclose)\n unpipe()\n }\n dest.once('finish', onfinish)\n function unpipe() {\n debug('unpipe')\n src.unpipe(dest)\n }\n\n // Tell the dest that it's being piped to.\n dest.emit('pipe', src)\n\n // Start the flow if it hasn't been started already.\n\n if (dest.writableNeedDrain === true) {\n if (state.flowing) {\n pause()\n }\n } else if (!state.flowing) {\n debug('pipe resume')\n src.resume()\n }\n return dest\n}\nfunction pipeOnDrain(src, dest) {\n return function pipeOnDrainFunctionResult() {\n const state = src._readableState\n\n // `ondrain` will call directly,\n // `this` maybe not a reference to dest,\n // so we use the real dest here.\n if (state.awaitDrainWriters === dest) {\n debug('pipeOnDrain', 1)\n state.awaitDrainWriters = null\n } else if (state.multiAwaitDrain) {\n debug('pipeOnDrain', state.awaitDrainWriters.size)\n state.awaitDrainWriters.delete(dest)\n }\n if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) {\n src.resume()\n }\n }\n}\nReadable.prototype.unpipe = function (dest) {\n const state = this._readableState\n const unpipeInfo = {\n hasUnpiped: false\n }\n\n // If we're not piping anywhere, then do nothing.\n if (state.pipes.length === 0) return this\n if (!dest) {\n // remove all.\n const dests = state.pipes\n state.pipes = []\n this.pause()\n for (let i = 0; i < dests.length; i++)\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n })\n return this\n }\n\n // Try to find the right one.\n const index = ArrayPrototypeIndexOf(state.pipes, dest)\n if (index === -1) return this\n state.pipes.splice(index, 1)\n if (state.pipes.length === 0) this.pause()\n dest.emit('unpipe', this, unpipeInfo)\n return this\n}\n\n// Set up data events if they are asked for\n// Ensure readable listeners eventually get something.\nReadable.prototype.on = function (ev, fn) {\n const res = Stream.prototype.on.call(this, ev, fn)\n const state = this._readableState\n if (ev === 'data') {\n // Update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0\n\n // Try start flowing on next tick if stream isn't explicitly paused.\n if (state.flowing !== false) this.resume()\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true\n state.flowing = false\n state.emittedReadable = false\n debug('on readable', state.length, state.reading)\n if (state.length) {\n emitReadable(this)\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this)\n }\n }\n }\n return res\n}\nReadable.prototype.addListener = Readable.prototype.on\nReadable.prototype.removeListener = function (ev, fn) {\n const res = Stream.prototype.removeListener.call(this, ev, fn)\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this)\n }\n return res\n}\nReadable.prototype.off = Readable.prototype.removeListener\nReadable.prototype.removeAllListeners = function (ev) {\n const res = Stream.prototype.removeAllListeners.apply(this, arguments)\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this)\n }\n return res\n}\nfunction updateReadableListening(self) {\n const state = self._readableState\n state.readableListening = self.listenerCount('readable') > 0\n if (state.resumeScheduled && state[kPaused] === false) {\n // Flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true\n\n // Crude way to check if we should resume.\n } else if (self.listenerCount('data') > 0) {\n self.resume()\n } else if (!state.readableListening) {\n state.flowing = null\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0')\n self.read(0)\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n const state = this._readableState\n if (!state.flowing) {\n debug('resume')\n // We flow only if there is no one listening\n // for readable, but we still have to call\n // resume().\n state.flowing = !state.readableListening\n resume(this, state)\n }\n state[kPaused] = false\n return this\n}\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true\n process.nextTick(resume_, stream, state)\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading)\n if (!state.reading) {\n stream.read(0)\n }\n state.resumeScheduled = false\n stream.emit('resume')\n flow(stream)\n if (state.flowing && !state.reading) stream.read(0)\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing)\n if (this._readableState.flowing !== false) {\n debug('pause')\n this._readableState.flowing = false\n this.emit('pause')\n }\n this._readableState[kPaused] = true\n return this\n}\nfunction flow(stream) {\n const state = stream._readableState\n debug('flow', state.flowing)\n while (state.flowing && stream.read() !== null);\n}\n\n// Wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n let paused = false\n\n // TODO (ronag): Should this.destroy(err) emit\n // 'error' on the wrapped stream? Would require\n // a static factory method, e.g. Readable.wrap(stream).\n\n stream.on('data', (chunk) => {\n if (!this.push(chunk) && stream.pause) {\n paused = true\n stream.pause()\n }\n })\n stream.on('end', () => {\n this.push(null)\n })\n stream.on('error', (err) => {\n errorOrDestroy(this, err)\n })\n stream.on('close', () => {\n this.destroy()\n })\n stream.on('destroy', () => {\n this.destroy()\n })\n this._read = () => {\n if (paused && stream.resume) {\n paused = false\n stream.resume()\n }\n }\n\n // Proxy all the other methods. Important when wrapping filters and duplexes.\n const streamKeys = ObjectKeys(stream)\n for (let j = 1; j < streamKeys.length; j++) {\n const i = streamKeys[j]\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = stream[i].bind(stream)\n }\n }\n return this\n}\nReadable.prototype[SymbolAsyncIterator] = function () {\n return streamToAsyncIterator(this)\n}\nReadable.prototype.iterator = function (options) {\n if (options !== undefined) {\n validateObject(options, 'options')\n }\n return streamToAsyncIterator(this, options)\n}\nfunction streamToAsyncIterator(stream, options) {\n if (typeof stream.read !== 'function') {\n stream = Readable.wrap(stream, {\n objectMode: true\n })\n }\n const iter = createAsyncIterator(stream, options)\n iter.stream = stream\n return iter\n}\nasync function* createAsyncIterator(stream, options) {\n let callback = nop\n function next(resolve) {\n if (this === stream) {\n callback()\n callback = nop\n } else {\n callback = resolve\n }\n }\n stream.on('readable', next)\n let error\n const cleanup = eos(\n stream,\n {\n writable: false\n },\n (err) => {\n error = err ? aggregateTwoErrors(error, err) : null\n callback()\n callback = nop\n }\n )\n try {\n while (true) {\n const chunk = stream.destroyed ? null : stream.read()\n if (chunk !== null) {\n yield chunk\n } else if (error) {\n throw error\n } else if (error === null) {\n return\n } else {\n await new Promise(next)\n }\n }\n } catch (err) {\n error = aggregateTwoErrors(error, err)\n throw error\n } finally {\n if (\n (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) &&\n (error === undefined || stream._readableState.autoDestroy)\n ) {\n destroyImpl.destroyer(stream, null)\n } else {\n stream.off('readable', next)\n cleanup()\n }\n }\n}\n\n// Making it explicit these properties are not enumerable\n// because otherwise some prototype manipulation in\n// userland will fail.\nObjectDefineProperties(Readable.prototype, {\n readable: {\n __proto__: null,\n get() {\n const r = this._readableState\n // r.readable === false means that this is part of a Duplex stream\n // where the readable side was disabled upon construction.\n // Compat. The user might manually disable readable side through\n // deprecated setter.\n return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted\n },\n set(val) {\n // Backwards compat.\n if (this._readableState) {\n this._readableState.readable = !!val\n }\n }\n },\n readableDidRead: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.dataEmitted\n }\n },\n readableAborted: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return !!(\n this._readableState.readable !== false &&\n (this._readableState.destroyed || this._readableState.errored) &&\n !this._readableState.endEmitted\n )\n }\n },\n readableHighWaterMark: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark\n }\n },\n readableBuffer: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState && this._readableState.buffer\n }\n },\n readableFlowing: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.flowing\n },\n set: function (state) {\n if (this._readableState) {\n this._readableState.flowing = state\n }\n }\n },\n readableLength: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState.length\n }\n },\n readableObjectMode: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.objectMode : false\n }\n },\n readableEncoding: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.encoding : null\n }\n },\n errored: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.errored : null\n }\n },\n closed: {\n __proto__: null,\n get() {\n return this._readableState ? this._readableState.closed : false\n }\n },\n destroyed: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.destroyed : false\n },\n set(value) {\n // We ignore the value if the stream\n // has not been initialized yet.\n if (!this._readableState) {\n return\n }\n\n // Backward compatibility, the user is explicitly\n // managing destroyed.\n this._readableState.destroyed = value\n }\n },\n readableEnded: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.endEmitted : false\n }\n }\n})\nObjectDefineProperties(ReadableState.prototype, {\n // Legacy getter for `pipesCount`.\n pipesCount: {\n __proto__: null,\n get() {\n return this.pipes.length\n }\n },\n // Legacy property for `paused`.\n paused: {\n __proto__: null,\n get() {\n return this[kPaused] !== false\n },\n set(value) {\n this[kPaused] = !!value\n }\n }\n})\n\n// Exposed for testing purposes only.\nReadable._fromList = fromList\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered.\n if (state.length === 0) return null\n let ret\n if (state.objectMode) ret = state.buffer.shift()\n else if (!n || n >= state.length) {\n // Read it all, truncate the list.\n if (state.decoder) ret = state.buffer.join('')\n else if (state.buffer.length === 1) ret = state.buffer.first()\n else ret = state.buffer.concat(state.length)\n state.buffer.clear()\n } else {\n // read part of list.\n ret = state.buffer.consume(n, state.decoder)\n }\n return ret\n}\nfunction endReadable(stream) {\n const state = stream._readableState\n debug('endReadable', state.endEmitted)\n if (!state.endEmitted) {\n state.ended = true\n process.nextTick(endReadableNT, state, stream)\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length)\n\n // Check that we didn't get one last unshift.\n if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) {\n state.endEmitted = true\n stream.emit('end')\n if (stream.writable && stream.allowHalfOpen === false) {\n process.nextTick(endWritableNT, stream)\n } else if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well.\n const wState = stream._writableState\n const autoDestroy =\n !wState ||\n (wState.autoDestroy &&\n // We don't expect the writable to ever 'finish'\n // if writable is explicitly set to false.\n (wState.finished || wState.writable === false))\n if (autoDestroy) {\n stream.destroy()\n }\n }\n }\n}\nfunction endWritableNT(stream) {\n const writable = stream.writable && !stream.writableEnded && !stream.destroyed\n if (writable) {\n stream.end()\n }\n}\nReadable.from = function (iterable, opts) {\n return from(Readable, iterable, opts)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nReadable.fromWeb = function (readableStream, options) {\n return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options)\n}\nReadable.toWeb = function (streamReadable, options) {\n return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options)\n}\nReadable.wrap = function (src, options) {\n var _ref, _src$readableObjectMo\n return new Readable({\n objectMode:\n (_ref =\n (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined\n ? _src$readableObjectMo\n : src.objectMode) !== null && _ref !== undefined\n ? _ref\n : true,\n ...options,\n destroy(err, callback) {\n destroyImpl.destroyer(src, err)\n callback(err)\n }\n }).wrap(src)\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n;('use strict')\nconst {\n ArrayPrototypeSlice,\n Error,\n FunctionPrototypeSymbolHasInstance,\n ObjectDefineProperty,\n ObjectDefineProperties,\n ObjectSetPrototypeOf,\n StringPrototypeToLowerCase,\n Symbol,\n SymbolHasInstance\n} = require('../../ours/primordials')\nmodule.exports = Writable\nWritable.WritableState = WritableState\nconst { EventEmitter: EE } = require('events')\nconst Stream = require('./legacy').Stream\nconst { Buffer } = require('buffer')\nconst destroyImpl = require('./destroy')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED,\n ERR_STREAM_ALREADY_FINISHED,\n ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING\n} = require('../../ours/errors').codes\nconst { errorOrDestroy } = destroyImpl\nObjectSetPrototypeOf(Writable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Writable, Stream)\nfunction nop() {}\nconst kOnFinished = Symbol('kOnFinished')\nfunction WritableState(options, stream, isDuplex) {\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n // Object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!(options && options.objectMode)\n if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode)\n\n // The point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write().\n this.highWaterMark = options\n ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex)\n : getDefaultHighWaterMark(false)\n\n // if _final has been called.\n this.finalCalled = false\n\n // drain event flag.\n this.needDrain = false\n // At the start of calling end()\n this.ending = false\n // When end() has been called, and returned.\n this.ended = false\n // When 'finish' is emitted.\n this.finished = false\n\n // Has it been destroyed\n this.destroyed = false\n\n // Should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n const noDecode = !!(options && options.decodeStrings === false)\n this.decodeStrings = !noDecode\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n // Not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0\n\n // A flag to see when we're in the middle of a write.\n this.writing = false\n\n // When true all writes will be buffered until .uncork() call.\n this.corked = 0\n\n // A flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true\n\n // A flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false\n\n // The callback that's passed to _write(chunk, cb).\n this.onwrite = onwrite.bind(undefined, stream)\n\n // The callback that the user supplies to write(chunk, encoding, cb).\n this.writecb = null\n\n // The amount that is being written when _write is called.\n this.writelen = 0\n\n // Storage for data passed to the afterWrite() callback in case of\n // synchronous _write() completion.\n this.afterWriteTickInfo = null\n resetBuffer(this)\n\n // Number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted.\n this.pendingcb = 0\n\n // Stream is still being constructed and cannot be\n // destroyed until construction finished or failed.\n // Async construction is opt in, therefore we start as\n // constructed.\n this.constructed = true\n\n // Emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams.\n this.prefinished = false\n\n // True if the error was already emitted and should not be thrown again.\n this.errorEmitted = false\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = !options || options.emitClose !== false\n\n // Should .destroy() be called after 'finish' (and potentially 'end').\n this.autoDestroy = !options || options.autoDestroy !== false\n\n // Indicates whether the stream has errored. When true all write() calls\n // should return false. This is needed since when autoDestroy\n // is disabled we need a way to tell whether the stream has failed.\n this.errored = null\n\n // Indicates whether the stream has finished destroying.\n this.closed = false\n\n // True if close has been emitted or would have been emitted\n // depending on emitClose.\n this.closeEmitted = false\n this[kOnFinished] = []\n}\nfunction resetBuffer(state) {\n state.buffered = []\n state.bufferedIndex = 0\n state.allBuffers = true\n state.allNoop = true\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n return ArrayPrototypeSlice(this.buffered, this.bufferedIndex)\n}\nObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', {\n __proto__: null,\n get() {\n return this.buffered.length - this.bufferedIndex\n }\n})\nfunction Writable(options) {\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5.\n const isDuplex = this instanceof require('./duplex')\n if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options)\n this._writableState = new WritableState(options, this, isDuplex)\n if (options) {\n if (typeof options.write === 'function') this._write = options.write\n if (typeof options.writev === 'function') this._writev = options.writev\n if (typeof options.destroy === 'function') this._destroy = options.destroy\n if (typeof options.final === 'function') this._final = options.final\n if (typeof options.construct === 'function') this._construct = options.construct\n if (options.signal) addAbortSignal(options.signal, this)\n }\n Stream.call(this, options)\n destroyImpl.construct(this, () => {\n const state = this._writableState\n if (!state.writing) {\n clearBuffer(this, state)\n }\n finishMaybe(this, state)\n })\n}\nObjectDefineProperty(Writable, SymbolHasInstance, {\n __proto__: null,\n value: function (object) {\n if (FunctionPrototypeSymbolHasInstance(this, object)) return true\n if (this !== Writable) return false\n return object && object._writableState instanceof WritableState\n }\n})\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE())\n}\nfunction _write(stream, chunk, encoding, cb) {\n const state = stream._writableState\n if (typeof encoding === 'function') {\n cb = encoding\n encoding = state.defaultEncoding\n } else {\n if (!encoding) encoding = state.defaultEncoding\n else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n if (typeof cb !== 'function') cb = nop\n }\n if (chunk === null) {\n throw new ERR_STREAM_NULL_VALUES()\n } else if (!state.objectMode) {\n if (typeof chunk === 'string') {\n if (state.decodeStrings !== false) {\n chunk = Buffer.from(chunk, encoding)\n encoding = 'buffer'\n }\n } else if (chunk instanceof Buffer) {\n encoding = 'buffer'\n } else if (Stream._isUint8Array(chunk)) {\n chunk = Stream._uint8ArrayToBuffer(chunk)\n encoding = 'buffer'\n } else {\n throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n }\n }\n let err\n if (state.ending) {\n err = new ERR_STREAM_WRITE_AFTER_END()\n } else if (state.destroyed) {\n err = new ERR_STREAM_DESTROYED('write')\n }\n if (err) {\n process.nextTick(cb, err)\n errorOrDestroy(stream, err, true)\n return err\n }\n state.pendingcb++\n return writeOrBuffer(stream, state, chunk, encoding, cb)\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n return _write(this, chunk, encoding, cb) === true\n}\nWritable.prototype.cork = function () {\n this._writableState.corked++\n}\nWritable.prototype.uncork = function () {\n const state = this._writableState\n if (state.corked) {\n state.corked--\n if (!state.writing) clearBuffer(this, state)\n }\n}\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding)\n if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n this._writableState.defaultEncoding = encoding\n return this\n}\n\n// If we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, callback) {\n const len = state.objectMode ? 1 : chunk.length\n state.length += len\n\n // stream._write resets state.length\n const ret = state.length < state.highWaterMark\n // We must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true\n if (state.writing || state.corked || state.errored || !state.constructed) {\n state.buffered.push({\n chunk,\n encoding,\n callback\n })\n if (state.allBuffers && encoding !== 'buffer') {\n state.allBuffers = false\n }\n if (state.allNoop && callback !== nop) {\n state.allNoop = false\n }\n } else {\n state.writelen = len\n state.writecb = callback\n state.writing = true\n state.sync = true\n stream._write(chunk, encoding, state.onwrite)\n state.sync = false\n }\n\n // Return false if errored or destroyed in order to break\n // any synchronous while(stream.write(data)) loops.\n return ret && !state.errored && !state.destroyed\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len\n state.writecb = cb\n state.writing = true\n state.sync = true\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'))\n else if (writev) stream._writev(chunk, state.onwrite)\n else stream._write(chunk, encoding, state.onwrite)\n state.sync = false\n}\nfunction onwriteError(stream, state, er, cb) {\n --state.pendingcb\n cb(er)\n // Ensure callbacks are invoked even when autoDestroy is\n // not enabled. Passing `er` here doesn't make sense since\n // it's related to one specific write, not to the buffered\n // writes.\n errorBuffer(state)\n // This can emit error, but error must always follow cb.\n errorOrDestroy(stream, er)\n}\nfunction onwrite(stream, er) {\n const state = stream._writableState\n const sync = state.sync\n const cb = state.writecb\n if (typeof cb !== 'function') {\n errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK())\n return\n }\n state.writing = false\n state.writecb = null\n state.length -= state.writelen\n state.writelen = 0\n if (er) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n er.stack // eslint-disable-line no-unused-expressions\n\n if (!state.errored) {\n state.errored = er\n }\n\n // In case of duplex streams we need to notify the readable side of the\n // error.\n if (stream._readableState && !stream._readableState.errored) {\n stream._readableState.errored = er\n }\n if (sync) {\n process.nextTick(onwriteError, stream, state, er, cb)\n } else {\n onwriteError(stream, state, er, cb)\n }\n } else {\n if (state.buffered.length > state.bufferedIndex) {\n clearBuffer(stream, state)\n }\n if (sync) {\n // It is a common case that the callback passed to .write() is always\n // the same. In that case, we do not schedule a new nextTick(), but\n // rather just increase a counter, to improve performance and avoid\n // memory allocations.\n if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) {\n state.afterWriteTickInfo.count++\n } else {\n state.afterWriteTickInfo = {\n count: 1,\n cb,\n stream,\n state\n }\n process.nextTick(afterWriteTick, state.afterWriteTickInfo)\n }\n } else {\n afterWrite(stream, state, 1, cb)\n }\n }\n}\nfunction afterWriteTick({ stream, state, count, cb }) {\n state.afterWriteTickInfo = null\n return afterWrite(stream, state, count, cb)\n}\nfunction afterWrite(stream, state, count, cb) {\n const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain\n if (needDrain) {\n state.needDrain = false\n stream.emit('drain')\n }\n while (count-- > 0) {\n state.pendingcb--\n cb()\n }\n if (state.destroyed) {\n errorBuffer(state)\n }\n finishMaybe(stream, state)\n}\n\n// If there's something in the buffer waiting, then invoke callbacks.\nfunction errorBuffer(state) {\n if (state.writing) {\n return\n }\n for (let n = state.bufferedIndex; n < state.buffered.length; ++n) {\n var _state$errored\n const { chunk, callback } = state.buffered[n]\n const len = state.objectMode ? 1 : chunk.length\n state.length -= len\n callback(\n (_state$errored = state.errored) !== null && _state$errored !== undefined\n ? _state$errored\n : new ERR_STREAM_DESTROYED('write')\n )\n }\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n var _state$errored2\n onfinishCallbacks[i](\n (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined\n ? _state$errored2\n : new ERR_STREAM_DESTROYED('end')\n )\n }\n resetBuffer(state)\n}\n\n// If there's something in the buffer waiting, then process it.\nfunction clearBuffer(stream, state) {\n if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) {\n return\n }\n const { buffered, bufferedIndex, objectMode } = state\n const bufferedLength = buffered.length - bufferedIndex\n if (!bufferedLength) {\n return\n }\n let i = bufferedIndex\n state.bufferProcessing = true\n if (bufferedLength > 1 && stream._writev) {\n state.pendingcb -= bufferedLength - 1\n const callback = state.allNoop\n ? nop\n : (err) => {\n for (let n = i; n < buffered.length; ++n) {\n buffered[n].callback(err)\n }\n }\n // Make a copy of `buffered` if it's going to be used by `callback` above,\n // since `doWrite` will mutate the array.\n const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i)\n chunks.allBuffers = state.allBuffers\n doWrite(stream, state, true, state.length, chunks, '', callback)\n resetBuffer(state)\n } else {\n do {\n const { chunk, encoding, callback } = buffered[i]\n buffered[i++] = null\n const len = objectMode ? 1 : chunk.length\n doWrite(stream, state, false, len, chunk, encoding, callback)\n } while (i < buffered.length && !state.writing)\n if (i === buffered.length) {\n resetBuffer(state)\n } else if (i > 256) {\n buffered.splice(0, i)\n state.bufferedIndex = 0\n } else {\n state.bufferedIndex = i\n }\n }\n state.bufferProcessing = false\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n if (this._writev) {\n this._writev(\n [\n {\n chunk,\n encoding\n }\n ],\n cb\n )\n } else {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_write()')\n }\n}\nWritable.prototype._writev = null\nWritable.prototype.end = function (chunk, encoding, cb) {\n const state = this._writableState\n if (typeof chunk === 'function') {\n cb = chunk\n chunk = null\n encoding = null\n } else if (typeof encoding === 'function') {\n cb = encoding\n encoding = null\n }\n let err\n if (chunk !== null && chunk !== undefined) {\n const ret = _write(this, chunk, encoding)\n if (ret instanceof Error) {\n err = ret\n }\n }\n\n // .end() fully uncorks.\n if (state.corked) {\n state.corked = 1\n this.uncork()\n }\n if (err) {\n // Do nothing...\n } else if (!state.errored && !state.ending) {\n // This is forgiving in terms of unnecessary calls to end() and can hide\n // logic errors. However, usually such errors are harmless and causing a\n // hard error can be disproportionately destructive. It is not always\n // trivial for the user to determine whether end() needs to be called\n // or not.\n\n state.ending = true\n finishMaybe(this, state, true)\n state.ended = true\n } else if (state.finished) {\n err = new ERR_STREAM_ALREADY_FINISHED('end')\n } else if (state.destroyed) {\n err = new ERR_STREAM_DESTROYED('end')\n }\n if (typeof cb === 'function') {\n if (err || state.finished) {\n process.nextTick(cb, err)\n } else {\n state[kOnFinished].push(cb)\n }\n }\n return this\n}\nfunction needFinish(state) {\n return (\n state.ending &&\n !state.destroyed &&\n state.constructed &&\n state.length === 0 &&\n !state.errored &&\n state.buffered.length === 0 &&\n !state.finished &&\n !state.writing &&\n !state.errorEmitted &&\n !state.closeEmitted\n )\n}\nfunction callFinal(stream, state) {\n let called = false\n function onFinish(err) {\n if (called) {\n errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK())\n return\n }\n called = true\n state.pendingcb--\n if (err) {\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n onfinishCallbacks[i](err)\n }\n errorOrDestroy(stream, err, state.sync)\n } else if (needFinish(state)) {\n state.prefinished = true\n stream.emit('prefinish')\n // Backwards compat. Don't check state.sync here.\n // Some streams assume 'finish' will be emitted\n // asynchronously relative to _final callback.\n state.pendingcb++\n process.nextTick(finish, stream, state)\n }\n }\n state.sync = true\n state.pendingcb++\n try {\n stream._final(onFinish)\n } catch (err) {\n onFinish(err)\n }\n state.sync = false\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.finalCalled = true\n callFinal(stream, state)\n } else {\n state.prefinished = true\n stream.emit('prefinish')\n }\n }\n}\nfunction finishMaybe(stream, state, sync) {\n if (needFinish(state)) {\n prefinish(stream, state)\n if (state.pendingcb === 0) {\n if (sync) {\n state.pendingcb++\n process.nextTick(\n (stream, state) => {\n if (needFinish(state)) {\n finish(stream, state)\n } else {\n state.pendingcb--\n }\n },\n stream,\n state\n )\n } else if (needFinish(state)) {\n state.pendingcb++\n finish(stream, state)\n }\n }\n }\n}\nfunction finish(stream, state) {\n state.pendingcb--\n state.finished = true\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n onfinishCallbacks[i]()\n }\n stream.emit('finish')\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well.\n const rState = stream._readableState\n const autoDestroy =\n !rState ||\n (rState.autoDestroy &&\n // We don't expect the readable to ever 'end'\n // if readable is explicitly set to false.\n (rState.endEmitted || rState.readable === false))\n if (autoDestroy) {\n stream.destroy()\n }\n }\n}\nObjectDefineProperties(Writable.prototype, {\n closed: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.closed : false\n }\n },\n destroyed: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.destroyed : false\n },\n set(value) {\n // Backward compatibility, the user is explicitly managing destroyed.\n if (this._writableState) {\n this._writableState.destroyed = value\n }\n }\n },\n writable: {\n __proto__: null,\n get() {\n const w = this._writableState\n // w.writable === false means that this is part of a Duplex stream\n // where the writable side was disabled upon construction.\n // Compat. The user might manually disable writable side through\n // deprecated setter.\n return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended\n },\n set(val) {\n // Backwards compatible.\n if (this._writableState) {\n this._writableState.writable = !!val\n }\n }\n },\n writableFinished: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.finished : false\n }\n },\n writableObjectMode: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.objectMode : false\n }\n },\n writableBuffer: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.getBuffer()\n }\n },\n writableEnded: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.ending : false\n }\n },\n writableNeedDrain: {\n __proto__: null,\n get() {\n const wState = this._writableState\n if (!wState) return false\n return !wState.destroyed && !wState.ending && wState.needDrain\n }\n },\n writableHighWaterMark: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.highWaterMark\n }\n },\n writableCorked: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.corked : 0\n }\n },\n writableLength: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.length\n }\n },\n errored: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._writableState ? this._writableState.errored : null\n }\n },\n writableAborted: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return !!(\n this._writableState.writable !== false &&\n (this._writableState.destroyed || this._writableState.errored) &&\n !this._writableState.finished\n )\n }\n }\n})\nconst destroy = destroyImpl.destroy\nWritable.prototype.destroy = function (err, cb) {\n const state = this._writableState\n\n // Invoke pending callbacks.\n if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) {\n process.nextTick(errorBuffer, state)\n }\n destroy.call(this, err, cb)\n return this\n}\nWritable.prototype._undestroy = destroyImpl.undestroy\nWritable.prototype._destroy = function (err, cb) {\n cb(err)\n}\nWritable.prototype[EE.captureRejectionSymbol] = function (err) {\n this.destroy(err)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nWritable.fromWeb = function (writableStream, options) {\n return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options)\n}\nWritable.toWeb = function (streamWritable) {\n return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable)\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\n;('use strict')\nconst bufferModule = require('buffer')\nconst {\n isReadable,\n isWritable,\n isIterable,\n isNodeStream,\n isReadableNodeStream,\n isWritableNodeStream,\n isDuplexNodeStream\n} = require('./utils')\nconst eos = require('./end-of-stream')\nconst {\n AbortError,\n codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE }\n} = require('../../ours/errors')\nconst { destroyer } = require('./destroy')\nconst Duplex = require('./duplex')\nconst Readable = require('./readable')\nconst { createDeferredPromise } = require('../../ours/util')\nconst from = require('./from')\nconst Blob = globalThis.Blob || bufferModule.Blob\nconst isBlob =\n typeof Blob !== 'undefined'\n ? function isBlob(b) {\n return b instanceof Blob\n }\n : function isBlob(b) {\n return false\n }\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst { FunctionPrototypeCall } = require('../../ours/primordials')\n\n// This is needed for pre node 17.\nclass Duplexify extends Duplex {\n constructor(options) {\n super(options)\n\n // https://github.com/nodejs/node/pull/34385\n\n if ((options === null || options === undefined ? undefined : options.readable) === false) {\n this._readableState.readable = false\n this._readableState.ended = true\n this._readableState.endEmitted = true\n }\n if ((options === null || options === undefined ? undefined : options.writable) === false) {\n this._writableState.writable = false\n this._writableState.ending = true\n this._writableState.ended = true\n this._writableState.finished = true\n }\n }\n}\nmodule.exports = function duplexify(body, name) {\n if (isDuplexNodeStream(body)) {\n return body\n }\n if (isReadableNodeStream(body)) {\n return _duplexify({\n readable: body\n })\n }\n if (isWritableNodeStream(body)) {\n return _duplexify({\n writable: body\n })\n }\n if (isNodeStream(body)) {\n return _duplexify({\n writable: false,\n readable: false\n })\n }\n\n // TODO: Webstreams\n // if (isReadableStream(body)) {\n // return _duplexify({ readable: Readable.fromWeb(body) });\n // }\n\n // TODO: Webstreams\n // if (isWritableStream(body)) {\n // return _duplexify({ writable: Writable.fromWeb(body) });\n // }\n\n if (typeof body === 'function') {\n const { value, write, final, destroy } = fromAsyncGen(body)\n if (isIterable(value)) {\n return from(Duplexify, value, {\n // TODO (ronag): highWaterMark?\n objectMode: true,\n write,\n final,\n destroy\n })\n }\n const then = value === null || value === undefined ? undefined : value.then\n if (typeof then === 'function') {\n let d\n const promise = FunctionPrototypeCall(\n then,\n value,\n (val) => {\n if (val != null) {\n throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val)\n }\n },\n (err) => {\n destroyer(d, err)\n }\n )\n return (d = new Duplexify({\n // TODO (ronag): highWaterMark?\n objectMode: true,\n readable: false,\n write,\n final(cb) {\n final(async () => {\n try {\n await promise\n process.nextTick(cb, null)\n } catch (err) {\n process.nextTick(cb, err)\n }\n })\n },\n destroy\n }))\n }\n throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value)\n }\n if (isBlob(body)) {\n return duplexify(body.arrayBuffer())\n }\n if (isIterable(body)) {\n return from(Duplexify, body, {\n // TODO (ronag): highWaterMark?\n objectMode: true,\n writable: false\n })\n }\n\n // TODO: Webstreams.\n // if (\n // isReadableStream(body?.readable) &&\n // isWritableStream(body?.writable)\n // ) {\n // return Duplexify.fromWeb(body);\n // }\n\n if (\n typeof (body === null || body === undefined ? undefined : body.writable) === 'object' ||\n typeof (body === null || body === undefined ? undefined : body.readable) === 'object'\n ) {\n const readable =\n body !== null && body !== undefined && body.readable\n ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable)\n ? body === null || body === undefined\n ? undefined\n : body.readable\n : duplexify(body.readable)\n : undefined\n const writable =\n body !== null && body !== undefined && body.writable\n ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable)\n ? body === null || body === undefined\n ? undefined\n : body.writable\n : duplexify(body.writable)\n : undefined\n return _duplexify({\n readable,\n writable\n })\n }\n const then = body === null || body === undefined ? undefined : body.then\n if (typeof then === 'function') {\n let d\n FunctionPrototypeCall(\n then,\n body,\n (val) => {\n if (val != null) {\n d.push(val)\n }\n d.push(null)\n },\n (err) => {\n destroyer(d, err)\n }\n )\n return (d = new Duplexify({\n objectMode: true,\n writable: false,\n read() {}\n }))\n }\n throw new ERR_INVALID_ARG_TYPE(\n name,\n [\n 'Blob',\n 'ReadableStream',\n 'WritableStream',\n 'Stream',\n 'Iterable',\n 'AsyncIterable',\n 'Function',\n '{ readable, writable } pair',\n 'Promise'\n ],\n body\n )\n}\nfunction fromAsyncGen(fn) {\n let { promise, resolve } = createDeferredPromise()\n const ac = new AbortController()\n const signal = ac.signal\n const value = fn(\n (async function* () {\n while (true) {\n const _promise = promise\n promise = null\n const { chunk, done, cb } = await _promise\n process.nextTick(cb)\n if (done) return\n if (signal.aborted)\n throw new AbortError(undefined, {\n cause: signal.reason\n })\n ;({ promise, resolve } = createDeferredPromise())\n yield chunk\n }\n })(),\n {\n signal\n }\n )\n return {\n value,\n write(chunk, encoding, cb) {\n const _resolve = resolve\n resolve = null\n _resolve({\n chunk,\n done: false,\n cb\n })\n },\n final(cb) {\n const _resolve = resolve\n resolve = null\n _resolve({\n done: true,\n cb\n })\n },\n destroy(err, cb) {\n ac.abort()\n cb(err)\n }\n }\n}\nfunction _duplexify(pair) {\n const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable\n const w = pair.writable\n let readable = !!isReadable(r)\n let writable = !!isWritable(w)\n let ondrain\n let onfinish\n let onreadable\n let onclose\n let d\n function onfinished(err) {\n const cb = onclose\n onclose = null\n if (cb) {\n cb(err)\n } else if (err) {\n d.destroy(err)\n }\n }\n\n // TODO(ronag): Avoid double buffering.\n // Implement Writable/Readable/Duplex traits.\n // See, https://github.com/nodejs/node/pull/33515.\n d = new Duplexify({\n // TODO (ronag): highWaterMark?\n readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode),\n writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode),\n readable,\n writable\n })\n if (writable) {\n eos(w, (err) => {\n writable = false\n if (err) {\n destroyer(r, err)\n }\n onfinished(err)\n })\n d._write = function (chunk, encoding, callback) {\n if (w.write(chunk, encoding)) {\n callback()\n } else {\n ondrain = callback\n }\n }\n d._final = function (callback) {\n w.end()\n onfinish = callback\n }\n w.on('drain', function () {\n if (ondrain) {\n const cb = ondrain\n ondrain = null\n cb()\n }\n })\n w.on('finish', function () {\n if (onfinish) {\n const cb = onfinish\n onfinish = null\n cb()\n }\n })\n }\n if (readable) {\n eos(r, (err) => {\n readable = false\n if (err) {\n destroyer(r, err)\n }\n onfinished(err)\n })\n r.on('readable', function () {\n if (onreadable) {\n const cb = onreadable\n onreadable = null\n cb()\n }\n })\n r.on('end', function () {\n d.push(null)\n })\n d._read = function () {\n while (true) {\n const buf = r.read()\n if (buf === null) {\n onreadable = d._read\n return\n }\n if (!d.push(buf)) {\n return\n }\n }\n }\n }\n d._destroy = function (err, callback) {\n if (!err && onclose !== null) {\n err = new AbortError()\n }\n onreadable = null\n ondrain = null\n onfinish = null\n if (onclose === null) {\n callback(err)\n } else {\n onclose = callback\n destroyer(w, err)\n destroyer(r, err)\n }\n }\n return d\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototype inheritance, this class\n// prototypically inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict'\n\nconst {\n ObjectDefineProperties,\n ObjectGetOwnPropertyDescriptor,\n ObjectKeys,\n ObjectSetPrototypeOf\n} = require('../../ours/primordials')\nmodule.exports = Duplex\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nObjectSetPrototypeOf(Duplex.prototype, Readable.prototype)\nObjectSetPrototypeOf(Duplex, Readable)\n{\n const keys = ObjectKeys(Writable.prototype)\n // Allow the keys array to be GC'ed.\n for (let i = 0; i < keys.length; i++) {\n const method = keys[i]\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options)\n Readable.call(this, options)\n Writable.call(this, options)\n if (options) {\n this.allowHalfOpen = options.allowHalfOpen !== false\n if (options.readable === false) {\n this._readableState.readable = false\n this._readableState.ended = true\n this._readableState.endEmitted = true\n }\n if (options.writable === false) {\n this._writableState.writable = false\n this._writableState.ending = true\n this._writableState.ended = true\n this._writableState.finished = true\n }\n } else {\n this.allowHalfOpen = true\n }\n}\nObjectDefineProperties(Duplex.prototype, {\n writable: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable')\n },\n writableHighWaterMark: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark')\n },\n writableObjectMode: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode')\n },\n writableBuffer: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer')\n },\n writableLength: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength')\n },\n writableFinished: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished')\n },\n writableCorked: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked')\n },\n writableEnded: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded')\n },\n writableNeedDrain: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain')\n },\n destroyed: {\n __proto__: null,\n get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false\n }\n return this._readableState.destroyed && this._writableState.destroyed\n },\n set(value) {\n // Backward compatibility, the user is explicitly\n // managing destroyed.\n if (this._readableState && this._writableState) {\n this._readableState.destroyed = value\n this._writableState.destroyed = value\n }\n }\n }\n})\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nDuplex.fromWeb = function (pair, options) {\n return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options)\n}\nDuplex.toWeb = function (duplex) {\n return lazyWebStreams().newReadableWritablePairFromDuplex(duplex)\n}\nlet duplexify\nDuplex.from = function (body) {\n if (!duplexify) {\n duplexify = require('./duplexify')\n }\n return duplexify(body, 'body')\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf, Symbol } = require('../../ours/primordials')\nmodule.exports = Transform\nconst { ERR_METHOD_NOT_IMPLEMENTED } = require('../../ours/errors').codes\nconst Duplex = require('./duplex')\nconst { getHighWaterMark } = require('./state')\nObjectSetPrototypeOf(Transform.prototype, Duplex.prototype)\nObjectSetPrototypeOf(Transform, Duplex)\nconst kCallback = Symbol('kCallback')\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options)\n\n // TODO (ronag): This should preferably always be\n // applied but would be semver-major. Or even better;\n // make Transform a Readable with the Writable interface.\n const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null\n if (readableHighWaterMark === 0) {\n // A Duplex will buffer both on the writable and readable side while\n // a Transform just wants to buffer hwm number of elements. To avoid\n // buffering twice we disable buffering on the writable side.\n options = {\n ...options,\n highWaterMark: null,\n readableHighWaterMark,\n // TODO (ronag): 0 is not optimal since we have\n // a \"bug\" where we check needDrain before calling _write and not after.\n // Refs: https://github.com/nodejs/node/pull/32887\n // Refs: https://github.com/nodejs/node/pull/35941\n writableHighWaterMark: options.writableHighWaterMark || 0\n }\n }\n Duplex.call(this, options)\n\n // We have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false\n this[kCallback] = null\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform\n if (typeof options.flush === 'function') this._flush = options.flush\n }\n\n // When the writable side finishes, then flush out anything remaining.\n // Backwards compat. Some Transform streams incorrectly implement _final\n // instead of or in addition to _flush. By using 'prefinish' instead of\n // implementing _final we continue supporting this unfortunate use case.\n this.on('prefinish', prefinish)\n}\nfunction final(cb) {\n if (typeof this._flush === 'function' && !this.destroyed) {\n this._flush((er, data) => {\n if (er) {\n if (cb) {\n cb(er)\n } else {\n this.destroy(er)\n }\n return\n }\n if (data != null) {\n this.push(data)\n }\n this.push(null)\n if (cb) {\n cb()\n }\n })\n } else {\n this.push(null)\n if (cb) {\n cb()\n }\n }\n}\nfunction prefinish() {\n if (this._final !== final) {\n final.call(this)\n }\n}\nTransform.prototype._final = final\nTransform.prototype._transform = function (chunk, encoding, callback) {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()')\n}\nTransform.prototype._write = function (chunk, encoding, callback) {\n const rState = this._readableState\n const wState = this._writableState\n const length = rState.length\n this._transform(chunk, encoding, (err, val) => {\n if (err) {\n callback(err)\n return\n }\n if (val != null) {\n this.push(val)\n }\n if (\n wState.ended ||\n // Backwards compat.\n length === rState.length ||\n // Backwards compat.\n rState.length < rState.highWaterMark\n ) {\n callback()\n } else {\n this[kCallback] = callback\n }\n })\n}\nTransform.prototype._read = function () {\n if (this[kCallback]) {\n const callback = this[kCallback]\n this[kCallback] = null\n callback()\n }\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf } = require('../../ours/primordials')\nmodule.exports = PassThrough\nconst Transform = require('./transform')\nObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype)\nObjectSetPrototypeOf(PassThrough, Transform)\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options)\n Transform.call(this, options)\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk)\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { ArrayIsArray, Promise, SymbolAsyncIterator } = require('../../ours/primordials')\nconst eos = require('./end-of-stream')\nconst { once } = require('../../ours/util')\nconst destroyImpl = require('./destroy')\nconst Duplex = require('./duplex')\nconst {\n aggregateTwoErrors,\n codes: {\n ERR_INVALID_ARG_TYPE,\n ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED,\n ERR_STREAM_PREMATURE_CLOSE\n },\n AbortError\n} = require('../../ours/errors')\nconst { validateFunction, validateAbortSignal } = require('../validators')\nconst {\n isIterable,\n isReadable,\n isReadableNodeStream,\n isNodeStream,\n isTransformStream,\n isWebStream,\n isReadableStream,\n isReadableEnded\n} = require('./utils')\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nlet PassThrough\nlet Readable\nfunction destroyer(stream, reading, writing) {\n let finished = false\n stream.on('close', () => {\n finished = true\n })\n const cleanup = eos(\n stream,\n {\n readable: reading,\n writable: writing\n },\n (err) => {\n finished = !err\n }\n )\n return {\n destroy: (err) => {\n if (finished) return\n finished = true\n destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe'))\n },\n cleanup\n }\n}\nfunction popCallback(streams) {\n // Streams should never be an empty array. It should always contain at least\n // a single stream. Therefore optimize for the average case instead of\n // checking for length === 0 as well.\n validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]')\n return streams.pop()\n}\nfunction makeAsyncIterable(val) {\n if (isIterable(val)) {\n return val\n } else if (isReadableNodeStream(val)) {\n // Legacy streams are not Iterable.\n return fromReadable(val)\n }\n throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val)\n}\nasync function* fromReadable(val) {\n if (!Readable) {\n Readable = require('./readable')\n }\n yield* Readable.prototype[SymbolAsyncIterator].call(val)\n}\nasync function pumpToNode(iterable, writable, finish, { end }) {\n let error\n let onresolve = null\n const resume = (err) => {\n if (err) {\n error = err\n }\n if (onresolve) {\n const callback = onresolve\n onresolve = null\n callback()\n }\n }\n const wait = () =>\n new Promise((resolve, reject) => {\n if (error) {\n reject(error)\n } else {\n onresolve = () => {\n if (error) {\n reject(error)\n } else {\n resolve()\n }\n }\n }\n })\n writable.on('drain', resume)\n const cleanup = eos(\n writable,\n {\n readable: false\n },\n resume\n )\n try {\n if (writable.writableNeedDrain) {\n await wait()\n }\n for await (const chunk of iterable) {\n if (!writable.write(chunk)) {\n await wait()\n }\n }\n if (end) {\n writable.end()\n }\n await wait()\n finish()\n } catch (err) {\n finish(error !== err ? aggregateTwoErrors(error, err) : err)\n } finally {\n cleanup()\n writable.off('drain', resume)\n }\n}\nasync function pumpToWeb(readable, writable, finish, { end }) {\n if (isTransformStream(writable)) {\n writable = writable.writable\n }\n // https://streams.spec.whatwg.org/#example-manual-write-with-backpressure\n const writer = writable.getWriter()\n try {\n for await (const chunk of readable) {\n await writer.ready\n writer.write(chunk).catch(() => {})\n }\n await writer.ready\n if (end) {\n await writer.close()\n }\n finish()\n } catch (err) {\n try {\n await writer.abort(err)\n finish(err)\n } catch (err) {\n finish(err)\n }\n }\n}\nfunction pipeline(...streams) {\n return pipelineImpl(streams, once(popCallback(streams)))\n}\nfunction pipelineImpl(streams, callback, opts) {\n if (streams.length === 1 && ArrayIsArray(streams[0])) {\n streams = streams[0]\n }\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams')\n }\n const ac = new AbortController()\n const signal = ac.signal\n const outerSignal = opts === null || opts === undefined ? undefined : opts.signal\n\n // Need to cleanup event listeners if last stream is readable\n // https://github.com/nodejs/node/issues/35452\n const lastStreamCleanup = []\n validateAbortSignal(outerSignal, 'options.signal')\n function abort() {\n finishImpl(new AbortError())\n }\n outerSignal === null || outerSignal === undefined ? undefined : outerSignal.addEventListener('abort', abort)\n let error\n let value\n const destroys = []\n let finishCount = 0\n function finish(err) {\n finishImpl(err, --finishCount === 0)\n }\n function finishImpl(err, final) {\n if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) {\n error = err\n }\n if (!error && !final) {\n return\n }\n while (destroys.length) {\n destroys.shift()(error)\n }\n outerSignal === null || outerSignal === undefined ? undefined : outerSignal.removeEventListener('abort', abort)\n ac.abort()\n if (final) {\n if (!error) {\n lastStreamCleanup.forEach((fn) => fn())\n }\n process.nextTick(callback, error, value)\n }\n }\n let ret\n for (let i = 0; i < streams.length; i++) {\n const stream = streams[i]\n const reading = i < streams.length - 1\n const writing = i > 0\n const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false\n const isLastStream = i === streams.length - 1\n if (isNodeStream(stream)) {\n if (end) {\n const { destroy, cleanup } = destroyer(stream, reading, writing)\n destroys.push(destroy)\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n }\n\n // Catch stream errors that occur after pipe/pump has completed.\n function onError(err) {\n if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n finish(err)\n }\n }\n stream.on('error', onError)\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(() => {\n stream.removeListener('error', onError)\n })\n }\n }\n if (i === 0) {\n if (typeof stream === 'function') {\n ret = stream({\n signal\n })\n if (!isIterable(ret)) {\n throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret)\n }\n } else if (isIterable(stream) || isReadableNodeStream(stream) || isTransformStream(stream)) {\n ret = stream\n } else {\n ret = Duplex.from(stream)\n }\n } else if (typeof stream === 'function') {\n if (isTransformStream(ret)) {\n var _ret\n ret = makeAsyncIterable((_ret = ret) === null || _ret === undefined ? undefined : _ret.readable)\n } else {\n ret = makeAsyncIterable(ret)\n }\n ret = stream(ret, {\n signal\n })\n if (reading) {\n if (!isIterable(ret, true)) {\n throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret)\n }\n } else {\n var _ret2\n if (!PassThrough) {\n PassThrough = require('./passthrough')\n }\n\n // If the last argument to pipeline is not a stream\n // we must create a proxy stream so that pipeline(...)\n // always returns a stream which can be further\n // composed through `.pipe(stream)`.\n\n const pt = new PassThrough({\n objectMode: true\n })\n\n // Handle Promises/A+ spec, `then` could be a getter that throws on\n // second use.\n const then = (_ret2 = ret) === null || _ret2 === undefined ? undefined : _ret2.then\n if (typeof then === 'function') {\n finishCount++\n then.call(\n ret,\n (val) => {\n value = val\n if (val != null) {\n pt.write(val)\n }\n if (end) {\n pt.end()\n }\n process.nextTick(finish)\n },\n (err) => {\n pt.destroy(err)\n process.nextTick(finish, err)\n }\n )\n } else if (isIterable(ret, true)) {\n finishCount++\n pumpToNode(ret, pt, finish, {\n end\n })\n } else if (isReadableStream(ret) || isTransformStream(ret)) {\n const toRead = ret.readable || ret\n finishCount++\n pumpToNode(toRead, pt, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret)\n }\n ret = pt\n const { destroy, cleanup } = destroyer(ret, false, true)\n destroys.push(destroy)\n if (isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n }\n } else if (isNodeStream(stream)) {\n if (isReadableNodeStream(ret)) {\n finishCount += 2\n const cleanup = pipe(ret, stream, finish, {\n end\n })\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n } else if (isTransformStream(ret) || isReadableStream(ret)) {\n const toRead = ret.readable || ret\n finishCount++\n pumpToNode(toRead, stream, finish, {\n end\n })\n } else if (isIterable(ret)) {\n finishCount++\n pumpToNode(ret, stream, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_ARG_TYPE(\n 'val',\n ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n ret\n )\n }\n ret = stream\n } else if (isWebStream(stream)) {\n if (isReadableNodeStream(ret)) {\n finishCount++\n pumpToWeb(makeAsyncIterable(ret), stream, finish, {\n end\n })\n } else if (isReadableStream(ret) || isIterable(ret)) {\n finishCount++\n pumpToWeb(ret, stream, finish, {\n end\n })\n } else if (isTransformStream(ret)) {\n finishCount++\n pumpToWeb(ret.readable, stream, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_ARG_TYPE(\n 'val',\n ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n ret\n )\n }\n ret = stream\n } else {\n ret = Duplex.from(stream)\n }\n }\n if (\n (signal !== null && signal !== undefined && signal.aborted) ||\n (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted)\n ) {\n process.nextTick(abort)\n }\n return ret\n}\nfunction pipe(src, dst, finish, { end }) {\n let ended = false\n dst.on('close', () => {\n if (!ended) {\n // Finish if the destination closes before the source has completed.\n finish(new ERR_STREAM_PREMATURE_CLOSE())\n }\n })\n src.pipe(dst, {\n end: false\n }) // If end is true we already will have a listener to end dst.\n\n if (end) {\n // Compat. Before node v10.12.0 stdio used to throw an error so\n // pipe() did/does not end() stdio destinations.\n // Now they allow it but \"secretly\" don't close the underlying fd.\n\n function endFn() {\n ended = true\n dst.end()\n }\n if (isReadableEnded(src)) {\n // End the destination if the source has already ended.\n process.nextTick(endFn)\n } else {\n src.once('end', endFn)\n }\n } else {\n finish()\n }\n eos(\n src,\n {\n readable: true,\n writable: false\n },\n (err) => {\n const rState = src._readableState\n if (\n err &&\n err.code === 'ERR_STREAM_PREMATURE_CLOSE' &&\n rState &&\n rState.ended &&\n !rState.errored &&\n !rState.errorEmitted\n ) {\n // Some readable streams will emit 'close' before 'end'. However, since\n // this is on the readable side 'end' should still be emitted if the\n // stream has been ended and no error emitted. This should be allowed in\n // favor of backwards compatibility. Since the stream is piped to a\n // destination this should not result in any observable difference.\n // We don't need to check if this is a writable premature close since\n // eos will only fail with premature close on the reading side for\n // duplex streams.\n src.once('end', finish).once('error', finish)\n } else {\n finish(err)\n }\n }\n )\n return eos(\n dst,\n {\n readable: false,\n writable: true\n },\n finish\n )\n}\nmodule.exports = {\n pipelineImpl,\n pipeline\n}\n", "'use strict'\n\nconst { pipeline } = require('./pipeline')\nconst Duplex = require('./duplex')\nconst { destroyer } = require('./destroy')\nconst {\n isNodeStream,\n isReadable,\n isWritable,\n isWebStream,\n isTransformStream,\n isWritableStream,\n isReadableStream\n} = require('./utils')\nconst {\n AbortError,\n codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS }\n} = require('../../ours/errors')\nconst eos = require('./end-of-stream')\nmodule.exports = function compose(...streams) {\n if (streams.length === 0) {\n throw new ERR_MISSING_ARGS('streams')\n }\n if (streams.length === 1) {\n return Duplex.from(streams[0])\n }\n const orgStreams = [...streams]\n if (typeof streams[0] === 'function') {\n streams[0] = Duplex.from(streams[0])\n }\n if (typeof streams[streams.length - 1] === 'function') {\n const idx = streams.length - 1\n streams[idx] = Duplex.from(streams[idx])\n }\n for (let n = 0; n < streams.length; ++n) {\n if (!isNodeStream(streams[n]) && !isWebStream(streams[n])) {\n // TODO(ronag): Add checks for non streams.\n continue\n }\n if (\n n < streams.length - 1 &&\n !(isReadable(streams[n]) || isReadableStream(streams[n]) || isTransformStream(streams[n]))\n ) {\n throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable')\n }\n if (n > 0 && !(isWritable(streams[n]) || isWritableStream(streams[n]) || isTransformStream(streams[n]))) {\n throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable')\n }\n }\n let ondrain\n let onfinish\n let onreadable\n let onclose\n let d\n function onfinished(err) {\n const cb = onclose\n onclose = null\n if (cb) {\n cb(err)\n } else if (err) {\n d.destroy(err)\n } else if (!readable && !writable) {\n d.destroy()\n }\n }\n const head = streams[0]\n const tail = pipeline(streams, onfinished)\n const writable = !!(isWritable(head) || isWritableStream(head) || isTransformStream(head))\n const readable = !!(isReadable(tail) || isReadableStream(tail) || isTransformStream(tail))\n\n // TODO(ronag): Avoid double buffering.\n // Implement Writable/Readable/Duplex traits.\n // See, https://github.com/nodejs/node/pull/33515.\n d = new Duplex({\n // TODO (ronag): highWaterMark?\n writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode),\n readableObjectMode: !!(tail !== null && tail !== undefined && tail.writableObjectMode),\n writable,\n readable\n })\n if (writable) {\n if (isNodeStream(head)) {\n d._write = function (chunk, encoding, callback) {\n if (head.write(chunk, encoding)) {\n callback()\n } else {\n ondrain = callback\n }\n }\n d._final = function (callback) {\n head.end()\n onfinish = callback\n }\n head.on('drain', function () {\n if (ondrain) {\n const cb = ondrain\n ondrain = null\n cb()\n }\n })\n } else if (isWebStream(head)) {\n const writable = isTransformStream(head) ? head.writable : head\n const writer = writable.getWriter()\n d._write = async function (chunk, encoding, callback) {\n try {\n await writer.ready\n writer.write(chunk).catch(() => {})\n callback()\n } catch (err) {\n callback(err)\n }\n }\n d._final = async function (callback) {\n try {\n await writer.ready\n writer.close().catch(() => {})\n onfinish = callback\n } catch (err) {\n callback(err)\n }\n }\n }\n const toRead = isTransformStream(tail) ? tail.readable : tail\n eos(toRead, () => {\n if (onfinish) {\n const cb = onfinish\n onfinish = null\n cb()\n }\n })\n }\n if (readable) {\n if (isNodeStream(tail)) {\n tail.on('readable', function () {\n if (onreadable) {\n const cb = onreadable\n onreadable = null\n cb()\n }\n })\n tail.on('end', function () {\n d.push(null)\n })\n d._read = function () {\n while (true) {\n const buf = tail.read()\n if (buf === null) {\n onreadable = d._read\n return\n }\n if (!d.push(buf)) {\n return\n }\n }\n }\n } else if (isWebStream(tail)) {\n const readable = isTransformStream(tail) ? tail.readable : tail\n const reader = readable.getReader()\n d._read = async function () {\n while (true) {\n try {\n const { value, done } = await reader.read()\n if (!d.push(value)) {\n return\n }\n if (done) {\n d.push(null)\n return\n }\n } catch {\n return\n }\n }\n }\n }\n }\n d._destroy = function (err, callback) {\n if (!err && onclose !== null) {\n err = new AbortError()\n }\n onreadable = null\n ondrain = null\n onfinish = null\n if (onclose === null) {\n callback(err)\n } else {\n onclose = callback\n if (isNodeStream(tail)) {\n destroyer(tail, err)\n }\n }\n }\n return d\n}\n", "'use strict'\n\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst {\n codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE },\n AbortError\n} = require('../../ours/errors')\nconst { validateAbortSignal, validateInteger, validateObject } = require('../validators')\nconst kWeakHandler = require('../../ours/primordials').Symbol('kWeak')\nconst { finished } = require('./end-of-stream')\nconst staticCompose = require('./compose')\nconst { addAbortSignalNoValidate } = require('./add-abort-signal')\nconst { isWritable, isNodeStream } = require('./utils')\nconst {\n ArrayPrototypePush,\n MathFloor,\n Number,\n NumberIsNaN,\n Promise,\n PromiseReject,\n PromisePrototypeThen,\n Symbol\n} = require('../../ours/primordials')\nconst kEmpty = Symbol('kEmpty')\nconst kEof = Symbol('kEof')\nfunction compose(stream, options) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n if (isNodeStream(stream) && !isWritable(stream)) {\n throw new ERR_INVALID_ARG_VALUE('stream', stream, 'must be writable')\n }\n const composedStream = staticCompose(this, stream)\n if (options !== null && options !== undefined && options.signal) {\n // Not validating as we already validated before\n addAbortSignalNoValidate(options.signal, composedStream)\n }\n return composedStream\n}\nfunction map(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n let concurrency = 1\n if ((options === null || options === undefined ? undefined : options.concurrency) != null) {\n concurrency = MathFloor(options.concurrency)\n }\n validateInteger(concurrency, 'concurrency', 1)\n return async function* map() {\n var _options$signal, _options$signal2\n const ac = new AbortController()\n const stream = this\n const queue = []\n const signal = ac.signal\n const signalOpt = {\n signal\n }\n const abort = () => ac.abort()\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal = options.signal) !== null &&\n _options$signal !== undefined &&\n _options$signal.aborted\n ) {\n abort()\n }\n options === null || options === undefined\n ? undefined\n : (_options$signal2 = options.signal) === null || _options$signal2 === undefined\n ? undefined\n : _options$signal2.addEventListener('abort', abort)\n let next\n let resume\n let done = false\n function onDone() {\n done = true\n }\n async function pump() {\n try {\n for await (let val of stream) {\n var _val\n if (done) {\n return\n }\n if (signal.aborted) {\n throw new AbortError()\n }\n try {\n val = fn(val, signalOpt)\n } catch (err) {\n val = PromiseReject(err)\n }\n if (val === kEmpty) {\n continue\n }\n if (typeof ((_val = val) === null || _val === undefined ? undefined : _val.catch) === 'function') {\n val.catch(onDone)\n }\n queue.push(val)\n if (next) {\n next()\n next = null\n }\n if (!done && queue.length && queue.length >= concurrency) {\n await new Promise((resolve) => {\n resume = resolve\n })\n }\n }\n queue.push(kEof)\n } catch (err) {\n const val = PromiseReject(err)\n PromisePrototypeThen(val, undefined, onDone)\n queue.push(val)\n } finally {\n var _options$signal3\n done = true\n if (next) {\n next()\n next = null\n }\n options === null || options === undefined\n ? undefined\n : (_options$signal3 = options.signal) === null || _options$signal3 === undefined\n ? undefined\n : _options$signal3.removeEventListener('abort', abort)\n }\n }\n pump()\n try {\n while (true) {\n while (queue.length > 0) {\n const val = await queue[0]\n if (val === kEof) {\n return\n }\n if (signal.aborted) {\n throw new AbortError()\n }\n if (val !== kEmpty) {\n yield val\n }\n queue.shift()\n if (resume) {\n resume()\n resume = null\n }\n }\n await new Promise((resolve) => {\n next = resolve\n })\n }\n } finally {\n ac.abort()\n done = true\n if (resume) {\n resume()\n resume = null\n }\n }\n }.call(this)\n}\nfunction asIndexedPairs(options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n return async function* asIndexedPairs() {\n let index = 0\n for await (const val of this) {\n var _options$signal4\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal4 = options.signal) !== null &&\n _options$signal4 !== undefined &&\n _options$signal4.aborted\n ) {\n throw new AbortError({\n cause: options.signal.reason\n })\n }\n yield [index++, val]\n }\n }.call(this)\n}\nasync function some(fn, options = undefined) {\n for await (const unused of filter.call(this, fn, options)) {\n return true\n }\n return false\n}\nasync function every(fn, options = undefined) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n // https://en.wikipedia.org/wiki/De_Morgan%27s_laws\n return !(await some.call(\n this,\n async (...args) => {\n return !(await fn(...args))\n },\n options\n ))\n}\nasync function find(fn, options) {\n for await (const result of filter.call(this, fn, options)) {\n return result\n }\n return undefined\n}\nasync function forEach(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n async function forEachFn(value, options) {\n await fn(value, options)\n return kEmpty\n }\n // eslint-disable-next-line no-unused-vars\n for await (const unused of map.call(this, forEachFn, options));\n}\nfunction filter(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n async function filterFn(value, options) {\n if (await fn(value, options)) {\n return value\n }\n return kEmpty\n }\n return map.call(this, filterFn, options)\n}\n\n// Specific to provide better error to reduce since the argument is only\n// missing if the stream has no items in it - but the code is still appropriate\nclass ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS {\n constructor() {\n super('reduce')\n this.message = 'Reduce of an empty stream requires an initial value'\n }\n}\nasync function reduce(reducer, initialValue, options) {\n var _options$signal5\n if (typeof reducer !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer)\n }\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n let hasInitialValue = arguments.length > 1\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal5 = options.signal) !== null &&\n _options$signal5 !== undefined &&\n _options$signal5.aborted\n ) {\n const err = new AbortError(undefined, {\n cause: options.signal.reason\n })\n this.once('error', () => {}) // The error is already propagated\n await finished(this.destroy(err))\n throw err\n }\n const ac = new AbortController()\n const signal = ac.signal\n if (options !== null && options !== undefined && options.signal) {\n const opts = {\n once: true,\n [kWeakHandler]: this\n }\n options.signal.addEventListener('abort', () => ac.abort(), opts)\n }\n let gotAnyItemFromStream = false\n try {\n for await (const value of this) {\n var _options$signal6\n gotAnyItemFromStream = true\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal6 = options.signal) !== null &&\n _options$signal6 !== undefined &&\n _options$signal6.aborted\n ) {\n throw new AbortError()\n }\n if (!hasInitialValue) {\n initialValue = value\n hasInitialValue = true\n } else {\n initialValue = await reducer(initialValue, value, {\n signal\n })\n }\n }\n if (!gotAnyItemFromStream && !hasInitialValue) {\n throw new ReduceAwareErrMissingArgs()\n }\n } finally {\n ac.abort()\n }\n return initialValue\n}\nasync function toArray(options) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n const result = []\n for await (const val of this) {\n var _options$signal7\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal7 = options.signal) !== null &&\n _options$signal7 !== undefined &&\n _options$signal7.aborted\n ) {\n throw new AbortError(undefined, {\n cause: options.signal.reason\n })\n }\n ArrayPrototypePush(result, val)\n }\n return result\n}\nfunction flatMap(fn, options) {\n const values = map.call(this, fn, options)\n return async function* flatMap() {\n for await (const val of values) {\n yield* val\n }\n }.call(this)\n}\nfunction toIntegerOrInfinity(number) {\n // We coerce here to align with the spec\n // https://github.com/tc39/proposal-iterator-helpers/issues/169\n number = Number(number)\n if (NumberIsNaN(number)) {\n return 0\n }\n if (number < 0) {\n throw new ERR_OUT_OF_RANGE('number', '>= 0', number)\n }\n return number\n}\nfunction drop(number, options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n number = toIntegerOrInfinity(number)\n return async function* drop() {\n var _options$signal8\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal8 = options.signal) !== null &&\n _options$signal8 !== undefined &&\n _options$signal8.aborted\n ) {\n throw new AbortError()\n }\n for await (const val of this) {\n var _options$signal9\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal9 = options.signal) !== null &&\n _options$signal9 !== undefined &&\n _options$signal9.aborted\n ) {\n throw new AbortError()\n }\n if (number-- <= 0) {\n yield val\n }\n }\n }.call(this)\n}\nfunction take(number, options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n number = toIntegerOrInfinity(number)\n return async function* take() {\n var _options$signal10\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal10 = options.signal) !== null &&\n _options$signal10 !== undefined &&\n _options$signal10.aborted\n ) {\n throw new AbortError()\n }\n for await (const val of this) {\n var _options$signal11\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal11 = options.signal) !== null &&\n _options$signal11 !== undefined &&\n _options$signal11.aborted\n ) {\n throw new AbortError()\n }\n if (number-- > 0) {\n yield val\n } else {\n return\n }\n }\n }.call(this)\n}\nmodule.exports.streamReturningOperators = {\n asIndexedPairs,\n drop,\n filter,\n flatMap,\n map,\n take,\n compose\n}\nmodule.exports.promiseReturningOperators = {\n every,\n forEach,\n reduce,\n toArray,\n some,\n find\n}\n", "'use strict'\n\nconst { ArrayPrototypePop, Promise } = require('../ours/primordials')\nconst { isIterable, isNodeStream, isWebStream } = require('../internal/streams/utils')\nconst { pipelineImpl: pl } = require('../internal/streams/pipeline')\nconst { finished } = require('../internal/streams/end-of-stream')\nrequire('../../lib/stream.js')\nfunction pipeline(...streams) {\n return new Promise((resolve, reject) => {\n let signal\n let end\n const lastArg = streams[streams.length - 1]\n if (\n lastArg &&\n typeof lastArg === 'object' &&\n !isNodeStream(lastArg) &&\n !isIterable(lastArg) &&\n !isWebStream(lastArg)\n ) {\n const options = ArrayPrototypePop(streams)\n signal = options.signal\n end = options.end\n }\n pl(\n streams,\n (err, value) => {\n if (err) {\n reject(err)\n } else {\n resolve(value)\n }\n },\n {\n signal,\n end\n }\n )\n })\n}\nmodule.exports = {\n finished,\n pipeline\n}\n", "/* replacement start */\n\nconst { Buffer } = require('buffer')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n;('use strict')\nconst { ObjectDefineProperty, ObjectKeys, ReflectApply } = require('./ours/primordials')\nconst {\n promisify: { custom: customPromisify }\n} = require('./ours/util')\nconst { streamReturningOperators, promiseReturningOperators } = require('./internal/streams/operators')\nconst {\n codes: { ERR_ILLEGAL_CONSTRUCTOR }\n} = require('./ours/errors')\nconst compose = require('./internal/streams/compose')\nconst { pipeline } = require('./internal/streams/pipeline')\nconst { destroyer } = require('./internal/streams/destroy')\nconst eos = require('./internal/streams/end-of-stream')\nconst internalBuffer = {}\nconst promises = require('./stream/promises')\nconst utils = require('./internal/streams/utils')\nconst Stream = (module.exports = require('./internal/streams/legacy').Stream)\nStream.isDisturbed = utils.isDisturbed\nStream.isErrored = utils.isErrored\nStream.isReadable = utils.isReadable\nStream.Readable = require('./internal/streams/readable')\nfor (const key of ObjectKeys(streamReturningOperators)) {\n const op = streamReturningOperators[key]\n function fn(...args) {\n if (new.target) {\n throw ERR_ILLEGAL_CONSTRUCTOR()\n }\n return Stream.Readable.from(ReflectApply(op, this, args))\n }\n ObjectDefineProperty(fn, 'name', {\n __proto__: null,\n value: op.name\n })\n ObjectDefineProperty(fn, 'length', {\n __proto__: null,\n value: op.length\n })\n ObjectDefineProperty(Stream.Readable.prototype, key, {\n __proto__: null,\n value: fn,\n enumerable: false,\n configurable: true,\n writable: true\n })\n}\nfor (const key of ObjectKeys(promiseReturningOperators)) {\n const op = promiseReturningOperators[key]\n function fn(...args) {\n if (new.target) {\n throw ERR_ILLEGAL_CONSTRUCTOR()\n }\n return ReflectApply(op, this, args)\n }\n ObjectDefineProperty(fn, 'name', {\n __proto__: null,\n value: op.name\n })\n ObjectDefineProperty(fn, 'length', {\n __proto__: null,\n value: op.length\n })\n ObjectDefineProperty(Stream.Readable.prototype, key, {\n __proto__: null,\n value: fn,\n enumerable: false,\n configurable: true,\n writable: true\n })\n}\nStream.Writable = require('./internal/streams/writable')\nStream.Duplex = require('./internal/streams/duplex')\nStream.Transform = require('./internal/streams/transform')\nStream.PassThrough = require('./internal/streams/passthrough')\nStream.pipeline = pipeline\nconst { addAbortSignal } = require('./internal/streams/add-abort-signal')\nStream.addAbortSignal = addAbortSignal\nStream.finished = eos\nStream.destroy = destroyer\nStream.compose = compose\nObjectDefineProperty(Stream, 'promises', {\n __proto__: null,\n configurable: true,\n enumerable: true,\n get() {\n return promises\n }\n})\nObjectDefineProperty(pipeline, customPromisify, {\n __proto__: null,\n enumerable: true,\n get() {\n return promises.pipeline\n }\n})\nObjectDefineProperty(eos, customPromisify, {\n __proto__: null,\n enumerable: true,\n get() {\n return promises.finished\n }\n})\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream\nStream._isUint8Array = function isUint8Array(value) {\n return value instanceof Uint8Array\n}\nStream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n}\n", "'use strict'\n\nconst CustomStream = require('../stream')\nconst promises = require('../stream/promises')\nconst originalDestroy = CustomStream.Readable.destroy\nmodule.exports = CustomStream.Readable\n\n// Explicit export naming is needed for ESM\nmodule.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer\nmodule.exports._isUint8Array = CustomStream._isUint8Array\nmodule.exports.isDisturbed = CustomStream.isDisturbed\nmodule.exports.isErrored = CustomStream.isErrored\nmodule.exports.isReadable = CustomStream.isReadable\nmodule.exports.Readable = CustomStream.Readable\nmodule.exports.Writable = CustomStream.Writable\nmodule.exports.Duplex = CustomStream.Duplex\nmodule.exports.Transform = CustomStream.Transform\nmodule.exports.PassThrough = CustomStream.PassThrough\nmodule.exports.addAbortSignal = CustomStream.addAbortSignal\nmodule.exports.finished = CustomStream.finished\nmodule.exports.destroy = CustomStream.destroy\nmodule.exports.destroy = originalDestroy\nmodule.exports.pipeline = CustomStream.pipeline\nmodule.exports.compose = CustomStream.compose\nObject.defineProperty(CustomStream, 'promises', {\n configurable: true,\n enumerable: true,\n get() {\n return promises\n }\n})\nmodule.exports.Stream = CustomStream.Stream\n\n// Allow default importing\nmodule.exports.default = module.exports\n", "import TTLCache from '@isaacs/ttlcache';\nexport { TTLCache as TtlCache };", "// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n", "const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) return new Uint8Array(o)\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n", "import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase<Prefix>}\n */\n encode (bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.UnibaseDecoder<Prefix>}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\n */\n decode (text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record<Prefix, API.UnibaseDecoder<Prefix>>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.CombobaseDecoder<Prefix>}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders<Prefix>} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {Prefix} */ (input[0])\n const decoder = this.decoders[prefix]\n if (decoder) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder<L>|API.CombobaseDecoder<L>} left\n * @param {API.UnibaseDecoder<R>|API.CombobaseDecoder<R>} right\n * @returns {ComposedDecoder<L|R>}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders<L|R>} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder<L> */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder<R> */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec<Prefix>}\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseEncode, baseDecode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec<Base, Prefix>}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec<Base, Prefix>}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record<string, number>} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n return from({\n prefix,\n name,\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input) {\n return decode(input, alphabet, bitsPerChar, name)\n }\n })\n}\n", "import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n", "import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n", "// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n})\n\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n})\n\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n})\n\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n})\n", "/**\n * Represents an array of a fixed length, preventing modifications to its size.\n *\n * The `FixedLengthArray` utility type transforms a standard array into a variant where\n * methods that could alter the length are omitted. It leverages TypeScript's advanced types,\n * such as conditional types and mapped types, to ensure that the array cannot be resized\n * through methods like `push`, `pop`, `splice`, `shift`, and `unshift`. The utility type\n * maintains all other characteristics of a standard array, including indexing, iteration,\n * and type checking for its elements.\n *\n * Note: The type does not prevent direct assignment to indices, even if it would exceed\n * the original length. However, such actions would lead to TypeScript type errors.\n *\n * @example\n * ```ts\n * // Declare a variable with a type of fixed-length array of three strings.\n * let myFixedLengthArray: FixedLengthArray< [string, string, string]>;\n *\n * // Array declaration tests\n * myFixedLengthArray = [ 'a', 'b', 'c' ]; // OK\n * myFixedLengthArray = [ 'a', 'b', 123 ]; // TYPE ERROR\n * myFixedLengthArray = [ 'a' ]; // LENGTH ERROR\n * myFixedLengthArray = [ 'a', 'b' ]; // LENGTH ERROR\n *\n * // Index assignment tests\n * myFixedLengthArray[1] = 'foo'; // OK\n * myFixedLengthArray[1000] = 'foo'; // INVALID INDEX ERROR\n *\n * // Methods that mutate array length\n * myFixedLengthArray.push('foo'); // MISSING METHOD ERROR\n * myFixedLengthArray.pop(); // MISSING METHOD ERROR\n *\n * // Direct length manipulation\n * myFixedLengthArray.length = 123; // READ-ONLY ERROR\n *\n * // Destructuring\n * let [ a ] = myFixedLengthArray; // OK\n * let [ a, b ] = myFixedLengthArray; // OK\n * let [ a, b, c ] = myFixedLengthArray; // OK\n * let [ a, b, c, d ] = myFixedLengthArray; // INVALID INDEX ERROR\n * ```\n *\n * @template T extends any[] - The array type to be transformed.\n */\nexport type FixedLengthArray<T extends any[]> =\n Pick<T, Exclude<keyof T, ArrayLengthMutationKeys>>\n & {\n /**\n * Custom iterator for the `FixedLengthArray` type.\n *\n * This iterator allows the `FixedLengthArray` to be used in standard iteration\n * contexts, such as `for...of` loops and spread syntax. It ensures that even though\n * the array is of a fixed length with disabled mutation methods, it still retains\n * iterable behavior similar to a regular array.\n *\n * @returns An IterableIterator for the array items.\n */\n [Symbol.iterator]: () => IterableIterator<ArrayItems<T>>\n };\n\n/** Helper types for {@link FixedLengthArray} */\ntype ArrayLengthMutationKeys = 'splice' | 'push' | 'pop' | 'shift' | 'unshift' | number;\ntype ArrayItems<T extends Array<any>> = T extends Array<infer TItems> ? TItems : never;\n\n/**\n * isArrayBufferSlice\n *\n * Checks if the ArrayBufferView represents a slice (subarray or a subview)\n * of an ArrayBuffer.\n *\n * An ArrayBufferView (TypedArray or DataView) can represent a portion of an\n * ArrayBuffer - such a view is said to be a \"slice\" of the original buffer.\n * This can occur when the `subarray` or `slice` method is called on a\n * TypedArray or when a DataView is created with a byteOffset and/or\n * byteLength that doesn't cover the full ArrayBuffer.\n *\n * @param arrayBufferView - The ArrayBufferView to be checked\n * @returns true if the ArrayBufferView represents a slice of an ArrayBuffer; false otherwise.\n */\nexport function isArrayBufferSlice(arrayBufferView: ArrayBufferView): boolean {\n return arrayBufferView.byteOffset !== 0 || arrayBufferView.byteLength !== arrayBufferView.buffer.byteLength;\n}\n\n/**\n * Checks if the given object is an AsyncIterable.\n *\n * An AsyncIterable is an object that implements the AsyncIterable protocol,\n * which means it has a [Symbol.asyncIterator] method. This function checks\n * if the provided object conforms to this protocol by verifying the presence\n * and type of the [Symbol.asyncIterator] method.\n *\n * @param obj - The object to be checked for AsyncIterable conformity.\n * @returns True if the object is an AsyncIterable, false otherwise.\n *\n * @example\n * ```ts\n * // Returns true for a valid AsyncIterable\n * const asyncIterable = {\n * async *[Symbol.asyncIterator]() {\n * yield 1;\n * yield 2;\n * }\n * };\n * console.log(isAsyncIterable(asyncIterable)); // true\n * ```\n *\n * @example\n * ```ts\n * // Returns false for a regular object\n * console.log(isAsyncIterable({ a: 1, b: 2 })); // false\n * ```\n */\nexport function isAsyncIterable(obj: any): obj is AsyncIterable<any> {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n return typeof obj[Symbol.asyncIterator] === 'function';\n}\n\n/**\n * isDefined\n *\n * Utility function to check if a variable is neither null nor undefined.\n * This function helps in making TypeScript infer the type of the variable\n * as being defined, excluding `null` and `undefined`.\n *\n * The function uses strict equality (`!==`) for the comparison, ensuring\n * that the variable is not just falsy (like an empty string or zero),\n * but is truly either `null` or `undefined`.\n *\n * @param arg - The variable to be checked\n * @returns true if the variable is neither `null` nor `undefined`\n */\nexport function isDefined<T>(arg: T): arg is Exclude<T, null | undefined> {\n return arg !== null && typeof arg !== 'undefined';\n}\n\n/**\n * Utility type that transforms a type `T` to have only certain keys `K` as required, while the\n * rest remain optional, except for keys specified in `O`, which are omitted entirely.\n *\n * This type is useful when you need a variation of a type where only specific properties are\n * required, and others are either optional or not included at all. It allows for more flexible type\n * definitions based on existing types without the need to redefine them.\n *\n * @template T - The original type to be transformed.\n * @template K - The keys of `T` that should be required.\n * @template O - The keys of `T` that should be omitted from the resulting type (optional).\n *\n * @example\n * ```ts\n * // Given an interface\n * interface Example {\n * requiredProp: string;\n * optionalProp?: number;\n * anotherOptionalProp?: boolean;\n * }\n *\n * // Making 'optionalProp' required and omitting 'anotherOptionalProp'\n * type ModifiedExample = RequireOnly<Example, 'optionalProp', 'anotherOptionalProp'>;\n * // Result: { requiredProp?: string; optionalProp: number; }\n * ```\n */\nexport type RequireOnly<T, K extends keyof T, O extends keyof T = never> = Required<Pick<T, K>> & Omit<Partial<T>, O>;\n\n/**\n * universalTypeOf\n *\n * Why does this function exist?\n *\n * You can typically check if a value is of a particular type, such as\n * Uint8Array or ArrayBuffer, by using the `instanceof` operator. The\n * `instanceof` operator checks the prototype property of a constructor\n * in the object's prototype chain.\n *\n * However, there is a caveat with the `instanceof` check if the value\n * was created from a different JavaScript context (like an iframe or\n * a web worker). In those cases, the `instanceof` check might fail\n * because each context has a different global object, and therefore,\n * different built-in constructor functions.\n *\n * The `typeof` operator provides information about the type of the\n * operand in a less detailed way. For basic data types like number,\n * string, boolean, and undefined, the `typeof` operator works as\n * expected. However, for objects, including arrays and null,\n * it always returns \"object\". For functions, it returns \"function\".\n * So, while `typeof` is good for basic type checking, it doesn't\n * give detailed information about complex data types.\n *\n * Unlike `instanceof` and `typeof`, `Object.prototype.toString.call(value)`\n * can ensure a consistent result across different JavaScript\n * contexts.\n *\n * Credit for inspiration:\n * Angus Croll\n * https://github.com/angus-c\n * https://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/\n */\nexport function universalTypeOf(value: unknown) {\n // Returns '[Object Type]' string.\n const typeString = Object.prototype.toString.call(value);\n // Returns ['Object', 'Type'] array or null.\n const match = typeString.match(/\\s([a-zA-Z0-9]+)/);\n // Deconstructs the array and gets just the type from index 1.\n const [_, type] = match as RegExpMatchArray;\n\n return type;\n}\n\n/**\n * Utility type to extract the type resolved by a Promise.\n *\n * This type unwraps the type `T` from `Promise<T>` if `T` is a Promise, otherwise returns `T` as\n * is. It's useful in situations where you need to handle the type returned by a promise-based\n * function in a synchronous context, such as defining types for test vectors or handling return\n * types in non-async code blocks.\n *\n * @template T - The type to unwrap from the Promise.\n *\n * @example\n * ```ts\n * // For a Promise type, it extracts the resolved type.\n * type AsyncNumber = Promise<number>;\n * type UnwrappedNumber = UnwrapPromise<AsyncNumber>; // number\n *\n * // For a non-Promise type, it returns the type as is.\n * type StringValue = string;\n * type UnwrappedString = UnwrapPromise<StringValue>; // string\n * ```\n */\nexport type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;", "import type { Multibase } from 'multiformats';\n\nimport { base32z } from 'multiformats/bases/base32';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { base64url } from 'multiformats/bases/base64';\n\nimport { isAsyncIterable, isArrayBufferSlice, universalTypeOf } from './type-utils.js';\n\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\n\nexport class Convert {\n data: any;\n format: string;\n\n constructor(data: any, format: string) {\n this.data = data;\n this.format = format;\n }\n\n static arrayBuffer(data: ArrayBuffer): Convert {\n return new Convert(data, 'ArrayBuffer');\n }\n\n static asyncIterable(data: AsyncIterable<any>): Convert {\n if (!isAsyncIterable(data)) {\n throw new TypeError('Input must be of type AsyncIterable.');\n }\n return new Convert(data, 'AsyncIterable');\n }\n\n static base32Z(data: string): Convert {\n return new Convert(data, 'Base32Z');\n }\n\n static base58Btc(data: string): Convert {\n return new Convert(data, 'Base58Btc');\n }\n\n static base64Url(data: string): Convert {\n return new Convert(data, 'Base64Url');\n }\n\n /**\n * Reference:\n * The BufferSource type is a TypeScript type that represents an ArrayBuffer\n * or one of the ArrayBufferView types, such a TypedArray (e.g., Uint8Array)\n * or a DataView.\n */\n static bufferSource(data: BufferSource): Convert {\n return new Convert(data, 'BufferSource');\n }\n\n static hex(data: string): Convert {\n if (typeof data !== 'string') {\n throw new TypeError('Hex input must be a string.');\n }\n if (data.length % 2 !== 0) {\n throw new TypeError('Hex input must have an even number of characters.');\n }\n return new Convert(data, 'Hex');\n }\n\n static multibase(data: string): Convert {\n return new Convert(data, 'Multibase');\n }\n\n static object(data: Record<string, any>): Convert {\n return new Convert(data, 'Object');\n }\n\n static string(data: string): Convert {\n return new Convert(data, 'String');\n }\n\n static uint8Array(data: Uint8Array): Convert {\n return new Convert(data, 'Uint8Array');\n }\n\n toArrayBuffer(): ArrayBuffer {\n switch (this.format) {\n\n case 'Base58Btc': {\n return base58btc.baseDecode(this.data).buffer;\n }\n\n case 'Base64Url': {\n return base64url.baseDecode(this.data).buffer;\n }\n\n case 'BufferSource': {\n const dataType = universalTypeOf(this.data);\n if (dataType === 'ArrayBuffer') {\n // Data is already an ArrayBuffer, No conversion is necessary.\n return this.data;\n } else if (ArrayBuffer.isView(this.data)) {\n // Data is a DataView or a different TypedArray (e.g., Uint16Array).\n if (isArrayBufferSlice(this.data)) {\n // Data is a slice of an ArrayBuffer. Return a new ArrayBuffer or ArrayBufferView of the same slice.\n return this.data.buffer.slice(this.data.byteOffset, this.data.byteOffset + this.data.byteLength);\n } else {\n // Data is a whole ArrayBuffer viewed as a different TypedArray or DataView. Return the whole ArrayBuffer.\n return this.data.buffer;\n }\n } else {\n throw new TypeError(`${this.format} value is not of type: ArrayBuffer, DataView, or TypedArray.`);\n }\n }\n\n case 'Hex': {\n return this.toUint8Array().buffer;\n }\n\n case 'String': {\n return this.toUint8Array().buffer;\n }\n\n case 'Uint8Array': {\n return this.data.buffer;\n }\n\n default:\n throw new TypeError(`Conversion from ${this.format} to ArrayBuffer is not supported.`);\n }\n }\n\n async toArrayBufferAsync(): Promise<ArrayBuffer> {\n switch (this.format) {\n case 'AsyncIterable': {\n const blob = await this.toBlobAsync();\n return await blob.arrayBuffer();\n }\n\n default:\n throw new TypeError(`Asynchronous conversion from ${this.format} to ArrayBuffer is not supported.`);\n }\n }\n\n toBase32Z(): string {\n switch (this.format) {\n\n case 'Uint8Array': {\n return base32z.baseEncode(this.data);\n }\n\n default:\n throw new TypeError(`Conversion from ${this.format} to Base64Z is not supported.`);\n }\n }\n\n toBase58Btc(): string {\n switch (this.format) {\n\n case 'ArrayBuffer': {\n const u8a = new Uint8Array(this.data);\n return base58btc.baseEncode(u8a);\n }\n\n case 'Multibase': {\n return this.data.substring(1);\n }\n\n case 'Uint8Array': {\n return base58btc.baseEncode(this.data);\n }\n\n default:\n throw new TypeError(`Conversion from ${this.format} to Base58Btc is not supported.`);\n }\n }\n\n toBase64Url(): string {\n switch (this.format) {\n\n case 'ArrayBuffer': {\n const u8a = new Uint8Array(this.data);\n return base64url.baseEncode(u8a);\n }\n\n case 'BufferSource': {\n const u8a = this.toUint8Array();\n return base64url.baseEncode(u8a);\n }\n\n case 'Object': {\n const string = JSON.stringify(this.data);\n const u8a = textEncoder.encode(string);\n return base64url.baseEncode(u8a);\n }\n\n case 'String': {\n const u8a = textEncoder.encode(this.data);\n return base64url.baseEncode(u8a);\n }\n\n case 'Uint8Array': {\n return base64url.baseEncode(this.data);\n }\n\n default:\n throw new TypeError(`Conversion from ${this.format} to Base64Url is not supported.`);\n }\n }\n\n async toBlobAsync(): Promise<Blob> {\n switch (this.format) {\n case 'AsyncIterable': {\n // Initialize an array to hold the chunks from the AsyncIterable.\n const chunks = [];\n\n // Asynchronously iterate over each chunk in the AsyncIterable.\n for await (const chunk of (this.data as AsyncIterable<any>)) {\n // Append each chunk to the chunks array. These chunks can be of any type, typically binary data or text.\n chunks.push(chunk);\n }\n\n // Create a new Blob from the aggregated chunks.\n // The Blob constructor combines these chunks into a single Blob object.\n const blob = new Blob(chunks);\n\n return blob;\n }\n\n default:\n throw new TypeError(`Asynchronous conversion from ${this.format} to Blob is not supported.`);\n }\n }\n\n toHex(): string {\n // pre-calculating Hex values improves runtime by 6-10x.\n const hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n\n switch (this.format) {\n\n case 'ArrayBuffer': {\n const u8a = this.toUint8Array();\n return Convert.uint8Array(u8a).toHex();\n }\n\n case 'Base64Url': {\n const u8a = this.toUint8Array();\n return Convert.uint8Array(u8a).toHex();\n }\n\n case 'Uint8Array': {\n let hex = '';\n for (let i = 0; i < this.data.length; i++) {\n hex += hexes[this.data[i]];\n }\n return hex;\n }\n\n default:\n throw new TypeError(`Conversion from ${this.format} to Hex is not supported.`);\n }\n }\n\n toMultibase(): Multibase<any> {\n switch (this.format) {\n case 'Base58Btc': {\n return `z${this.data}`;\n }\n\n default:\n throw new TypeError(`Conversion from ${this.format} to Multibase is not supported.`);\n }\n }\n\n toObject(): object {\n switch (this.format) {\n\n case 'Base64Url': {\n const u8a = base64url.baseDecode(this.data);\n const text = textDecoder.decode(u8a);\n return JSON.parse(text);\n }\n\n case 'String': {\n return JSON.parse(this.data);\n }\n\n case 'Uint8Array': {\n const text = textDecoder.decode(this.data);\n return JSON.parse(text);\n }\n\n default:\n throw new TypeError(`Conversion from ${this.format} to Object is not supported.`);\n }\n }\n\n async toObjectAsync(): Promise<any> {\n switch (this.format) {\n case 'AsyncIterable': {\n // Convert the AsyncIterable to a String.\n const text = await this.toStringAsync();\n\n // Parse the string as JSON. This step assumes that the string represents a valid JSON structure.\n // JSON.parse() will convert the string into a corresponding JavaScript object.\n const json = JSON.parse(text);\n\n // Return the parsed JavaScript object. The type of this object will depend on the structure\n // of the JSON in the stream. It could be an object, array, string, number, etc.\n return json;\n }\n\n default:\n throw new TypeError(`Asynchronous conversion from ${this.format} to Object is not supported.`);\n }\n }\n\n toString(): string {\n switch (this.format) {\n\n case 'ArrayBuffer': {\n return textDecoder.decode(this.data);\n }\n\n case 'Base64Url': {\n const u8a = base64url.baseDecode(this.data);\n return textDecoder.decode(u8a);\n }\n\n case 'Object': {\n return JSON.stringify(this.data);\n }\n\n case 'Uint8Array': {\n return textDecoder.decode(this.data);\n }\n\n default:\n throw new TypeError(`Conversion from ${this.format} to String is not supported.`);\n }\n }\n\n async toStringAsync(): Promise<string> {\n switch (this.format) {\n case 'AsyncIterable': {\n // Initialize an empty string to accumulate the decoded text.\n let str = '';\n\n // Iterate over the chunks from the AsyncIterable.\n for await (const chunk of (this.data as AsyncIterable<any>)) {\n // If the chunk is already a string, concatenate it directly.\n if (typeof chunk === 'string')\n str += chunk;\n else\n // If the chunk is a Uint8Array or similar, use the decoder to convert it to a string.\n // The `stream: true` option lets the decoder handle multi-byte characters spanning\n // multiple chunks.\n str += textDecoder.decode(chunk, { stream: true });\n }\n\n // Finalize the decoding process to handle any remaining bytes and signal the end of the stream.\n // The `stream: false` option flushes the decoder's internal state.\n str += textDecoder.decode(undefined, { stream: false });\n\n // Return the accumulated string.\n return str;\n }\n\n default:\n throw new TypeError(`Asynchronous conversion from ${this.format} to String is not supported.`);\n }\n }\n\n toUint8Array(): Uint8Array {\n switch (this.format) {\n\n case 'ArrayBuffer': {\n // \u00C7reate Uint8Array as a view on the ArrayBuffer.\n // Note: The Uint8Array shares the same memory as the ArrayBuffer, so this operation is very efficient.\n return new Uint8Array(this.data);\n }\n\n case 'Base32Z': {\n return base32z.baseDecode(this.data);\n }\n\n case 'Base58Btc': {\n return base58btc.baseDecode(this.data);\n }\n\n case 'Base64Url': {\n return base64url.baseDecode(this.data);\n }\n\n case 'BufferSource': {\n const dataType = universalTypeOf(this.data);\n if (dataType === 'Uint8Array') {\n // Data is already a Uint8Array. No conversion is necessary.\n // Note: Uint8Array is a type of BufferSource.\n return this.data;\n } else if (dataType === 'ArrayBuffer') {\n // Data is an ArrayBuffer, create Uint8Array as a view on the ArrayBuffer.\n // Note: The Uint8Array shares the same memory as the ArrayBuffer, so this operation is very efficient.\n return new Uint8Array(this.data);\n } else if (ArrayBuffer.isView(this.data)) {\n // Data is a DataView or a different TypedArray (e.g., Uint16Array).\n return new Uint8Array(this.data.buffer, this.data.byteOffset, this.data.byteLength);\n } else {\n throw new TypeError(`${this.format} value is not of type: ArrayBuffer, DataView, or TypedArray.`);\n }\n }\n\n case 'Hex': {\n const u8a = new Uint8Array(this.data.length / 2);\n for (let i = 0; i < this.data.length; i += 2) {\n const byteValue = parseInt(this.data.substring(i, i + 2), 16);\n if (isNaN(byteValue)) {\n throw new TypeError('Input is not a valid hexadecimal string.');\n }\n u8a[i / 2] = byteValue;\n }\n return u8a;\n }\n\n case 'Object': {\n const string = JSON.stringify(this.data);\n return textEncoder.encode(string);\n }\n\n case 'String': {\n return textEncoder.encode(this.data);\n }\n\n default:\n throw new TypeError(`Conversion from ${this.format} to Uint8Array is not supported.`);\n }\n }\n\n async toUint8ArrayAsync(): Promise<Uint8Array> {\n switch (this.format) {\n case 'AsyncIterable': {\n const arrayBuffer = await this.toArrayBufferAsync();\n return new Uint8Array(arrayBuffer);\n }\n\n default:\n throw new TypeError(`Asynchronous conversion from ${this.format} to Uint8Array is not supported.`);\n }\n }\n}", "import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n", "var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n \n encode.bytes = offset - oldOffset + 1;\n \n return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length;\n\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\n\n read.bytes = counter - offset;\n\n return res\n}\n\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n};\n\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n", "import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\n const bytes = new Uint8Array(digestOffset + size)\n varint.encodeTo(code, bytes, 0)\n varint.encodeTo(size, bytes, sizeOffset)\n bytes.set(digest, digestOffset)\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n const bytes = coerce(multihash)\n const [code, sizeOffset] = varint.decode(bytes)\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n const digest = bytes.subarray(sizeOffset + digestOffset)\n\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n", "import * as varint from './varint.js'\nimport * as Digest from './hashes/digest.js'\nimport { base58btc } from './bases/base58.js'\nimport { base32 } from './bases/base32.js'\nimport { coerce } from './bytes.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link<unknown, number, number, API.Version>} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder<Prefix>} [base]\n * @returns {API.ToString<T, Prefix>}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<Prefix>} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON<Link>}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON<Link>} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap<API.UnknownLink, Map<string, string>>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map<string, string>}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link<Data, Format, Alg, Version>}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n *\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID<Data, API.DAG_PB, API.SHA_256, 0>}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (\n CID.createV0(\n /** @type {API.MultihashDigest<API.SHA_256>} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID<Data, Format, Alg, 1>}\n */\n toV1 () {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash\n const multihash = Digest.create(code, digest)\n return /** @type {CID<Data, Format, Alg, 1>} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID<Data, Format, Alg, 1>} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID<Data, Format, Alg, Version>}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link<Data, Format, Alg, Version>} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder<string>} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link<Data, Format, Alg, Version>|U} input\n * @returns {CID<Data, Format, Alg, Version>|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest<Alg>} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest<Alg>} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} digest - (Multi)hash of the of the content.\n * @returns {CID<Data, Format, Alg, Version>}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\n } else {\n return new CID(version, code, digest, digest.bytes)\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes)\n return new CID(version, code, digest, bytes)\n }\n default: {\n throw new Error('Invalid version')\n }\n }\n }\n\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.\n * @returns {CID<T, typeof DAG_PB_CODE, typeof SHA_256_CODE, 0>}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.\n * @returns {CID<Data, Code, Alg, 1>}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes\n * @returns {CID<Data, Code, Alg, Ver>}\n */\n static decode (bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes)\n if (remainder.length) {\n throw new Error('Incorrect length')\n }\n return cid\n }\n\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} bytes\n * @returns {[CID<T, C, A, V>, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest<API.SHA_256>} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID<T, C, A, V>} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n */\n static inspectBytes (initialBytes) {\n let offset = 0\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset))\n offset += length\n return i\n }\n\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {CID<Data, Code, Alg, Ver>}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {[Prefix, API.ByteView<API.Link<Data, Code, Alg, Ver>>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n const { prefix } = base\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n }\n\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes).slice(1)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<Prefix>} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n const { prefix } = base\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version)\n const hashOffset = codeOffset + varint.encodingLength(code)\n const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n varint.encodeTo(version, bytes, 0)\n varint.encodeTo(code, bytes, codeOffset)\n bytes.set(multihash, hashOffset)\n return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n", "import { varint } from 'multiformats';\n\nexport type MulticodecCode = number;\n\nexport type MulticodecDefinition<MulticodecCode> = {\n code: MulticodecCode;\n // codeBytes: Uint8Array;\n name: string;\n}\n\n/**\n * The `Multicodec` class provides an interface to prepend binary data\n * with a prefix that identifies the data that follows.\n * https://github.com/multiformats/multicodec/blob/master/table.csv\n *\n * Multicodec is a self-describing multiformat, it wraps other formats with\n * a tiny bit of self-description. A multicodec identifier is a\n * varint (variable integer) that indicates the format of the data.\n *\n * The canonical table of multicodecs can be access at the following URL:\n * https://github.com/multiformats/multicodec/blob/master/table.csv\n *\n * Example usage:\n *\n * ```ts\n * Multicodec.registerCodec({ code: 0xed, name: 'ed25519-pub' });\n * const prefixedData = Multicodec.addPrefix({ code: 0xed, data: new Uint8Array(32) });\n * ```\n */\nexport class Multicodec {\n /**\n * A static field containing a map of codec codes to their corresponding names.\n */\n static codeToName = new Map<MulticodecCode, string>();\n\n /**\n * A static field containing a map of codec names to their corresponding codes.\n */\n static nameToCode = new Map<string, MulticodecCode>();\n\n /**\n * Adds a multicodec prefix to input data.\n *\n * @param options - The options for adding a prefix.\n * @param options.code - The codec code. Either the code or name must be provided.\n * @param options.name - The codec name. Either the code or name must be provided.\n * @param options.data - The data to be prefixed.\n * @returns The data with the added prefix as a Uint8Array.\n */\n public static addPrefix(options: {\n code?: MulticodecCode,\n data: Uint8Array,\n name?: string,\n }): Uint8Array {\n let { code, data, name } = options;\n\n if (!(name ? !code : code)) {\n throw new Error(`Either 'name' or 'code' must be defined, but not both.`);\n }\n\n // If code was given, confirm it exists, or lookup code by name.\n code = Multicodec.codeToName.has(code!) ? code : Multicodec.nameToCode.get(name!);\n\n // Throw error if a registered Codec wasn't found.\n if (code === undefined) {\n throw new Error(`Unsupported multicodec: ${options.name ?? options.code}`);\n }\n\n // Create a new array to store the prefix and input data.\n const prefixLength = varint.encodingLength(code);\n const dataWithPrefix = new Uint8Array(prefixLength + data.byteLength);\n dataWithPrefix.set(data, prefixLength);\n\n // Prepend the prefix.\n varint.encodeTo(code, dataWithPrefix);\n\n return dataWithPrefix;\n }\n\n /**\n * Get the Multicodec code from given prefixed data.\n *\n * @param options - The options for getting the codec code.\n * @param options.prefixedData - The data to extract the codec code from.\n * @returns - The Multicodec code as a number.\n */\n public static getCodeFromData(options: {\n prefixedData: Uint8Array\n }): MulticodecCode {\n const { prefixedData } = options;\n const [code, _] = varint.decode(prefixedData);\n\n return code;\n }\n\n /**\n * Get the Multicodec code from given Multicodec name.\n *\n * @param options - The options for getting the codec code.\n * @param options.name - The name to lookup.\n * @returns - The Multicodec code as a number.\n */\n public static getCodeFromName(options: {\n name: string\n }): MulticodecCode {\n const { name } = options;\n\n // Throw error if a registered Codec wasn't found.\n const code = Multicodec.nameToCode.get(name);\n if (code === undefined) {\n throw new Error(`Unsupported multicodec: ${name}`);\n }\n\n return code;\n }\n\n /**\n * Get the Multicodec name from given Multicodec code.\n *\n * @param options - The options for getting the codec name.\n * @param options.name - The code to lookup.\n * @returns - The Multicodec name as a string.\n */\n public static getNameFromCode(options: {\n code: MulticodecCode\n }): string {\n const { code } = options;\n\n // Throw error if a registered Codec wasn't found.\n const name = Multicodec.codeToName.get(code);\n if (name === undefined) {\n throw new Error(`Unsupported multicodec: ${code}`);\n }\n\n return name;\n }\n\n /**\n * Registers a new codec in the Multicodec class.\n *\n * @param codec - The codec to be registered.\n */\n public static registerCodec(codec: MulticodecDefinition<MulticodecCode>) {\n Multicodec.codeToName.set(codec.code, codec.name);\n Multicodec.nameToCode.set(codec.name, codec.code);\n }\n\n /**\n * Returns the data with the Multicodec prefix removed.\n *\n * @param refixedData - The data to extract the codec code from.\n * @returns {Uint8Array}\n */\n public static removePrefix(options: {\n prefixedData: Uint8Array\n }): { code: MulticodecCode, name: string, data: Uint8Array } {\n const { prefixedData } = options;\n const [code, codeByteLength] = varint.decode(prefixedData);\n\n // Throw error if a registered Codec wasn't found.\n const name = Multicodec.codeToName.get(code);\n if (name === undefined) {\n throw new Error(`Unsupported multicodec: ${code}`);\n }\n\n return { code, data: prefixedData.slice(codeByteLength), name };\n }\n}\n\n// Pre-defined registered codecs:\nMulticodec.registerCodec({ code: 0xed, name: 'ed25519-pub' });\nMulticodec.registerCodec({ code: 0x1300, name: 'ed25519-priv' });\nMulticodec.registerCodec({ code: 0xec, name: 'x25519-pub' });\nMulticodec.registerCodec({ code: 0x1302, name: 'x25519-priv' });\nMulticodec.registerCodec({ code: 0xe7, name: 'secp256k1-pub' });\nMulticodec.registerCodec({ code: 0x1301, name: 'secp256k1-priv' });", "/**\n * Checks whether the given object has any properties.\n */\nexport function isEmptyObject(obj: unknown): boolean {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n if (Object.getOwnPropertySymbols(obj).length > 0) {\n return false;\n }\n\n return Object.keys(obj).length === 0;\n}\n\n/**\n * Recursively removes all properties with an empty object or array as its value from the given object.\n */\nexport function removeEmptyObjects(obj: Record<string, unknown>): void {\n Object.keys(obj).forEach(key => {\n if (typeof(obj[key]) === 'object') {\n // recursive remove empty object or array properties in nested objects\n removeEmptyObjects(obj[key] as Record<string, unknown>);\n }\n\n if (isEmptyObject(obj[key])) {\n delete obj[key];\n }\n });\n}\n\n/**\n * Recursively removes all properties with `undefined` as its value from the given object.\n */\nexport function removeUndefinedProperties(obj: Record<string, unknown>): void {\n Object.keys(obj).forEach(key => {\n if (obj[key] === undefined) {\n delete obj[key];\n } else if (typeof(obj[key]) === 'object') {\n removeUndefinedProperties(obj[key] as Record<string, unknown>); // recursive remove `undefined` properties in nested objects\n }\n });\n}", "import type { AbstractLevel } from 'abstract-level';\n\nimport { Level } from 'level';\n\nimport type { KeyValueStore } from './types.js';\n\nexport class LevelStore<K = string, V = any> implements KeyValueStore<K, V> {\n private store: AbstractLevel<string | Buffer | Uint8Array, K, V>;\n\n constructor({ db, location = 'DATASTORE' }: {\n db?: AbstractLevel<string | Buffer | Uint8Array, K, V>;\n location?: string;\n } = {}) {\n this.store = db ?? new Level<K, V>(location);\n }\n\n async clear(): Promise<void> {\n await this.store.clear();\n }\n\n async close(): Promise<void> {\n await this.store.close();\n }\n\n async delete(key: K): Promise<void> {\n await this.store.del(key);\n }\n\n async get(key: K): Promise<V | undefined> {\n try {\n return await this.store.get(key);\n } catch (error: any) {\n // Don't throw when a key wasn't found.\n if (error.notFound) return undefined;\n throw error;\n }\n }\n\n async set(key: K, value: V): Promise<void> {\n await this.store.put(key, value);\n }\n}\n\n/**\n * The `MemoryStore` class is an implementation of\n * `KeyValueStore` that holds data in memory.\n *\n * It provides a basic key-value store that works synchronously and keeps all\n * data in memory. This can be used for testing, or for handling small amounts\n * of data with simple key-value semantics.\n *\n * Example usage:\n *\n * ```ts\n * const memoryStore = new MemoryStore<string, number>();\n * await memoryStore.set(\"key1\", 1);\n * const value = await memoryStore.get(\"key1\");\n * console.log(value); // 1\n * ```\n *\n * @public\n */\nexport class MemoryStore<K, V> implements KeyValueStore<K, V> {\n /**\n * A private field that contains the Map used as the key-value store.\n */\n private store: Map<K, V> = new Map();\n\n /**\n * Clears all entries in the key-value store.\n *\n * @returns A Promise that resolves when the operation is complete.\n */\n async clear(): Promise<void> {\n this.store.clear();\n }\n\n /**\n * This operation is no-op for `MemoryStore`\n * and will log a warning if called.\n */\n async close(): Promise<void> {\n /** no-op */\n }\n\n /**\n * Deletes an entry from the key-value store by its key.\n *\n * @param id - The key of the entry to delete.\n * @returns A Promise that resolves to a boolean indicating whether the entry was successfully deleted.\n */\n async delete(id: K): Promise<boolean> {\n return this.store.delete(id);\n }\n\n /**\n * Retrieves the value of an entry by its key.\n *\n * @param id - The key of the entry to retrieve.\n * @returns A Promise that resolves to the value of the entry, or `undefined` if the entry does not exist.\n */\n async get(id: K): Promise<V | undefined> {\n return this.store.get(id);\n }\n\n /**\n * Checks for the presence of an entry by key.\n *\n * @param id - The key to check for the existence of.\n * @returns A Promise that resolves to a boolean indicating whether an element with the specified key exists or not.\n */\n async has(id: K): Promise<boolean> {\n return this.store.has(id);\n }\n\n /**\n * Retrieves all values in the key-value store.\n *\n * @returns A Promise that resolves to an array of all values in the store.\n */\n async list(): Promise<V[]> {\n return Array.from(this.store.values());\n }\n\n /**\n * Sets the value of an entry in the key-value store.\n *\n * @param id - The key of the entry to set.\n * @param key - The new value for the entry.\n * @returns A Promise that resolves when the operation is complete.\n */\n async set(id: K, key: V): Promise<void> {\n this.store.set(id, key);\n }\n}", "import { Convert } from './convert.js';\n\nexport class Stream {\n /**\n * Transforms a `ReadableStream` into an `AsyncIterable`. This allows for the asynchronous\n * iteration over the stream's data chunks.\n *\n * This method creates an async iterator from a `ReadableStream`, enabling the use of\n * `for await...of` loops to process stream data. It reads from the stream until it's closed or\n * errored, yielding each chunk as it becomes available.\n *\n * @example\n * ```ts\n * const readableStream = new ReadableStream({ ... });\n * for await (const chunk of Stream.asAsyncIterator(readableStream)) {\n * // process each chunk\n * }\n * ```\n *\n * @remarks\n * - The method ensures proper cleanup by releasing the reader lock when iteration is completed or\n * if an error occurs.\n *\n * @param readableStream - The Web `ReadableStream` to be transformed into an `AsyncIterable`.\n * @returns An `AsyncIterable` that yields data chunks from the `ReadableStream`.\n */\n public static async * asAsyncIterator<T>(readableStream: ReadableStream<T>): AsyncIterable<T> {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n /**\n * Consumes a `ReadableStream` and returns its contents as an `ArrayBuffer`.\n *\n * This method reads all data from a `ReadableStream`, collects it, and converts it into an\n * `ArrayBuffer`.\n *\n * @example\n * ```ts\n * const readableStream = new ReadableStream({ ... });\n * const arrayBuffer = await Stream.consumeToArrayBuffer({ readableStream });\n * ```\n *\n * @param readableStream - The Web `ReadableStream` whose data will be consumed.\n * @returns A Promise that resolves to an `ArrayBuffer` containing all the data from the stream.\n */\n public static async consumeToArrayBuffer({ readableStream }: { readableStream: ReadableStream}): Promise<ArrayBuffer> {\n const iterableStream = Stream.asAsyncIterator(readableStream);\n const arrayBuffer = await Convert.asyncIterable(iterableStream).toArrayBufferAsync();\n\n return arrayBuffer;\n }\n\n /**\n * Consumes a `ReadableStream` and returns its contents as a `Blob`.\n *\n * This method reads all data from a `ReadableStream`, collects it, and converts it into a `Blob`.\n *\n * @example\n * ```ts\n * const readableStream = new ReadableStream({ ... });\n * const blob = await Stream.consumeToBlob({ readableStream });\n * ```\n *\n * @param readableStream - The Web `ReadableStream` whose data will be consumed.\n * @returns A Promise that resolves to a `Blob` containing all the data from the stream.\n */\n public static async consumeToBlob({ readableStream }: { readableStream: ReadableStream}): Promise<Blob> {\n const iterableStream = Stream.asAsyncIterator(readableStream);\n const blob = await Convert.asyncIterable(iterableStream).toBlobAsync();\n\n return blob;\n }\n\n /**\n * Consumes a `ReadableStream` and returns its contents as a `Uint8Array`.\n *\n * This method reads all data from a `ReadableStream`, collects it, and converts it into a\n * `Uint8Array`.\n *\n * @example\n * ```ts\n * const readableStream = new ReadableStream({ ... });\n * const bytes = await Stream.consumeToBytes({ readableStream });\n * ```\n *\n * @param readableStream - The Web `ReadableStream` whose data will be consumed.\n * @returns A Promise that resolves to a `Uint8Array` containing all the data from the stream.\n */\n public static async consumeToBytes({ readableStream }: { readableStream: ReadableStream }): Promise<Uint8Array> {\n const iterableStream = Stream.asAsyncIterator(readableStream);\n const bytes = await Convert.asyncIterable(iterableStream).toUint8ArrayAsync();\n\n return bytes;\n }\n\n /**\n * Consumes a `ReadableStream` and parses its contents as JSON.\n *\n * This method reads all the data from the stream, converts it to a text string, and then parses\n * it as JSON, returning the resulting object.\n *\n * @example\n * ```ts\n * const readableStream = new ReadableStream({ ... });\n * const jsonData = await Stream.consumeToJson({ readableStream });\n * ```\n *\n * @param readableStream - The Web `ReadableStream` whose JSON content will be consumed.\n * @returns A Promise that resolves to the parsed JSON object from the stream's data.\n */\n public static async consumeToJson({ readableStream }: { readableStream: ReadableStream}): Promise<any> {\n const iterableStream = Stream.asAsyncIterator(readableStream);\n const object = await Convert.asyncIterable(iterableStream).toObjectAsync();\n\n return object;\n }\n\n /**\n * Consumes a `ReadableStream` and returns its contents as a text string.\n *\n * This method reads all the data from the stream, converting it into a single string.\n *\n * @example\n * ```ts\n * const readableStream = new ReadableStream({ ... });\n * const text = await Stream.consumeToText({ readableStream });\n * ```\n *\n * @param readableStream - The Web `ReadableStream` whose text content will be consumed.\n * @returns A Promise that resolves to a string containing all the data from the stream.\n */\n public static async consumeToText({ readableStream }: { readableStream: ReadableStream}): Promise<string> {\n const iterableStream = Stream.asAsyncIterator(readableStream);\n const text = await Convert.asyncIterable(iterableStream).toStringAsync();\n\n return text;\n }\n\n /**\n * Generates a `ReadableStream` of `Uint8Array` chunks with customizable length and fill value.\n *\n * This method creates a `ReadableStream` that emits `Uint8Array` chunks. You can specify the\n * total length of the stream, the length of individual chunks, and a fill value or range for the\n * chunks. It's useful for testing or when specific binary data streams are required.\n *\n * @example\n * ```ts\n * // Create a stream of 1000 bytes with 100-byte chunks filled with 0xAA.\n * const byteStream = Stream.generateByteStream({\n * streamLength: 1000,\n * chunkLength: 100,\n * fillValue: 0xAA\n * });\n *\n * // Create an unending stream of 100KB chunks filled with values that range from 1 to 99.\n * const byteStream = Stream.generateByteStream({\n * chunkLength: 100 * 1024,\n * fillValue: [1, 99]\n * });\n * ```\n *\n * @param streamLength - The total length of the stream in bytes. If omitted, the stream is infinite.\n * @param chunkLength - The length of each chunk. If omitted, each chunk is the size of `streamLength`.\n * @param fillValue - A value or range to fill the chunks with. Can be a single number or a tuple [min, max].\n * @returns A `ReadableStream` that emits `Uint8Array` chunks.\n */\n public static generateByteStream({ streamLength, chunkLength, fillValue }: {\n streamLength?: number,\n chunkLength?: number,\n fillValue?: number | [number, number]\n }): ReadableStream<Uint8Array> {\n let bytesRemaining = streamLength ?? Infinity;\n let controller: ReadableStreamDefaultController<Uint8Array>;\n\n function enqueueChunk() {\n const currentChunkLength = Math.min(bytesRemaining, chunkLength ?? Infinity);\n bytesRemaining -= currentChunkLength;\n\n let chunk: Uint8Array;\n\n if (typeof fillValue === 'number') {\n chunk = new Uint8Array(currentChunkLength).fill(fillValue);\n\n } else if (Array.isArray(fillValue)) {\n chunk = new Uint8Array(currentChunkLength);\n const [min, max] = fillValue;\n const range = max - min + 1;\n for (let i = 0; i < currentChunkLength; i++) {\n chunk[i] = Math.floor(Math.random() * range) + min;\n }\n\n } else {\n chunk = new Uint8Array(currentChunkLength);\n }\n\n controller.enqueue(chunk);\n\n // If there are no more bytes to send, close the stream\n if (bytesRemaining <= 0) {\n controller.close();\n }\n }\n\n return new ReadableStream<Uint8Array>({\n start(c) {\n controller = c;\n enqueueChunk();\n },\n pull() {\n enqueueChunk();\n },\n });\n }\n\n /**\n * Checks if the provided Web `ReadableStream` is in a readable state.\n *\n * After verifying that the stream is a Web {@link https://streams.spec.whatwg.org/#rs-model | ReadableStream},\n * this method checks the {@link https://streams.spec.whatwg.org/#readablestream-locked | locked}\n * property of the ReadableStream. The `locked` property is `true` if a reader is currently\n * active, meaning the stream is either being read or has already been read (and hence is not in a\n * readable state). If `locked` is `false`, it means the stream is still in a state where it can\n * be read.\n *\n * In the case where a `ReadableStream` has been unlocked but is no longer readable (for example,\n * if it has been fully read or cancelled), additional checks are needed beyond just examining the\n * locked property. The ReadableStream API does not provide a direct way to check if the stream\n * has data left or if it's in a readable state once it's been unlocked.\n *\n * Per {@link https://streams.spec.whatwg.org/#other-specs-rs-introspect | WHATWG Streams, Section 9.1.3. Introspection}:\n *\n * > ...note that apart from checking whether or not the stream is locked, this direct\n * > introspection is not possible via the public JavaScript API, and so specifications should\n * > instead use the algorithms in \u00A79.1.2 Reading. (For example, instead of testing if the stream\n * > is readable, attempt to get a reader and handle any exception.)\n *\n * This implementation employs the technique suggested by the WHATWG Streams standard by\n * attempting to acquire a reader and checking the state of the reader. If acquiring a reader\n * succeeds, it immediately releases the lock and returns `true`, indicating the stream is\n * readable. If an error occurs while trying to get a reader (which can happen if the stream is\n * already closed or errored), it catches the error and returns `false`, indicating the stream is\n * not readable.\n *\n * @example\n * ```ts\n * const readableStream = new ReadableStream({ ... });\n * const isStreamReadable = Stream.isReadable({ readableStream });\n * console.log(isStreamReadable); // Output: true or false\n * ```\n *\n * @remarks\n * - This method does not check whether the stream has data left to read; it only checks if the\n * stream is in a state that allows reading. It is possible for a stream to be unlocked but\n * still have no data left if it has never been locked to a reader.\n *\n * @param readableStream - The Web `ReadableStream` to be checked for readability.\n *\n * @returns `true` if the stream is a `ReadableStream` and is in a readable state (not locked and\n * no error on getting a reader); otherwise, `false`.\n */\n public static isReadable({ readableStream }: { readableStream: ReadableStream }): boolean {\n // Check if the stream is a WHATWG `ReadableStream`.\n if (!Stream.isReadableStream(readableStream)) {\n return false;\n }\n\n // Check if the stream is locked.\n if (readableStream.locked) {\n return false;\n }\n\n try {\n // Try to get a reader to check if the stream is readable.\n const reader = readableStream.getReader();\n // If successful, immediately release the lock.\n reader.releaseLock();\n return true;\n } catch (error) {\n // If an error occurs (e.g., the stream is not readable), return false.\n return false;\n }\n }\n\n /**\n * Checks if an object is a Web `ReadableStream`.\n *\n * This method verifies whether the given object is a `ReadableStream` by checking its type and\n * the presence of the `getReader` function.\n *\n * @example\n * ```ts\n * const obj = getSomeObject();\n * if (Stream.isReadableStream(obj)) {\n * // obj is a ReadableStream\n * }\n * ```\n *\n * @param obj - The object to be checked.\n * @returns `true` if `obj` is a `ReadableStream`; otherwise, `false`.\n */\n public static isReadableStream(obj: unknown): obj is ReadableStream {\n return (\n typeof obj === 'object' && obj !== null &&\n 'getReader' in obj && typeof obj.getReader === 'function'\n );\n }\n\n /**\n * Checks if an object is a Web `ReadableStream`, `WritableStream`, or `TransformStream`.\n *\n * This method verifies the type of a given object to determine if it is one of the standard\n * stream types in the Web Streams API: `ReadableStream`, `WritableStream`, or `TransformStream`.\n * It employs type-checking strategies that are specific to each stream type.\n *\n * The method checks for the specific functions and properties associated with each stream type:\n * - `ReadableStream`: Identified by the presence of a `getReader` method.\n * - `WritableStream`: Identified by the presence of a `getWriter` and `abort` methods.\n * - `TransformStream`: Identified by having both `readable` and `writable` properties.\n *\n * @example\n * ```ts\n * const readableStream = new ReadableStream();\n * console.log(Stream.isStream(readableStream)); // Output: true\n *\n * const writableStream = new WritableStream();\n * console.log(Stream.isStream(writableStream)); // Output: true\n *\n * const transformStream = new TransformStream();\n * console.log(Stream.isStream(transformStream)); // Output: true\n *\n * const nonStreamObject = {};\n * console.log(Stream.isStream(nonStreamObject)); // Output: false\n * ```\n *\n * @remarks\n * - This method does not differentiate between `ReadableStream`, `WritableStream`, and\n * `TransformStream`. It checks if the object conforms to any of these types.\n * - This method is specific to the Web Streams API and may not recognize non-standard or custom\n * stream-like objects that do not adhere to the Web Streams API specifications.\n *\n * @param obj - The object to be checked for being a Web `ReadableStream`, `WritableStream`, or `TransformStream`.\n * @returns `true` if the object is a `ReadableStream`, `WritableStream`, or `TransformStream`; otherwise, `false`.\n */\n public static isStream(obj: unknown): obj is ReadableStream | WritableStream | TransformStream {\n return Stream.isReadableStream(obj) || Stream.isWritableStream(obj) || Stream.isTransformStream(obj);\n }\n\n /**\n * Checks if an object is a `TransformStream`.\n *\n * This method verifies whether the given object is a `TransformStream` by checking its type and\n * the presence of `readable` and `writable` properties.\n *\n * @example\n * ```ts\n * const obj = getSomeObject();\n * if (Stream.isTransformStream(obj)) {\n * // obj is a TransformStream\n * }\n * ```\n *\n * @param obj - The object to be checked.\n * @returns `true` if `obj` is a `TransformStream`; otherwise, `false`.\n */\n public static isTransformStream(obj: unknown): obj is TransformStream {\n return (\n typeof obj === 'object' && obj !== null &&\n 'readable' in obj && typeof obj.readable === 'object' &&\n 'writable' in obj && typeof obj.writable === 'object'\n );\n }\n\n /**\n * Checks if an object is a `WritableStream`.\n *\n * This method determines whether the given object is a `WritableStream` by verifying its type and\n * the presence of the `getWriter` and `abort` functions.\n *\n * @example\n * ```ts\n * const obj = getSomeObject();\n * if (Stream.isWritableStream(obj)) {\n * // obj is a WritableStream\n * }\n * ```\n *\n * @param obj - The object to be checked.\n * @returns `true` if `obj` is a `TransformStream`; otherwise, `false`.\n */\n public static isWritableStream(obj: unknown): obj is WritableStream {\n return (\n typeof obj === 'object' && obj !== null &&\n 'getWriter' in obj && typeof obj.getWriter === 'function' &&\n 'abort' in obj && typeof obj.abort === 'function'\n );\n }\n}", "import type { Duplex, ReadableStateOptions, Transform, Writable } from 'readable-stream';\n\nimport { Readable } from 'readable-stream';\nimport { Stream } from './stream.js';\nimport { Convert } from './convert.js';\n\nexport { Readable } from 'readable-stream';\n\nexport class NodeStream {\n /**\n * Consumes a `Readable` stream and returns its contents as an `ArrayBuffer`.\n *\n * This method reads all data from a Node.js `Readable` stream, collects it, and converts it into\n * an `ArrayBuffer`.\n *\n * @example\n * ```ts\n * const nodeReadable = getReadableStreamSomehow();\n * const arrayBuffer = await NodeStream.consumeToArrayBuffer({ readable: nodeReadable });\n * ```\n *\n * @param readable - The Node.js Readable stream whose data will be consumed.\n * @returns A Promise that resolves to an `ArrayBuffer` containing all the data from the stream.\n */\n public static async consumeToArrayBuffer({ readable }: { readable: Readable}): Promise<ArrayBuffer> {\n const arrayBuffer = await Convert.asyncIterable(readable).toArrayBufferAsync();\n\n return arrayBuffer;\n }\n\n /**\n * Consumes a `Readable` stream and returns its contents as a `Blob`.\n *\n * This method reads all data from a Node.js `Readable` stream, collects it, and converts it into\n * a `Blob`.\n *\n * @example\n * ```ts\n * const nodeReadable = getReadableStreamSomehow();\n * const blob = await NodeStream.consumeToBlob({ readable: nodeReadable });\n * ```\n *\n * @param readableStream - The Node.js `Readable` stream whose data will be consumed.\n * @returns A Promise that resolves to a `Blob` containing all the data from the stream.\n */\n public static async consumeToBlob({ readable }: { readable: Readable }): Promise<Blob> {\n const blob = await Convert.asyncIterable(readable).toBlobAsync();\n\n return blob;\n }\n\n /**\n * Consumes a `Readable` stream and returns its contents as a `Uint8Array`.\n *\n * This method reads all data from a Node.js `Readable`, collects it, and converts it into a\n * `Uint8Array`.\n *\n * @example\n * ```ts\n * const nodeReadable = getReadableStreamSomehow();\n * const bytes = await NodeStream.consumeToBytes({ readable: nodeReadable });\n * ```\n *\n * @param readableStream - The Node.js `Readable` stream whose data will be consumed.\n * @returns A Promise that resolves to a `Uint8Array` containing all the data from the stream.\n */\n public static async consumeToBytes({ readable }: { readable: Readable }): Promise<Uint8Array> {\n const bytes = await Convert.asyncIterable(readable).toUint8ArrayAsync();\n\n return bytes;\n }\n\n /**\n * Consumes a `Readable` stream and parses its contents as JSON.\n *\n * This method reads all the data from the stream, converts it to a text string, and then parses\n * it as JSON, returning the resulting object.\n *\n * @example\n * ```ts\n * const nodeReadable = getReadableStreamSomehow();\n * const jsonData = await NodeStream.consumeToJson({ readable: nodeReadable });\n * ```\n *\n * @param readableStream - The Node.js `Readable` stream whose JSON content will be consumed.\n * @returns A Promise that resolves to the parsed JSON object from the stream's data.\n */\n public static async consumeToJson({ readable }: { readable: Readable }): Promise<any> {\n const object = await Convert.asyncIterable(readable).toObjectAsync();\n\n return object;\n }\n\n /**\n * Consumes a `Readable` stream and returns its contents as a text string.\n *\n * This method reads all the data from the stream, converting it into a single string.\n *\n * @example\n * ```ts\n * const nodeReadable = getReadableStreamSomehow();\n * const text = await NodeStream.consumeToText({ readable: nodeReadable });\n * ```\n *\n * @param readableStream - The Node.js `Readable` stream whose text content will be consumed.\n * @returns A Promise that resolves to a string containing all the data from the stream.\n */\n public static async consumeToText({ readable }: { readable: Readable}): Promise<string> {\n const text = await Convert.asyncIterable(readable).toStringAsync();\n\n return text;\n }\n\n /**\n * Converts a Web `ReadableStream` to a Node.js `Readable` stream.\n *\n * This method takes a Web `ReadableStream` and converts it to a Node.js `Readable` stream.\n * The conversion is done by reading chunks from the Web `ReadableStream` and pushing them\n * into the Node.js `Readable` stream.\n *\n * @example\n * ```ts\n * const webReadableStream = getWebReadableStreamSomehow();\n * const nodeReadableStream = NodeStream.fromWebReadable({ readableStream: webReadableStream });\n * ```\n *\n * @param readableStream - The Web `ReadableStream` to be converted.\n * @param readableOptions - Optional `Readable` stream options for the Node.js stream.\n * @returns The Node.js `Readable` stream.\n */\n public static fromWebReadable({ readableStream, readableOptions }: {\n readableStream: ReadableStream,\n readableOptions?: ReadableStateOptions\n }): Readable {\n if (!Stream.isReadableStream(readableStream)) {\n throw new TypeError(`NodeStream.fromWebReadable: 'readableStream' is not a Web ReadableStream.`);\n }\n\n const reader = readableStream.getReader();\n let closed = false;\n\n const nodeReadable = new Readable({\n ...readableOptions,\n\n read: function () {\n reader.read().then(({ done, value }) => {\n if (done) {\n this.push(null); // Push null to signify end of stream.\n } else {\n if (!this.push(value)) {\n // When push returns false, we should stop reading until _read is called again.\n return;\n }\n }\n }).catch((error) => {\n // If an error occurs while reading, destroy the stream.\n this.destroy(error);\n });\n },\n\n destroy: function (error, callback) {\n function done() {\n callback(error);\n }\n\n if (!closed) {\n reader.cancel(error)\n .then(done)\n .catch(done);\n return;\n }\n done();\n }\n });\n\n reader.closed\n .then(() => {\n closed = true; // Prevents reader.cancel() from being called in destroy()\n })\n .catch((error) => {\n closed = true; // Prevents reader.cancel() from being called in destroy()\n nodeReadable.destroy(error);\n });\n\n return nodeReadable;\n }\n\n /**\n * Checks if a Node.js stream (`Readable`, `Writable`, `Duplex`, or `Transform`) has been destroyed.\n *\n * This method determines whether the provided Node.js stream has been destroyed. A stream\n * is considered destroyed if its 'destroyed' property is set to true or if its internal state\n * indicates it has been destroyed.\n *\n * @example\n * ```ts\n * const stream = getStreamSomehow();\n * stream.destroy(); // Destroy the stream.\n * const isDestroyed = NodeStream.isDestroyed({ stream });\n * console.log(isDestroyed); // Output: true\n * ```\n *\n * @param stream - The Node.js stream to check.\n * @returns `true` if the stream has been destroyed; otherwise, `false`.\n */\n public static isDestroyed({ stream }: { stream: Readable | Writable | Duplex | Transform }): boolean {\n if (!NodeStream.isStream(stream)) {\n throw new TypeError(`NodeStream.isDestroyed: 'stream' is not a Node stream.`);\n }\n\n const writableState = '_writableState' in stream ? stream._writableState : undefined;\n const readableState = stream._readableState;\n const state = writableState || readableState;\n\n return !!(stream.destroyed || state.destroyed);\n }\n\n /**\n * Checks if a Node.js `Readable` stream is still readable.\n *\n * This method checks if a Node.js `Readable` stream is still in a state that allows reading from\n * it. A stream is considered readable if it has not ended, has not been destroyed, and is not\n * currently paused.\n *\n * @example\n * ```ts\n * const readableStream = new Readable();\n * const isReadable = NodeStream.isReadable({ readable: readableStream });\n * console.log(isReadable); // Output: true or false\n * ```\n *\n * @param readable - The Node.js `Readable` stream to be checked.\n * @returns `true` if the stream is still readable; otherwise, `false`.\n */\n public static isReadable({ readable }: { readable: Readable }): boolean {\n // Check if the object is a Node Readable stream.\n if (!NodeStream.isReadableStream(readable)) {\n return false;\n }\n\n // Check if the stream is still readable.\n return (\n readable.readable && // Is the stream readable?\n (typeof readable._readableState.ended === 'boolean' && !readable._readableState.ended) && // Has the 'end' method been called?\n (typeof readable._readableState.endEmitted === 'boolean' && !readable._readableState.endEmitted) && // Has the 'end' event been emitted?\n !readable.destroyed && // Has the 'destroy' method been called?\n !readable.isPaused() // Is the stream paused?\n );\n }\n\n /**\n * Checks if an object is a Node.js `Readable` stream.\n *\n * This method verifies if the provided object is a Node.js `Readable` stream by checking for\n * specific properties and methods typical of a `Readable` stream in Node.js.\n *\n * @example\n * ```ts\n * const obj = getSomeObject();\n * if (NodeStream.isReadableStream(obj)) {\n * // obj is a Node.js Readable stream\n * }\n * ```\n *\n * @param obj - The object to be checked.\n * @returns `true` if `obj` is a Node.js `Readable` stream; otherwise, `false`.\n */\n static isReadableStream(obj: unknown): obj is Readable {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n ('pipe' in obj && typeof obj.pipe === 'function') &&\n ('on' in obj && typeof obj.on === 'function') &&\n (!('_writableState' in obj) && '_readableState' in obj)\n );\n }\n\n /**\n * Checks if the provided object is a Node.js stream (`Duplex`, `Readable`, `Writable`, or `Transform`).\n *\n * This method checks for the presence of internal properties specific to Node.js streams:\n * `_readableState` and `_writableState`. These properties are present in Node.js stream\n * instances, allowing identification of the stream type.\n *\n * The `_readableState` property is found in `Readable` and `Duplex` streams (including\n * `Transform` streams, which are a type of `Duplex` stream), indicating that the stream can be\n * read from. The `_writableState` property is found in `Writable` and `Duplex` streams,\n * indicating that the stream can be written to.\n *\n * @example\n * ```ts\n * const { Readable, Writable, Duplex, Transform } = require('stream');\n *\n * const readableStream = new Readable();\n * console.log(NodeStream.isStream(readableStream)); // Output: true\n *\n * const writableStream = new Writable();\n * console.log(NodeStream.isStream(writableStream)); // Output: true\n *\n * const duplexStream = new Duplex();\n * console.log(NodeStream.isStream(duplexStream)); // Output: true\n *\n * const transformStream = new Transform();\n * console.log(NodeStream.isStream(transformStream)); // Output: true\n *\n * const nonStreamObject = {};\n * console.log(NodeStream.isStream(nonStreamObject)); // Output: false\n * ```\n *\n * @remarks\n * - This method does not differentiate between the different types of streams (Readable,\n * Writable, Duplex, Transform). It simply checks if the object is any kind of Node.js stream.\n * - While this method can identify standard Node.js streams, it may not recognize custom or\n * third-party stream-like objects that do not inherit directly from Node.js's stream classes\n * or do not have these internal state properties. This is intentional as many of the methods\n * in this library are designed to work with standard Node.js streams.\n *\n * @param obj - The object to be checked for being a Node.js stream.\n * @returns `true` if the object is a Node.js stream (`Duplex`, `Readable`, `Writable`, or `Transform`); otherwise, `false`.\n */\n public static isStream(obj: unknown): obj is Duplex | Readable | Writable | Transform {\n return (\n typeof obj === 'object' && obj !== null &&\n ('_readableState' in obj || '_writableState' in obj)\n );\n }\n\n /**\n * Converts a Node.js `Readable` stream to a Web `ReadableStream`.\n *\n * This method provides a bridge between Node.js streams and the Web Streams API by converting a\n * Node.js `Readable` stream into a Web `ReadableStream`. It listens for 'data', 'end', and 'error'\n * events on the Node.js stream and appropriately enqueues data, closes, or errors the Web\n * `ReadableStream`.\n *\n * If the Node.js stream is already destroyed, the method returns an immediately cancelled\n * Web `ReadableStream`.\n *\n * @example\n * ```ts\n * const nodeReadable = getNodeReadableStreamSomehow();\n * const webReadableStream = NodeStream.toWebReadable({ readable: nodeReadable });\n * ```\n *\n * @param readable - The Node.js `Readable` stream to be converted.\n * @returns A Web `ReadableStream` corresponding to the provided Node.js `Readable` stream.\n * @throws TypeError if `readable` is not a Node.js `Readable` stream.\n * @throws Error if the Node.js `Readable` stream is already destroyed.\n */\n static toWebReadable({ readable }: { readable: Readable }): ReadableStream {\n if (!NodeStream.isReadableStream(readable)) {\n throw new TypeError(`NodeStream.toWebReadable: 'readable' is not a Node Readable stream.`);\n }\n\n if (NodeStream.isDestroyed({ stream: readable })) {\n const readable = new ReadableStream();\n readable.cancel();\n return readable;\n }\n\n return new ReadableStream({\n start(controller) {\n readable.on('data', (chunk) => {\n controller.enqueue(chunk);\n });\n\n readable.on('end', () => {\n controller.close();\n });\n\n readable.on('error', (err) => {\n controller.error(err);\n });\n },\n\n cancel() {\n readable.destroy();\n }\n });\n }\n}"],
|
|
"mappings": "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",
|
|
"names": ["require_ttlcache", "__commonJSMin", "exports", "module", "perf", "now", "isPosInt", "n", "isPosIntOrInf", "TTLCache", "_TTLCache", "max", "ttl", "updateAgeOnGet", "checkAgeOnGet", "noUpdateTTL", "dispose", "noDisposeOnSet", "expiration", "t", "exp", "entries", "key", "val", "current", "k", "oldValue", "_", "__", "value", "keys", "s", "require_level_supports", "__commonJSMin", "exports", "manifests", "manifest", "acc", "m", "require_module_error", "__commonJSMin", "exports", "module", "message", "options", "require_base64_js", "__commonJSMin", "exports", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "i", "len", "getLens", "b64", "validLen", "placeHoldersLen", "lens", "_byteLength", "tmp", "arr", "curByte", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "require_ieee754", "__commonJSMin", "exports", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "m", "eLen", "eMax", "eBias", "nBits", "i", "d", "s", "value", "c", "rt", "require_buffer", "__commonJSMin", "exports", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "i", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "checkInt", "min", "maxBytes", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "errors", "E", "sym", "getMessage", "Base", "name", "range", "input", "msg", "received", "addNumericalSeparator", "checkBounds", "type", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "src", "dst", "alphabet", "table", "i16", "fn", "BufferBigIntNotDefined", "require_text_endec", "__commonJSMin", "exports", "module", "lazy", "require_encoding", "__commonJSMin", "exports", "ModuleError", "formats", "Encoding", "options", "require_formats", "__commonJSMin", "exports", "Buffer", "Encoding", "textEndec", "BufferFormat", "options", "ViewFormat", "data", "view", "UTF8Format", "textEncoder", "textDecoder", "require_encodings", "__commonJSMin", "exports", "Buffer", "textEncoder", "textDecoder", "BufferFormat", "ViewFormat", "UTF8Format", "identity", "v", "data", "buffer", "require_level_transcoder", "__commonJSMin", "exports", "ModuleError", "encodings", "Encoding", "BufferFormat", "ViewFormat", "UTF8Format", "kFormats", "kEncodings", "validFormats", "Transcoder", "formats", "f", "k", "err", "encoding", "resolved", "lookup", "from", "name", "format", "options", "maybeType", "anonymousCount", "detectFormat", "aliases", "require_events", "__commonJSMin", "exports", "module", "R", "ReflectApply", "target", "receiver", "args", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "value", "EventEmitter", "once", "defaultMaxListeners", "checkListener", "listener", "arg", "n", "_getMaxListeners", "that", "type", "i", "doError", "events", "er", "err", "handler", "len", "listeners", "arrayClone", "_addListener", "prepend", "m", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "list", "position", "originalListener", "spliceOne", "keys", "key", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "arr", "copy", "index", "ret", "name", "resolve", "reject", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "require_next_tick_browser", "__commonJSMin", "exports", "module", "fn", "require_catering", "__commonJSMin", "exports", "nextTick", "callback", "symbol", "promise", "resolve", "reject", "err", "res", "require_common", "__commonJSMin", "exports", "options", "callback", "def", "require_abstract_iterator", "__commonJSMin", "exports", "fromCallback", "ModuleError", "getOptions", "getCallback", "kPromise", "kCallback", "kWorking", "kHandleOne", "kHandleMany", "kAutoClose", "kFinishWork", "kReturnMany", "kClosing", "kHandleClose", "kClosed", "kCloseCallbacks", "kKeyEncoding", "kValueEncoding", "kAbortOnClose", "kLegacy", "kKeys", "kValues", "kLimit", "kCount", "emptyOptions", "noop", "warnedEnd", "CommonIterator", "db", "options", "legacy", "hint", "callback", "promise", "resolve", "reject", "err", "key", "value", "size", "acc", "onnext", "count", "nextv", "onnextv", "items", "cb", "target", "keyEncoding", "keyFormat", "mapped", "callbacks", "item", "AbstractIterator", "IteratorDecodeError", "entries", "entry", "AbstractKeyIterator", "keys", "AbstractValueIterator", "values", "subject", "cause", "k", "require_default_kv_iterator", "__commonJSMin", "exports", "AbstractKeyIterator", "AbstractValueIterator", "kIterator", "kCallback", "kHandleOne", "kHandleMany", "DefaultKeyIterator", "db", "options", "DefaultValueIterator", "Iterator", "keys", "mapEntry", "entry", "callback", "err", "key", "value", "size", "entries", "target", "require_deferred_iterator", "__commonJSMin", "exports", "AbstractIterator", "AbstractKeyIterator", "AbstractValueIterator", "ModuleError", "kNut", "kUndefer", "kFactory", "DeferredIterator", "db", "options", "DeferredKeyIterator", "DeferredValueIterator", "Iterator", "callback", "size", "target", "require_abstract_chained_batch", "__commonJSMin", "exports", "fromCallback", "ModuleError", "getCallback", "getOptions", "kPromise", "kStatus", "kOperations", "kFinishClose", "kCloseCallbacks", "AbstractChainedBatch", "db", "hint", "key", "value", "options", "err", "original", "keyEncoding", "valueEncoding", "keyFormat", "mappedKey", "mappedValue", "callback", "callbacks", "cb", "require_default_chained_batch", "__commonJSMin", "exports", "AbstractChainedBatch", "ModuleError", "kEncoded", "DefaultChainedBatch", "db", "key", "value", "options", "callback", "require_range_options", "__commonJSMin", "exports", "module", "ModuleError", "hasOwnProperty", "rangeOptions", "options", "keyEncoding", "result", "k", "require_queue_microtask", "__commonJSMin", "exports", "module", "promise", "cb", "err", "require_next_tick_browser", "__commonJSMin", "exports", "module", "queueMicrotask", "fn", "args", "require_abstract_sublevel_iterator", "__commonJSMin", "exports", "AbstractIterator", "AbstractKeyIterator", "AbstractValueIterator", "kUnfix", "kIterator", "kHandleOne", "kHandleMany", "kCallback", "AbstractSublevelIterator", "db", "options", "iterator", "unfix", "err", "key", "value", "callback", "entries", "entry", "AbstractSublevelKeyIterator", "keys", "AbstractSublevelValueIterator", "Iterator", "size", "target", "require_abstract_sublevel", "__commonJSMin", "exports", "module", "ModuleError", "Buffer", "AbstractSublevelIterator", "AbstractSublevelKeyIterator", "AbstractSublevelValueIterator", "kPrefix", "kUpperBound", "kPrefixRange", "kParent", "kUnfix", "textEncoder", "defaults", "AbstractLevel", "AbstractSublevel", "options", "db", "name", "separator", "manifest", "forward", "trim", "reserved", "parent", "x", "mergeManifests", "prefix", "upperBound", "MultiFormat", "Unfixer", "key", "keyFormat", "view", "result", "buffer", "range", "callback", "value", "keys", "operations", "iterator", "unfix", "supportsEncoding", "encoding", "prefixLength", "str", "char", "start", "end", "require_abstract_level", "__commonJSMin", "exports", "supports", "Transcoder", "EventEmitter", "fromCallback", "ModuleError", "AbstractIterator", "DefaultKeyIterator", "DefaultValueIterator", "DeferredIterator", "DeferredKeyIterator", "DeferredValueIterator", "DefaultChainedBatch", "getCallback", "getOptions", "rangeOptions", "kPromise", "kLanded", "kResources", "kCloseResources", "kOperations", "kUndefer", "kDeferOpen", "kOptions", "kStatus", "kDefaultOptions", "kTranscoder", "kKeyEncoding", "kValueEncoding", "noop", "AbstractLevel", "manifest", "options", "keyEncoding", "valueEncoding", "passive", "forward", "formats", "encoding", "callback", "maybeOpened", "err", "maybeClosed", "cancel", "pending", "sync", "next", "resource", "key", "maybeError", "keyFormat", "valueFormat", "value", "keys", "mappedKeys", "i", "values", "mappedKey", "mappedValue", "operations", "mapped", "ke", "ve", "op", "db", "valueErr", "name", "AbstractSublevel", "original", "fn", "k", "require_abstract_level", "__commonJSMin", "exports", "require_run_parallel_limit", "__commonJSMin", "exports", "module", "runParallelLimit", "queueMicrotask", "tasks", "limit", "cb", "results", "len", "pending", "keys", "isErrored", "isSync", "next", "done", "err", "end", "each", "i", "result", "key", "task", "require_key_range", "__commonJSMin", "exports", "module", "options", "lower", "upper", "lowerExclusive", "upperExclusive", "require_deserialize", "__commonJSMin", "exports", "module", "textEncoder", "data", "require_iterator", "__commonJSMin", "exports", "AbstractIterator", "createKeyRange", "deserialize", "kCache", "kFinished", "kOptions", "kCurrentOptions", "kPosition", "kLocation", "kFirst", "emptyOptions", "Iterator", "db", "location", "options", "size", "callback", "keyRange", "transaction", "store", "entries", "method", "ev", "cursor", "key", "value", "maybeCommit", "keys", "values", "complete", "length", "i", "err", "cache", "target", "require_clear", "__commonJSMin", "exports", "module", "db", "location", "keyRange", "options", "callback", "transaction", "store", "count", "method", "direction", "ev", "cursor", "require_browser_level", "__commonJSMin", "exports", "AbstractLevel", "ModuleError", "parallel", "fromCallback", "Iterator", "deserialize", "clear", "createKeyRange", "DEFAULT_PREFIX", "kIDB", "kNamePrefix", "kLocation", "kVersion", "kStore", "kOnComplete", "kPromise", "BrowserLevel", "location", "options", "_", "prefix", "version", "forward", "callback", "req", "ev", "db", "mode", "request", "transaction", "key", "store", "err", "value", "keys", "tasks", "next", "operations", "index", "error", "loop", "op", "keyRange", "require_browser", "__commonJSMin", "exports", "require_primordials", "__commonJSMin", "exports", "module", "self", "el", "sep", "fn", "start", "end", "thisArgs", "args", "instance", "props", "name", "prop", "obj", "target", "proto", "thenFn", "catchFn", "err", "value", "buf", "len", "require_util", "__commonJSMin", "exports", "module", "bufferModule", "AsyncFunction", "Blob", "isBlob", "b", "AggregateError", "errors", "message", "i", "callback", "called", "args", "resolve", "reject", "res", "rej", "fn", "err", "format", "_unused", "type", "replacement", "value", "arr", "require_browser", "__commonJSMin", "exports", "module", "AbortController", "AbortSignal", "require_errors", "__commonJSMin", "exports", "module", "format", "inspect", "CustomAggregateError", "AggregateError", "kIsNodeError", "kTypes", "classRegExp", "nodeInternalPrefix", "codes", "assert", "value", "message", "addNumericalSeparator", "val", "res", "i", "start", "getMessage", "key", "msg", "args", "expectedLength", "E", "code", "Base", "NodeError", "hideStackFrames", "fn", "hidden", "aggregateTwoErrors", "innerError", "outerError", "err", "AbortError", "options", "name", "expected", "actual", "types", "instances", "other", "pos", "last", "_actual$constructor", "inspected", "reason", "input", "_value$constructor", "type", "len", "a", "str", "range", "received", "require_validators", "__commonJSMin", "exports", "module", "ArrayIsArray", "ArrayPrototypeIncludes", "ArrayPrototypeJoin", "ArrayPrototypeMap", "NumberIsInteger", "NumberIsNaN", "NumberMAX_SAFE_INTEGER", "NumberMIN_SAFE_INTEGER", "NumberParseInt", "ObjectPrototypeHasOwnProperty", "RegExpPrototypeExec", "String", "StringPrototypeToUpperCase", "StringPrototypeTrim", "hideStackFrames", "ERR_SOCKET_BAD_PORT", "ERR_INVALID_ARG_TYPE", "ERR_INVALID_ARG_VALUE", "ERR_OUT_OF_RANGE", "ERR_UNKNOWN_SIGNAL", "normalizeEncoding", "isAsyncFunction", "isArrayBufferView", "signals", "isInt32", "value", "isUint32", "octalReg", "modeDesc", "parseFileMode", "name", "def", "validateUint32", "validateInteger", "min", "max", "validateInt32", "positive", "validateString", "validateNumber", "validateOneOf", "oneOf", "reason", "v", "validateBoolean", "getOwnPropertyValueOrDefault", "options", "key", "defaultValue", "validateObject", "allowArray", "allowFunction", "validateDictionary", "validateArray", "minLength", "validateStringArray", "i", "validateBooleanArray", "validateSignalName", "signal", "validateBuffer", "buffer", "validateEncoding", "data", "encoding", "normalizedEncoding", "length", "validatePort", "port", "allowZero", "validateAbortSignal", "validateFunction", "validatePlainFunction", "validateUndefined", "validateUnion", "union", "linkValueRegExp", "validateLinkHeaderFormat", "validateLinkHeaderValue", "hints", "hintsLength", "result", "link", "require_browser", "__commonJSMin", "exports", "module", "process", "cachedSetTimeout", "cachedClearTimeout", "defaultSetTimout", "defaultClearTimeout", "runTimeout", "fun", "runClearTimeout", "marker", "queue", "draining", "currentQueue", "queueIndex", "cleanUpNextTick", "drainQueue", "timeout", "len", "args", "i", "Item", "array", "noop", "name", "dir", "require_utils", "__commonJSMin", "exports", "module", "Symbol", "SymbolAsyncIterator", "SymbolIterator", "SymbolFor", "kDestroyed", "kIsErrored", "kIsReadable", "kIsDisturbed", "kIsClosedPromise", "kControllerErrorFunction", "isReadableNodeStream", "obj", "strict", "_obj$_readableState", "isWritableNodeStream", "_obj$_writableState", "isDuplexNodeStream", "isNodeStream", "isReadableStream", "isWritableStream", "isTransformStream", "isWebStream", "isIterable", "isAsync", "isDestroyed", "stream", "wState", "rState", "state", "isWritableEnded", "isWritableFinished", "isReadableEnded", "isReadableFinished", "isReadable", "isWritable", "isFinished", "opts", "isWritableErrored", "_stream$_writableStat", "_stream$_writableStat2", "isReadableErrored", "_stream$_readableStat", "_stream$_readableStat2", "isClosed", "isOutgoingMessage", "isServerResponse", "isServerRequest", "_stream$req", "willEmitClose", "isDisturbed", "_stream$kIsDisturbed", "isErrored", "_ref", "_ref2", "_ref3", "_ref4", "_ref5", "_stream$kIsErrored", "_stream$_readableStat3", "_stream$_writableStat3", "_stream$_readableStat4", "_stream$_writableStat4", "require_end_of_stream", "__commonJSMin", "exports", "module", "process", "AbortError", "codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PREMATURE_CLOSE", "kEmptyObject", "once", "validateAbortSignal", "validateFunction", "validateObject", "validateBoolean", "Promise", "PromisePrototypeThen", "isClosed", "isReadable", "isReadableNodeStream", "isReadableStream", "isReadableFinished", "isReadableErrored", "isWritable", "isWritableNodeStream", "isWritableStream", "isWritableFinished", "isWritableErrored", "isNodeStream", "_willEmitClose", "kIsClosedPromise", "isRequest", "stream", "nop", "eos", "options", "callback", "_options$readable", "_options$writable", "eosWeb", "readable", "writable", "wState", "rState", "onlegacyfinish", "onfinish", "willEmitClose", "writableFinished", "readableFinished", "onend", "onerror", "err", "closed", "onclose", "errored", "onclosed", "onrequest", "cleanup", "abort", "endCallback", "originalCallback", "args", "isAborted", "resolverFn", "finished", "opts", "_opts", "autoCleanup", "resolve", "reject", "require_destroy", "__commonJSMin", "exports", "module", "process", "aggregateTwoErrors", "ERR_MULTIPLE_CALLBACK", "AbortError", "Symbol", "kDestroyed", "isDestroyed", "isFinished", "isServerRequest", "kDestroy", "kConstruct", "checkError", "err", "w", "destroy", "cb", "s", "_destroy", "er", "self", "called", "onDestroy", "r", "emitErrorCloseNT", "emitCloseNT", "emitErrorNT", "undestroy", "errorOrDestroy", "stream", "sync", "construct", "constructNT", "onConstruct", "emitConstructNT", "isRequest", "emitCloseLegacy", "emitErrorCloseLegacy", "destroyer", "require_legacy", "__commonJSMin", "exports", "module", "ArrayIsArray", "ObjectSetPrototypeOf", "EE", "Stream", "opts", "dest", "options", "source", "ondata", "chunk", "ondrain", "onend", "onclose", "didOnEnd", "onerror", "er", "cleanup", "prependListener", "emitter", "event", "fn", "require_add_abort_signal", "__commonJSMin", "exports", "module", "AbortError", "codes", "isNodeStream", "isWebStream", "kControllerErrorFunction", "eos", "ERR_INVALID_ARG_TYPE", "validateAbortSignal", "signal", "name", "stream", "onAbort", "require_buffer_list", "__commonJSMin", "exports", "module", "StringPrototypeSlice", "SymbolIterator", "TypedArrayPrototypeSet", "Uint8Array", "Buffer", "inspect", "v", "entry", "ret", "s", "p", "n", "hasStrings", "data", "slice", "c", "str", "retLen", "buf", "_", "options", "require_state", "__commonJSMin", "exports", "module", "MathFloor", "NumberIsInteger", "ERR_INVALID_ARG_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getDefaultHighWaterMark", "objectMode", "getHighWaterMark", "state", "hwm", "name", "require_safe_buffer", "__commonJSMin", "exports", "module", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_string_decoder", "__commonJSMin", "exports", "Buffer", "isEncoding", "encoding", "_normalizeEncoding", "enc", "retried", "normalizeEncoding", "nenc", "StringDecoder", "nb", "utf16Text", "utf16End", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "buf", "r", "i", "utf8End", "utf8Text", "utf8CheckByte", "byte", "utf8CheckIncomplete", "self", "j", "utf8CheckExtraBytes", "p", "total", "end", "c", "n", "require_from", "__commonJSMin", "exports", "module", "process", "PromisePrototypeThen", "SymbolAsyncIterator", "SymbolIterator", "Buffer", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_NULL_VALUES", "from", "Readable", "iterable", "opts", "iterator", "isAsync", "readable", "reading", "next", "error", "cb", "close", "e", "hadError", "hasThrow", "value", "done", "res", "err", "require_readable", "__commonJSMin", "exports", "module", "process", "ArrayPrototypeIndexOf", "NumberIsInteger", "NumberIsNaN", "NumberParseInt", "ObjectDefineProperties", "ObjectKeys", "ObjectSetPrototypeOf", "Promise", "SafeSet", "SymbolAsyncIterator", "Symbol", "Readable", "ReadableState", "EE", "Stream", "prependListener", "Buffer", "addAbortSignal", "eos", "debug", "fn", "BufferList", "destroyImpl", "getHighWaterMark", "getDefaultHighWaterMark", "aggregateTwoErrors", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_OUT_OF_RANGE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "validateObject", "kPaused", "StringDecoder", "from", "nop", "errorOrDestroy", "options", "stream", "isDuplex", "maybeReadMore", "err", "cb", "chunk", "encoding", "readableAddChunk", "addToFront", "state", "onEofChunk", "addChunk", "emitReadable", "enc", "decoder", "buffer", "content", "data", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "pause", "pipeOnDrain", "er", "s", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "paused", "streamKeys", "j", "streamToAsyncIterator", "iter", "createAsyncIterator", "callback", "next", "resolve", "error", "r", "val", "value", "endReadableNT", "endWritableNT", "wState", "iterable", "opts", "webStreamsAdapters", "lazyWebStreams", "readableStream", "streamReadable", "_ref", "_src$readableObjectMo", "require_writable", "__commonJSMin", "exports", "module", "process", "ArrayPrototypeSlice", "Error", "FunctionPrototypeSymbolHasInstance", "ObjectDefineProperty", "ObjectDefineProperties", "ObjectSetPrototypeOf", "StringPrototypeToLowerCase", "Symbol", "SymbolHasInstance", "Writable", "WritableState", "EE", "Stream", "Buffer", "destroyImpl", "addAbortSignal", "getHighWaterMark", "getDefaultHighWaterMark", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_ALREADY_FINISHED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "kOnFinished", "options", "stream", "isDuplex", "noDecode", "onwrite", "resetBuffer", "state", "clearBuffer", "finishMaybe", "object", "_write", "chunk", "encoding", "cb", "err", "writeOrBuffer", "callback", "len", "ret", "doWrite", "writev", "onwriteError", "er", "errorBuffer", "sync", "afterWriteTick", "afterWrite", "count", "n", "_state$errored", "onfinishCallbacks", "_state$errored2", "buffered", "bufferedIndex", "objectMode", "bufferedLength", "i", "chunks", "needFinish", "callFinal", "called", "onFinish", "finish", "prefinish", "rState", "value", "w", "val", "wState", "destroy", "webStreamsAdapters", "lazyWebStreams", "writableStream", "streamWritable", "require_duplexify", "__commonJSMin", "exports", "module", "process", "bufferModule", "isReadable", "isWritable", "isIterable", "isNodeStream", "isReadableNodeStream", "isWritableNodeStream", "isDuplexNodeStream", "eos", "AbortError", "ERR_INVALID_ARG_TYPE", "ERR_INVALID_RETURN_VALUE", "destroyer", "Duplex", "Readable", "createDeferredPromise", "from", "Blob", "isBlob", "b", "AbortController", "FunctionPrototypeCall", "Duplexify", "options", "duplexify", "body", "name", "_duplexify", "value", "write", "final", "destroy", "fromAsyncGen", "then", "d", "promise", "val", "err", "cb", "readable", "writable", "fn", "resolve", "ac", "signal", "_promise", "chunk", "done", "encoding", "_resolve", "pair", "r", "w", "ondrain", "onfinish", "onreadable", "onclose", "onfinished", "callback", "buf", "require_duplex", "__commonJSMin", "exports", "module", "ObjectDefineProperties", "ObjectGetOwnPropertyDescriptor", "ObjectKeys", "ObjectSetPrototypeOf", "Duplex", "Readable", "Writable", "keys", "i", "method", "options", "value", "webStreamsAdapters", "lazyWebStreams", "pair", "duplex", "duplexify", "body", "require_transform", "__commonJSMin", "exports", "module", "ObjectSetPrototypeOf", "Symbol", "Transform", "ERR_METHOD_NOT_IMPLEMENTED", "Duplex", "getHighWaterMark", "kCallback", "options", "readableHighWaterMark", "prefinish", "final", "cb", "er", "data", "chunk", "encoding", "callback", "rState", "wState", "length", "err", "val", "require_passthrough", "__commonJSMin", "exports", "module", "ObjectSetPrototypeOf", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "process", "ArrayIsArray", "Promise", "SymbolAsyncIterator", "eos", "once", "destroyImpl", "Duplex", "aggregateTwoErrors", "ERR_INVALID_ARG_TYPE", "ERR_INVALID_RETURN_VALUE", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "ERR_STREAM_PREMATURE_CLOSE", "AbortError", "validateFunction", "validateAbortSignal", "isIterable", "isReadable", "isReadableNodeStream", "isNodeStream", "isTransformStream", "isWebStream", "isReadableStream", "isReadableEnded", "AbortController", "PassThrough", "Readable", "destroyer", "stream", "reading", "writing", "finished", "cleanup", "err", "popCallback", "streams", "makeAsyncIterable", "val", "fromReadable", "pumpToNode", "iterable", "writable", "finish", "end", "error", "onresolve", "resume", "callback", "wait", "resolve", "reject", "chunk", "pumpToWeb", "readable", "writer", "pipeline", "pipelineImpl", "opts", "ac", "signal", "outerSignal", "lastStreamCleanup", "abort", "finishImpl", "value", "destroys", "finishCount", "final", "fn", "ret", "i", "isLastStream", "onError", "destroy", "_ret", "_ret2", "pt", "then", "toRead", "pipe", "src", "dst", "ended", "endFn", "rState", "require_compose", "__commonJSMin", "exports", "module", "pipeline", "Duplex", "destroyer", "isNodeStream", "isReadable", "isWritable", "isWebStream", "isTransformStream", "isWritableStream", "isReadableStream", "AbortError", "ERR_INVALID_ARG_VALUE", "ERR_MISSING_ARGS", "eos", "streams", "orgStreams", "idx", "n", "ondrain", "onfinish", "onreadable", "onclose", "d", "onfinished", "err", "cb", "readable", "writable", "head", "tail", "chunk", "encoding", "callback", "writer", "toRead", "buf", "reader", "value", "done", "require_operators", "__commonJSMin", "exports", "module", "AbortController", "ERR_INVALID_ARG_VALUE", "ERR_INVALID_ARG_TYPE", "ERR_MISSING_ARGS", "ERR_OUT_OF_RANGE", "AbortError", "validateAbortSignal", "validateInteger", "validateObject", "kWeakHandler", "finished", "staticCompose", "addAbortSignalNoValidate", "isWritable", "isNodeStream", "ArrayPrototypePush", "MathFloor", "Number", "NumberIsNaN", "Promise", "PromiseReject", "PromisePrototypeThen", "Symbol", "kEmpty", "kEof", "compose", "stream", "options", "composedStream", "map", "fn", "concurrency", "_options$signal", "_options$signal2", "ac", "queue", "signal", "signalOpt", "abort", "next", "resume", "done", "onDone", "pump", "val", "_val", "err", "resolve", "_options$signal3", "asIndexedPairs", "index", "_options$signal4", "some", "unused", "filter", "every", "args", "find", "result", "forEach", "forEachFn", "value", "filterFn", "ReduceAwareErrMissingArgs", "reduce", "reducer", "initialValue", "_options$signal5", "hasInitialValue", "opts", "gotAnyItemFromStream", "_options$signal6", "toArray", "_options$signal7", "flatMap", "values", "toIntegerOrInfinity", "number", "drop", "_options$signal8", "_options$signal9", "take", "_options$signal10", "_options$signal11", "require_promises", "__commonJSMin", "exports", "module", "ArrayPrototypePop", "Promise", "isIterable", "isNodeStream", "isWebStream", "pl", "finished", "pipeline", "streams", "resolve", "reject", "signal", "end", "lastArg", "options", "err", "value", "require_stream", "__commonJSMin", "exports", "module", "Buffer", "ObjectDefineProperty", "ObjectKeys", "ReflectApply", "customPromisify", "streamReturningOperators", "promiseReturningOperators", "ERR_ILLEGAL_CONSTRUCTOR", "compose", "pipeline", "destroyer", "eos", "promises", "utils", "Stream", "key", "fn", "args", "op", "addAbortSignal", "value", "chunk", "require_browser", "__commonJSMin", "exports", "module", "CustomStream", "promises", "originalDestroy", "import_ttlcache", "base", "ALPHABET", "name", "BASE_MAP", "j", "x", "xc", "BASE", "LEADER", "FACTOR", "iFACTOR", "encode", "source", "zeroes", "length", "pbegin", "pend", "size", "b58", "carry", "i", "it1", "it2", "str", "decodeUnsafe", "psz", "b256", "it3", "it4", "vch", "decode", "string", "buffer", "src", "_brrp__multiformats_scope_baseX", "base_x_default", "empty", "equals", "aa", "bb", "ii", "coerce", "o", "Encoder", "name", "prefix", "baseEncode", "bytes", "Decoder", "baseDecode", "text", "decoder", "or", "ComposedDecoder", "decoders", "input", "left", "right", "Codec", "from", "encode", "decode", "baseX", "alphabet", "base_x_default", "coerce", "string", "bitsPerChar", "codes", "i", "end", "out", "bits", "buffer", "written", "value", "data", "pad", "mask", "rfc4648", "base32", "rfc4648", "base32upper", "base32pad", "base32padupper", "base32hex", "base32hexupper", "base32hexpad", "base32hexpadupper", "base32z", "base58btc", "baseX", "base58flickr", "base64", "rfc4648", "base64pad", "base64url", "base64urlpad", "isArrayBufferSlice", "arrayBufferView", "isAsyncIterable", "obj", "isDefined", "arg", "universalTypeOf", "value", "match", "_", "type", "textEncoder", "textDecoder", "Convert", "_Convert", "data", "format", "isAsyncIterable", "base58btc", "base64url", "universalTypeOf", "isArrayBufferSlice", "base32z", "u8a", "string", "chunks", "chunk", "hexes", "v", "i", "hex", "text", "str", "dataType", "byteValue", "arrayBuffer", "varint_exports", "__export", "decode", "encodeTo", "encodingLength", "encode_1", "encode", "MSB", "REST", "MSBALL", "INT", "num", "out", "offset", "oldOffset", "decode", "read", "MSB$1", "REST$1", "buf", "res", "shift", "counter", "b", "l", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "length", "value", "varint", "_brrp_varint", "varint_default", "decode", "data", "offset", "varint_default", "encodeTo", "int", "target", "encodingLength", "create", "code", "digest", "size", "sizeOffset", "encodingLength", "digestOffset", "bytes", "encodeTo", "Digest", "decode", "multihash", "coerce", "equals", "a", "b", "data", "format", "link", "base", "bytes", "version", "toStringV0", "baseCache", "base58btc", "toStringV1", "base32", "cache", "baseCache", "cid", "CID", "_CID", "version", "code", "multihash", "bytes", "DAG_PB_CODE", "SHA_256_CODE", "digest", "create", "other", "self", "unknown", "equals", "base", "format", "input", "value", "encodeCID", "cidSymbol", "decode", "remainder", "specs", "prefixSize", "multihashBytes", "coerce", "digestBytes", "Digest", "initialBytes", "offset", "next", "i", "length", "codec", "multihashCode", "digestSize", "size", "multihashSize", "source", "prefix", "parseCIDtoBytes", "decoder", "base58btc", "base32", "toStringV0", "toStringV1", "codeOffset", "encodingLength", "hashOffset", "encodeTo", "_Multicodec", "options", "code", "data", "name", "prefixLength", "varint_exports", "dataWithPrefix", "prefixedData", "_", "codec", "codeByteLength", "Multicodec", "isEmptyObject", "obj", "removeEmptyObjects", "key", "removeUndefinedProperties", "import_level", "LevelStore", "db", "location", "key", "error", "value", "MemoryStore", "id", "Stream", "_Stream", "readableStream", "reader", "done", "value", "iterableStream", "Convert", "streamLength", "chunkLength", "fillValue", "bytesRemaining", "controller", "enqueueChunk", "currentChunkLength", "chunk", "min", "max", "range", "i", "c", "obj", "import_readable_stream", "import_readable_stream", "NodeStream", "_NodeStream", "readable", "Convert", "readableStream", "readableOptions", "Stream", "reader", "closed", "nodeReadable", "done", "value", "error", "callback", "stream", "writableState", "readableState", "state", "obj", "controller", "chunk", "err"]
|
|
}
|