@learncard/vpqr-plugin 1.0.14 → 1.0.15
Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
|
-
"sources": ["../../../../node_modules/.pnpm/base32-decode@1.0.0/node_modules/base32-decode/index.js", "../../../../node_modules/.pnpm/cborg@4.2.
|
3
|
+
"sources": ["../../../../node_modules/.pnpm/base32-decode@1.0.0/node_modules/base32-decode/index.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/is.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/token.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/byte-utils.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/bl.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/common.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/0uint.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/1negint.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/2bytes.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/3string.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/4array.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/5map.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/6tag.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/7float.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/jump.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/encode.js", "../../../../node_modules/.pnpm/cborg@4.2.6/node_modules/cborg/lib/decode.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/CborldError.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/keywords.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/CborldDecoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/registeredContexts.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/ContextDecoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/util-browser.js", "../../../../node_modules/.pnpm/js-base64@3.7.7/node_modules/js-base64/base64.mjs", "../../../../node_modules/.pnpm/base58-universal@2.0.0/node_modules/base58-universal/lib/baseN.js", "../../../../node_modules/.pnpm/base58-universal@2.0.0/node_modules/base58-universal/lib/index.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/MultibaseDecoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/Transformer.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/Base58DidUrlDecoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/HttpUrlDecoder.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/regex.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/validate.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/parse.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/UuidUrnDecoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/UriDecoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/VocabTermDecoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/XsdDateDecoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/XsdDateTimeDecoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/Decompressor.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/decode.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/CborldEncoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/ContextEncoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/MultibaseEncoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/Base58DidUrlEncoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/HttpUrlEncoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/UuidUrnEncoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/UriEncoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/VocabTermEncoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/XsdDateEncoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/codecs/XsdDateTimeEncoder.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/Compressor.js", "../../../../node_modules/.pnpm/@digitalbazaar+cborld@5.2.0/node_modules/@digitalbazaar/cborld/lib/encode.js", "../../../../node_modules/.pnpm/to-data-view@2.0.0/node_modules/to-data-view/index.js", "../../../../node_modules/.pnpm/base32-encode@2.0.0/node_modules/base32-encode/index.js", "../../../../node_modules/.pnpm/@digitalbazaar+vpqr@3.0.0/node_modules/@digitalbazaar/vpqr/lib/vpqr.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/common/Mode.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/encoder/QRData.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/encoding/UTF8.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/encoder/QRByte.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/encoder/QRMath.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/encoder/Polynomial.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/encoder/QRUtil.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/common/ErrorCorrectionLevel.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/encoder/RSBlock.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/encoder/BitBuffer.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/image/lzw/Dict.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/image/lzw/DictStream.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/image/lzw/index.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/image/ByteStream.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/image/Base64Stream.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/image/GIFImage.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/common/MaskPattern.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/encoder/Writer.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/encoding/UTF16.js", "../../../../node_modules/.pnpm/@nuintun+qrcode@3.4.0/node_modules/@nuintun/qrcode/esm/qrcode/encoder/QRAlphanumeric.js", "../src/index.ts"],
|
4
4
|
"sourcesContent": ["var RFC4648 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'\nvar RFC4648_HEX = '0123456789ABCDEFGHIJKLMNOPQRSTUV'\nvar CROCKFORD = '0123456789ABCDEFGHJKMNPQRSTVWXYZ'\n\nfunction readChar (alphabet, char) {\n var idx = alphabet.indexOf(char)\n\n if (idx === -1) {\n throw new Error('Invalid character found: ' + char)\n }\n\n return idx\n}\n\nmodule.exports = function base32Decode (input, variant) {\n var alphabet\n\n switch (variant) {\n case 'RFC3548':\n case 'RFC4648':\n alphabet = RFC4648\n input = input.replace(/=+$/, '')\n break\n case 'RFC4648-HEX':\n alphabet = RFC4648_HEX\n input = input.replace(/=+$/, '')\n break\n case 'Crockford':\n alphabet = CROCKFORD\n input = input.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')\n break\n default:\n throw new Error('Unknown base32 variant: ' + variant)\n }\n\n var length = input.length\n\n var bits = 0\n var value = 0\n\n var index = 0\n var output = new Uint8Array((length * 5 / 8) | 0)\n\n for (var i = 0; i < length; i++) {\n value = (value << 5) | readChar(alphabet, input[i])\n bits += 5\n\n if (bits >= 8) {\n output[index++] = (value >>> (bits - 8)) & 255\n bits -= 8\n }\n }\n\n return output.buffer\n}\n", "// This is an unfortunate replacement for @sindresorhus/is that we need to\n// re-implement for performance purposes. In particular the is.observable()\n// check is expensive, and unnecessary for our purposes. The values returned\n// are compatible with @sindresorhus/is, however.\n\nconst typeofs = [\n 'string',\n 'number',\n 'bigint',\n 'symbol'\n]\n\nconst objectTypeNames = [\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'HTMLElement',\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array'\n]\n\n/**\n * @param {any} value\n * @returns {string}\n */\nexport function is (value) {\n if (value === null) {\n return 'null'\n }\n if (value === undefined) {\n return 'undefined'\n }\n if (value === true || value === false) {\n return 'boolean'\n }\n const typeOf = typeof value\n if (typeofs.includes(typeOf)) {\n return typeOf\n }\n /* c8 ignore next 4 */\n // not going to bother testing this, it's not going to be valid anyway\n if (typeOf === 'function') {\n return 'Function'\n }\n if (Array.isArray(value)) {\n return 'Array'\n }\n if (isBuffer(value)) {\n return 'Buffer'\n }\n const objectType = getObjectType(value)\n if (objectType) {\n return objectType\n }\n /* c8 ignore next */\n return 'Object'\n}\n\n/**\n * @param {any} value\n * @returns {boolean}\n */\nfunction isBuffer (value) {\n return value && value.constructor && value.constructor.isBuffer && value.constructor.isBuffer.call(null, value)\n}\n\n/**\n * @param {any} value\n * @returns {string|undefined}\n */\nfunction getObjectType (value) {\n const objectTypeName = Object.prototype.toString.call(value).slice(8, -1)\n if (objectTypeNames.includes(objectTypeName)) {\n return objectTypeName\n }\n /* c8 ignore next */\n return undefined\n}\n", "class Type {\n /**\n * @param {number} major\n * @param {string} name\n * @param {boolean} terminal\n */\n constructor (major, name, terminal) {\n this.major = major\n this.majorEncoded = major << 5\n this.name = name\n this.terminal = terminal\n }\n\n /* c8 ignore next 3 */\n toString () {\n return `Type[${this.major}].${this.name}`\n }\n\n /**\n * @param {Type} typ\n * @returns {number}\n */\n compare (typ) {\n /* c8 ignore next 1 */\n return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0\n }\n}\n\n// convert to static fields when better supported\nType.uint = new Type(0, 'uint', true)\nType.negint = new Type(1, 'negint', true)\nType.bytes = new Type(2, 'bytes', true)\nType.string = new Type(3, 'string', true)\nType.array = new Type(4, 'array', false)\nType.map = new Type(5, 'map', false)\nType.tag = new Type(6, 'tag', false) // terminal?\nType.float = new Type(7, 'float', true)\nType.false = new Type(7, 'false', true)\nType.true = new Type(7, 'true', true)\nType.null = new Type(7, 'null', true)\nType.undefined = new Type(7, 'undefined', true)\nType.break = new Type(7, 'break', true)\n// Type.indefiniteLength = new Type(0, 'indefiniteLength', true)\n\nclass Token {\n /**\n * @param {Type} type\n * @param {any} [value]\n * @param {number} [encodedLength]\n */\n constructor (type, value, encodedLength) {\n this.type = type\n this.value = value\n this.encodedLength = encodedLength\n /** @type {Uint8Array|undefined} */\n this.encodedBytes = undefined\n /** @type {Uint8Array|undefined} */\n this.byteValue = undefined\n }\n\n /* c8 ignore next 3 */\n toString () {\n return `Token[${this.type}].${this.value}`\n }\n}\n\nexport { Type, Token }\n", "// Use Uint8Array directly in the browser, use Buffer in Node.js but don't\n// speak its name directly to avoid bundlers pulling in the `Buffer` polyfill\n\n// @ts-ignore\nexport const useBuffer = globalThis.process &&\n // @ts-ignore\n !globalThis.process.browser &&\n // @ts-ignore\n globalThis.Buffer &&\n // @ts-ignore\n typeof globalThis.Buffer.isBuffer === 'function'\n\nconst textDecoder = new TextDecoder()\nconst textEncoder = new TextEncoder()\n\n/**\n * @param {Uint8Array} buf\n * @returns {boolean}\n */\nfunction isBuffer (buf) {\n // @ts-ignore\n return useBuffer && globalThis.Buffer.isBuffer(buf)\n}\n\n/**\n * @param {Uint8Array|number[]} buf\n * @returns {Uint8Array}\n */\nexport function asU8A (buf) {\n /* c8 ignore next */\n if (!(buf instanceof Uint8Array)) {\n return Uint8Array.from(buf)\n }\n return isBuffer(buf) ? new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength) : buf\n}\n\nexport const toString = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return end - start > 64\n ? // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(bytes.subarray(start, end)).toString('utf8')\n : utf8Slice(bytes, start, end)\n }\n /* c8 ignore next 11 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return end - start > 64\n ? textDecoder.decode(bytes.subarray(start, end))\n : utf8Slice(bytes, start, end)\n }\n\nexport const fromString = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {string} string\n */\n (string) => {\n return string.length > 64\n ? // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(string)\n : utf8ToBytes(string)\n }\n /* c8 ignore next 7 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {string} string\n */\n (string) => {\n return string.length > 64 ? textEncoder.encode(string) : utf8ToBytes(string)\n }\n\n/**\n * Buffer variant not fast enough for what we need\n * @param {number[]} arr\n * @returns {Uint8Array}\n */\nexport const fromArray = (arr) => {\n return Uint8Array.from(arr)\n}\n\nexport const slice = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n if (isBuffer(bytes)) {\n return new Uint8Array(bytes.subarray(start, end))\n }\n return bytes.slice(start, end)\n }\n /* c8 ignore next 9 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return bytes.slice(start, end)\n }\n\nexport const concat = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\n (chunks, length) => {\n // might get a stray plain Array here\n /* c8 ignore next 1 */\n chunks = chunks.map((c) => c instanceof Uint8Array\n ? c\n // this case is occasionally missed during test runs so becomes coverage-flaky\n /* c8 ignore next 4 */\n : // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(c))\n // @ts-ignore\n return asU8A(globalThis.Buffer.concat(chunks, length))\n }\n /* c8 ignore next 19 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\n (chunks, length) => {\n const out = new Uint8Array(length)\n let off = 0\n for (let b of chunks) {\n if (off + b.length > out.length) {\n // final chunk that's bigger than we need\n b = b.subarray(0, out.length - off)\n }\n out.set(b, off)\n off += b.length\n }\n return out\n }\n\nexport const alloc = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {number} size\n * @returns {Uint8Array}\n */\n (size) => {\n // we always write over the contents we expose so this should be safe\n // @ts-ignore\n return globalThis.Buffer.allocUnsafe(size)\n }\n /* c8 ignore next 8 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {number} size\n * @returns {Uint8Array}\n */\n (size) => {\n return new Uint8Array(size)\n }\n\nexport const toHex = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} d\n * @returns {string}\n */\n (d) => {\n if (typeof d === 'string') {\n return d\n }\n // @ts-ignore\n return globalThis.Buffer.from(toBytes(d)).toString('hex')\n }\n /* c8 ignore next 12 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} d\n * @returns {string}\n */\n (d) => {\n if (typeof d === 'string') {\n return d\n }\n // @ts-ignore not smart enough to figure this out\n return Array.prototype.reduce.call(toBytes(d), (p, c) => `${p}${c.toString(16).padStart(2, '0')}`, '')\n }\n\nexport const fromHex = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {string|Uint8Array} hex\n * @returns {Uint8Array}\n */\n (hex) => {\n if (hex instanceof Uint8Array) {\n return hex\n }\n // @ts-ignore\n return globalThis.Buffer.from(hex, 'hex')\n }\n /* c8 ignore next 17 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {string|Uint8Array} hex\n * @returns {Uint8Array}\n */\n (hex) => {\n if (hex instanceof Uint8Array) {\n return hex\n }\n if (!hex.length) {\n return new Uint8Array(0)\n }\n return new Uint8Array(hex.split('')\n .map((/** @type {string} */ c, /** @type {number} */ i, /** @type {string[]} */ d) => i % 2 === 0 ? `0x${c}${d[i + 1]}` : '')\n .filter(Boolean)\n .map((/** @type {string} */ e) => parseInt(e, 16)))\n }\n\n/**\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} obj\n * @returns {Uint8Array}\n */\nfunction toBytes (obj) {\n if (obj instanceof Uint8Array && obj.constructor.name === 'Uint8Array') {\n return obj\n }\n if (obj instanceof ArrayBuffer) {\n return new Uint8Array(obj)\n }\n if (ArrayBuffer.isView(obj)) {\n return new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength)\n }\n /* c8 ignore next */\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {Uint8Array} b1\n * @param {Uint8Array} b2\n * @returns {number}\n */\nexport function compare (b1, b2) {\n /* c8 ignore next 5 */\n if (isBuffer(b1) && isBuffer(b2)) {\n // probably not possible to get here in the current API\n // @ts-ignore Buffer\n return b1.compare(b2)\n }\n for (let i = 0; i < b1.length; i++) {\n if (b1[i] === b2[i]) {\n continue\n }\n return b1[i] < b2[i] ? -1 : 1\n } /* c8 ignore next 3 */\n return 0\n}\n\n// The below code is taken from https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n// Licensed Apache-2.0.\n\n/**\n * @param {string} str\n * @returns {number[]}\n */\nfunction utf8ToBytes (str) {\n const out = []\n let p = 0\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i)\n if (c < 128) {\n out[p++] = c\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192\n out[p++] = (c & 63) | 128\n } else if (\n ((c & 0xFC00) === 0xD800) && (i + 1) < str.length &&\n ((str.charCodeAt(i + 1) & 0xFC00) === 0xDC00)) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03FF) << 10) + (str.charCodeAt(++i) & 0x03FF)\n out[p++] = (c >> 18) | 240\n out[p++] = ((c >> 12) & 63) | 128\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n } else {\n out[p++] = (c >> 12) | 224\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n }\n }\n return out\n}\n\n// The below code is mostly taken from https://github.com/feross/buffer\n// Licensed MIT. Copyright (c) Feross Aboukhadijeh\n\n/**\n * @param {Uint8Array} buf\n * @param {number} offset\n * @param {number} end\n * @returns {string}\n */\nfunction utf8Slice (buf, offset, end) {\n const res = []\n\n while (offset < end) {\n const firstByte = buf[offset]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xef) ? 4 : (firstByte > 0xdf) ? 3 : (firstByte > 0xbf) ? 2 : 1\n\n if (offset + 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[offset + 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[offset + 1]\n thirdByte = buf[offset + 2]\n if ((secondByte & 0xc0) === 0x80 && (thirdByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0xf) << 0xc | (secondByte & 0x3f) << 0x6 | (thirdByte & 0x3f)\n /* c8 ignore next 3 */\n if (tempCodePoint > 0x7ff && (tempCodePoint < 0xd800 || tempCodePoint > 0xdfff)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[offset + 1]\n thirdByte = buf[offset + 2]\n fourthByte = buf[offset + 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 /* c8 ignore next 5 */\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 offset += 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\n/**\n * @param {number[]} codePoints\n * @returns {string}\n */\nexport function 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 /* c8 ignore next 10 */\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", "/**\n * Bl is a list of byte chunks, similar to https://github.com/rvagg/bl but for\n * writing rather than reading.\n * A Bl object accepts set() operations for individual bytes and copyTo() for\n * inserting byte arrays. These write operations don't automatically increment\n * the internal cursor so its \"length\" won't be changed. Instead, increment()\n * must be called to extend its length to cover the inserted data.\n * The toBytes() call will convert all internal memory to a single Uint8Array of\n * the correct length, truncating any data that is stored but hasn't been\n * included by an increment().\n * get() can retrieve a single byte.\n * All operations (except toBytes()) take an \"offset\" argument that will perform\n * the write at the offset _from the current cursor_. For most operations this\n * will be `0` to write at the current cursor position but it can be ahead of\n * the current cursor. Negative offsets probably work but are untested.\n */\n\n// TODO: ipjs doesn't support this, only for test files: https://github.com/mikeal/ipjs/blob/master/src/package/testFile.js#L39\nimport { alloc, concat, slice } from './byte-utils.js'\n\n// the ts-ignores in this file are almost all for the `Uint8Array|number[]` duality that exists\n// for perf reasons. Consider better approaches to this or removing it entirely, it is quite\n// risky because of some assumptions about small chunks === number[] and everything else === Uint8Array.\n\nconst defaultChunkSize = 256\n\nexport class Bl {\n /**\n * @param {number} [chunkSize]\n */\n constructor (chunkSize = defaultChunkSize) {\n this.chunkSize = chunkSize\n /** @type {number} */\n this.cursor = 0\n /** @type {number} */\n this.maxCursor = -1\n /** @type {(Uint8Array|number[])[]} */\n this.chunks = []\n // keep the first chunk around if we can to save allocations for future encodes\n /** @type {Uint8Array|number[]|null} */\n this._initReuseChunk = null\n }\n\n reset () {\n this.cursor = 0\n this.maxCursor = -1\n if (this.chunks.length) {\n this.chunks = []\n }\n if (this._initReuseChunk !== null) {\n this.chunks.push(this._initReuseChunk)\n this.maxCursor = this._initReuseChunk.length - 1\n }\n }\n\n /**\n * @param {Uint8Array|number[]} bytes\n */\n push (bytes) {\n let topChunk = this.chunks[this.chunks.length - 1]\n const newMax = this.cursor + bytes.length\n if (newMax <= this.maxCursor + 1) {\n // we have at least one chunk and we can fit these bytes into that chunk\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1\n // @ts-ignore\n topChunk.set(bytes, chunkPos)\n } else {\n // can't fit it in\n if (topChunk) {\n // trip the last chunk to `cursor` if we need to\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1\n if (chunkPos < topChunk.length) {\n // @ts-ignore\n this.chunks[this.chunks.length - 1] = topChunk.subarray(0, chunkPos)\n this.maxCursor = this.cursor - 1\n }\n }\n if (bytes.length < 64 && bytes.length < this.chunkSize) {\n // make a new chunk and copy the new one into it\n topChunk = alloc(this.chunkSize)\n this.chunks.push(topChunk)\n this.maxCursor += topChunk.length\n if (this._initReuseChunk === null) {\n this._initReuseChunk = topChunk\n }\n // @ts-ignore\n topChunk.set(bytes, 0)\n } else {\n // push the new bytes in as its own chunk\n this.chunks.push(bytes)\n this.maxCursor += bytes.length\n }\n }\n this.cursor += bytes.length\n }\n\n /**\n * @param {boolean} [reset]\n * @returns {Uint8Array}\n */\n toBytes (reset = false) {\n let byts\n if (this.chunks.length === 1) {\n const chunk = this.chunks[0]\n if (reset && this.cursor > chunk.length / 2) {\n /* c8 ignore next 2 */\n // @ts-ignore\n byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor)\n this._initReuseChunk = null\n this.chunks = []\n } else {\n // @ts-ignore\n byts = slice(chunk, 0, this.cursor)\n }\n } else {\n // @ts-ignore\n byts = concat(this.chunks, this.cursor)\n }\n if (reset) {\n this.reset()\n }\n return byts\n }\n}\n", "const decodeErrPrefix = 'CBOR decode error:'\nconst encodeErrPrefix = 'CBOR encode error:'\n\nconst uintMinorPrefixBytes = []\nuintMinorPrefixBytes[23] = 1\nuintMinorPrefixBytes[24] = 2\nuintMinorPrefixBytes[25] = 3\nuintMinorPrefixBytes[26] = 5\nuintMinorPrefixBytes[27] = 9\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} need\n */\nfunction assertEnoughData (data, pos, need) {\n if (data.length - pos < need) {\n throw new Error(`${decodeErrPrefix} not enough data for type`)\n }\n}\n\nexport {\n decodeErrPrefix,\n encodeErrPrefix,\n uintMinorPrefixBytes,\n assertEnoughData\n}\n", "/* globals BigInt */\n\nimport { Token, Type } from './token.js'\nimport { decodeErrPrefix, assertEnoughData } from './common.js'\n\nexport const uintBoundaries = [24, 256, 65536, 4294967296, BigInt('18446744073709551616')]\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint8 (data, offset, options) {\n assertEnoughData(data, offset, 1)\n const value = data[offset]\n if (options.strict === true && value < uintBoundaries[0]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint16 (data, offset, options) {\n assertEnoughData(data, offset, 2)\n const value = (data[offset] << 8) | data[offset + 1]\n if (options.strict === true && value < uintBoundaries[1]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint32 (data, offset, options) {\n assertEnoughData(data, offset, 4)\n const value = (data[offset] * 16777216 /* 2 ** 24 */) + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3]\n if (options.strict === true && value < uintBoundaries[2]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number|bigint}\n */\nexport function readUint64 (data, offset, options) {\n // assume BigInt, convert back to Number if within safe range\n assertEnoughData(data, offset, 8)\n const hi = (data[offset] * 16777216 /* 2 ** 24 */) + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3]\n const lo = (data[offset + 4] * 16777216 /* 2 ** 24 */) + (data[offset + 5] << 16) + (data[offset + 6] << 8) + data[offset + 7]\n const value = (BigInt(hi) << BigInt(32)) + BigInt(lo)\n if (options.strict === true && value < uintBoundaries[3]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n if (value <= Number.MAX_SAFE_INTEGER) {\n return Number(value)\n }\n if (options.allowBigInt === true) {\n return value\n }\n throw new Error(`${decodeErrPrefix} integers outside of the safe integer range are not supported`)\n}\n\n/* not required thanks to quick[] list\nconst oneByteTokens = new Array(24).fill(0).map((v, i) => new Token(Type.uint, i, 1))\nexport function decodeUintCompact (data, pos, minor, options) {\n return oneByteTokens[minor]\n}\n*/\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint8 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint16 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint32 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint32(data, pos + 1, options), 5)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint64 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint64(data, pos + 1, options), 9)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeUint (buf, token) {\n return encodeUintValue(buf, 0, token.value)\n}\n\n/**\n * @param {Bl} buf\n * @param {number} major\n * @param {number|bigint} uint\n */\nexport function encodeUintValue (buf, major, uint) {\n if (uint < uintBoundaries[0]) {\n const nuint = Number(uint)\n // pack into one byte, minor=0, additional=value\n buf.push([major | nuint])\n } else if (uint < uintBoundaries[1]) {\n const nuint = Number(uint)\n // pack into two byte, minor=0, additional=24\n buf.push([major | 24, nuint])\n } else if (uint < uintBoundaries[2]) {\n const nuint = Number(uint)\n // pack into three byte, minor=0, additional=25\n buf.push([major | 25, nuint >>> 8, nuint & 0xff])\n } else if (uint < uintBoundaries[3]) {\n const nuint = Number(uint)\n // pack into five byte, minor=0, additional=26\n buf.push([major | 26, (nuint >>> 24) & 0xff, (nuint >>> 16) & 0xff, (nuint >>> 8) & 0xff, nuint & 0xff])\n } else {\n const buint = BigInt(uint)\n if (buint < uintBoundaries[4]) {\n // pack into nine byte, minor=0, additional=27\n const set = [major | 27, 0, 0, 0, 0, 0, 0, 0]\n // simulate bitwise above 32 bits\n let lo = Number(buint & BigInt(0xffffffff))\n let hi = Number(buint >> BigInt(32) & BigInt(0xffffffff))\n set[8] = lo & 0xff\n lo = lo >> 8\n set[7] = lo & 0xff\n lo = lo >> 8\n set[6] = lo & 0xff\n lo = lo >> 8\n set[5] = lo & 0xff\n set[4] = hi & 0xff\n hi = hi >> 8\n set[3] = hi & 0xff\n hi = hi >> 8\n set[2] = hi & 0xff\n hi = hi >> 8\n set[1] = hi & 0xff\n buf.push(set)\n } else {\n throw new Error(`${decodeErrPrefix} encountered BigInt larger than allowable range`)\n }\n }\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeUint.encodedSize = function encodedSize (token) {\n return encodeUintValue.encodedSize(token.value)\n}\n\n/**\n * @param {number} uint\n * @returns {number}\n */\nencodeUintValue.encodedSize = function encodedSize (uint) {\n if (uint < uintBoundaries[0]) {\n return 1\n }\n if (uint < uintBoundaries[1]) {\n return 2\n }\n if (uint < uintBoundaries[2]) {\n return 3\n }\n if (uint < uintBoundaries[3]) {\n return 5\n }\n return 9\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeUint.compareTokens = function compareTokens (tok1, tok2) {\n return tok1.value < tok2.value ? -1 : tok1.value > tok2.value ? 1 : /* c8 ignore next */ 0\n}\n", "/* eslint-env es2020 */\n\nimport { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint8 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint16 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint32 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint32(data, pos + 1, options), 5)\n}\n\nconst neg1b = BigInt(-1)\nconst pos1b = BigInt(1)\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint64 (data, pos, _minor, options) {\n const int = uint.readUint64(data, pos + 1, options)\n if (typeof int !== 'bigint') {\n const value = -1 - int\n if (value >= Number.MIN_SAFE_INTEGER) {\n return new Token(Type.negint, value, 9)\n }\n }\n if (options.allowBigInt !== true) {\n throw new Error(`${decodeErrPrefix} integers outside of the safe integer range are not supported`)\n }\n return new Token(Type.negint, neg1b - BigInt(int), 9)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeNegint (buf, token) {\n const negint = token.value\n const unsigned = (typeof negint === 'bigint' ? (negint * neg1b - pos1b) : (negint * -1 - 1))\n uint.encodeUintValue(buf, token.type.majorEncoded, unsigned)\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeNegint.encodedSize = function encodedSize (token) {\n const negint = token.value\n const unsigned = (typeof negint === 'bigint' ? (negint * neg1b - pos1b) : (negint * -1 - 1))\n /* c8 ignore next 4 */\n // handled by quickEncode, we shouldn't get here but it's included for completeness\n if (unsigned < uint.uintBoundaries[0]) {\n return 1\n }\n if (unsigned < uint.uintBoundaries[1]) {\n return 2\n }\n if (unsigned < uint.uintBoundaries[2]) {\n return 3\n }\n if (unsigned < uint.uintBoundaries[3]) {\n return 5\n }\n return 9\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeNegint.compareTokens = function compareTokens (tok1, tok2) {\n // opposite of the uint comparison since we store the uint version in bytes\n return tok1.value < tok2.value ? 1 : tok1.value > tok2.value ? -1 : /* c8 ignore next */ 0\n}\n", "import { Token, Type } from './token.js'\nimport { assertEnoughData, decodeErrPrefix } from './common.js'\nimport * as uint from './0uint.js'\nimport { compare, fromString, slice } from './byte-utils.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (data, pos, prefix, length) {\n assertEnoughData(data, pos, prefix + length)\n const buf = slice(data, pos + prefix, pos + prefix + length)\n return new Token(Type.bytes, buf, prefix + length)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeBytesCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer bytes lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * `encodedBytes` allows for caching when we do a byte version of a string\n * for key sorting purposes\n * @param {Token} token\n * @returns {Uint8Array}\n */\nfunction tokenBytes (token) {\n if (token.encodedBytes === undefined) {\n token.encodedBytes = token.type === Type.string ? fromString(token.value) : token.value\n }\n // @ts-ignore c'mon\n return token.encodedBytes\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeBytes (buf, token) {\n const bytes = tokenBytes(token)\n uint.encodeUintValue(buf, token.type.majorEncoded, bytes.length)\n buf.push(bytes)\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeBytes.encodedSize = function encodedSize (token) {\n const bytes = tokenBytes(token)\n return uint.encodeUintValue.encodedSize(bytes.length) + bytes.length\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeBytes.compareTokens = function compareTokens (tok1, tok2) {\n return compareBytes(tokenBytes(tok1), tokenBytes(tok2))\n}\n\n/**\n * @param {Uint8Array} b1\n * @param {Uint8Array} b2\n * @returns {number}\n */\nexport function compareBytes (b1, b2) {\n return b1.length < b2.length ? -1 : b1.length > b2.length ? 1 : compare(b1, b2)\n}\n", "import { Token, Type } from './token.js'\nimport { assertEnoughData, decodeErrPrefix } from './common.js'\nimport * as uint from './0uint.js'\nimport { encodeBytes } from './2bytes.js'\nimport { toString, slice } from './byte-utils.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} prefix\n * @param {number} length\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nfunction toToken (data, pos, prefix, length, options) {\n const totLength = prefix + length\n assertEnoughData(data, pos, totLength)\n const tok = new Token(Type.string, toString(data, pos + prefix, pos + totLength), totLength)\n if (options.retainStringBytes === true) {\n tok.byteValue = slice(data, pos + prefix, pos + totLength)\n }\n return tok\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeStringCompact (data, pos, minor, options) {\n return toToken(data, pos, 1, minor, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options), options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options), options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options), options)\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer string lengths not supported`)\n }\n return toToken(data, pos, 9, l, options)\n}\n\nexport const encodeString = encodeBytes\n", "import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (_data, _pos, prefix, length) {\n return new Token(Type.array, length, prefix)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeArrayCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer array lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArrayIndefinite (data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return toToken(data, pos, 1, Infinity)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeArray (buf, token) {\n uint.encodeUintValue(buf, Type.array.majorEncoded, token.value)\n}\n\n// using an array as a map key, are you sure about this? we can only sort\n// by map length here, it's up to the encoder to decide to look deeper\nencodeArray.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeArray.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n", "import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (_data, _pos, prefix, length) {\n return new Token(Type.map, length, prefix)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeMapCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer map lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMapIndefinite (data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return toToken(data, pos, 1, Infinity)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeMap (buf, token) {\n uint.encodeUintValue(buf, Type.map.majorEncoded, token.value)\n}\n\n// using a map as a map key, are you sure about this? we can only sort\n// by map length here, it's up to the encoder to decide to look deeper\nencodeMap.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeMap.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n", "import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeTagCompact (_data, _pos, minor, _options) {\n return new Token(Type.tag, minor, 1)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag8 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag16 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag32 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint32(data, pos + 1, options), 5)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag64 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint64(data, pos + 1, options), 9)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeTag (buf, token) {\n uint.encodeUintValue(buf, Type.tag.majorEncoded, token.value)\n}\n\nencodeTag.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeTag.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n", "// TODO: shift some of the bytes logic to bytes-utils so we can use Buffer\n// where possible\n\nimport { Token, Type } from './token.js'\nimport { decodeErrPrefix } from './common.js'\nimport { encodeUint } from './0uint.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n * @typedef {import('../interface').EncodeOptions} EncodeOptions\n */\n\nconst MINOR_FALSE = 20\nconst MINOR_TRUE = 21\nconst MINOR_NULL = 22\nconst MINOR_UNDEFINED = 23\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUndefined (_data, _pos, _minor, options) {\n if (options.allowUndefined === false) {\n throw new Error(`${decodeErrPrefix} undefined values are not supported`)\n } else if (options.coerceUndefinedToNull === true) {\n return new Token(Type.null, null, 1)\n }\n return new Token(Type.undefined, undefined, 1)\n}\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBreak (_data, _pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return new Token(Type.break, undefined, 1)\n}\n\n/**\n * @param {number} value\n * @param {number} bytes\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nfunction createToken (value, bytes, options) {\n if (options) {\n if (options.allowNaN === false && Number.isNaN(value)) {\n throw new Error(`${decodeErrPrefix} NaN values are not supported`)\n }\n if (options.allowInfinity === false && (value === Infinity || value === -Infinity)) {\n throw new Error(`${decodeErrPrefix} Infinity values are not supported`)\n }\n }\n return new Token(Type.float, value, bytes)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat16 (data, pos, _minor, options) {\n return createToken(readFloat16(data, pos + 1), 3, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat32 (data, pos, _minor, options) {\n return createToken(readFloat32(data, pos + 1), 5, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat64 (data, pos, _minor, options) {\n return createToken(readFloat64(data, pos + 1), 9, options)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n * @param {EncodeOptions} options\n */\nexport function encodeFloat (buf, token, options) {\n const float = token.value\n\n if (float === false) {\n buf.push([Type.float.majorEncoded | MINOR_FALSE])\n } else if (float === true) {\n buf.push([Type.float.majorEncoded | MINOR_TRUE])\n } else if (float === null) {\n buf.push([Type.float.majorEncoded | MINOR_NULL])\n } else if (float === undefined) {\n buf.push([Type.float.majorEncoded | MINOR_UNDEFINED])\n } else {\n let decoded\n let success = false\n if (!options || options.float64 !== true) {\n encodeFloat16(float)\n decoded = readFloat16(ui8a, 1)\n if (float === decoded || Number.isNaN(float)) {\n ui8a[0] = 0xf9\n buf.push(ui8a.slice(0, 3))\n success = true\n } else {\n encodeFloat32(float)\n decoded = readFloat32(ui8a, 1)\n if (float === decoded) {\n ui8a[0] = 0xfa\n buf.push(ui8a.slice(0, 5))\n success = true\n }\n }\n }\n if (!success) {\n encodeFloat64(float)\n decoded = readFloat64(ui8a, 1)\n ui8a[0] = 0xfb\n buf.push(ui8a.slice(0, 9))\n }\n }\n}\n\n/**\n * @param {Token} token\n * @param {EncodeOptions} options\n * @returns {number}\n */\nencodeFloat.encodedSize = function encodedSize (token, options) {\n const float = token.value\n\n if (float === false || float === true || float === null || float === undefined) {\n return 1\n }\n\n if (!options || options.float64 !== true) {\n encodeFloat16(float)\n let decoded = readFloat16(ui8a, 1)\n if (float === decoded || Number.isNaN(float)) {\n return 3\n }\n encodeFloat32(float)\n decoded = readFloat32(ui8a, 1)\n if (float === decoded) {\n return 5\n }\n }\n return 9\n}\n\nconst buffer = new ArrayBuffer(9)\nconst dataView = new DataView(buffer, 1)\nconst ui8a = new Uint8Array(buffer, 0)\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat16 (inp) {\n if (inp === Infinity) {\n dataView.setUint16(0, 0x7c00, false)\n } else if (inp === -Infinity) {\n dataView.setUint16(0, 0xfc00, false)\n } else if (Number.isNaN(inp)) {\n dataView.setUint16(0, 0x7e00, false)\n } else {\n dataView.setFloat32(0, inp)\n const valu32 = dataView.getUint32(0)\n const exponent = (valu32 & 0x7f800000) >> 23\n const mantissa = valu32 & 0x7fffff\n\n /* c8 ignore next 6 */\n if (exponent === 0xff) {\n // too big, Infinity, but this should be hard (impossible?) to trigger\n dataView.setUint16(0, 0x7c00, false)\n } else if (exponent === 0x00) {\n // 0.0, -0.0 and subnormals, shouldn't be possible to get here because 0.0 should be counted as an int\n dataView.setUint16(0, ((inp & 0x80000000) >> 16) | (mantissa >> 13), false)\n } else { // standard numbers\n // chunks of logic here borrowed from https://github.com/PJK/libcbor/blob/c78f437182533e3efa8d963ff4b945bb635c2284/src/cbor/encoding.c#L127\n const logicalExponent = exponent - 127\n // Now we know that 2^exponent <= 0 logically\n /* c8 ignore next 6 */\n if (logicalExponent < -24) {\n /* No unambiguous representation exists, this float is not a half float\n and is too small to be represented using a half, round off to zero.\n Consistent with the reference implementation. */\n // should be difficult (impossible?) to get here in JS\n dataView.setUint16(0, 0)\n } else if (logicalExponent < -14) {\n /* Offset the remaining decimal places by shifting the significand, the\n value is lost. This is an implementation decision that works around the\n absence of standard half-float in the language. */\n dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | /* sign bit */ (1 << (24 + logicalExponent)), false)\n } else {\n dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | ((logicalExponent + 15) << 10) | (mantissa >> 13), false)\n }\n }\n }\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat16 (ui8a, pos) {\n if (ui8a.length - pos < 2) {\n throw new Error(`${decodeErrPrefix} not enough data for float16`)\n }\n\n const half = (ui8a[pos] << 8) + ui8a[pos + 1]\n if (half === 0x7c00) {\n return Infinity\n }\n if (half === 0xfc00) {\n return -Infinity\n }\n if (half === 0x7e00) {\n return NaN\n }\n const exp = (half >> 10) & 0x1f\n const mant = half & 0x3ff\n let val\n if (exp === 0) {\n val = mant * (2 ** -24)\n } else if (exp !== 31) {\n val = (mant + 1024) * (2 ** (exp - 25))\n /* c8 ignore next 4 */\n } else {\n // may not be possible to get here\n val = mant === 0 ? Infinity : NaN\n }\n return (half & 0x8000) ? -val : val\n}\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat32 (inp) {\n dataView.setFloat32(0, inp, false)\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat32 (ui8a, pos) {\n if (ui8a.length - pos < 4) {\n throw new Error(`${decodeErrPrefix} not enough data for float32`)\n }\n const offset = (ui8a.byteOffset || 0) + pos\n return new DataView(ui8a.buffer, offset, 4).getFloat32(0, false)\n}\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat64 (inp) {\n dataView.setFloat64(0, inp, false)\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat64 (ui8a, pos) {\n if (ui8a.length - pos < 8) {\n throw new Error(`${decodeErrPrefix} not enough data for float64`)\n }\n const offset = (ui8a.byteOffset || 0) + pos\n return new DataView(ui8a.buffer, offset, 8).getFloat64(0, false)\n}\n\n/**\n * @param {Token} _tok1\n * @param {Token} _tok2\n * @returns {number}\n */\nencodeFloat.compareTokens = encodeUint.compareTokens\n/*\nencodeFloat.compareTokens = function compareTokens (_tok1, _tok2) {\n return _tok1\n throw new Error(`${encodeErrPrefix} cannot use floats as map keys`)\n}\n*/\n", "import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport * as negint from './1negint.js'\nimport * as bytes from './2bytes.js'\nimport * as string from './3string.js'\nimport * as array from './4array.js'\nimport * as map from './5map.js'\nimport * as tag from './6tag.js'\nimport * as float from './7float.js'\nimport { decodeErrPrefix } from './common.js'\nimport { fromArray } from './byte-utils.js'\n\n/**\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n */\nfunction invalidMinor (data, pos, minor) {\n throw new Error(`${decodeErrPrefix} encountered invalid minor (${minor}) for major ${data[pos] >>> 5}`)\n}\n\n/**\n * @param {string} msg\n * @returns {()=>any}\n */\nfunction errorer (msg) {\n return () => { throw new Error(`${decodeErrPrefix} ${msg}`) }\n}\n\n/** @type {((data:Uint8Array, pos:number, minor:number, options?:DecodeOptions) => any)[]} */\nexport const jump = []\n\n// unsigned integer, 0x00..0x17 (0..23)\nfor (let i = 0; i <= 0x17; i++) {\n jump[i] = invalidMinor // uint.decodeUintCompact, handled by quick[]\n}\njump[0x18] = uint.decodeUint8 // unsigned integer, one-byte uint8_t follows\njump[0x19] = uint.decodeUint16 // unsigned integer, two-byte uint16_t follows\njump[0x1a] = uint.decodeUint32 // unsigned integer, four-byte uint32_t follows\njump[0x1b] = uint.decodeUint64 // unsigned integer, eight-byte uint64_t follows\njump[0x1c] = invalidMinor\njump[0x1d] = invalidMinor\njump[0x1e] = invalidMinor\njump[0x1f] = invalidMinor\n// negative integer, -1-0x00..-1-0x17 (-1..-24)\nfor (let i = 0x20; i <= 0x37; i++) {\n jump[i] = invalidMinor // negintDecode, handled by quick[]\n}\njump[0x38] = negint.decodeNegint8 // negative integer, -1-n one-byte uint8_t for n follows\njump[0x39] = negint.decodeNegint16 // negative integer, -1-n two-byte uint16_t for n follows\njump[0x3a] = negint.decodeNegint32 // negative integer, -1-n four-byte uint32_t for follows\njump[0x3b] = negint.decodeNegint64 // negative integer, -1-n eight-byte uint64_t for follows\njump[0x3c] = invalidMinor\njump[0x3d] = invalidMinor\njump[0x3e] = invalidMinor\njump[0x3f] = invalidMinor\n// byte string, 0x00..0x17 bytes follow\nfor (let i = 0x40; i <= 0x57; i++) {\n jump[i] = bytes.decodeBytesCompact\n}\njump[0x58] = bytes.decodeBytes8 // byte string, one-byte uint8_t for n, and then n bytes follow\njump[0x59] = bytes.decodeBytes16 // byte string, two-byte uint16_t for n, and then n bytes follow\njump[0x5a] = bytes.decodeBytes32 // byte string, four-byte uint32_t for n, and then n bytes follow\njump[0x5b] = bytes.decodeBytes64 // byte string, eight-byte uint64_t for n, and then n bytes follow\njump[0x5c] = invalidMinor\njump[0x5d] = invalidMinor\njump[0x5e] = invalidMinor\njump[0x5f] = errorer('indefinite length bytes/strings are not supported') // byte string, byte strings follow, terminated by \"break\"\n// UTF-8 string 0x00..0x17 bytes follow\nfor (let i = 0x60; i <= 0x77; i++) {\n jump[i] = string.decodeStringCompact\n}\njump[0x78] = string.decodeString8 // UTF-8 string, one-byte uint8_t for n, and then n bytes follow\njump[0x79] = string.decodeString16 // UTF-8 string, two-byte uint16_t for n, and then n bytes follow\njump[0x7a] = string.decodeString32 // UTF-8 string, four-byte uint32_t for n, and then n bytes follow\njump[0x7b] = string.decodeString64 // UTF-8 string, eight-byte uint64_t for n, and then n bytes follow\njump[0x7c] = invalidMinor\njump[0x7d] = invalidMinor\njump[0x7e] = invalidMinor\njump[0x7f] = errorer('indefinite length bytes/strings are not supported') // UTF-8 strings follow, terminated by \"break\"\n// array, 0x00..0x17 data items follow\nfor (let i = 0x80; i <= 0x97; i++) {\n jump[i] = array.decodeArrayCompact\n}\njump[0x98] = array.decodeArray8 // array, one-byte uint8_t for n, and then n data items follow\njump[0x99] = array.decodeArray16 // array, two-byte uint16_t for n, and then n data items follow\njump[0x9a] = array.decodeArray32 // array, four-byte uint32_t for n, and then n data items follow\njump[0x9b] = array.decodeArray64 // array, eight-byte uint64_t for n, and then n data items follow\njump[0x9c] = invalidMinor\njump[0x9d] = invalidMinor\njump[0x9e] = invalidMinor\njump[0x9f] = array.decodeArrayIndefinite // array, data items follow, terminated by \"break\"\n// map, 0x00..0x17 pairs of data items follow\nfor (let i = 0xa0; i <= 0xb7; i++) {\n jump[i] = map.decodeMapCompact\n}\njump[0xb8] = map.decodeMap8 // map, one-byte uint8_t for n, and then n pairs of data items follow\njump[0xb9] = map.decodeMap16 // map, two-byte uint16_t for n, and then n pairs of data items follow\njump[0xba] = map.decodeMap32 // map, four-byte uint32_t for n, and then n pairs of data items follow\njump[0xbb] = map.decodeMap64 // map, eight-byte uint64_t for n, and then n pairs of data items follow\njump[0xbc] = invalidMinor\njump[0xbd] = invalidMinor\njump[0xbe] = invalidMinor\njump[0xbf] = map.decodeMapIndefinite // map, pairs of data items follow, terminated by \"break\"\n// tags\nfor (let i = 0xc0; i <= 0xd7; i++) {\n jump[i] = tag.decodeTagCompact\n}\njump[0xd8] = tag.decodeTag8\njump[0xd9] = tag.decodeTag16\njump[0xda] = tag.decodeTag32\njump[0xdb] = tag.decodeTag64\njump[0xdc] = invalidMinor\njump[0xdd] = invalidMinor\njump[0xde] = invalidMinor\njump[0xdf] = invalidMinor\n// 0xe0..0xf3 simple values, unsupported\nfor (let i = 0xe0; i <= 0xf3; i++) {\n jump[i] = errorer('simple values are not supported')\n}\njump[0xf4] = invalidMinor // false, handled by quick[]\njump[0xf5] = invalidMinor // true, handled by quick[]\njump[0xf6] = invalidMinor // null, handled by quick[]\njump[0xf7] = float.decodeUndefined // undefined\njump[0xf8] = errorer('simple values are not supported') // simple value, one byte follows, unsupported\njump[0xf9] = float.decodeFloat16 // half-precision float (two-byte IEEE 754)\njump[0xfa] = float.decodeFloat32 // single-precision float (four-byte IEEE 754)\njump[0xfb] = float.decodeFloat64 // double-precision float (eight-byte IEEE 754)\njump[0xfc] = invalidMinor\njump[0xfd] = invalidMinor\njump[0xfe] = invalidMinor\njump[0xff] = float.decodeBreak // \"break\" stop code\n\n/** @type {Token[]} */\nexport const quick = []\n// ints <24\nfor (let i = 0; i < 24; i++) {\n quick[i] = new Token(Type.uint, i, 1)\n}\n// negints >= -24\nfor (let i = -1; i >= -24; i--) {\n quick[31 - i] = new Token(Type.negint, i, 1)\n}\n// empty bytes\nquick[0x40] = new Token(Type.bytes, new Uint8Array(0), 1)\n// empty string\nquick[0x60] = new Token(Type.string, '', 1)\n// empty list\nquick[0x80] = new Token(Type.array, 0, 1)\n// empty map\nquick[0xa0] = new Token(Type.map, 0, 1)\n// false\nquick[0xf4] = new Token(Type.false, false, 1)\n// true\nquick[0xf5] = new Token(Type.true, true, 1)\n// null\nquick[0xf6] = new Token(Type.null, null, 1)\n\n/**\n * @param {Token} token\n * @returns {Uint8Array|undefined}\n */\nexport function quickEncodeToken (token) {\n switch (token.type) {\n case Type.false:\n return fromArray([0xf4])\n case Type.true:\n return fromArray([0xf5])\n case Type.null:\n return fromArray([0xf6])\n case Type.bytes:\n if (!token.value.length) {\n return fromArray([0x40])\n }\n return\n case Type.string:\n if (token.value === '') {\n return fromArray([0x60])\n }\n return\n case Type.array:\n if (token.value === 0) {\n return fromArray([0x80])\n }\n /* c8 ignore next 2 */\n // shouldn't be possible if this were called when there was only one token\n return\n case Type.map:\n if (token.value === 0) {\n return fromArray([0xa0])\n }\n /* c8 ignore next 2 */\n // shouldn't be possible if this were called when there was only one token\n return\n case Type.uint:\n if (token.value < 24) {\n return fromArray([Number(token.value)])\n }\n return\n case Type.negint:\n if (token.value >= -24) {\n return fromArray([31 - Number(token.value)])\n }\n }\n}\n", "import { is } from './is.js'\nimport { Token, Type } from './token.js'\nimport { Bl } from './bl.js'\nimport { encodeErrPrefix } from './common.js'\nimport { quickEncodeToken } from './jump.js'\nimport { asU8A } from './byte-utils.js'\n\nimport { encodeUint } from './0uint.js'\nimport { encodeNegint } from './1negint.js'\nimport { encodeBytes } from './2bytes.js'\nimport { encodeString } from './3string.js'\nimport { encodeArray } from './4array.js'\nimport { encodeMap } from './5map.js'\nimport { encodeTag } from './6tag.js'\nimport { encodeFloat } from './7float.js'\n\n/**\n * @typedef {import('../interface').EncodeOptions} EncodeOptions\n * @typedef {import('../interface').OptionalTypeEncoder} OptionalTypeEncoder\n * @typedef {import('../interface').Reference} Reference\n * @typedef {import('../interface').StrictTypeEncoder} StrictTypeEncoder\n * @typedef {import('../interface').TokenTypeEncoder} TokenTypeEncoder\n * @typedef {import('../interface').TokenOrNestedTokens} TokenOrNestedTokens\n */\n\n/** @type {EncodeOptions} */\nconst defaultEncodeOptions = {\n float64: false,\n mapSorter,\n quickEncodeToken\n}\n\n/** @returns {TokenTypeEncoder[]} */\nexport function makeCborEncoders () {\n const encoders = []\n encoders[Type.uint.major] = encodeUint\n encoders[Type.negint.major] = encodeNegint\n encoders[Type.bytes.major] = encodeBytes\n encoders[Type.string.major] = encodeString\n encoders[Type.array.major] = encodeArray\n encoders[Type.map.major] = encodeMap\n encoders[Type.tag.major] = encodeTag\n encoders[Type.float.major] = encodeFloat\n return encoders\n}\n\nconst cborEncoders = makeCborEncoders()\n\nconst buf = new Bl()\n\n/** @implements {Reference} */\nclass Ref {\n /**\n * @param {object|any[]} obj\n * @param {Reference|undefined} parent\n */\n constructor (obj, parent) {\n this.obj = obj\n this.parent = parent\n }\n\n /**\n * @param {object|any[]} obj\n * @returns {boolean}\n */\n includes (obj) {\n /** @type {Reference|undefined} */\n let p = this\n do {\n if (p.obj === obj) {\n return true\n }\n } while (p = p.parent) // eslint-disable-line\n return false\n }\n\n /**\n * @param {Reference|undefined} stack\n * @param {object|any[]} obj\n * @returns {Reference}\n */\n static createCheck (stack, obj) {\n if (stack && stack.includes(obj)) {\n throw new Error(`${encodeErrPrefix} object contains circular references`)\n }\n return new Ref(obj, stack)\n }\n}\n\nconst simpleTokens = {\n null: new Token(Type.null, null),\n undefined: new Token(Type.undefined, undefined),\n true: new Token(Type.true, true),\n false: new Token(Type.false, false),\n emptyArray: new Token(Type.array, 0),\n emptyMap: new Token(Type.map, 0)\n}\n\n/** @type {{[typeName: string]: StrictTypeEncoder}} */\nconst typeEncoders = {\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n number (obj, _typ, _options, _refStack) {\n if (!Number.isInteger(obj) || !Number.isSafeInteger(obj)) {\n return new Token(Type.float, obj)\n } else if (obj >= 0) {\n return new Token(Type.uint, obj)\n } else {\n return new Token(Type.negint, obj)\n }\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n bigint (obj, _typ, _options, _refStack) {\n if (obj >= BigInt(0)) {\n return new Token(Type.uint, obj)\n } else {\n return new Token(Type.negint, obj)\n }\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n Uint8Array (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, obj)\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n string (obj, _typ, _options, _refStack) {\n return new Token(Type.string, obj)\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n boolean (obj, _typ, _options, _refStack) {\n return obj ? simpleTokens.true : simpleTokens.false\n },\n\n /**\n * @param {any} _obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n null (_obj, _typ, _options, _refStack) {\n return simpleTokens.null\n },\n\n /**\n * @param {any} _obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n undefined (_obj, _typ, _options, _refStack) {\n return simpleTokens.undefined\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n ArrayBuffer (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj))\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n DataView (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength))\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} options\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\n Array (obj, _typ, options, refStack) {\n if (!obj.length) {\n if (options.addBreakTokens === true) {\n return [simpleTokens.emptyArray, new Token(Type.break)]\n }\n return simpleTokens.emptyArray\n }\n refStack = Ref.createCheck(refStack, obj)\n const entries = []\n let i = 0\n for (const e of obj) {\n entries[i++] = objectToTokens(e, options, refStack)\n }\n if (options.addBreakTokens) {\n return [new Token(Type.array, obj.length), entries, new Token(Type.break)]\n }\n return [new Token(Type.array, obj.length), entries]\n },\n\n /**\n * @param {any} obj\n * @param {string} typ\n * @param {EncodeOptions} options\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\n Object (obj, typ, options, refStack) {\n // could be an Object or a Map\n const isMap = typ !== 'Object'\n // it's slightly quicker to use Object.keys() than Object.entries()\n const keys = isMap ? obj.keys() : Object.keys(obj)\n const length = isMap ? obj.size : keys.length\n if (!length) {\n if (options.addBreakTokens === true) {\n return [simpleTokens.emptyMap, new Token(Type.break)]\n }\n return simpleTokens.emptyMap\n }\n refStack = Ref.createCheck(refStack, obj)\n /** @type {TokenOrNestedTokens[]} */\n const entries = []\n let i = 0\n for (const key of keys) {\n entries[i++] = [\n objectToTokens(key, options, refStack),\n objectToTokens(isMap ? obj.get(key) : obj[key], options, refStack)\n ]\n }\n sortMapEntries(entries, options)\n if (options.addBreakTokens) {\n return [new Token(Type.map, length), entries, new Token(Type.break)]\n }\n return [new Token(Type.map, length), entries]\n }\n}\n\ntypeEncoders.Map = typeEncoders.Object\ntypeEncoders.Buffer = typeEncoders.Uint8Array\nfor (const typ of 'Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64'.split(' ')) {\n typeEncoders[`${typ}Array`] = typeEncoders.DataView\n}\n\n/**\n * @param {any} obj\n * @param {EncodeOptions} [options]\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\nfunction objectToTokens (obj, options = {}, refStack) {\n const typ = is(obj)\n const customTypeEncoder = (options && options.typeEncoders && /** @type {OptionalTypeEncoder} */ options.typeEncoders[typ]) || typeEncoders[typ]\n if (typeof customTypeEncoder === 'function') {\n const tokens = customTypeEncoder(obj, typ, options, refStack)\n if (tokens != null) {\n return tokens\n }\n }\n const typeEncoder = typeEncoders[typ]\n if (!typeEncoder) {\n throw new Error(`${encodeErrPrefix} unsupported type: ${typ}`)\n }\n return typeEncoder(obj, typ, options, refStack)\n}\n\n/*\nCBOR key sorting is a mess.\n\nThe canonicalisation recommendation from https://tools.ietf.org/html/rfc7049#section-3.9\nincludes the wording:\n\n> The keys in every map must be sorted lowest value to highest.\n> Sorting is performed on the bytes of the representation of the key\n> data items without paying attention to the 3/5 bit splitting for\n> major types.\n> ...\n> * If two keys have different lengths, the shorter one sorts\n earlier;\n> * If two keys have the same length, the one with the lower value\n in (byte-wise) lexical order sorts earlier.\n\n1. It is not clear what \"bytes of the representation of the key\" means: is it\n the CBOR representation, or the binary representation of the object itself?\n Consider the int and uint difference here.\n2. It is not clear what \"without paying attention to\" means: do we include it\n and compare on that? Or do we omit the special prefix byte, (mostly) treating\n the key in its plain binary representation form.\n\nThe FIDO 2.0: Client To Authenticator Protocol spec takes the original CBOR\nwording and clarifies it according to their understanding.\nhttps://fidoalliance.org/specs/fido-v2.0-rd-20170927/fido-client-to-authenticator-protocol-v2.0-rd-20170927.html#message-encoding\n\n> The keys in every map must be sorted lowest value to highest. Sorting is\n> performed on the bytes of the representation of the key data items without\n> paying attention to the 3/5 bit splitting for major types. The sorting rules\n> are:\n> * If the major types are different, the one with the lower value in numerical\n> order sorts earlier.\n> * If two keys have different lengths, the shorter one sorts earlier;\n> * If two keys have the same length, the one with the lower value in\n> (byte-wise) lexical order sorts earlier.\n\nSome other implementations, such as borc, do a full encode then do a\nlength-first, byte-wise-second comparison:\nhttps://github.com/dignifiedquire/borc/blob/b6bae8b0bcde7c3976b0f0f0957208095c392a36/src/encoder.js#L358\nhttps://github.com/dignifiedquire/borc/blob/b6bae8b0bcde7c3976b0f0f0957208095c392a36/src/utils.js#L143-L151\n\nThis has the benefit of being able to easily handle arbitrary keys, including\ncomplex types (maps and arrays).\n\nWe'll opt for the FIDO approach, since it affords some efficies since we don't\nneed a full encode of each key to determine order and can defer to the types\nto determine how to most efficiently order their values (i.e. int and uint\nordering can be done on the numbers, no need for byte-wise, for example).\n\nRecommendation: stick to single key types or you'll get into trouble, and prefer\nstring keys because it's much simpler that way.\n*/\n\n/*\n(UPDATE, Dec 2020)\nhttps://tools.ietf.org/html/rfc8949 is the updated CBOR spec and clarifies some\nof the questions above with a new recommendation for sorting order being much\ncloser to what would be expected in other environments (i.e. no length-first\nweirdness).\nThis new sorting order is not yet implemented here but could be added as an\noption. \"Determinism\" (canonicity) is system dependent and it's difficult to\nchange existing systems that are built with existing expectations. So if a new\nordering is introduced here, the old needs to be kept as well with the user\nhaving the option.\n*/\n\n/**\n * @param {TokenOrNestedTokens[]} entries\n * @param {EncodeOptions} options\n */\nfunction sortMapEntries (entries, options) {\n if (options.mapSorter) {\n entries.sort(options.mapSorter)\n }\n}\n\n/**\n * @param {(Token|Token[])[]} e1\n * @param {(Token|Token[])[]} e2\n * @returns {number}\n */\nfunction mapSorter (e1, e2) {\n // the key position ([0]) could have a single token or an array\n // almost always it'll be a single token but complex key might get involved\n /* c8 ignore next 2 */\n const keyToken1 = Array.isArray(e1[0]) ? e1[0][0] : e1[0]\n const keyToken2 = Array.isArray(e2[0]) ? e2[0][0] : e2[0]\n\n // different key types\n if (keyToken1.type !== keyToken2.type) {\n return keyToken1.type.compare(keyToken2.type)\n }\n\n const major = keyToken1.type.major\n // TODO: handle case where cmp === 0 but there are more keyToken e. complex type)\n const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2)\n /* c8 ignore next 5 */\n if (tcmp === 0) {\n // duplicate key or complex type where the first token matched,\n // i.e. a map or array and we're only comparing the opening token\n console.warn('WARNING: complex key types used, CBOR key sorting guarantees are gone')\n }\n return tcmp\n}\n\n/**\n * @param {Bl} buf\n * @param {TokenOrNestedTokens} tokens\n * @param {TokenTypeEncoder[]} encoders\n * @param {EncodeOptions} options\n */\nfunction tokensToEncoded (buf, tokens, encoders, options) {\n if (Array.isArray(tokens)) {\n for (const token of tokens) {\n tokensToEncoded(buf, token, encoders, options)\n }\n } else {\n encoders[tokens.type.major](buf, tokens, options)\n }\n}\n\n/**\n * @param {any} data\n * @param {TokenTypeEncoder[]} encoders\n * @param {EncodeOptions} options\n * @returns {Uint8Array}\n */\nfunction encodeCustom (data, encoders, options) {\n const tokens = objectToTokens(data, options)\n if (!Array.isArray(tokens) && options.quickEncodeToken) {\n const quickBytes = options.quickEncodeToken(tokens)\n if (quickBytes) {\n return quickBytes\n }\n const encoder = encoders[tokens.type.major]\n if (encoder.encodedSize) {\n const size = encoder.encodedSize(tokens, options)\n const buf = new Bl(size)\n encoder(buf, tokens, options)\n /* c8 ignore next 4 */\n // this would be a problem with encodedSize() functions\n if (buf.chunks.length !== 1) {\n throw new Error(`Unexpected error: pre-calculated length for ${tokens} was wrong`)\n }\n return asU8A(buf.chunks[0])\n }\n }\n buf.reset()\n tokensToEncoded(buf, tokens, encoders, options)\n return buf.toBytes(true)\n}\n\n/**\n * @param {any} data\n * @param {EncodeOptions} [options]\n * @returns {Uint8Array}\n */\nfunction encode (data, options) {\n options = Object.assign({}, defaultEncodeOptions, options)\n return encodeCustom(data, cborEncoders, options)\n}\n\nexport { objectToTokens, encode, encodeCustom, Ref }\n", "import { decodeErrPrefix } from './common.js'\nimport { Type } from './token.js'\nimport { jump, quick } from './jump.js'\n\n/**\n * @typedef {import('./token.js').Token} Token\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n * @typedef {import('../interface').DecodeTokenizer} DecodeTokenizer\n */\n\nconst defaultDecodeOptions = {\n strict: false,\n allowIndefinite: true,\n allowUndefined: true,\n allowBigInt: true\n}\n\n/**\n * @implements {DecodeTokenizer}\n */\nclass Tokeniser {\n /**\n * @param {Uint8Array} data\n * @param {DecodeOptions} options\n */\n constructor (data, options = {}) {\n this._pos = 0\n this.data = data\n this.options = options\n }\n\n pos () {\n return this._pos\n }\n\n done () {\n return this._pos >= this.data.length\n }\n\n next () {\n const byt = this.data[this._pos]\n let token = quick[byt]\n if (token === undefined) {\n const decoder = jump[byt]\n /* c8 ignore next 4 */\n // if we're here then there's something wrong with our jump or quick lists!\n if (!decoder) {\n throw new Error(`${decodeErrPrefix} no decoder for major type ${byt >>> 5} (byte 0x${byt.toString(16).padStart(2, '0')})`)\n }\n const minor = byt & 31\n token = decoder(this.data, this._pos, minor, this.options)\n }\n // @ts-ignore we get to assume encodedLength is set (crossing fingers slightly)\n this._pos += token.encodedLength\n return token\n }\n}\n\nconst DONE = Symbol.for('DONE')\nconst BREAK = Symbol.for('BREAK')\n\n/**\n * @param {Token} token\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokenToArray (token, tokeniser, options) {\n const arr = []\n for (let i = 0; i < token.value; i++) {\n const value = tokensToObject(tokeniser, options)\n if (value === BREAK) {\n if (token.value === Infinity) {\n // normal end to indefinite length array\n break\n }\n throw new Error(`${decodeErrPrefix} got unexpected break to lengthed array`)\n }\n if (value === DONE) {\n throw new Error(`${decodeErrPrefix} found array but not enough entries (got ${i}, expected ${token.value})`)\n }\n arr[i] = value\n }\n return arr\n}\n\n/**\n * @param {Token} token\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokenToMap (token, tokeniser, options) {\n const useMaps = options.useMaps === true\n const obj = useMaps ? undefined : {}\n const m = useMaps ? new Map() : undefined\n for (let i = 0; i < token.value; i++) {\n const key = tokensToObject(tokeniser, options)\n if (key === BREAK) {\n if (token.value === Infinity) {\n // normal end to indefinite length map\n break\n }\n throw new Error(`${decodeErrPrefix} got unexpected break to lengthed map`)\n }\n if (key === DONE) {\n throw new Error(`${decodeErrPrefix} found map but not enough entries (got ${i} [no key], expected ${token.value})`)\n }\n if (useMaps !== true && typeof key !== 'string') {\n throw new Error(`${decodeErrPrefix} non-string keys not supported (got ${typeof key})`)\n }\n if (options.rejectDuplicateMapKeys === true) {\n // @ts-ignore\n if ((useMaps && m.has(key)) || (!useMaps && (key in obj))) {\n throw new Error(`${decodeErrPrefix} found repeat map key \"${key}\"`)\n }\n }\n const value = tokensToObject(tokeniser, options)\n if (value === DONE) {\n throw new Error(`${decodeErrPrefix} found map but not enough entries (got ${i} [no value], expected ${token.value})`)\n }\n if (useMaps) {\n // @ts-ignore TODO reconsider this .. maybe needs to be strict about key types\n m.set(key, value)\n } else {\n // @ts-ignore TODO reconsider this .. maybe needs to be strict about key types\n obj[key] = value\n }\n }\n // @ts-ignore c'mon man\n return useMaps ? m : obj\n}\n\n/**\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokensToObject (tokeniser, options) {\n // should we support array as an argument?\n // check for tokenIter[Symbol.iterator] and replace tokenIter with what that returns?\n if (tokeniser.done()) {\n return DONE\n }\n\n const token = tokeniser.next()\n\n if (token.type === Type.break) {\n return BREAK\n }\n\n if (token.type.terminal) {\n return token.value\n }\n\n if (token.type === Type.array) {\n return tokenToArray(token, tokeniser, options)\n }\n\n if (token.type === Type.map) {\n return tokenToMap(token, tokeniser, options)\n }\n\n if (token.type === Type.tag) {\n if (options.tags && typeof options.tags[token.value] === 'function') {\n const tagged = tokensToObject(tokeniser, options)\n return options.tags[token.value](tagged)\n }\n throw new Error(`${decodeErrPrefix} tag not supported (${token.value})`)\n }\n /* c8 ignore next */\n throw new Error('unsupported')\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {[any, Uint8Array]}\n */\nfunction decodeFirst (data, options) {\n if (!(data instanceof Uint8Array)) {\n throw new Error(`${decodeErrPrefix} data to decode must be a Uint8Array`)\n }\n options = Object.assign({}, defaultDecodeOptions, options)\n const tokeniser = options.tokenizer || new Tokeniser(data, options)\n const decoded = tokensToObject(tokeniser, options)\n if (decoded === DONE) {\n throw new Error(`${decodeErrPrefix} did not find any content to decode`)\n }\n if (decoded === BREAK) {\n throw new Error(`${decodeErrPrefix} got unexpected break`)\n }\n return [decoded, data.subarray(tokeniser.pos())]\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {any}\n */\nfunction decode (data, options) {\n const [decoded, remainder] = decodeFirst(data, options)\n if (remainder.length > 0) {\n throw new Error(`${decodeErrPrefix} too many terminals, data makes no sense`)\n }\n return decoded\n}\n\nexport { Tokeniser, tokensToObject, decode, decodeFirst }\n", "/*!\n * Copyright (c) 2020 Digital Bazaar, Inc. All rights reserved.\n */\nexport class CborldError extends Error {\n constructor(value, message) {\n super();\n this.message = message;\n this.value = value;\n this.stack = (new Error(`${value}: ${message}`)).stack;\n this.name = this.constructor.name;\n }\n}\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nexport const KEYWORDS = new Map([\n // ordered is important, do not change\n ['@context', 0],\n ['@type', 2],\n ['@id', 4],\n ['@value', 6],\n // alphabetized after `@context`, `@type`, `@id`, `@value`\n // IDs <= 24 represented with 1 byte, IDs > 24 use 2+ bytes\n ['@direction', 8],\n ['@graph', 10],\n ['@included', 12],\n ['@index', 14],\n ['@json', 16],\n ['@language', 18],\n ['@list', 20],\n ['@nest', 22],\n ['@reverse', 24],\n // TODO: remove these? these only appear in frames and contexts\n ['@base', 26],\n ['@container', 28],\n ['@default', 30],\n ['@embed', 32],\n ['@explicit', 34],\n ['@none', 36],\n ['@omitDefault', 38],\n ['@prefix', 40],\n ['@preserve', 42],\n ['@protected', 44],\n ['@requireAll', 46],\n ['@set', 48],\n ['@version', 50],\n ['@vocab', 52]\n]);\nexport const FIRST_CUSTOM_TERM_ID = 100;\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nexport class CborldDecoder {\n // eslint-disable-next-line no-unused-vars\n decode({value} = {}) {\n throw new Error('Must be implemented by derived class.');\n }\n\n // eslint-disable-next-line no-unused-vars\n static createDecoder({value, transformer} = {}) {\n throw new Error('Must be implemented by derived class.');\n }\n}\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\n// known CBOR-LD registry values\nexport const ID_TO_URL = new Map();\nexport const URL_TO_ID = new Map();\n\n/**\n * @see https://digitalbazaar.github.io/cbor-ld-spec/#term-codec-registry\n */\n_addRegistration(0x10, 'https://www.w3.org/ns/activitystreams');\n_addRegistration(0x11, 'https://www.w3.org/2018/credentials/v1');\n_addRegistration(0x12, 'https://www.w3.org/ns/did/v1');\n_addRegistration(0x13, 'https://w3id.org/security/suites/ed25519-2018/v1');\n_addRegistration(0x14, 'https://w3id.org/security/suites/ed25519-2020/v1');\n_addRegistration(0x15, 'https://w3id.org/cit/v1');\n_addRegistration(0x16, 'https://w3id.org/age/v1');\n_addRegistration(0x17, 'https://w3id.org/security/suites/x25519-2020/v1');\n_addRegistration(0x18, 'https://w3id.org/veres-one/v1');\n_addRegistration(0x19, 'https://w3id.org/webkms/v1');\n_addRegistration(0x1A, 'https://w3id.org/zcap/v1');\n_addRegistration(0x1B, 'https://w3id.org/security/suites/hmac-2019/v1');\n_addRegistration(0x1C, 'https://w3id.org/security/suites/aes-2019/v1');\n_addRegistration(0x1D, 'https://w3id.org/vaccination/v1');\n_addRegistration(0x1E, 'https://w3id.org/vc-revocation-list-2020/v1');\n_addRegistration(0x1F, 'https://w3id.org/dcc/v1');\n_addRegistration(0x20, 'https://w3id.org/vc/status-list/v1');\n_addRegistration(0x30, 'https://w3id.org/security/data-integrity/v1');\n_addRegistration(0x31, 'https://w3id.org/security/multikey/v1');\n_addRegistration(0x32, 'https://purl.imsglobal.org/spec/ob/v3p0/context.json');\n_addRegistration(0x33, 'https://w3id.org/security/data-integrity/v2');\n\nfunction _addRegistration(id, url) {\n URL_TO_ID.set(url, id);\n ID_TO_URL.set(id, url);\n}\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nimport {CborldDecoder} from './CborldDecoder.js';\nimport {CborldError} from '../CborldError.js';\nimport {ID_TO_URL} from './registeredContexts.js';\n\nexport class ContextDecoder extends CborldDecoder {\n constructor({reverseAppContextMap} = {}) {\n super();\n this.reverseAppContextMap = reverseAppContextMap;\n }\n\n decode({value} = {}) {\n // handle uncompressed context\n if(typeof value !== 'number') {\n return _mapToObject(value);\n }\n\n // handle compressed context\n const url = ID_TO_URL.get(value) || this.reverseAppContextMap.get(value);\n if(url === undefined) {\n throw new CborldError(\n 'ERR_UNDEFINED_COMPRESSED_CONTEXT',\n `Undefined compressed context \"${value}\".`);\n }\n return url;\n }\n\n static createDecoder({transformer} = {}) {\n const {reverseAppContextMap} = transformer;\n return new ContextDecoder({reverseAppContextMap});\n }\n}\n\nfunction _mapToObject(map) {\n if(Array.isArray(map)) {\n return map.map(_mapToObject);\n }\n if(!(map instanceof Map)) {\n return map;\n }\n\n const obj = {};\n for(const [key, value] of map) {\n obj[key] = _mapToObject(value);\n }\n return obj;\n}\n", "// browser support\n/* eslint-env browser */\n/* eslint-disable-next-line no-unused-vars */\nexport function inspect(data, options) {\n return JSON.stringify(data, null, 2);\n}\n", "/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.7';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = typeof btoa === 'function' ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 \u00A75\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 \u00A75.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = typeof atob === 'function' ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n", "/**\n * Base-N/Base-X encoding/decoding functions.\n *\n * Original implementation from base-x:\n * https://github.com/cryptocoinjs/base-x\n *\n * Which is MIT licensed:\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n// baseN alphabet indexes\nconst _reverseAlphabets = {};\n\n/**\n * BaseN-encodes a Uint8Array using the given alphabet.\n *\n * @param {Uint8Array} input - The bytes to encode in a Uint8Array.\n * @param {string} alphabet - The alphabet to use for encoding.\n * @param {number} maxline - The maximum number of encoded characters per line\n * to use, defaults to none.\n *\n * @returns {string} The baseN-encoded output string.\n */\nexport function encode(input, alphabet, maxline) {\n if(!(input instanceof Uint8Array)) {\n throw new TypeError('\"input\" must be a Uint8Array.');\n }\n if(typeof alphabet !== 'string') {\n throw new TypeError('\"alphabet\" must be a string.');\n }\n if(maxline !== undefined && typeof maxline !== 'number') {\n throw new TypeError('\"maxline\" must be a number.');\n }\n if(input.length === 0) {\n return '';\n }\n\n let output = '';\n\n let i = 0;\n const base = alphabet.length;\n const first = alphabet.charAt(0);\n const digits = [0];\n for(i = 0; i < input.length; ++i) {\n let carry = input[i];\n for(let j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % base;\n carry = (carry / base) | 0;\n }\n\n while(carry > 0) {\n digits.push(carry % base);\n carry = (carry / base) | 0;\n }\n }\n\n // deal with leading zeros\n for(i = 0; input[i] === 0 && i < input.length - 1; ++i) {\n output += first;\n }\n // convert digits to a string\n for(i = digits.length - 1; i >= 0; --i) {\n output += alphabet[digits[i]];\n }\n\n if(maxline) {\n const regex = new RegExp('.{1,' + maxline + '}', 'g');\n output = output.match(regex).join('\\r\\n');\n }\n\n return output;\n}\n\n/**\n * Decodes a baseN-encoded (using the given alphabet) string to a\n * Uint8Array.\n *\n * @param {string} input - The baseN-encoded input string.\n * @param {string} alphabet - The alphabet to use for decoding.\n *\n * @returns {Uint8Array} The decoded bytes in a Uint8Array.\n */\nexport function decode(input, alphabet) {\n if(typeof input !== 'string') {\n throw new TypeError('\"input\" must be a string.');\n }\n if(typeof alphabet !== 'string') {\n throw new TypeError('\"alphabet\" must be a string.');\n }\n if(input.length === 0) {\n return new Uint8Array();\n }\n\n let table = _reverseAlphabets[alphabet];\n if(!table) {\n // compute reverse alphabet\n table = _reverseAlphabets[alphabet] = [];\n for(let i = 0; i < alphabet.length; ++i) {\n table[alphabet.charCodeAt(i)] = i;\n }\n }\n\n // remove whitespace characters\n input = input.replace(/\\s/g, '');\n\n const base = alphabet.length;\n const first = alphabet.charAt(0);\n const bytes = [0];\n for(let i = 0; i < input.length; i++) {\n const value = table[input.charCodeAt(i)];\n if(value === undefined) {\n return;\n }\n\n let carry = value;\n for(let j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while(carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for(let k = 0; input[k] === first && k < input.length - 1; ++k) {\n bytes.push(0);\n }\n\n return new Uint8Array(bytes.reverse());\n}\n", "/*!\n * Copyright (c) 2019-2022 Digital Bazaar, Inc. All rights reserved.\n */\nimport {\n encode as _encode,\n decode as _decode\n} from './baseN.js';\n\n// base58 characters (Bitcoin alphabet)\nconst alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\nexport function encode(input, maxline) {\n return _encode(input, alphabet, maxline);\n}\n\nexport function decode(input) {\n return _decode(input, alphabet);\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport {Base64} from 'js-base64';\nimport {CborldDecoder} from './CborldDecoder.js';\nimport {encode as encodeBase58} from 'base58-universal';\n\n// this class is used to encode a multibase encoded value in CBOR-LD, which\n// actually means transforming bytes to a multibase-encoded string\nexport class MultibaseDecoder extends CborldDecoder {\n decode({value} = {}) {\n const {buffer, byteOffset, length} = value;\n const suffix = new Uint8Array(buffer, byteOffset + 1, length - 1);\n if(value[0] === 0x7a) {\n // 0x7a === 'z' (multibase code for base58btc)\n return `z${encodeBase58(suffix)}`;\n }\n if(value[0] === 0x4d) {\n // 0x4d === 'M' (multibase code for base64pad)\n return `M${Base64.fromUint8Array(suffix)}`;\n }\n return value;\n }\n\n static createDecoder({value} = {}) {\n if(!(value instanceof Uint8Array)) {\n return false;\n }\n // supported multibase encodings:\n // 0x7a === 'z' (multibase code for base58btc)\n // 0x4d === 'M' (multibase code for base64pad)\n if(value[0] === 0x7a || value[0] === 0x4d) {\n return new MultibaseDecoder();\n }\n }\n}\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nimport {CborldError} from './CborldError.js';\nimport {KEYWORDS} from './keywords.js';\n\nexport class Transformer {\n /**\n * Creates a new Transformer for transforming CBOR-LD <=> JSON-LD.\n *\n * @param {object} options - The options to use when encoding to CBOR-LD.\n * @param {documentLoaderFunction} options.documentLoader -The document\n * loader to use when resolving JSON-LD Context URLs.\n * @param {Map} [options.appContextMap] - A map of JSON-LD Context URLs and\n * their encoded CBOR-LD values (must be values greater than 32767\n * (0x7FFF)).\n */\n constructor({appContextMap, documentLoader} = {}) {\n this.appContextMap = appContextMap;\n this.documentLoader = documentLoader;\n }\n\n // default no-op hook functions\n _beforeObjectContexts() {}\n _afterObjectContexts() {}\n _beforeTypeScopedContexts() {}\n\n /**\n * CBOR-LD is a semantic compression format; it uses the contextual\n * information provided by JSON-LD contexts to compress JSON-LD objects\n * to CBOR-LD (and vice versa).\n *\n * The purpose of this internal transform function is to either enable\n * transformation of a JSON-LD object to CBOR-LD (compression) or vice versa\n * (decompression). It does this by:\n *\n * 1. Finding the matching term definition from the active JSON-LD\n * context for each encountered term in the data that is being\n * transformed.\n * 2. Mapping each term to the target format (compressed / decompressed) and\n * creating value codec (encoder / decoder) for each value associate with\n * the term.\n *\n * When compressing, the transform function maps JSON keys (strings)\n * encountered in the JSON-LD object to term IDs (integers) and value\n * encoders.\n *\n * When decompressing, the transform function maps term IDs (integers) to\n * JSON keys (strings) and value decoders.\n *\n * The transform process will populate the given `transformMap` (a `Map`)\n * with keys (strings or IDs based on compression / decompression) and values\n * (the associated encoders / decoders). This `transformMap` can then be\n * passed to the `cborg` library to output JSON or CBOR.\n *\n * In order to match each JSON key / term ID with the right term\n * definition, it's important to understand how context is applied in\n * JSON-LD, i.e., which context is \"active\" at a certain place in the\n * object. There are three ways contexts become active to consider in\n * JSON-LD:\n *\n * 1. Embedded contexts. An embedded context is expressed by using the\n * `@context` keyword in a JSON-LD object. It is active on the object\n * where it appears and propagates to any nested objects.\n * 2. Type-scoped contexts. Such a context is defined in another context\n * and bound to a particular type. It will become active based on the\n * presence of the `@type` property (or an alias of it) and a matching\n * type value. By default, it *does not* propagate to nested objects,\n * i.e., it becomes inactive when a nested object does not have a matching\n * type.\n * 3. Property-scoped contexts. Such a context is defined in another context\n * and bound to a particular property. It will become active based on the\n * presence of a particular term, i.e., JSON key. By default, it\n * propagates, i.e., all terms defined by the context will be applicable\n * to the whole subtree associated with the property in the JSON object.\n *\n * The transform function maintains a stack of active contexts based on the\n * above rules to ensure that the right term definitions are matched up with\n * each JSON key in the JSON-LD object (when compressing) and each term ID in\n * the CBOR-LD object (when decompressing).\n *\n * @param {object} options - The options to use.\n * @param {object} options.obj - The object to transform.\n * @param {Map} options.transformMap - The transformation map to populate.\n * @param {Array} [options.contextStack] - The current context stack.\n */\n async _transform({obj, transformMap, contextStack = []}) {\n // hook before object contexts are applied\n this._beforeObjectContexts({obj, transformMap});\n\n // apply embedded contexts in the object\n let activeCtx = await this._applyEmbeddedContexts({obj, contextStack});\n\n // hook after object contexts are applied\n this._afterObjectContexts({obj, transformMap});\n\n // TODO: support `@propagate: true` on type-scoped contexts; until then\n // throw an error if it is set\n\n // preserve context stack before applying type-scoped contexts\n const childContextStack = contextStack.slice();\n\n // hook before type-scoped contexts are applied\n this._beforeTypeScopedContexts({activeCtx, obj, transformMap});\n\n // apply type-scoped contexts\n activeCtx = await this._applyTypeScopedContexts({obj, contextStack});\n\n // walk term entries to transform\n const {aliases, scopedContextMap, termMap} = activeCtx;\n const termEntries = this._getEntries(\n {obj, transformMap, transformer: this, termMap});\n for(const [termInfo, value] of termEntries) {\n const {term} = termInfo;\n\n // transform `@id`\n if(term === '@id' || aliases.id.has(term)) {\n this._transformObjectId({obj, transformMap, termInfo, value});\n continue;\n }\n\n // transform `@type`\n if(term === '@type' || aliases.type.has(term)) {\n this._transformObjectType({obj, transformMap, termInfo, value});\n continue;\n }\n\n // use `childContextStack` when processing properties as it will remove\n // type-scoped contexts unless a property-scoped context is applied\n let propertyContextStack = childContextStack;\n\n // apply any property-scoped context\n let newActiveCtx;\n const propertyScopedContext = scopedContextMap.get(term);\n if(propertyScopedContext) {\n // TODO: support `@propagate: false` on property-scoped contexts; until\n // then throw an error if it is set\n newActiveCtx = await this._applyEmbeddedContexts({\n obj: {'@context': propertyScopedContext},\n contextStack\n });\n propertyContextStack = contextStack.slice();\n }\n\n // iterate through all values for the current transform entry\n const {plural, def} = termInfo;\n const termType = this._getTermType(\n {activeCtx: newActiveCtx || activeCtx, def});\n const values = plural ? value : [value];\n const entries = [];\n for(const value of values) {\n // `null` is never transformed\n if(value === null) {\n entries.push(null);\n continue;\n }\n\n // try to transform typed value\n if(this._transformTypedValue({entries, termType, value, termInfo})) {\n continue;\n }\n\n if(typeof value !== 'object') {\n // value not transformed and cannot recurse, so do not transform\n entries.push(value);\n continue;\n }\n\n // transform array\n if(Array.isArray(value)) {\n await this._transformArray(\n {entries, contextStack: propertyContextStack, value});\n continue;\n }\n\n // transform object\n await this._transformObject({\n entries, contextStack: propertyContextStack, value});\n }\n\n // revert property-scoped active context if one was created\n if(newActiveCtx) {\n newActiveCtx.revert();\n }\n\n this._assignEntries({entries, obj, transformMap, termInfo});\n }\n\n // revert active context for this object\n activeCtx.revert();\n }\n\n /**\n * Apply the embedded contexts in the given object to produce an\n * active context.\n *\n * @param {object} options - The options to use.\n * @param {object} options.obj - The object to get the active context for.\n * @param {Array} [options.contextStack] - The stack of active contexts.\n *\n * @returns {Promise<object>} - The active context instance.\n */\n async _applyEmbeddedContexts({obj, contextStack}) {\n const stackTop = contextStack.length;\n\n // push any local embedded contexts onto the context stack\n const localContexts = obj['@context'];\n await this._updateContextStack({contextStack, contexts: localContexts});\n\n // get `id` and `type` aliases for the active context\n let active = contextStack[contextStack.length - 1];\n if(!active) {\n // empty initial context\n active = {\n aliases: {\n id: new Set(),\n type: new Set()\n },\n context: {},\n scopedContextMap: new Map(),\n termMap: new Map()\n };\n }\n\n return {\n ...active,\n revert() {\n contextStack.length = stackTop;\n }\n };\n }\n\n async _applyTypeScopedContexts({obj, contextStack}) {\n const stackTop = contextStack.length;\n\n // get `id` and `type` aliases for the active context\n let active = contextStack[contextStack.length - 1];\n if(!active) {\n // empty initial context\n active = {\n aliases: {\n id: new Set(),\n type: new Set()\n },\n context: {},\n scopedContextMap: new Map(),\n termMap: new Map()\n };\n }\n const {aliases} = active;\n\n // get unique object type(s)\n let totalTypes = [];\n const typeTerms = ['@type', ...aliases.type];\n for(const term of typeTerms) {\n const types = obj[term];\n if(Array.isArray(types)) {\n totalTypes.push(...types);\n } else {\n totalTypes.push(types);\n }\n }\n // apply types in lexicographically sorted order (per JSON-LD spec)\n totalTypes = [...new Set(totalTypes)].sort();\n\n // apply any type-scoped contexts\n let {scopedContextMap} = active;\n for(const type of totalTypes) {\n const contexts = scopedContextMap.get(type);\n if(contexts) {\n await this._updateContextStack({contextStack, contexts});\n active = contextStack[contextStack.length - 1];\n ({scopedContextMap} = active);\n }\n }\n\n return {\n ...active,\n revert() {\n contextStack.length = stackTop;\n }\n };\n }\n\n async _updateContextStack({contextStack, contexts, transformer}) {\n // push any localized contexts onto the context stack\n if(!contexts) {\n return;\n }\n if(!Array.isArray(contexts)) {\n contexts = [contexts];\n }\n\n const {contextMap} = this;\n for(const context of contexts) {\n let entry = contextMap.get(context);\n if(!entry) {\n let ctx = context;\n let contextUrl;\n if(typeof context === 'string') {\n // fetch context\n contextUrl = context;\n ({'@context': ctx} = await this._getDocument({url: contextUrl}));\n }\n // FIXME: validate `ctx` to ensure its a valid JSON-LD context value\n // add context\n entry = await this._addContext({context: ctx, contextUrl, transformer});\n }\n\n // clone entry to create new active context entry for context stack\n const newActive = {\n aliases: {\n id: new Set(entry.aliases.id),\n type: new Set(entry.aliases.type)\n },\n context,\n scopedContextMap: new Map(entry.scopedContextMap),\n termMap: new Map(entry.termMap)\n };\n\n // push new active context and get old one\n const oldActive = contextStack[contextStack.length - 1];\n contextStack.push(newActive);\n if(!oldActive) {\n continue;\n }\n\n // compute `id` and `type` aliases by including any previous aliases that\n // have not been replaced by the new context\n const {aliases, termMap} = newActive;\n for(const key of ['id', 'type']) {\n for(const alias of oldActive.aliases[key]) {\n if(!(context[alias] === null || newActive.termMap.has(alias))) {\n aliases[key].add(alias);\n }\n }\n }\n\n // compute scoped context map by including any scoped contexts that have\n // not been replaced by the new context\n const {scopedContextMap} = newActive;\n for(const [key, value] of oldActive.scopedContextMap) {\n if(!(context[key] === null || scopedContextMap.has(key))) {\n scopedContextMap.set(key, value);\n }\n }\n\n // compute new terms map\n for(const [key, value] of oldActive.termMap) {\n if(!(context[key] === null || termMap.has(key))) {\n termMap.set(key, value);\n }\n }\n }\n }\n\n async _addContext({context, contextUrl}) {\n const {contextMap, termToId, idToTerm} = this;\n\n // handle `@import`\n const importUrl = context['@import'];\n if(importUrl) {\n let importEntry = contextMap.get(importUrl);\n if(!importEntry) {\n const {'@context': importCtx} = await this._getDocument(\n {url: importUrl});\n importEntry = await this._addContext(\n {context: importCtx, contextUrl: importUrl});\n }\n context = {...importEntry.context, ...context};\n }\n\n // precompute any `@id` and `@type` aliases, scoped contexts, and terms\n const scopedContextMap = new Map();\n const termMap = new Map();\n const entry = {\n aliases: {id: new Set(), type: new Set()},\n context,\n scopedContextMap,\n termMap\n };\n\n // process context keys in sorted order to ensure term IDs are assigned\n // consistently\n const keys = Object.keys(context).sort();\n for(const key of keys) {\n const def = context[key];\n if(!def) {\n continue;\n }\n if(def === '@id' || def.id === '@id') {\n entry.aliases.id.add(key);\n } else if(def === '@type' || def.id === '@type') {\n entry.aliases.type.add(key);\n }\n if(KEYWORDS.has(key)) {\n // skip keywords\n continue;\n }\n // ensure the term has been assigned an ID\n if(!termToId.has(key)) {\n const id = this.nextTermId;\n this.nextTermId += 2;\n termToId.set(key, id);\n if(idToTerm) {\n idToTerm.set(id, key);\n }\n }\n termMap.set(key, def);\n const scopedContext = def['@context'];\n if(scopedContext) {\n scopedContextMap.set(key, scopedContext);\n }\n }\n\n // add entry for context URL or context object\n contextMap.set(contextUrl || context, entry);\n\n return entry;\n }\n\n async _getDocument({url}) {\n const {document} = await this.documentLoader(url);\n if(typeof document === 'string') {\n return JSON.parse(document);\n }\n return document;\n }\n\n _getTermType({activeCtx, def}) {\n const {'@type': type} = def;\n if(!type) {\n // no term type\n return;\n }\n\n // check for potential CURIE value\n const [prefix, ...suffix] = type.split(':');\n const prefixDef = activeCtx.termMap.get(prefix);\n if(prefixDef === undefined) {\n // no CURIE\n return type;\n }\n\n // handle CURIE\n if(typeof prefixDef === 'string') {\n return prefixDef + suffix.join(':');\n }\n\n // prefix definition must be an object\n if(!(typeof prefixDef === 'object' &&\n typeof prefixDef['@id'] === 'string')) {\n throw new CborldError(\n 'ERR_INVALID_TERM_DEFINITION',\n 'JSON-LD term definitions must be strings or objects with \"@id\".');\n }\n return prefixDef['@id'] + suffix.join(':');\n }\n\n _getIdForTerm({term, plural}) {\n const id = this.termToId.get(term);\n if(id === undefined) {\n throw new CborldError(\n 'ERR_UNDEFINED_TERM',\n 'CBOR-LD compression requires all terms to be defined in a JSON-LD ' +\n 'context.');\n }\n return plural ? id + 1 : id;\n }\n\n _getTermForId({id}) {\n const plural = (id & 1) === 1;\n const term = this.idToTerm.get(plural ? id - 1 : id);\n return {term, plural};\n }\n}\n\n/**\n * Fetches a resource given a URL and returns it as a string.\n *\n * @callback documentLoaderFunction\n * @param {string} url - The URL to retrieve.\n *\n * @returns {string} The resource associated with the URL as a string.\n */\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nimport {CborldDecoder} from './CborldDecoder.js';\nimport {encode as encodeBase58} from 'base58-universal';\n\nconst ID_TO_SCHEME = new Map([\n // Note: only v1 mainnet is supported\n [1024, 'did:v1:nym:'],\n [1025, 'did:key:']\n]);\n\nexport class Base58DidUrlDecoder extends CborldDecoder {\n decode({value} = {}) {\n let url = ID_TO_SCHEME.get(value[0]);\n if(typeof value[1] === 'string') {\n url += value[1];\n } else {\n url += `z${encodeBase58(value[1])}`;\n }\n if(value.length > 2) {\n if(typeof value[2] === 'string') {\n url += `#${value[2]}`;\n } else {\n url += `#z${encodeBase58(value[2])}`;\n }\n }\n return url;\n }\n\n static createDecoder({value} = {}) {\n if(!(Array.isArray(value) && value.length > 1 && value.length <= 3)) {\n return false;\n }\n if(!ID_TO_SCHEME.has(value[0])) {\n return false;\n }\n return new Base58DidUrlDecoder();\n }\n}\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nimport {CborldDecoder} from './CborldDecoder.js';\n\nexport class HttpUrlDecoder extends CborldDecoder {\n constructor({secure} = {}) {\n super();\n this.secure = secure;\n }\n\n decode({value} = {}) {\n const scheme = this.secure ? 'https://' : 'http://';\n return `${scheme}${value[1]}`;\n }\n\n static createDecoder({value} = {}) {\n if(!(value.length === 2 && typeof value[1] === 'string')) {\n return false;\n }\n return new HttpUrlDecoder({secure: value[0] === 2});\n }\n}\n", "export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;", "import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;", "import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;", "import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nimport {CborldDecoder} from './CborldDecoder.js';\nimport {stringify} from 'uuid';\n\nexport class UuidUrnDecoder extends CborldDecoder {\n decode({value} = {}) {\n const uuid = typeof value[1] === 'string' ?\n value[1] : stringify(value[1]);\n return `urn:uuid:${uuid}`;\n }\n\n static createDecoder({value} = {}) {\n if(value.length === 2 &&\n (typeof value[1] === 'string' || value[1] instanceof Uint8Array)) {\n return new UuidUrnDecoder();\n }\n }\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport {Base58DidUrlDecoder} from './Base58DidUrlDecoder.js';\nimport {CborldDecoder} from './CborldDecoder.js';\nimport {HttpUrlDecoder} from './HttpUrlDecoder.js';\nimport {UuidUrnDecoder} from './UuidUrnDecoder.js';\n\nconst SCHEME_ID_TO_DECODER = new Map([\n [1, HttpUrlDecoder],\n [2, HttpUrlDecoder],\n [3, UuidUrnDecoder],\n [1024, Base58DidUrlDecoder],\n [1025, Base58DidUrlDecoder]\n]);\n\nexport class UriDecoder extends CborldDecoder {\n static createDecoder({value} = {}) {\n if(!(Array.isArray(value) || value.length > 1)) {\n return false;\n }\n\n const DecoderClass = SCHEME_ID_TO_DECODER.get(value[0]);\n return DecoderClass && DecoderClass.createDecoder({value});\n }\n}\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nimport {CborldDecoder} from './CborldDecoder.js';\nimport {UriDecoder} from './UriDecoder.js';\n\nexport class VocabTermDecoder extends CborldDecoder {\n constructor({term} = {}) {\n super();\n this.term = term;\n }\n\n decode() {\n return this.term;\n }\n\n static createDecoder({value, transformer} = {}) {\n if(Array.isArray(value)) {\n return UriDecoder.createDecoder({value, transformer});\n }\n const term = transformer.idToTerm.get(value);\n if(term !== undefined) {\n return new VocabTermDecoder({term});\n }\n }\n}\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nimport {CborldDecoder} from './CborldDecoder.js';\n\nexport class XsdDateDecoder extends CborldDecoder {\n decode({value} = {}) {\n const dateString = new Date(value * 1000).toISOString();\n return dateString.substring(0, dateString.indexOf('T'));\n }\n\n static createDecoder({value} = {}) {\n if(typeof value === 'number') {\n return new XsdDateDecoder();\n }\n }\n}\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nimport {CborldDecoder} from './CborldDecoder.js';\n\nexport class XsdDateTimeDecoder extends CborldDecoder {\n constructor({value} = {}) {\n super();\n this.value = value;\n }\n\n decode({value} = {}) {\n if(typeof value === 'number') {\n return new Date(value * 1000).toISOString().replace('.000Z', 'Z');\n }\n return new Date(value[0] * 1000 + value[1]).toISOString();\n }\n\n static createDecoder({value} = {}) {\n if(typeof value === 'number') {\n return new XsdDateTimeDecoder();\n }\n if(Array.isArray(value) && value.length === 2 &&\n (typeof value[0] === 'number' || typeof value[1] === 'number')) {\n return new XsdDateTimeDecoder();\n }\n }\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport * as cborg from 'cborg';\nimport {FIRST_CUSTOM_TERM_ID, KEYWORDS} from './keywords.js';\nimport {CborldError} from './CborldError.js';\nimport {ContextDecoder} from './codecs/ContextDecoder.js';\nimport {inspect} from './util.js';\nimport {MultibaseDecoder} from './codecs/MultibaseDecoder.js';\nimport {Transformer} from './Transformer.js';\nimport {UriDecoder} from './codecs/UriDecoder.js';\nimport {VocabTermDecoder} from './codecs/VocabTermDecoder.js';\nimport {XsdDateDecoder} from './codecs/XsdDateDecoder.js';\nimport {XsdDateTimeDecoder} from './codecs/XsdDateTimeDecoder.js';\n\nexport const TYPE_DECODERS = new Map([\n ['@id', UriDecoder],\n ['@vocab', VocabTermDecoder],\n ['https://w3id.org/security#multibase', MultibaseDecoder],\n ['http://www.w3.org/2001/XMLSchema#date', XsdDateDecoder],\n ['http://www.w3.org/2001/XMLSchema#dateTime', XsdDateTimeDecoder]\n]);\n\nconst CONTEXT_TERM_ID = KEYWORDS.get('@context');\nconst CONTEXT_TERM_ID_PLURAL = CONTEXT_TERM_ID + 1;\n\nexport class Decompressor extends Transformer {\n /**\n * Creates a new Decompressor for generating a JSON-LD document from\n * compressed CBOR-LD. The created instance may only be used on a single\n * CBOR-LD input at a time.\n *\n * @param {object} options - The options to use when encoding to CBOR-LD.\n * @param {documentLoaderFunction} options.documentLoader - The document\n * loader to use when resolving JSON-LD Context URLs.\n * @param {Map} [options.appContextMap] - A map of JSON-LD Context URLs and\n * their encoded CBOR-LD values (must be values greater than 32767\n * (0x7FFF)).\n */\n constructor({documentLoader, appContextMap} = {}) {\n super({documentLoader, appContextMap});\n this.reverseAppContextMap = new Map();\n // build reverse contxt map\n if(appContextMap) {\n for(const [k, v] of appContextMap) {\n this.reverseAppContextMap.set(v, k);\n }\n }\n }\n\n /**\n * Decompresses the given CBOR-LD byte array to a JSON-LD document.\n *\n * @param {object} options - The options to use.\n * @param {Uint8Array} options.compressedBytes - The CBOR-LD compressed\n * bytes that follow the compressed CBOR-LD CBOR tag.\n * @param {diagnosticFunction} [options.diagnose] - A function that, if\n * provided, is called with diagnostic information.\n *\n * @returns {Promise<object>} - The JSON-LD document.\n */\n async decompress({compressedBytes, diagnose} = {}) {\n this.contextMap = new Map();\n this.termToId = new Map(KEYWORDS);\n this.nextTermId = FIRST_CUSTOM_TERM_ID;\n this.idToTerm = new Map();\n for(const [term, id] of this.termToId) {\n this.idToTerm.set(id, term);\n }\n\n // decoded output could be one or more transform maps\n const transformMap = cborg.decode(compressedBytes, {useMaps: true});\n if(diagnose) {\n diagnose('Diagnostic CBOR-LD decompression transform map(s):');\n diagnose(inspect(transformMap, {depth: null, colors: true}));\n }\n\n // handle single or multiple JSON-LD docs\n const results = [];\n const isArray = Array.isArray(transformMap);\n const transformMaps = isArray ? transformMap : [transformMap];\n for(const transformMap of transformMaps) {\n const obj = {};\n await this._transform({obj, transformMap});\n results.push(obj);\n }\n return isArray ? results : results[0];\n }\n\n _beforeObjectContexts({obj, transformMap}) {\n // decode `@context` for `transformMap`, if any\n const encodedContext = transformMap.get(CONTEXT_TERM_ID);\n if(encodedContext) {\n const decoder = ContextDecoder.createDecoder(\n {value: encodedContext, transformer: this});\n obj['@context'] = decoder ?\n decoder.decode({value: encodedContext}) : encodedContext;\n }\n const encodedContexts = transformMap.get(CONTEXT_TERM_ID_PLURAL);\n if(encodedContexts) {\n if(encodedContext) {\n // can't use *both* the singular and plural context term ID\n throw new CborldError(\n 'ERR_INVALID_ENCODED_CONTEXT',\n 'Both singular and plural context IDs were found in the ' +\n 'CBOR-LD input.');\n }\n if(!Array.isArray(encodedContexts)) {\n // `encodedContexts` must be an array\n throw new CborldError(\n 'ERR_INVALID_ENCODED_CONTEXT',\n 'Encoded plural context value must be an array.');\n }\n const entries = [];\n for(const value of encodedContexts) {\n const decoder = ContextDecoder.createDecoder(\n {value, transformer: this});\n entries.push(decoder ? decoder.decode({value}) : value);\n }\n obj['@context'] = entries;\n }\n }\n\n _beforeTypeScopedContexts({activeCtx, obj, transformMap}) {\n // decode object types\n const {termToId} = this;\n const typeTerms = ['@type', ...activeCtx.aliases.type];\n for(const term of typeTerms) {\n // check both singular and plural term IDs\n const termId = termToId.get(term);\n let value = transformMap.get(termId);\n if(value === undefined) {\n value = transformMap.get(termId + 1);\n }\n if(value !== undefined) {\n if(Array.isArray(value)) {\n obj[term] = value.map(value => {\n const decoder = VocabTermDecoder.createDecoder(\n {value, transformer: this});\n return decoder ? decoder.decode({value}) : value;\n });\n } else {\n const decoder = VocabTermDecoder.createDecoder(\n {value, transformer: this});\n obj[term] = decoder ? decoder.decode({value}) : value;\n }\n }\n }\n }\n\n _getEntries({transformMap, termMap}) {\n // get term entries to be transformed and sort by *term* to ensure term\n // IDs will be assigned in the same order that the compressor assigned them\n const entries = [];\n for(const [key, value] of transformMap) {\n // skip `@context`; not a term entry\n if(key === CONTEXT_TERM_ID || key === CONTEXT_TERM_ID_PLURAL) {\n continue;\n }\n\n // check for undefined term IDs\n const {term, plural} = this._getTermForId({id: key});\n if(term === undefined) {\n throw new CborldError(\n 'ERR_UNKNOWN_CBORLD_TERM_ID',\n `Unknown term ID '${key}' was detected in the CBOR-LD input.`);\n }\n\n // check for undefined term\n const def = termMap.get(term);\n if(def === undefined && !(term.startsWith('@') && KEYWORDS.has(term))) {\n throw new CborldError(\n 'ERR_UNKNOWN_CBORLD_TERM',\n `Unknown term \"${term}\" was detected in the CBOR-LD input.`);\n }\n\n entries.push([{term, termId: key, plural, def}, value]);\n }\n return entries.sort(_sortEntriesByTerm);\n }\n\n _getTermInfo({termMap, key}) {\n // check for undefined term IDs\n const {term, plural} = this._getTermForId({id: key});\n if(term === undefined) {\n throw new CborldError(\n 'ERR_UNKNOWN_CBORLD_TERM_ID',\n `Unknown term ID '${key}' was detected in the CBOR-LD input.`);\n }\n\n // check for undefined term\n const def = termMap.get(term);\n if(def === undefined && !(term.startsWith('@') && KEYWORDS.has(term))) {\n throw new CborldError(\n 'ERR_UNKNOWN_CBORLD_TERM',\n `Unknown term \"${term}\" was detected in the CBOR-LD input.`);\n }\n\n return {term, termId: key, plural, def};\n }\n\n _transformObjectId({obj, termInfo, value}) {\n const decoder = UriDecoder.createDecoder({value});\n obj[termInfo.term] = decoder ? decoder.decode({value}) : value;\n }\n\n _transformObjectType({obj, termInfo, value}) {\n const {term, plural} = termInfo;\n const values = plural ? value : [value];\n const entries = [];\n for(const value of values) {\n const decoder = VocabTermDecoder.createDecoder(\n {value, transformer: this});\n entries.push(decoder ? decoder.decode({value}) : value);\n }\n obj[term] = plural ? entries : entries[0];\n }\n\n _transformTypedValue({entries, termType, value}) {\n const DecoderClass = TYPE_DECODERS.get(termType);\n const decoder = DecoderClass && DecoderClass.createDecoder(\n {value, transformer: this});\n if(decoder) {\n entries.push(decoder.decode({value}));\n return true;\n }\n }\n\n async _transformArray({entries, contextStack, value}) {\n // recurse into array\n const children = [];\n for(const transformMap of value) {\n const obj = {};\n children.push(obj);\n await this._transform({obj, transformMap, contextStack});\n }\n entries.push(children);\n }\n\n async _transformObject({entries, contextStack, value}) {\n // recurse into object\n const child = {};\n entries.push(child);\n return this._transform({obj: child, transformMap: value, contextStack});\n }\n\n _assignEntries({entries, obj, termInfo}) {\n const {term, plural} = termInfo;\n obj[term] = plural ? entries : entries[0];\n }\n}\n\nfunction _sortEntriesByTerm([{term: t1}], [{term: t2}]) {\n return t1 < t2 ? -1 : t1 > t2 ? 1 : 0;\n}\n\n/**\n * Fetches a resource given a URL and returns it as a string.\n *\n * @callback documentLoaderFunction\n * @param {string} url - The URL to retrieve.\n *\n * @returns {string} The resource associated with the URL as a string.\n */\n\n/**\n * A diagnostic function that is called with diagnostic information. Typically\n * set to `console.log` when debugging.\n *\n * @callback diagnosticFunction\n * @param {string} message - The diagnostic message.\n */\n", "/*!\n * Copyright (c) 2020-2021 Digital Bazaar, Inc. All rights reserved.\n */\nimport * as cborg from 'cborg';\nimport {CborldError} from './CborldError.js';\nimport {Decompressor} from './Decompressor.js';\nimport {inspect} from './util.js';\n\n/**\n * Decodes a CBOR-LD byte array into a JSON-LD document.\n *\n * @param {object} options - The options to use when decoding CBOR-LD.\n * @param {Uint8Array} options.cborldBytes - The encoded CBOR-LD bytes to\n * decode.\n * @param {Function} options.documentLoader -The document loader to use when\n * resolving JSON-LD Context URLs.\n * @param {Map} [options.appContextMap] - A map of JSON-LD Context URLs and\n * their associated CBOR-LD values. The values must be greater than\n * 32767 (0x7FFF)).\n * @param {diagnosticFunction} [options.diagnose] - A function that, if\n * provided, is called with diagnostic information.\n *\n * @returns {Promise<object>} - The decoded JSON-LD Document.\n */\nexport async function decode({\n cborldBytes, documentLoader, appContextMap = new Map(), diagnose}) {\n if(!(cborldBytes instanceof Uint8Array)) {\n throw new TypeError('\"cborldBytes\" must be a Uint8Array.');\n }\n\n // 0xd9 == 11011001\n // 110 = CBOR major type 6\n // 11001 = 25, 16-bit tag size (65536 possible values)\n let index = 0;\n if(cborldBytes[index++] !== 0xd9) {\n throw new CborldError(\n 'ERR_NOT_CBORLD',\n 'CBOR-LD must start with a CBOR major type \"Tag\" header of `0xd9`.');\n }\n\n // ensure `cborldBytes` represent CBOR-LD\n if(cborldBytes[index++] !== 0x05) {\n throw new CborldError(\n 'ERR_NOT_CBORLD', 'CBOR-LD 16-bit tag must start with `0x05`.');\n }\n\n const compressionMode = cborldBytes[index];\n if(compressionMode === undefined) {\n throw new CborldError(\n 'ERR_NOT_CBORLD', 'Truncated CBOR-LD 16-bit tag.');\n }\n\n if(!(compressionMode === 0 || compressionMode === 1)) {\n throw new CborldError(\n 'ERR_NOT_CBORLD',\n `Unsupported CBOR-LD compression mode \"${compressionMode}\".`);\n }\n\n index++;\n const {buffer, byteOffset, length} = cborldBytes;\n const suffix = new Uint8Array(buffer, byteOffset + index, length - index);\n\n // handle uncompressed CBOR-LD\n if(compressionMode === 0) {\n return cborg.decode(suffix, {useMaps: false});\n }\n\n // decompress CBOR-LD\n const decompressor = new Decompressor({documentLoader, appContextMap});\n const result = await decompressor.decompress(\n {compressedBytes: suffix, diagnose});\n\n if(diagnose) {\n diagnose('Diagnostic JSON-LD result:');\n diagnose(inspect(result, {depth: null, colors: true}));\n }\n\n return result;\n}\n\n/**\n * A diagnostic function that is called with diagnostic information. Typically\n * set to `console.log` when debugging.\n *\n * @callback diagnosticFunction\n * @param {string} message - The diagnostic message.\n */\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nexport class CborldEncoder {\n encode() {\n throw new Error('Must be implemented by derived class.');\n }\n\n // eslint-disable-next-line no-unused-vars\n static createEncoder({value} = {}) {\n throw new Error('Must be implemented by derived class.');\n }\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport {Token, Type} from 'cborg';\nimport {CborldEncoder} from './CborldEncoder.js';\nimport {URL_TO_ID} from './registeredContexts.js';\n\nexport class ContextEncoder extends CborldEncoder {\n constructor({context, appContextMap} = {}) {\n super();\n this.context = context;\n this.appContextMap = appContextMap;\n }\n\n encode() {\n const {context} = this;\n const id = URL_TO_ID.get(context) || this.appContextMap.get(context);\n if(id === undefined) {\n return new Token(Type.string, context);\n }\n return new Token(Type.uint, id);\n }\n\n static createEncoder({value, transformer} = {}) {\n if(typeof value !== 'string') {\n return false;\n }\n const {appContextMap} = transformer;\n return new ContextEncoder({context: value, appContextMap});\n }\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport {Token, Type} from 'cborg';\nimport {Base64} from 'js-base64';\nimport {CborldEncoder} from './CborldEncoder.js';\nimport {decode as decodeBase58} from 'base58-universal';\n\n// this class is used to encode a multibase encoded value in CBOR-LD, which\n// actually means transforming a multibase-encoded string to bytes\nexport class MultibaseEncoder extends CborldEncoder {\n constructor({value} = {}) {\n super();\n this.value = value;\n }\n\n encode() {\n const {value} = this;\n\n let prefix;\n let suffix;\n if(value[0] === 'z') {\n // 0x7a === 'z' (multibase code for base58btc)\n prefix = 0x7a;\n suffix = decodeBase58(value.substr(1));\n } else if(value[0] === 'M') {\n // 0x4d === 'M' (multibase code for base64pad)\n prefix = 0x4d;\n suffix = Base64.toUint8Array(value.substr(1));\n }\n\n const bytes = new Uint8Array(1 + suffix.length);\n bytes[0] = prefix;\n bytes.set(suffix, 1);\n return new Token(Type.bytes, bytes);\n }\n\n static createEncoder({value} = {}) {\n if(typeof value !== 'string') {\n return false;\n }\n // supported multibase encodings:\n // 0x7a === 'z' (multibase code for base58btc)\n // 0x4d === 'M' (multibase code for base64pad)\n if(value[0] === 'z' || value[0] === 'M') {\n return new MultibaseEncoder({value});\n }\n }\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport {Token, Type} from 'cborg';\nimport {CborldEncoder} from './CborldEncoder.js';\nimport {decode as decodeBase58} from 'base58-universal';\n\nconst SCHEME_TO_ID = new Map([\n ['did:v1:nym:', 1024],\n ['did:key:', 1025]\n]);\n\nexport class Base58DidUrlEncoder extends CborldEncoder {\n constructor({value, scheme} = {}) {\n super();\n this.value = value;\n this.scheme = scheme;\n }\n\n encode() {\n const {value, scheme} = this;\n const suffix = value.substr(scheme.length);\n const [authority, fragment] = suffix.split('#');\n const entries = [\n new Token(Type.uint, SCHEME_TO_ID.get(scheme)),\n _multibase58ToToken(authority)\n ];\n if(fragment !== undefined) {\n entries.push(_multibase58ToToken(fragment));\n }\n return [new Token(Type.array, entries.length), entries];\n }\n\n static createEncoder({value} = {}) {\n const keys = [...SCHEME_TO_ID.keys()];\n for(const key of keys) {\n if(value.startsWith(key)) {\n return new Base58DidUrlEncoder({value, scheme: key});\n }\n }\n }\n}\n\nfunction _multibase58ToToken(str) {\n if(str.startsWith('z')) {\n const decoded = decodeBase58(str.substr(1));\n if(decoded) {\n return new Token(Type.bytes, decoded);\n }\n }\n // cannot compress\n return new Token(Type.string, str);\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport {Token, Type} from 'cborg';\nimport {CborldEncoder} from './CborldEncoder.js';\n\nexport class HttpUrlEncoder extends CborldEncoder {\n constructor({value, secure} = {}) {\n super();\n this.value = value;\n this.secure = secure;\n }\n\n encode() {\n const {value, secure} = this;\n const length = secure ? 'https://'.length : 'http://'.length;\n const entries = [\n new Token(Type.uint, secure ? 2 : 1),\n new Token(Type.string, value.substr(length))\n ];\n return [new Token(Type.array, entries.length), entries];\n }\n\n static createEncoder({value} = {}) {\n // presume HTTPS is more common, check for it first\n if(value.startsWith('https://')) {\n return new HttpUrlEncoder({value, secure: true});\n }\n if(value.startsWith('http://')) {\n return new HttpUrlEncoder({value, secure: false});\n }\n }\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport {Token, Type} from 'cborg';\nimport {CborldEncoder} from './CborldEncoder.js';\nimport {parse} from 'uuid';\n\nexport class UuidUrnEncoder extends CborldEncoder {\n constructor({value} = {}) {\n super();\n this.value = value;\n }\n\n encode() {\n const {value} = this;\n const rest = value.substr('urn:uuid:'.length);\n const entries = [new Token(Type.uint, 3)];\n if(rest.toLowerCase() === rest) {\n const uuidBytes = parse(rest);\n entries.push(new Token(Type.bytes, uuidBytes));\n } else {\n // cannot compress\n entries.push(new Token(Type.string, rest));\n }\n return [new Token(Type.array, entries.length), entries];\n }\n\n static createEncoder({value} = {}) {\n if(value.startsWith('urn:uuid:')) {\n return new UuidUrnEncoder({value});\n }\n }\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport {Base58DidUrlEncoder} from './Base58DidUrlEncoder.js';\nimport {CborldEncoder} from './CborldEncoder.js';\nimport {HttpUrlEncoder} from './HttpUrlEncoder.js';\nimport {UuidUrnEncoder} from './UuidUrnEncoder.js';\n\nconst SCHEME_TO_ENCODER = new Map([\n ['http', HttpUrlEncoder],\n ['https', HttpUrlEncoder],\n ['urn:uuid', UuidUrnEncoder],\n ['did:v1:nym', Base58DidUrlEncoder],\n ['did:key', Base58DidUrlEncoder]\n]);\n\nexport class UriEncoder extends CborldEncoder {\n static createEncoder({value} = {}) {\n if(typeof value !== 'string') {\n return false;\n }\n\n // get full colon-delimited prefix\n let scheme;\n try {\n // this handles URIs both with authority followed by `//` and without\n const {protocol, pathname} = new URL(value);\n scheme = protocol;\n if(pathname.includes(':')) {\n scheme += pathname;\n }\n const split = value.split(':');\n split.pop();\n scheme = split.join(':');\n } catch(e) {\n return false;\n }\n\n const EncoderClass = SCHEME_TO_ENCODER.get(scheme);\n return EncoderClass && EncoderClass.createEncoder({value});\n }\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport {Token, Type} from 'cborg';\nimport {CborldEncoder} from './CborldEncoder.js';\nimport {UriEncoder} from './UriEncoder.js';\n\nexport class VocabTermEncoder extends CborldEncoder {\n constructor({termId} = {}) {\n super();\n this.termId = termId;\n }\n\n encode() {\n return new Token(Type.uint, this.termId);\n }\n\n static createEncoder({value, transformer} = {}) {\n const {termToId} = transformer;\n const termId = termToId.get(value);\n if(termId !== undefined) {\n return new VocabTermEncoder({termId});\n }\n return UriEncoder.createEncoder({value});\n }\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport {Token, Type} from 'cborg';\nimport {CborldEncoder} from './CborldEncoder.js';\n\nexport class XsdDateEncoder extends CborldEncoder {\n constructor({value, parsed} = {}) {\n super();\n this.value = value;\n this.parsed = parsed;\n }\n\n encode() {\n const {value, parsed} = this;\n const secondsSinceEpoch = Math.floor(parsed / 1000);\n const dateString = new Date(secondsSinceEpoch * 1000).toISOString();\n const expectedDate = dateString.substring(0, dateString.indexOf('T'));\n if(value !== expectedDate) {\n // compression would be lossy, do not compress\n return new Token(Type.string, value);\n }\n return new Token(Type.uint, secondsSinceEpoch);\n }\n\n static createEncoder({value} = {}) {\n if(value.includes('T')) {\n // time included, cannot compress\n return false;\n }\n const parsed = Date.parse(value);\n if(isNaN(parsed)) {\n // no date parsed, cannot compress\n return false;\n }\n\n return new XsdDateEncoder({value, parsed});\n }\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport {Token, Type} from 'cborg';\nimport {CborldEncoder} from './CborldEncoder.js';\n\nexport class XsdDateTimeEncoder extends CborldEncoder {\n constructor({value, parsed} = {}) {\n super();\n this.value = value;\n this.parsed = parsed;\n }\n\n encode() {\n const {value, parsed} = this;\n const secondsSinceEpoch = Math.floor(parsed / 1000);\n const secondsToken = new Token(Type.uint, secondsSinceEpoch);\n const millisecondIndex = value.indexOf('.');\n if(millisecondIndex === -1) {\n const expectedDate = new Date(\n secondsSinceEpoch * 1000).toISOString().replace('.000Z', 'Z');\n if(value !== expectedDate) {\n // compression would be lossy, do not compress\n return new Token(Type.string, value);\n }\n // compress with second precision\n return secondsToken;\n }\n\n const milliseconds = parseInt(value.substr(millisecondIndex + 1), 10);\n const expectedDate = new Date(\n secondsSinceEpoch * 1000 + milliseconds).toISOString();\n if(value !== expectedDate) {\n // compress would be lossy, do not compress\n return new Token(Type.string, value);\n }\n\n // compress with subsecond precision\n const entries = [\n secondsToken,\n new Token(Type.uint, milliseconds)\n ];\n return [new Token(Type.array, entries.length), entries];\n }\n\n static createEncoder({value} = {}) {\n if(!value.includes('T')) {\n // no time included, cannot compress\n return false;\n }\n const parsed = Date.parse(value);\n if(isNaN(parsed)) {\n // no date parsed, cannot compress\n return false;\n }\n\n return new XsdDateTimeEncoder({value, parsed});\n }\n}\n", "/*!\n * Copyright (c) 2021-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport * as cborg from 'cborg';\nimport {FIRST_CUSTOM_TERM_ID, KEYWORDS} from './keywords.js';\nimport {CborldEncoder} from './codecs/CborldEncoder.js';\nimport {CborldError} from './CborldError.js';\nimport {ContextEncoder} from './codecs/ContextEncoder.js';\nimport {inspect} from './util.js';\nimport {MultibaseEncoder} from './codecs/MultibaseEncoder.js';\nimport {Transformer} from './Transformer.js';\nimport {UriEncoder} from './codecs/UriEncoder.js';\nimport {VocabTermEncoder} from './codecs/VocabTermEncoder.js';\nimport {XsdDateEncoder} from './codecs/XsdDateEncoder.js';\nimport {XsdDateTimeEncoder} from './codecs/XsdDateTimeEncoder.js';\n\nexport const TYPE_ENCODERS = new Map([\n ['@id', UriEncoder],\n ['@vocab', VocabTermEncoder],\n ['https://w3id.org/security#multibase', MultibaseEncoder],\n ['http://www.w3.org/2001/XMLSchema#date', XsdDateEncoder],\n ['http://www.w3.org/2001/XMLSchema#dateTime', XsdDateTimeEncoder]\n]);\n\nconst CONTEXT_TERM_ID = KEYWORDS.get('@context');\nconst CONTEXT_TERM_ID_PLURAL = CONTEXT_TERM_ID + 1;\n\n// override cborg object encoder to use cborld encoders\nconst typeEncoders = {\n Object(obj) {\n if(obj instanceof CborldEncoder) {\n return obj.encode({obj});\n }\n }\n};\n\nexport class Compressor extends Transformer {\n /**\n * Creates a new Compressor for generating compressed CBOR-LD from a\n * JSON-LD document. The created instance may only be used on a single\n * JSON-LD document at a time.\n *\n * @param {object} options - The options to use when encoding to CBOR-LD.\n * @param {documentLoaderFunction} options.documentLoader -The document\n * loader to use when resolving JSON-LD Context URLs.\n * @param {Map} [options.appContextMap] - A map of JSON-LD Context URLs and\n * their encoded CBOR-LD values (must be values greater than 32767\n * (0x7FFF)).\n */\n constructor({documentLoader, appContextMap} = {}) {\n super({documentLoader, appContextMap});\n }\n\n /**\n * Compresses the given JSON-LD document into a CBOR-LD byte array of\n * compressed bytes that should follow the compressed CBOR-LD CBOR tag.\n *\n * @param {object} options - The options to use.\n * @param {object} options.jsonldDocument - The JSON-LD Document to convert\n * to CBOR-LD bytes.\n * @param {diagnosticFunction} [options.diagnose] - A function that, if\n * provided, is called with diagnostic information.\n *\n * @returns {Promise<Uint8Array>} - The compressed CBOR-LD bytes.\n */\n async compress({jsonldDocument, diagnose} = {}) {\n const transformMaps = await this._createTransformMaps({jsonldDocument});\n if(diagnose) {\n diagnose('Diagnostic CBOR-LD compression transform map(s):');\n diagnose(inspect(transformMaps, {depth: null, colors: true}));\n }\n return cborg.encode(transformMaps, {typeEncoders});\n }\n\n async _createTransformMaps({jsonldDocument}) {\n // initialize state\n this.contextMap = new Map();\n this.termToId = new Map(KEYWORDS);\n this.nextTermId = FIRST_CUSTOM_TERM_ID;\n\n // handle single or multiple JSON-LD docs\n const transformMaps = [];\n const isArray = Array.isArray(jsonldDocument);\n const docs = isArray ? jsonldDocument : [jsonldDocument];\n for(const obj of docs) {\n const transformMap = new Map();\n await this._transform({obj, transformMap});\n transformMaps.push(transformMap);\n }\n\n return isArray ? transformMaps : transformMaps[0];\n }\n\n _afterObjectContexts({obj, transformMap}) {\n // if `@context` is present in the object, encode it\n const context = obj['@context'];\n if(!context) {\n return;\n }\n\n const entries = [];\n const isArray = Array.isArray(context);\n const contexts = isArray ? context : [context];\n for(const value of contexts) {\n const encoder = ContextEncoder.createEncoder(\n {value, transformer: this});\n entries.push(encoder || value);\n }\n const id = isArray ? CONTEXT_TERM_ID_PLURAL : CONTEXT_TERM_ID;\n transformMap.set(id, isArray ? entries : entries[0]);\n }\n\n _getEntries({obj, termMap}) {\n // get term entries to be transformed and sort by *term* to ensure term\n // IDs will be assigned in the same order that the decompressor will\n const entries = [];\n const keys = Object.keys(obj).sort();\n for(const key of keys) {\n // skip `@context`; not a term entry\n if(key === '@context') {\n continue;\n }\n\n // check for undefined terms\n const def = termMap.get(key);\n if(def === undefined && !(key.startsWith('@') && KEYWORDS.has(key))) {\n throw new CborldError(\n 'ERR_UNKNOWN_CBORLD_TERM',\n `Unknown term '${key}' was detected in the JSON-LD input.`);\n }\n\n const value = obj[key];\n const plural = Array.isArray(value);\n const termId = this._getIdForTerm({term: key, plural});\n entries.push([{term: key, termId, plural, def}, value]);\n }\n return entries;\n }\n\n _transformObjectId({transformMap, termInfo, value}) {\n const {termId} = termInfo;\n const encoder = UriEncoder.createEncoder(\n {value, transformer: this, termInfo});\n transformMap.set(termId, encoder || value);\n }\n\n _transformObjectType({transformMap, termInfo, value}) {\n const {termId, plural} = termInfo;\n const values = plural ? value : [value];\n const entries = [];\n for(const value of values) {\n const encoder = VocabTermEncoder.createEncoder(\n {value, transformer: this, termInfo});\n entries.push(encoder || value);\n }\n transformMap.set(termId, plural ? entries : entries[0]);\n }\n\n _transformTypedValue({entries, termType, value, termInfo}) {\n const EncoderClass = TYPE_ENCODERS.get(termType);\n const encoder = EncoderClass && EncoderClass.createEncoder(\n {value, transformer: this, termInfo});\n if(encoder) {\n entries.push(encoder);\n return true;\n }\n }\n\n async _transformArray({entries, contextStack, value}) {\n // recurse into array\n const children = [];\n for(const obj of value) {\n const childMap = new Map();\n children.push(childMap);\n await this._transform({obj, transformMap: childMap, contextStack});\n }\n entries.push(children);\n }\n\n async _transformObject({entries, contextStack, value}) {\n // recurse into object\n const transformMap = new Map();\n entries.push(transformMap);\n await this._transform({obj: value, transformMap, contextStack});\n }\n\n _assignEntries({entries, transformMap, termInfo}) {\n const {termId, plural} = termInfo;\n transformMap.set(termId, plural ? entries : entries[0]);\n }\n}\n\n/**\n * A diagnostic function that is called with diagnostic information. Typically\n * set to `console.log` when debugging.\n *\n * @callback diagnosticFunction\n * @param {string} message - The diagnostic message.\n */\n\n/**\n * Fetches a resource given a URL and returns it as a string.\n *\n * @callback documentLoaderFunction\n * @param {string} url - The URL to retrieve.\n *\n * @returns {string} The resource associated with the URL as a string.\n */\n", "/*!\n * Copyright (c) 2020-2023 Digital Bazaar, Inc. All rights reserved.\n */\nimport * as cborg from 'cborg';\nimport {Compressor} from './Compressor.js';\nimport {inspect} from './util.js';\n\n/**\n * Encodes a given JSON-LD document into a CBOR-LD byte array.\n *\n * @param {object} options - The options to use when encoding to CBOR-LD.\n * @param {object} options.jsonldDocument - The JSON-LD Document to convert to\n * CBOR-LD bytes.\n * @param {documentLoaderFunction} options.documentLoader -The document loader\n * to use when resolving JSON-LD Context URLs.\n * @param {boolean} [options.compressionMode=1] - `1` to use compression mode\n * version 1, `0` to use no compression.\n * @param {Map} [options.appContextMap] - A map of JSON-LD Context URLs and\n * their encoded CBOR-LD values (must be values greater than 32767 (0x7FFF)).\n * @param {diagnosticFunction} [options.diagnose] - A function that, if\n * provided, is called with diagnostic information.\n *\n * @returns {Promise<Uint8Array>} - The encoded CBOR-LD bytes.\n */\nexport async function encode({\n jsonldDocument, documentLoader, appContextMap = new Map(),\n compressionMode = 1, diagnose\n} = {}) {\n if(!(compressionMode === 0 || compressionMode === 1)) {\n throw new TypeError(\n '\"compressionMode\" must be \"0\" (no compression) or \"1\" ' +\n 'for compression mode version 1.');\n }\n\n // 0xd9 == 11011001\n // 110 = CBOR major type 6\n // 11001 = 25, 16-bit tag size (65536 possible values)\n // 0x05 = always the first 8-bits of a CBOR-LD tag\n // compressionMode = last 8-bits of a CBOR-LD tag indicating compression type\n const prefix = new Uint8Array([0xd9, 0x05, compressionMode]);\n let suffix;\n\n if(compressionMode === 0) {\n // handle uncompressed CBOR-LD\n suffix = cborg.encode(jsonldDocument);\n } else {\n // compress CBOR-LD\n const compressor = new Compressor({documentLoader, appContextMap});\n suffix = await compressor.compress({jsonldDocument, diagnose});\n }\n\n // concatenate prefix and suffix\n const length = prefix.length + suffix.length;\n const bytes = new Uint8Array(length);\n bytes.set(prefix);\n bytes.set(suffix, prefix.length);\n\n if(diagnose) {\n diagnose('Diagnostic CBOR-LD result:');\n diagnose(inspect(bytes, {depth: null, colors: true}));\n }\n\n return bytes;\n}\n\n/**\n * A diagnostic function that is called with diagnostic information. Typically\n * set to `console.log` when debugging.\n *\n * @callback diagnosticFunction\n * @param {string} message - The diagnostic message.\n */\n\n/**\n * Fetches a resource given a URL and returns it as a string.\n *\n * @callback documentLoaderFunction\n * @param {string} url - The URL to retrieve.\n *\n * @returns {string} The resource associated with the URL as a string.\n */\n", "export default function toDataView (data) {\n if (data instanceof Int8Array || data instanceof Uint8Array || data instanceof Uint8ClampedArray) {\n return new DataView(data.buffer, data.byteOffset, data.byteLength)\n }\n\n if (data instanceof ArrayBuffer) {\n return new DataView(data)\n }\n\n throw new TypeError('Expected `data` to be an ArrayBuffer, Buffer, Int8Array, Uint8Array or Uint8ClampedArray')\n}\n", "import toDataView from 'to-data-view'\n\nconst RFC4648 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'\nconst RFC4648_HEX = '0123456789ABCDEFGHIJKLMNOPQRSTUV'\nconst CROCKFORD = '0123456789ABCDEFGHJKMNPQRSTVWXYZ'\n\nexport default function base32Encode (data, variant, options) {\n options = options || {}\n let alphabet, defaultPadding\n\n switch (variant) {\n case 'RFC3548':\n case 'RFC4648':\n alphabet = RFC4648\n defaultPadding = true\n break\n case 'RFC4648-HEX':\n alphabet = RFC4648_HEX\n defaultPadding = true\n break\n case 'Crockford':\n alphabet = CROCKFORD\n defaultPadding = false\n break\n default:\n throw new Error('Unknown base32 variant: ' + variant)\n }\n\n const padding = (options.padding !== undefined ? options.padding : defaultPadding)\n const view = toDataView(data)\n\n let bits = 0\n let value = 0\n let output = ''\n\n for (let i = 0; i < view.byteLength; i++) {\n value = (value << 8) | view.getUint8(i)\n bits += 8\n\n while (bits >= 5) {\n output += alphabet[(value >>> (bits - 5)) & 31]\n bits -= 5\n }\n }\n\n if (bits > 0) {\n output += alphabet[(value << (5 - bits)) & 31]\n }\n\n if (padding) {\n while ((output.length % 8) !== 0) {\n output += '='\n }\n }\n\n return output\n}\n", "/*!\n * Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved.\n */\nimport * as cborld from '@digitalbazaar/cborld';\n\nimport base32Encode from 'base32-encode';\nimport base32Decode from 'base32-decode';\n\nimport {\n Encoder,\n // QRByte,\n QRAlphanumeric,\n // ErrorCorrectionLevel\n} from '@nuintun/qrcode';\n\nconst VP_QR_VERSION = 'VP1';\nconst BASE_32_UPPERCASE_MULTIBASE_PREFIX = 'B';\n\nfunction _bytesToQrCodeDataUrl({bytes, size}) {\n const qrcode = new Encoder();\n qrcode.setEncodingHint(true);\n // qrcode.setErrorCorrectionLevel(ErrorCorrectionLevel.M);\n const encoded = base32Encode(bytes, 'RFC4648', {padding: false});\n\n const vpPayload =\n `${VP_QR_VERSION}-${BASE_32_UPPERCASE_MULTIBASE_PREFIX}${encoded}`;\n\n qrcode.write(new QRAlphanumeric(vpPayload));\n\n qrcode.make();\n\n return {\n payload: vpPayload,\n encodedCborld: encoded,\n version: qrcode.getVersion(),\n imageDataUrl: qrcode.toDataURL(size)\n };\n}\n\nexport async function toQrCode({\n vp, documentLoader, size, diagnose\n} = {}) {\n const cborldBytes = await cborld.encode({\n jsonldDocument: vp,\n documentLoader,\n // to debug, set diagnose: console.log\n diagnose\n });\n\n const {\n payload,\n imageDataUrl,\n encodedCborld,\n version\n } = _bytesToQrCodeDataUrl({\n bytes: cborldBytes, size\n });\n\n return {\n payload,\n imageDataUrl,\n encodedCborld,\n rawCborldBytes: cborldBytes,\n version\n };\n}\n\nexport async function fromQrCode({\n text, documentLoader, diagnose\n} = {}) {\n const header = VP_QR_VERSION + '-';\n if(!(text && text.startsWith(header))) {\n throw TypeError('Unsupported VP QR format.');\n }\n\n const multibasePayload = text.slice(header.length);\n\n if(!multibasePayload.startsWith(BASE_32_UPPERCASE_MULTIBASE_PREFIX)) {\n throw TypeError('Payload must be multibase base32 (RFC4648) encoded.');\n }\n\n const cborldArrayBuffer = base32Decode(multibasePayload.slice(1), 'RFC4648');\n const cborldBytes = new Uint8Array(cborldArrayBuffer);\n\n const vp = await cborld.decode({\n cborldBytes,\n documentLoader,\n // to debug, set diagnose: console.log\n diagnose\n });\n\n return {vp};\n}\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\n/**\n * @module Mode\n * @author nuintun\n * @author Cosmo Wolfe\n * @author Kazuhiko Arase\n */\n/**\n * @readonly\n */\nvar Mode;\n(function (Mode) {\n Mode[Mode[\"Terminator\"] = 0] = \"Terminator\";\n Mode[Mode[\"Numeric\"] = 1] = \"Numeric\";\n Mode[Mode[\"Alphanumeric\"] = 2] = \"Alphanumeric\";\n Mode[Mode[\"StructuredAppend\"] = 3] = \"StructuredAppend\";\n Mode[Mode[\"Byte\"] = 4] = \"Byte\";\n Mode[Mode[\"Kanji\"] = 8] = \"Kanji\";\n Mode[Mode[\"ECI\"] = 7] = \"ECI\";\n // FNC1FirstPosition = 0x05,\n // FNC1SecondPosition = 0x09\n})(Mode || (Mode = {}));\n\nexport { Mode };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\nimport { Mode } from '../common/Mode.js';\n\n/**\n * @module QRData\n * @author nuintun\n * @author Kazuhiko Arase\n */\nclass QRData {\n constructor(mode, data) {\n this.bytes = [];\n this.mode = mode;\n this.data = data;\n }\n getLength() {\n return this.bytes.length;\n }\n getLengthInBits(version) {\n const mode = this.mode;\n const error = new Error(`illegal mode: ${mode}`);\n if (1 <= version && version < 10) {\n // 1 - 9\n switch (mode) {\n case Mode.Numeric:\n return 10;\n case Mode.Alphanumeric:\n return 9;\n case Mode.Byte:\n return 8;\n case Mode.Kanji:\n return 8;\n default:\n throw error;\n }\n }\n else if (version < 27) {\n // 10 - 26\n switch (mode) {\n case Mode.Numeric:\n return 12;\n case Mode.Alphanumeric:\n return 11;\n case Mode.Byte:\n return 16;\n case Mode.Kanji:\n return 10;\n default:\n throw error;\n }\n }\n else if (version < 41) {\n // 27 - 40\n switch (mode) {\n case Mode.Numeric:\n return 14;\n case Mode.Alphanumeric:\n return 13;\n case Mode.Byte:\n return 16;\n case Mode.Kanji:\n return 12;\n default:\n throw error;\n }\n }\n else {\n throw new Error(`illegal version: ${version}`);\n }\n }\n}\n\nexport { QRData };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\n/**\n * @module UTF8\n * @author nuintun\n */\n/**\n * @function encode\n * @param {string} text\n * @returns {number[]}\n * @see https://github.com/google/closure-library/blob/master/closure/goog/crypt/crypt.js\n */\nfunction encode(text) {\n let pos = 0;\n const { length } = text;\n const bytes = [];\n for (let i = 0; i < length; i++) {\n let code = text.charCodeAt(i);\n if (code < 128) {\n bytes[pos++] = code;\n }\n else if (code < 2048) {\n bytes[pos++] = (code >> 6) | 192;\n bytes[pos++] = (code & 63) | 128;\n }\n else if ((code & 0xfc00) === 0xd800 && i + 1 < length && (text.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n // Surrogate Pair\n code = 0x10000 + ((code & 0x03ff) << 10) + (text.charCodeAt(++i) & 0x03ff);\n bytes[pos++] = (code >> 18) | 240;\n bytes[pos++] = ((code >> 12) & 63) | 128;\n bytes[pos++] = ((code >> 6) & 63) | 128;\n bytes[pos++] = (code & 63) | 128;\n }\n else {\n bytes[pos++] = (code >> 12) | 224;\n bytes[pos++] = ((code >> 6) & 63) | 128;\n bytes[pos++] = (code & 63) | 128;\n }\n }\n return bytes;\n}\n/**\n * @function decode\n * @param {number[]} bytes\n * @returns {string}\n * @see https://github.com/google/closure-library/blob/master/closure/goog/crypt/crypt.js\n */\nfunction decode(bytes) {\n let pos = 0;\n let output = '';\n const { length } = bytes;\n const { fromCharCode } = String;\n while (pos < length) {\n const c1 = bytes[pos++];\n if (c1 < 128) {\n output += fromCharCode(c1);\n }\n else if (c1 > 191 && c1 < 224) {\n const c2 = bytes[pos++];\n output += fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n }\n else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n const c4 = bytes[pos++];\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) - 0x10000;\n output += fromCharCode(0xd800 + (u >> 10));\n output += fromCharCode(0xdc00 + (u & 1023));\n }\n else {\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n output += fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n }\n }\n return output;\n}\n\nexport { decode, encode };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\nimport { QRData } from './QRData.js';\nimport { Mode } from '../common/Mode.js';\nimport { encode } from '../../encoding/UTF8.js';\n\n/**\n * @module QR8BitByte\n * @author nuintun\n * @author Kazuhiko Arase\n */\nclass QRByte extends QRData {\n /**\n * @constructor\n * @param {string} data\n */\n constructor(data, encode$1) {\n super(Mode.Byte, data);\n this.encoding = -1;\n if (typeof encode$1 === 'function') {\n const { encoding, bytes } = encode$1(data);\n this.bytes = bytes;\n this.encoding = encoding;\n }\n else {\n this.bytes = encode(data);\n this.encoding = 26 /* EncodingHint.UTF8 */;\n }\n }\n /**\n * @public\n * @method writeTo\n * @param {BitBuffer} buffer\n */\n writeTo(buffer) {\n const { bytes } = this;\n for (const byte of bytes) {\n buffer.put(byte, 8);\n }\n }\n}\n\nexport { QRByte };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\n/**\n * @module QRMath\n * @author nuintun\n * @author Kazuhiko Arase\n */\nconst EXP_TABLE = [];\nconst LOG_TABLE = [];\nfor (let i = 0; i < 256; i++) {\n LOG_TABLE[i] = 0;\n EXP_TABLE[i] = i < 8 ? 1 << i : EXP_TABLE[i - 4] ^ EXP_TABLE[i - 5] ^ EXP_TABLE[i - 6] ^ EXP_TABLE[i - 8];\n}\nfor (let i = 0; i < 255; i++) {\n LOG_TABLE[EXP_TABLE[i]] = i;\n}\nfunction glog(n) {\n if (n < 1) {\n throw new Error(`illegal log: ${n}`);\n }\n return LOG_TABLE[n];\n}\nfunction gexp(n) {\n while (n < 0) {\n n += 255;\n }\n while (n >= 256) {\n n -= 255;\n }\n return EXP_TABLE[n];\n}\n\nexport { gexp, glog };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\nimport { gexp, glog } from './QRMath.js';\n\n/**\n * @module Polynomial\n * @author nuintun\n * @author Kazuhiko Arase\n */\nclass Polynomial {\n constructor(num, shift = 0) {\n let offset = 0;\n let { length } = num;\n while (offset < length && num[offset] === 0) {\n offset++;\n }\n length -= offset;\n const numbers = [];\n for (let i = 0; i < length; i++) {\n numbers.push(num[offset + i]);\n }\n for (let i = 0; i < shift; i++) {\n numbers.push(0);\n }\n this.num = numbers;\n }\n getAt(index) {\n return this.num[index];\n }\n getLength() {\n return this.num.length;\n }\n multiply(e) {\n const num = [];\n const eLength = e.getLength();\n const tLength = this.getLength();\n const dLength = tLength + eLength - 1;\n for (let i = 0; i < dLength; i++) {\n num.push(0);\n }\n for (let i = 0; i < tLength; i++) {\n for (let j = 0; j < eLength; j++) {\n num[i + j] ^= gexp(glog(this.getAt(i)) + glog(e.getAt(j)));\n }\n }\n return new Polynomial(num);\n }\n mod(e) {\n const eLength = e.getLength();\n const tLength = this.getLength();\n if (tLength - eLength < 0) {\n return this;\n }\n const ratio = glog(this.getAt(0)) - glog(e.getAt(0));\n // Create copy\n const num = [];\n for (let i = 0; i < tLength; i++) {\n num.push(this.getAt(i));\n }\n // Subtract and calc rest.\n for (let i = 0; i < eLength; i++) {\n num[i] ^= gexp(glog(e.getAt(i)) + ratio);\n }\n // Call recursively\n return new Polynomial(num).mod(e);\n }\n}\n\nexport { Polynomial };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\nimport { gexp } from './QRMath.js';\nimport { Polynomial } from './Polynomial.js';\n\n/**\n * @module QRUtil\n * @author nuintun\n * @author Kazuhiko Arase\n */\nconst N1 = 3;\nconst N2 = 3;\nconst N3 = 40;\nconst N4 = 10;\nconst ALIGNMENT_PATTERN_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n];\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\nfunction getAlignmentPattern(version) {\n return ALIGNMENT_PATTERN_TABLE[version - 1];\n}\nfunction getErrorCorrectionPolynomial(errorCorrectionLength) {\n let e = new Polynomial([1]);\n for (let i = 0; i < errorCorrectionLength; i++) {\n e = e.multiply(new Polynomial([1, gexp(i)]));\n }\n return e;\n}\nfunction getBCHDigit(data) {\n let digit = 0;\n while (data !== 0) {\n digit++;\n data >>>= 1;\n }\n return digit;\n}\nconst G18_BCH = getBCHDigit(G18);\nfunction getBCHVersion(data) {\n let offset = data << 12;\n while (getBCHDigit(offset) - G18_BCH >= 0) {\n offset ^= G18 << (getBCHDigit(offset) - G18_BCH);\n }\n return (data << 12) | offset;\n}\nconst G15_BCH = getBCHDigit(G15);\nfunction getBCHVersionInfo(data) {\n let offset = data << 10;\n while (getBCHDigit(offset) - G15_BCH >= 0) {\n offset ^= G15 << (getBCHDigit(offset) - G15_BCH);\n }\n return ((data << 10) | offset) ^ G15_MASK;\n}\nfunction applyMaskPenaltyRule1Internal(qrcode, isHorizontal) {\n const matrixSize = qrcode.getMatrixSize();\n let penalty = 0;\n for (let i = 0; i < matrixSize; i++) {\n let prevBit = false;\n let numSameBitCells = 0;\n for (let j = 0; j < matrixSize; j++) {\n const bit = isHorizontal ? qrcode.isDark(i, j) : qrcode.isDark(j, i);\n if (bit === prevBit) {\n numSameBitCells++;\n if (numSameBitCells === 5) {\n penalty += N1;\n }\n else if (numSameBitCells > 5) {\n penalty++;\n }\n }\n else {\n // set prev bit\n prevBit = bit;\n // include the cell itself\n numSameBitCells = 1;\n }\n }\n }\n return penalty;\n}\nfunction applyMaskPenaltyRule1(qrcode) {\n return applyMaskPenaltyRule1Internal(qrcode, true) + applyMaskPenaltyRule1Internal(qrcode, false);\n}\nfunction applyMaskPenaltyRule2(qrcode) {\n const matrixSize = qrcode.getMatrixSize();\n let penalty = 0;\n for (let y = 0; y < matrixSize - 1; y++) {\n for (let x = 0; x < matrixSize - 1; x++) {\n const value = qrcode.isDark(y, x);\n if (value === qrcode.isDark(y, x + 1) && value === qrcode.isDark(y + 1, x) && value === qrcode.isDark(y + 1, x + 1)) {\n penalty += N2;\n }\n }\n }\n return penalty;\n}\nfunction isFourWhite(qrcode, rangeIndex, from, to, isHorizontal) {\n from = Math.max(from, 0);\n to = Math.min(to, qrcode.getMatrixSize());\n for (let i = from; i < to; i++) {\n const value = isHorizontal ? qrcode.isDark(rangeIndex, i) : qrcode.isDark(i, rangeIndex);\n if (value) {\n return false;\n }\n }\n return true;\n}\nfunction applyMaskPenaltyRule3(qrcode) {\n const matrixSize = qrcode.getMatrixSize();\n let penalty = 0;\n for (let y = 0; y < matrixSize; y++) {\n for (let x = 0; x < matrixSize; x++) {\n if (x + 6 < matrixSize &&\n qrcode.isDark(y, x) &&\n !qrcode.isDark(y, x + 1) &&\n qrcode.isDark(y, x + 2) &&\n qrcode.isDark(y, x + 3) &&\n qrcode.isDark(y, x + 4) &&\n !qrcode.isDark(y, x + 5) &&\n qrcode.isDark(y, x + 6) &&\n (isFourWhite(qrcode, y, x - 4, x, true) || isFourWhite(qrcode, y, x + 7, x + 11, true))) {\n penalty += N3;\n }\n if (y + 6 < matrixSize &&\n qrcode.isDark(y, x) &&\n !qrcode.isDark(y + 1, x) &&\n qrcode.isDark(y + 2, x) &&\n qrcode.isDark(y + 3, x) &&\n qrcode.isDark(y + 4, x) &&\n !qrcode.isDark(y + 5, x) &&\n qrcode.isDark(y + 6, x) &&\n (isFourWhite(qrcode, x, y - 4, y, false) || isFourWhite(qrcode, x, y + 7, y + 11, false))) {\n penalty += N3;\n }\n }\n }\n return penalty;\n}\nfunction applyMaskPenaltyRule4(qrcode) {\n const matrixSize = qrcode.getMatrixSize();\n let numDarkCells = 0;\n for (let y = 0; y < matrixSize; y++) {\n for (let x = 0; x < matrixSize; x++) {\n if (qrcode.isDark(y, x)) {\n numDarkCells++;\n }\n }\n }\n const numTotalCells = matrixSize * matrixSize;\n const fivePercentVariances = Math.floor(Math.abs(numDarkCells * 20 - numTotalCells * 10) / numTotalCells);\n return fivePercentVariances * N4;\n}\n/**\n * @function calculateMaskPenalty\n * @param {Encoder} qrcode\n * @see https://www.thonky.com/qr-code-tutorial/data-masking\n * @see https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/qrcode/encoder/MaskUtil.java\n */\nfunction calculateMaskPenalty(qrcode) {\n return (applyMaskPenaltyRule1(qrcode) +\n applyMaskPenaltyRule2(qrcode) +\n applyMaskPenaltyRule3(qrcode) +\n applyMaskPenaltyRule4(qrcode));\n}\n\nexport { calculateMaskPenalty, getAlignmentPattern, getBCHVersion, getBCHVersionInfo, getErrorCorrectionPolynomial };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\n/**\n * @module ErrorCorrectionLevel\n * @author nuintun\n * @author Cosmo Wolfe\n * @author Kazuhiko Arase\n */\n/**\n * @readonly\n */\nvar ErrorCorrectionLevel;\n(function (ErrorCorrectionLevel) {\n // 7%\n ErrorCorrectionLevel[ErrorCorrectionLevel[\"L\"] = 1] = \"L\";\n // 15%\n ErrorCorrectionLevel[ErrorCorrectionLevel[\"M\"] = 0] = \"M\";\n // 25%\n ErrorCorrectionLevel[ErrorCorrectionLevel[\"Q\"] = 3] = \"Q\";\n // 30%\n ErrorCorrectionLevel[ErrorCorrectionLevel[\"H\"] = 2] = \"H\";\n})(ErrorCorrectionLevel || (ErrorCorrectionLevel = {}));\n\nexport { ErrorCorrectionLevel };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\nimport { ErrorCorrectionLevel } from '../common/ErrorCorrectionLevel.js';\n\n/**\n * @module RSBlock\n * @author nuintun\n * @author Kazuhiko Arase\n */\nclass RSBlock {\n constructor(totalCount, dataCount) {\n this.dataCount = dataCount;\n this.totalCount = totalCount;\n }\n getDataCount() {\n return this.dataCount;\n }\n getTotalCount() {\n return this.totalCount;\n }\n static getRSBlocks(version, errorCorrectionLevel) {\n const rsBlocks = [];\n const rsBlock = RSBlock.getRSBlockTable(version, errorCorrectionLevel);\n const length = rsBlock.length / 3;\n for (let i = 0; i < length; i++) {\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n for (let j = 0; j < count; j++) {\n rsBlocks.push(new RSBlock(totalCount, dataCount));\n }\n }\n return rsBlocks;\n }\n static getRSBlockTable(version, errorCorrectionLevel) {\n switch (errorCorrectionLevel) {\n case ErrorCorrectionLevel.L:\n return RSBlock.RS_BLOCK_TABLE[(version - 1) * 4 + 0];\n case ErrorCorrectionLevel.M:\n return RSBlock.RS_BLOCK_TABLE[(version - 1) * 4 + 1];\n case ErrorCorrectionLevel.Q:\n return RSBlock.RS_BLOCK_TABLE[(version - 1) * 4 + 2];\n case ErrorCorrectionLevel.H:\n return RSBlock.RS_BLOCK_TABLE[(version - 1) * 4 + 3];\n default:\n throw new Error(`illegal error correction level: ${errorCorrectionLevel}`);\n }\n }\n}\nRSBlock.RS_BLOCK_TABLE = [\n // L\n // M\n // Q\n // H\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n];\n\nexport { RSBlock };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\n/**\n * @module BitBuffer\n * @author nuintun\n * @author Kazuhiko Arase\n */\nclass BitBuffer {\n constructor() {\n this.length = 0;\n this.buffer = [];\n }\n getBuffer() {\n return this.buffer;\n }\n getLengthInBits() {\n return this.length;\n }\n getBit(index) {\n return ((this.buffer[(index / 8) >> 0] >>> (7 - (index % 8))) & 1) === 1;\n }\n put(num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1);\n }\n }\n putBit(bit) {\n const { buffer } = this;\n if (this.length === buffer.length * 8) {\n buffer.push(0);\n }\n if (bit) {\n buffer[(this.length / 8) >> 0] |= 0x80 >>> this.length % 8;\n }\n this.length++;\n }\n}\n\nexport { BitBuffer };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\n/**\n * @module Dict\n * @see https://github.com/google/dart-gif-encoder\n */\n// The highest code that can be defined in the CodeBook.\nconst MAX_CODE = (1 << 12) - 1;\n/**\n * A dict contains codes defined during LZW compression. It's a mapping from a string\n * of pixels to the code that represents it. The codes are stored in a trie which is\n * represented as a map. Codes may be up to 12 bits. The size of the codebook is always\n * the minimum power of 2 needed to represent all the codes and automatically increases\n * as new codes are defined.\n */\nclass Dict {\n constructor(depth) {\n const bof = 1 << depth;\n const eof = bof + 1;\n this.bof = bof;\n this.eof = eof;\n this.depth = depth;\n this.reset();\n }\n reset() {\n const bits = this.depth + 1;\n this.bits = bits;\n this.size = 1 << bits;\n this.codes = new Map();\n this.unused = this.eof + 1;\n }\n add(code, index) {\n let { unused } = this;\n if (unused > MAX_CODE) {\n return false;\n }\n this.codes.set((code << 8) | index, unused++);\n let { bits, size } = this;\n if (unused > size) {\n size = 1 << ++bits;\n }\n this.bits = bits;\n this.size = size;\n this.unused = unused;\n return true;\n }\n get(code, index) {\n return this.codes.get((code << 8) | index);\n }\n}\n\nexport { Dict };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\n/**\n * @module BookStream\n * @see https://github.com/google/dart-gif-encoder\n */\nclass DictStream {\n constructor(dict) {\n this.bits = 0;\n this.buffer = 0;\n this.bytes = [];\n this.dict = dict;\n }\n write(code) {\n let { bits } = this;\n let buffer = this.buffer | (code << bits);\n bits += this.dict.bits;\n const { bytes } = this;\n while (bits >= 8) {\n bytes.push(buffer & 0xff);\n buffer >>= 8;\n bits -= 8;\n }\n this.bits = bits;\n this.buffer = buffer;\n }\n pipe(stream) {\n const { bytes } = this;\n // Add the remaining bits. (Unused bits are set to zero.)\n if (this.bits > 0) {\n bytes.push(this.buffer);\n }\n stream.writeByte(this.dict.depth);\n // Divide it up into blocks with a size in front of each block.\n const { length } = bytes;\n for (let i = 0; i < length;) {\n const remain = length - i;\n if (remain >= 255) {\n stream.writeByte(0xff);\n stream.writeBytes(bytes, i, 255);\n i += 255;\n }\n else {\n stream.writeByte(remain);\n stream.writeBytes(bytes, i, remain);\n i = length;\n }\n }\n stream.writeByte(0);\n }\n}\n\nexport { DictStream };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\nimport { Dict } from './Dict.js';\nimport { DictStream } from './DictStream.js';\n\n/**\n * @module index\n * @see https://github.com/google/dart-gif-encoder\n */\nfunction compress(pixels, depth, stream) {\n const dict = new Dict(depth);\n const buffer = new DictStream(dict);\n buffer.write(dict.bof);\n if (pixels.length > 0) {\n let code = pixels[0];\n const { length } = pixels;\n for (let i = 1; i < length; i++) {\n const pixelIndex = pixels[i];\n const nextCode = dict.get(code, pixelIndex);\n if (nextCode != null) {\n code = nextCode;\n }\n else {\n buffer.write(code);\n // Reset dict when full\n if (!dict.add(code, pixelIndex)) {\n buffer.write(dict.bof);\n dict.reset();\n }\n code = pixelIndex;\n }\n }\n buffer.write(code);\n }\n buffer.write(dict.eof);\n buffer.pipe(stream);\n}\n\nexport { compress };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\n/**\n * @module ByteStream\n */\nclass ByteStream {\n constructor() {\n this.bytes = [];\n }\n writeByte(value) {\n this.bytes.push(value & 0xff);\n }\n writeInt16(value) {\n this.bytes.push(value & 0xff, (value >> 8) & 0xff);\n }\n writeBytes(bytes, offset = 0, length = bytes.length) {\n const buffer = this.bytes;\n for (let i = 0; i < length; i++) {\n buffer.push(bytes[offset + i] & 0xff);\n }\n }\n}\n\nexport { ByteStream };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\nimport { ByteStream } from './ByteStream.js';\n\n/**\n * @module Base64Stream\n */\nconst { fromCharCode } = String;\nfunction encode(byte) {\n byte &= 0x3f;\n if (byte >= 0) {\n if (byte < 26) {\n // A\n return 0x41 + byte;\n }\n else if (byte < 52) {\n // a\n return 0x61 + (byte - 26);\n }\n else if (byte < 62) {\n // 0\n return 0x30 + (byte - 52);\n }\n else if (byte === 62) {\n // +\n return 0x2b;\n }\n else if (byte === 63) {\n // /\n return 0x2f;\n }\n }\n throw new Error(`illegal char: ${fromCharCode(byte)}`);\n}\nclass Base64Stream {\n constructor() {\n this.bits = 0;\n this.buffer = 0;\n this.length = 0;\n this.stream = new ByteStream();\n }\n get bytes() {\n return this.stream.bytes;\n }\n write(byte) {\n let bits = this.bits + 8;\n const { stream } = this;\n const buffer = (this.buffer << 8) | (byte & 0xff);\n while (bits >= 6) {\n stream.writeByte(encode(buffer >>> (bits - 6)));\n bits -= 6;\n }\n this.length++;\n this.bits = bits;\n this.buffer = buffer;\n }\n close() {\n const { bits, stream, length } = this;\n if (bits > 0) {\n stream.writeByte(encode(this.buffer << (6 - bits)));\n this.bits = 0;\n this.buffer = 0;\n }\n if (length % 3 != 0) {\n // Padding\n const pad = 3 - (length % 3);\n for (let i = 0; i < pad; i++) {\n // =\n stream.writeByte(0x3d);\n }\n }\n }\n}\n\nexport { Base64Stream, fromCharCode };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\nimport { compress } from './lzw/index.js';\nimport { ByteStream } from './ByteStream.js';\nimport { fromCharCode, Base64Stream } from './Base64Stream.js';\n\n/**\n * @module index\n */\nclass GIFImage {\n constructor(width, height, { foreground = [0x00, 0x00, 0x00], background = [0xff, 0xff, 0xff] } = {}) {\n this.pixels = [];\n this.width = width;\n this.height = height;\n this.foreground = foreground;\n this.background = background;\n }\n encodeImpl() {\n const stream = new ByteStream();\n const { width, height, background, foreground } = this;\n // GIF signature: GIF89a\n stream.writeBytes([0x47, 0x49, 0x46, 0x38, 0x39, 0x61]);\n // Logical screen descriptor\n stream.writeInt16(width);\n stream.writeInt16(height);\n stream.writeBytes([0x80, 0, 0]);\n // Global background color palette\n stream.writeBytes([background[0], background[1], background[2]]);\n // Global background color palette\n stream.writeBytes([foreground[0], foreground[1], foreground[2]]);\n // Image descriptor\n stream.writeByte(0x2c);\n stream.writeInt16(0);\n stream.writeInt16(0);\n stream.writeInt16(width);\n stream.writeInt16(height);\n stream.writeByte(0);\n compress(this.pixels, 2, stream);\n // GIF terminator\n stream.writeByte(0x3b);\n return stream.bytes;\n }\n set(x, y, color) {\n this.pixels[y * this.width + x] = color;\n }\n toDataURL() {\n const bytes = this.encodeImpl();\n const stream = new Base64Stream();\n for (const byte of bytes) {\n stream.write(byte);\n }\n stream.close();\n const base64 = stream.bytes;\n let url = 'data:image/gif;base64,';\n for (const byte of base64) {\n url += fromCharCode(byte);\n }\n return url;\n }\n}\n\nexport { GIFImage };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\n/**\n * @module MaskPattern\n * @author nuintun\n * @author Cosmo Wolfe\n * @author Kazuhiko Arase\n */\nfunction getMaskFunc(maskPattern) {\n switch (maskPattern) {\n case 0 /* MaskPattern.PATTERN000 */:\n return (x, y) => ((x + y) & 0x1) === 0;\n case 1 /* MaskPattern.PATTERN001 */:\n return (_x, y) => (y & 0x1) === 0;\n case 2 /* MaskPattern.PATTERN010 */:\n return (x, _y) => x % 3 === 0;\n case 3 /* MaskPattern.PATTERN011 */:\n return (x, y) => (x + y) % 3 === 0;\n case 4 /* MaskPattern.PATTERN100 */:\n return (x, y) => ((((x / 3) >> 0) + ((y / 2) >> 0)) & 0x1) === 0;\n case 5 /* MaskPattern.PATTERN101 */:\n return (x, y) => ((x * y) & 0x1) + ((x * y) % 3) === 0;\n case 6 /* MaskPattern.PATTERN110 */:\n return (x, y) => ((((x * y) & 0x1) + ((x * y) % 3)) & 0x1) === 0;\n case 7 /* MaskPattern.PATTERN111 */:\n return (x, y) => ((((x * y) % 3) + ((x + y) & 0x1)) & 0x1) === 0;\n default:\n throw new Error(`illegal mask: ${maskPattern}`);\n }\n}\n\nexport { getMaskFunc };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\nimport { QRByte } from './QRByte.js';\nimport { QRData } from './QRData.js';\nimport { getAlignmentPattern, getBCHVersion, calculateMaskPenalty, getErrorCorrectionPolynomial, getBCHVersionInfo } from './QRUtil.js';\nimport { RSBlock } from './RSBlock.js';\nimport { BitBuffer } from './BitBuffer.js';\nimport { Polynomial } from './Polynomial.js';\nimport { Mode } from '../common/Mode.js';\nimport { GIFImage } from '../../image/GIFImage.js';\nimport { getMaskFunc } from '../common/MaskPattern.js';\nimport { ErrorCorrectionLevel } from '../common/ErrorCorrectionLevel.js';\n\n/**\n * @module QRCode\n * @author nuintun\n * @author Kazuhiko Arase\n */\nconst PAD0 = 0xec;\nconst PAD1 = 0x11;\nconst { toString } = Object.prototype;\n/**\n * @function appendECI\n * @param {number} encoding\n * @param {BitBuffer} buffer\n * @see https://github.com/nayuki/QR-Code-generator/blob/master/typescript-javascript/qrcodegen.ts\n * @see https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/qrcode/encoder/Encoder.java\n */\nfunction appendECI(encoding, buffer) {\n if (encoding < 0 || encoding >= 1000000) {\n throw new Error('byte mode encoding hint out of range');\n }\n buffer.put(Mode.ECI, 4);\n if (encoding < 1 << 7) {\n buffer.put(encoding, 8);\n }\n else if (encoding < 1 << 14) {\n buffer.put(2, 2);\n buffer.put(encoding, 14);\n }\n else {\n buffer.put(6, 3);\n buffer.put(encoding, 21);\n }\n}\nfunction prepareData(version, errorCorrectionLevel, encodingHint, chunks) {\n const buffer = new BitBuffer();\n const rsBlocks = RSBlock.getRSBlocks(version, errorCorrectionLevel);\n for (const data of chunks) {\n const mode = data.mode;\n // Default set encoding UTF-8 when has encoding hint\n if (encodingHint && mode === Mode.Byte) {\n appendECI(data.encoding, buffer);\n }\n buffer.put(mode, 4);\n buffer.put(data.getLength(), data.getLengthInBits(version));\n data.writeTo(buffer);\n }\n // Calc max data count\n let maxDataCount = 0;\n for (const rsBlock of rsBlocks) {\n maxDataCount += rsBlock.getDataCount();\n }\n maxDataCount *= 8;\n return [buffer, rsBlocks, maxDataCount];\n}\nfunction createBytes(buffer, rsBlocks) {\n let offset = 0;\n let maxDcCount = 0;\n let maxEcCount = 0;\n const dcData = [];\n const ecData = [];\n const rsLength = rsBlocks.length;\n const bufferData = buffer.getBuffer();\n for (let r = 0; r < rsLength; r++) {\n const rsBlock = rsBlocks[r];\n const dcCount = rsBlock.getDataCount();\n const ecCount = rsBlock.getTotalCount() - dcCount;\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n dcData[r] = [];\n for (let i = 0; i < dcCount; i++) {\n dcData[r][i] = 0xff & bufferData[i + offset];\n }\n offset += dcCount;\n const rsPoly = getErrorCorrectionPolynomial(ecCount);\n const ecLength = rsPoly.getLength() - 1;\n const rawPoly = new Polynomial(dcData[r], ecLength);\n const modPoly = rawPoly.mod(rsPoly);\n const mpLength = modPoly.getLength();\n ecData[r] = [];\n for (let i = 0; i < ecLength; i++) {\n const modIndex = i + mpLength - ecLength;\n ecData[r][i] = modIndex >= 0 ? modPoly.getAt(modIndex) : 0;\n }\n }\n buffer = new BitBuffer();\n for (let i = 0; i < maxDcCount; i++) {\n for (let r = 0; r < rsLength; r++) {\n if (i < dcData[r].length) {\n buffer.put(dcData[r][i], 8);\n }\n }\n }\n for (let i = 0; i < maxEcCount; i++) {\n for (let r = 0; r < rsLength; r++) {\n if (i < ecData[r].length) {\n buffer.put(ecData[r][i], 8);\n }\n }\n }\n return buffer;\n}\nfunction createData(buffer, rsBlocks, maxDataCount) {\n // End\n if (buffer.getLengthInBits() + 4 <= maxDataCount) {\n buffer.put(0, 4);\n }\n // Padding\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(false);\n }\n // Padding\n while (true) {\n if (buffer.getLengthInBits() >= maxDataCount) {\n break;\n }\n buffer.put(PAD0, 8);\n if (buffer.getLengthInBits() >= maxDataCount) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n return createBytes(buffer, rsBlocks);\n}\nclass Encoder {\n constructor(options = {}) {\n this.matrixSize = 0;\n this.chunks = [];\n this.matrix = [];\n const { version = 0, encodingHint = false, errorCorrectionLevel = ErrorCorrectionLevel.L } = options;\n this.setVersion(version);\n this.setEncodingHint(encodingHint);\n this.setErrorCorrectionLevel(errorCorrectionLevel);\n }\n /**\n * @public\n * @method getMatrix\n * @returns {boolean[][]}\n */\n getMatrix() {\n return this.matrix;\n }\n /**\n * @public\n * @method getMatrixSize\n * @returns {number}\n */\n getMatrixSize() {\n return this.matrixSize;\n }\n /**\n * @public\n * @method getVersion\n * @returns {number}\n */\n getVersion() {\n return this.version;\n }\n /**\n * @public\n * @method setVersion\n * @param {number} version\n * @returns {Encoder}\n */\n setVersion(version) {\n this.version = Math.min(40, Math.max(0, version >> 0));\n this.auto = this.version === 0;\n return this;\n }\n /**\n * @public\n * @method getErrorCorrectionLevel\n * @returns {ErrorCorrectionLevel}\n */\n getErrorCorrectionLevel() {\n return this.errorCorrectionLevel;\n }\n /**\n * @public\n * @method setErrorCorrectionLevel\n * @param {ErrorCorrectionLevel} errorCorrectionLevel\n */\n setErrorCorrectionLevel(errorCorrectionLevel) {\n switch (errorCorrectionLevel) {\n case ErrorCorrectionLevel.L:\n case ErrorCorrectionLevel.M:\n case ErrorCorrectionLevel.Q:\n case ErrorCorrectionLevel.H:\n this.errorCorrectionLevel = errorCorrectionLevel;\n }\n return this;\n }\n /**\n * @public\n * @method getEncodingHint\n * @returns {boolean}\n */\n getEncodingHint() {\n return this.encodingHint;\n }\n /**\n * @public\n * @method setEncodingHint\n * @param {boolean} encodingHint\n * @returns {Encoder}\n */\n setEncodingHint(encodingHint) {\n this.encodingHint = encodingHint;\n return this;\n }\n /**\n * @public\n * @method write\n * @param {QRData} data\n * @returns {Encoder}\n */\n write(data) {\n const { chunks } = this;\n if (data instanceof QRData) {\n chunks.push(data);\n }\n else {\n const type = toString.call(data);\n if (type === '[object String]') {\n chunks.push(new QRByte(data));\n }\n else {\n throw new Error(`illegal data: ${data}`);\n }\n }\n return this;\n }\n /**\n * @public\n * @method isDark\n * @param {number} row\n * @param {number} col\n * @returns {boolean}\n */\n isDark(row, col) {\n return this.matrix[row][col] === true;\n }\n setupFinderPattern(row, col) {\n const { matrix } = this;\n const matrixSize = this.matrixSize;\n for (let r = -1; r <= 7; r++) {\n for (let c = -1; c <= 7; c++) {\n if (row + r <= -1 || matrixSize <= row + r || col + c <= -1 || matrixSize <= col + c) {\n continue;\n }\n if ((0 <= r && r <= 6 && (c === 0 || c === 6)) ||\n (0 <= c && c <= 6 && (r === 0 || r === 6)) ||\n (2 <= r && r <= 4 && 2 <= c && c <= 4)) {\n matrix[row + r][col + c] = true;\n }\n else {\n matrix[row + r][col + c] = false;\n }\n }\n }\n }\n setupAlignmentPattern() {\n const { matrix } = this;\n const pos = getAlignmentPattern(this.version);\n const { length } = pos;\n for (let i = 0; i < length; i++) {\n for (let j = 0; j < length; j++) {\n const row = pos[i];\n const col = pos[j];\n if (matrix[row][col] !== null) {\n continue;\n }\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 || (r === 0 && c === 0)) {\n matrix[row + r][col + c] = true;\n }\n else {\n matrix[row + r][col + c] = false;\n }\n }\n }\n }\n }\n }\n setupTimingPattern() {\n const { matrix } = this;\n const count = this.matrixSize - 8;\n for (let i = 8; i < count; i++) {\n const bit = i % 2 === 0;\n // vertical\n if (matrix[i][6] === null) {\n matrix[i][6] = bit;\n }\n // horizontal\n if (matrix[6][i] === null) {\n matrix[6][i] = bit;\n }\n }\n }\n setupFormatInfo(maskPattern) {\n const { matrix } = this;\n const data = (this.errorCorrectionLevel << 3) | maskPattern;\n const bits = getBCHVersionInfo(data);\n const matrixSize = this.matrixSize;\n for (let i = 0; i < 15; i++) {\n const bit = ((bits >> i) & 1) === 1;\n // Vertical\n if (i < 6) {\n matrix[i][8] = bit;\n }\n else if (i < 8) {\n matrix[i + 1][8] = bit;\n }\n else {\n matrix[matrixSize - 15 + i][8] = bit;\n }\n // Horizontal\n if (i < 8) {\n matrix[8][matrixSize - i - 1] = bit;\n }\n else if (i < 9) {\n matrix[8][15 - i - 1 + 1] = bit;\n }\n else {\n matrix[8][15 - i - 1] = bit;\n }\n }\n // Fixed point\n matrix[matrixSize - 8][8] = true;\n }\n setupVersionInfo() {\n if (this.version >= 7) {\n const { matrix } = this;\n const matrixSize = this.matrixSize;\n const bits = getBCHVersion(this.version);\n for (let i = 0; i < 18; i++) {\n const bit = ((bits >> i) & 1) === 1;\n matrix[(i / 3) >> 0][(i % 3) + matrixSize - 8 - 3] = bit;\n matrix[(i % 3) + matrixSize - 8 - 3][(i / 3) >> 0] = bit;\n }\n }\n }\n setupCodewords(data, maskPattern) {\n const { matrix } = this;\n const matrixSize = this.matrixSize;\n const bitLength = data.getLengthInBits();\n const maskFunc = getMaskFunc(maskPattern);\n // Bit index into the data\n let bitIndex = 0;\n // Do the funny zigzag scan\n for (let right = matrixSize - 1; right >= 1; right -= 2) {\n // Index of right column in each column pair\n if (right === 6) {\n right = 5;\n }\n for (let vert = 0; vert < matrixSize; vert++) {\n // Vertical counter\n for (let j = 0; j < 2; j++) {\n // Actual x coordinate\n const x = right - j;\n const upward = ((right + 1) & 2) === 0;\n // Actual y coordinate\n const y = upward ? matrixSize - 1 - vert : vert;\n if (matrix[y][x] !== null) {\n continue;\n }\n let bit = false;\n if (bitIndex < bitLength) {\n bit = data.getBit(bitIndex++);\n }\n const invert = maskFunc(x, y);\n if (invert) {\n bit = !bit;\n }\n matrix[y][x] = bit;\n }\n }\n }\n }\n buildMatrix(data, maskPattern) {\n // Initialize matrix\n const matrix = [];\n const matrixSize = this.matrixSize;\n for (let row = 0; row < matrixSize; row++) {\n matrix[row] = [];\n for (let col = 0; col < matrixSize; col++) {\n matrix[row][col] = null;\n }\n }\n this.matrix = matrix;\n // Setup finder pattern\n this.setupFinderPattern(0, 0);\n this.setupFinderPattern(matrixSize - 7, 0);\n this.setupFinderPattern(0, matrixSize - 7);\n // Setup alignment pattern\n this.setupAlignmentPattern();\n // Setup timing pattern\n this.setupTimingPattern();\n // Setup format info\n this.setupFormatInfo(maskPattern);\n // Setup version info\n this.setupVersionInfo();\n // Setup codewords\n this.setupCodewords(data, maskPattern);\n }\n /**\n * @public\n * @method make\n * @returns {Encoder}\n */\n make() {\n let buffer;\n let rsBlocks;\n let maxDataCount;\n const { chunks, errorCorrectionLevel } = this;\n if (this.auto) {\n let version = 1;\n for (; version <= 40; version++) {\n [buffer, rsBlocks, maxDataCount] = prepareData(version, errorCorrectionLevel, this.encodingHint, chunks);\n if (buffer.getLengthInBits() <= maxDataCount)\n break;\n }\n const dataLengthInBits = buffer.getLengthInBits();\n if (dataLengthInBits > maxDataCount) {\n throw new Error(`data overflow: ${dataLengthInBits} > ${maxDataCount}`);\n }\n this.version = version;\n }\n else {\n [buffer, rsBlocks, maxDataCount] = prepareData(this.version, errorCorrectionLevel, this.encodingHint, chunks);\n }\n // Calc module count\n this.matrixSize = this.version * 4 + 17;\n const matrices = [];\n const data = createData(buffer, rsBlocks, maxDataCount);\n let bestMaskPattern = -1;\n let minPenalty = Number.MAX_VALUE;\n // Choose best mask pattern\n for (let maskPattern = 0; maskPattern < 8; maskPattern++) {\n this.buildMatrix(data, maskPattern);\n matrices.push(this.matrix);\n const penalty = calculateMaskPenalty(this);\n if (penalty < minPenalty) {\n minPenalty = penalty;\n bestMaskPattern = maskPattern;\n }\n }\n this.matrix = matrices[bestMaskPattern];\n return this;\n }\n /**\n * @public\n * @method toDataURL\n * @param {number} moduleSize\n * @param {number} margin\n * @returns {string}\n */\n toDataURL(moduleSize = 2, margin = moduleSize * 4, colors) {\n moduleSize = Math.max(1, moduleSize >> 0);\n margin = Math.max(0, margin >> 0);\n const matrixSize = this.matrixSize;\n const size = moduleSize * matrixSize + margin * 2;\n const min = margin;\n const max = size - margin;\n const gif = new GIFImage(size, size, colors);\n for (let y = 0; y < size; y++) {\n for (let x = 0; x < size; x++) {\n if (min <= x && x < max && min <= y && y < max) {\n const row = ((y - min) / moduleSize) >> 0;\n const col = ((x - min) / moduleSize) >> 0;\n gif.set(x, y, this.isDark(row, col) ? 1 : 0);\n }\n else {\n gif.set(x, y, 0);\n }\n }\n }\n return gif.toDataURL();\n }\n /**\n * @public\n * @method clear\n */\n clear() {\n this.chunks = [];\n }\n}\n\nexport { Encoder };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\n/**\n * @module UTF16\n * @author nuintun\n */\n/**\n * @function encode\n * @param {string} text\n * @returns {number[]}\n */\nfunction encode(text) {\n const { length } = text;\n const bytes = [];\n for (let i = 0; i < length; i++) {\n bytes.push(text.charCodeAt(i));\n }\n return bytes;\n}\n\nexport { encode };\n", "/**\n * @module QRCode\n * @package @nuintun/qrcode\n * @license MIT\n * @version 3.4.0\n * @author nuintun <nuintun@qq.com>\n * @description A pure JavaScript QRCode encode and decode library.\n * @see https://github.com/nuintun/qrcode#readme\n */\n\nimport { QRData } from './QRData.js';\nimport { encode } from '../../encoding/UTF16.js';\nimport { Mode } from '../common/Mode.js';\n\n/**\n * @module QRAlphanumeric\n * @author nuintun\n * @author Kazuhiko Arase\n */\nfunction getByte(byte) {\n if (0x30 <= byte && byte <= 0x39) {\n // 0 - 9\n return byte - 0x30;\n }\n else if (0x41 <= byte && byte <= 0x5a) {\n // A - Z\n return byte - 0x41 + 10;\n }\n else {\n switch (byte) {\n // space\n case 0x20:\n return 36;\n // $\n case 0x24:\n return 37;\n // %\n case 0x25:\n return 38;\n // *\n case 0x2a:\n return 39;\n // +\n case 0x2b:\n return 40;\n // -\n case 0x2d:\n return 41;\n // .\n case 0x2e:\n return 42;\n // /\n case 0x2f:\n return 43;\n // :\n case 0x3a:\n return 44;\n default:\n throw new Error(`illegal char: ${String.fromCharCode(byte)}`);\n }\n }\n}\nclass QRAlphanumeric extends QRData {\n /**\n * @constructor\n * @param {string} data\n */\n constructor(data) {\n super(Mode.Alphanumeric, data);\n this.bytes = encode(data);\n }\n /**\n * @public\n * @method writeTo\n * @param {BitBuffer} buffer\n */\n writeTo(buffer) {\n let i = 0;\n const { bytes } = this;\n const { length } = bytes;\n while (i + 1 < length) {\n buffer.put(getByte(bytes[i]) * 45 + getByte(bytes[i + 1]), 11);\n i += 2;\n }\n if (i < length) {\n buffer.put(getByte(bytes[i]), 6);\n }\n }\n}\n\nexport { QRAlphanumeric };\n", "import { toQrCode, fromQrCode } from '@digitalbazaar/vpqr';\n\nimport { VpqrPlugin, VpqrPluginDependentMethods } from './types';\nimport { LearnCard } from '@learncard/core';\n\nexport * from './types';\n\n/**\n * @group Plugins\n */\nexport const getVpqrPlugin = (\n learnCard: LearnCard<any, any, VpqrPluginDependentMethods>\n): VpqrPlugin => {\n return {\n name: 'Vpqr',\n displayName: 'VP QR',\n description: 'Allows reading and creating QR codes with Verifiable Presentations in them',\n methods: {\n vpFromQrCode: async (_learnCard, text) => {\n return (\n await fromQrCode({\n text,\n documentLoader: async (url: string) => ({\n document: await learnCard.invoke.contextLoader(url),\n }),\n })\n )?.vp;\n },\n vpToQrCode: async (_learnCard, vp) => {\n return (\n await toQrCode({\n vp,\n documentLoader: async (url: string) => ({\n document: await learnCard.invoke.contextLoader(url),\n }),\n })\n )?.imageDataUrl;\n },\n },\n };\n};\n"],
|
5
5
|
"mappings": "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",
|
6
6
|
"names": ["RFC4648", "RFC4648_HEX", "CROCKFORD", "alphabet", "base32Decode", "isBuffer", "buf", "isBuffer", "buf", "buf", "encodedSize", "buf", "encodedSize", "compareTokens", "buf", "encodedSize", "compareTokens", "toToken", "toToken", "buf", "encodedSize", "toToken", "buf", "encodedSize", "buf", "encodedSize", "buf", "encodedSize", "ui8a", "buf", "encode", "decode", "encode", "alphabet", "decode", "encode", "decode", "buffer", "encode", "value", "encode", "transformMap", "value", "decode", "buffer", "decode", "decode", "expectedDate", "CONTEXT_TERM_ID", "CONTEXT_TERM_ID_PLURAL", "typeEncoders", "value", "encode", "alphabet", "Mode", "version", "encode", "encode", "buffer", "version", "ErrorCorrectionLevel", "version", "buffer", "buffer", "buffer", "buffer", "encode", "buffer", "toString", "buffer", "version", "encode", "encode", "buffer", "encode", "version", "base32Decode", "decode"]
|