@powerhousedao/connect 4.1.0-dev.7 → 4.1.0-dev.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AddDriveModal.DjVVMHtE.js → AddDriveModal.BQ3AxW6j.js} +2 -2
- package/dist/assets/{AddDriveModal.DjVVMHtE.js.map → AddDriveModal.BQ3AxW6j.js.map} +1 -1
- package/dist/assets/{AddRemoteDriveModal.wpR-Y-Fy.js → AddRemoteDriveModal.C37zccm4.js} +2 -2
- package/dist/assets/{AddRemoteDriveModal.wpR-Y-Fy.js.map → AddRemoteDriveModal.C37zccm4.js.map} +1 -1
- package/dist/assets/{CookiesPolicyModal.DSQvOi9a.js → CookiesPolicyModal.BWl3HWrR.js} +2 -2
- package/dist/assets/{CookiesPolicyModal.DSQvOi9a.js.map → CookiesPolicyModal.BWl3HWrR.js.map} +1 -1
- package/dist/assets/{CreateDocumentModal.B_4j_glA.js → CreateDocumentModal.IufC3vcb.js} +2 -2
- package/dist/assets/{CreateDocumentModal.B_4j_glA.js.map → CreateDocumentModal.IufC3vcb.js.map} +1 -1
- package/dist/assets/{DebugSettingsModal.DgXBnTEp.js → DebugSettingsModal.N5kUhVbC.js} +2 -2
- package/dist/assets/{DebugSettingsModal.DgXBnTEp.js.map → DebugSettingsModal.N5kUhVbC.js.map} +1 -1
- package/dist/assets/{DeleteDriveModal.B6Rq7ino.js → DeleteDriveModal.Dwp4Rlo3.js} +2 -2
- package/dist/assets/{DeleteDriveModal.B6Rq7ino.js.map → DeleteDriveModal.Dwp4Rlo3.js.map} +1 -1
- package/dist/assets/{DeleteItemModal.COOW87mk.js → DeleteItemModal.DtjxLxof.js} +2 -2
- package/dist/assets/{DeleteItemModal.COOW87mk.js.map → DeleteItemModal.DtjxLxof.js.map} +1 -1
- package/dist/assets/{DisclaimerModal.DtV1HGgU.js → DisclaimerModal.BIu5Iwo0.js} +2 -2
- package/dist/assets/{DisclaimerModal.DtV1HGgU.js.map → DisclaimerModal.BIu5Iwo0.js.map} +1 -1
- package/dist/assets/{DriveSettingsModal.DK-386do.js → DriveSettingsModal.CvpE8cJD.js} +2 -2
- package/dist/assets/{DriveSettingsModal.DK-386do.js.map → DriveSettingsModal.CvpE8cJD.js.map} +1 -1
- package/dist/assets/{SettingsModal.C1DqIkG4.js → SettingsModal.C9kmlJZN.js} +2 -2
- package/dist/assets/{SettingsModal.C1DqIkG4.js.map → SettingsModal.C9kmlJZN.js.map} +1 -1
- package/dist/assets/{Trans.Bl9c9KYm.js → Trans.BC7VAl8D.js} +2 -2
- package/dist/assets/{Trans.Bl9c9KYm.js.map → Trans.BC7VAl8D.js.map} +1 -1
- package/dist/assets/{UpgradeDriveModal.CKaXHT7Q.js → UpgradeDriveModal.Bw95WFoY.js} +2 -2
- package/dist/assets/{UpgradeDriveModal.CKaXHT7Q.js.map → UpgradeDriveModal.Bw95WFoY.js.map} +1 -1
- package/dist/assets/{atlas-import.hcs-cUp6.js → atlas-import.By-DQZoa.js} +2 -2
- package/dist/assets/{atlas-import.hcs-cUp6.js.map → atlas-import.By-DQZoa.js.map} +1 -1
- package/dist/assets/{content.DyHyjmCI.js → content.C9_QEwbp.js} +3 -3
- package/dist/assets/{content.DyHyjmCI.js.map → content.C9_QEwbp.js.map} +1 -1
- package/dist/assets/{cookie-banner.DXIsH7kn.js → cookie-banner.CApoHhzk.js} +2 -2
- package/dist/assets/{cookie-banner.DXIsH7kn.js.map → cookie-banner.CApoHhzk.js.map} +1 -1
- package/dist/assets/{index.D-jzcXIZ.js → index.BbzT-Ix3.js} +2 -2
- package/dist/assets/{index.D-jzcXIZ.js.map → index.BbzT-Ix3.js.map} +1 -1
- package/dist/assets/{index.DvBnyD8e.js → index.ByrvJSkp.js} +2 -2
- package/dist/assets/{index.DvBnyD8e.js.map → index.ByrvJSkp.js.map} +1 -1
- package/dist/assets/{index.AZjpWAnF.js → index.C9DqZU_M.js} +2 -2
- package/dist/assets/{index.AZjpWAnF.js.map → index.C9DqZU_M.js.map} +1 -1
- package/dist/assets/{index.BpG7SKUK.js → index.CLkEmvO5.js} +2 -2
- package/dist/assets/{index.BpG7SKUK.js.map → index.CLkEmvO5.js.map} +1 -1
- package/dist/assets/{index.CAcQolq2.js → index.CkH9Eedx.js} +2 -2
- package/dist/assets/{index.CAcQolq2.js.map → index.CkH9Eedx.js.map} +1 -1
- package/dist/assets/{index.Ch_ELz2I.js → index.DXz-dnzF.js} +5 -5
- package/dist/assets/{index.Ch_ELz2I.js.map → index.DXz-dnzF.js.map} +1 -1
- package/dist/assets/{index.EiWPM99y.js → index.HS9QQAvT.js} +2 -2
- package/dist/assets/{index.EiWPM99y.js.map → index.HS9QQAvT.js.map} +1 -1
- package/dist/assets/{index.DXXMr-Hh.js → index.ix7EA-Vj.js} +2 -2
- package/dist/assets/{index.DXXMr-Hh.js.map → index.ix7EA-Vj.js.map} +1 -1
- package/dist/assets/{main.D1uLlehN.js → main.DbuaFs0F.js} +3 -3
- package/dist/assets/{main.D1uLlehN.js.map → main.DbuaFs0F.js.map} +1 -1
- package/dist/assets/{modal.CWoim6cq.js → modal.CWG-LTra.js} +3 -3
- package/dist/assets/{modal.CWoim6cq.js.map → modal.CWG-LTra.js.map} +1 -1
- package/dist/assets/{modals.DI4FGCi-.js → modals.awl4Vk7d.js} +2 -2
- package/dist/assets/{modals.DI4FGCi-.js.map → modals.awl4Vk7d.js.map} +1 -1
- package/dist/assets/{nodefs.BfWABIH3.js → nodefs.BoMPICt3.js} +2 -2
- package/dist/assets/{nodefs.BfWABIH3.js.map → nodefs.BoMPICt3.js.map} +1 -1
- package/dist/assets/{nodes.m3ahoT3e.js → nodes.lrGFynf0.js} +2 -2
- package/dist/assets/{nodes.m3ahoT3e.js.map → nodes.lrGFynf0.js.map} +1 -1
- package/dist/assets/{opfs-ahp.C6-LErQ6.js → opfs-ahp.CYQfyahd.js} +2 -2
- package/dist/assets/{opfs-ahp.C6-LErQ6.js.map → opfs-ahp.CYQfyahd.js.map} +1 -1
- package/dist/assets/{registerServiceWorker.XhPO3sW3.js → registerServiceWorker.CRB2aHx-.js} +2 -2
- package/dist/assets/{registerServiceWorker.XhPO3sW3.js.map → registerServiceWorker.CRB2aHx-.js.map} +1 -1
- package/dist/assets/{root.Dmvh1GJt.js → root.b_2XiR2e.js} +2 -2
- package/dist/assets/{root.Dmvh1GJt.js.map → root.b_2XiR2e.js.map} +1 -1
- package/dist/assets/{useAcceptedCookies.DCBDqbse.js → useAcceptedCookies.D4QqDJFI.js} +2 -2
- package/dist/assets/{useAcceptedCookies.DCBDqbse.js.map → useAcceptedCookies.D4QqDJFI.js.map} +1 -1
- package/dist/assets/useDefaultDocumentModelEditor.CIPcz_de.js +2 -0
- package/dist/assets/{useDefaultDocumentModelEditor.CFUofJIJ.js.map → useDefaultDocumentModelEditor.CIPcz_de.js.map} +1 -1
- package/dist/assets/{useInitSentry.Cjdo2kG5.js → useInitSentry.SdOln5Jn.js} +6 -6
- package/dist/assets/{useInitSentry.Cjdo2kG5.js.map → useInitSentry.SdOln5Jn.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/vite-envs.sh +1 -1
- package/package.json +10 -10
- package/dist/assets/useDefaultDocumentModelEditor.CFUofJIJ.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"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,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,YAAa,MACb,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAA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","names":["RENOWN_NETWORK_ID","RENOWN_CHAIN_ID","asUint8Array","buf","allocUnsafe","size","concat","arrays","length","acc","curr","output","offset","arr","base","ALPHABET","name","BASE_MAP","j","i","x","xc","BASE","LEADER","FACTOR","iFACTOR","encode","source","zeroes","pbegin","pend","b58","carry","it1","it2","str","decodeUnsafe","psz","b256","it3","it4","vch","decode","string","buffer","src","_brrp__multiformats_scope_baseX","empty","toHex","d","hex","byte","fromHex","hexes","b","equals","aa","bb","ii","coerce","o","isBinary","fromString","toString","Encoder$1","prefix","baseEncode","bytes","Decoder$1","baseDecode","text","decoder","or","ComposedDecoder$1","decoders","input","left","right","ComposedDecoder","Codec$1","Encoder","Decoder","from","Codec","baseX","alphabet","basex","bitsPerChar","codes","end","out","bits","written","value","data","pad","mask","rfc4648","identity","base2","base8","base10","base16","base16upper","base32","base32upper","base32pad","base32padupper","base32hex","base32hexupper","base32hexpad","base32hexpadupper","base32z","base36","base36upper","base58btc","base58flickr","base64","base64pad","base64url","base64urlpad","alphabetBytesToChars","p","c","alphabetCharsToBytes","byts","char","byt","base256emoji","encode_1","MSB","MSBALL","INT","num","oldOffset","read","MSB$1","REST$1","res","shift","counter","l","N1","N2","N3","N4","N5","N6","N7","N8","N9","varint","_brrp_varint","encodeTo","int","target","encodingLength","create","code","digest","sizeOffset","varint.encodingLength","digestOffset","varint.encodeTo","Digest","multihash","varint.decode","a","equalBytes","Hasher","result","Digest.create","sha","sha256","sha512","node","textEncoder","textDecoder","CID","version","hidden","readonly","DAG_PB_CODE","SHA_256_CODE","other","Digest.equals","_baseCache","toStringV0","toStringV1","deprecate","IS_CID_DEPRECATION","cidSymbol","encodeCID","Digest.decode","cid","remainder","specs","prefixSize","multihashBytes","digestBytes","Digest.Digest","initialBytes","next","codec","multihashCode","digestSize","multihashSize","parseCIDtoBytes","cache","codeOffset","hashOffset","range","message","bases","identityBase","base58","hashes","sha2","codecs","raw","json","createCodec","ascii","BASES","encoding","array","canonicalize","serialize","object","t","cv","ci","comma","__publicField","prefixCodePoint","alphabetIdx","createAlphabetIdx","codePoint","REST","require$$0","require$$1","require$$2","u8a","bytesToBase64url","base64ToBytes","s","inputBase64Url","encodeBase64url","bytesToHex","toJose","r","recoveryParam","recoverable","jose","fromJose","signature","signatureBytes","instanceOfEcdsaSignature","ES256SignerAlg","payload","signer","e","ES256KSignerAlg","Ed25519SignerAlg","algorithms$1","SignerAlg","alg","impl","_settle$1","pact","state","_Pact$1","observer","_Pact","onFulfilled","onRejected","callback","_this","_isSettledPact$1","thenable","_forTo$1","body","check","reject","_cycle","createMultisignatureJWT","expiresIn","issuers","payloadResult","jwt","_temp","issuer","header","createJWT","_createJWT","timestamps","fullPayload","createJWS","options","defaultAlg","encodedPayload","encodeSection","signingInput","jwtSigner","shouldCanonicalize","canonicalizeData","JWT_ALG","DEFAULT_CONTEXT","DEFAULT_VC_TYPE","additionalPropNames","asArray","arg","deepCopy","item","prop","notEmpty","transformCredentialInput","removeOriginalFields","credentialSubject","_a","_b","contextEntries","_c","types","_d","converted","_e","VC_ERROR","isDateObject","validateTimestamp","validateContext","validateVcType","validateCredentialSubject","createVerifiableCredentialJwt","parsedPayload","validateJwtCredentialPayload","did","iss","createAuthBearerToken","chainId","networkId","address","vcPayload","compare","compare_1","concat_1","equals_1","bases_1","fromString_1","toString_1","xor","xor_1","uint8arrays","require$$3","require$$4","require$$5","uint8ArrayToString","uint8ArrayFromString","util","numberToUint8Array","uint8ArrayToNumber","varintUint8ArrayEncode","varintEncode","hexString","generatedTable","baseTable","nameToVarint","constantToCode","codeToName","codecName","constant","nameToCode","maps","uint8ArrayConcat","addPrefix","multicodecStrOrCode","rmPrefix","getNameFromData","prefixedData","getNameFromCode","getCodeFromName","getCodeFromData","getVarintFromName","getVarintFromCode","getCodec","getName","getNumber","getCode","getCodeVarint","getVarint","ECPointCompress","y","compressedKeyInHexfromRaw","publicKeyHex","xHex","yHex","xOctet","u8a.fromString","yOctet","compressedPoint","u8a.toString","rawKeyInHexfromUncompressed","encodeDIDfromHexString","multicodecName","publicKey","encodeDIDfromBytes","publicKeywPrefix","multicodec","_BrowserKeyStorage","__privateAdd","_BrowserKeyStorage_instances","_db","__privateSet","resolve","req","__privateGet","_DB_NAME","_STORE_NAME","keyPair","request","__privateMethod","useStore_fn","_KEY","mode","BrowserKeyStorage","logger","childLogger","ab2hex","ab","_ConnectCrypto","keyPairStorage","_ConnectCrypto_instances","_subtleCrypto","_keyPair","_keyPairStorage","_did","_bearerToken","_sign","args","_verify","initCrypto_fn","initialize_fn","driveUrl","refresh","generateECDSAKeyPair_fn","exportKeyPair_fn","dataBytes","stringToBytes_fn","arrayBuffer","__vitePreload","module","loadedKeyPair","importKeyPair_fn","parseDid_fn","publicKeyRaw","rawKey","compressedKey","subtleCrypto","jwkKeyPair","ConnectCrypto"],"ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,55,56,57,58,59,60,61,62,63,64,65,66,67,68],"sources":["../../../../packages/reactor-browser/dist/src/renown/constants.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/util/as-uint8array.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/alloc.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/concat.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/vendor/base-x.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bytes.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/identity.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base2.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base8.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base10.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base16.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base32.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base36.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base58.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base64.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base256emoji.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/vendor/varint.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/varint.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/digest.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/hasher.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/sha2-browser.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/identity.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/codecs/raw.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/codecs/json.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/cid.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/basics.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/util/bases.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/from-string.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/to-string.js","../../../../node_modules/.pnpm/canonicalize@2.1.0/node_modules/canonicalize/lib/canonicalize.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base36.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/.pnpm/uint8arrays@5.1.0/node_modules/uint8arrays/dist/src/alloc.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base10.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base16.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base2.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base256emoji.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base8.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/identity.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/basics.js","../../../../node_modules/.pnpm/uint8arrays@5.1.0/node_modules/uint8arrays/dist/src/util/bases.js","../../../../node_modules/.pnpm/uint8arrays@5.1.0/node_modules/uint8arrays/dist/src/from-string.js","../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/encode.js","../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/decode.js","../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/length.js","../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/index.js","../../../../node_modules/.pnpm/did-jwt@8.0.17/node_modules/did-jwt/lib/index.module.js","../../../../node_modules/.pnpm/did-jwt-vc@4.0.15/node_modules/did-jwt-vc/lib/index.module.js","../../../../packages/renown/dist/src/utils.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/compare.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/concat.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/equals.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/util/bases.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/from-string.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/to-string.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/xor.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/index.js","../../../../node_modules/.pnpm/multicodec@3.2.1/node_modules/multicodec/src/util.js","../../../../node_modules/.pnpm/multicodec@3.2.1/node_modules/multicodec/src/generated-table.js","../../../../node_modules/.pnpm/multicodec@3.2.1/node_modules/multicodec/src/maps.js","../../../../node_modules/.pnpm/multicodec@3.2.1/node_modules/multicodec/src/index.js","../../../../node_modules/.pnpm/did-key-creator@1.2.0/node_modules/did-key-creator/lib/did_key_utils.js","../../../../node_modules/.pnpm/did-key-creator@1.2.0/node_modules/did-key-creator/lib/encodeDIDkey.js","../../src/services/crypto/browser.ts","../../src/services/crypto/index.ts"],"sourcesContent":["export const RENOWN_URL = \"https://auth.renown.id\";\nexport const RENOWN_NETWORK_ID = \"eip155\";\nexport const RENOWN_CHAIN_ID = \"1\";\nexport const DOMAIN_TYPE = [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n];\nexport const VERIFIABLE_CREDENTIAL_EIP712_TYPE = [\n { name: \"@context\", type: \"string[]\" },\n { name: \"type\", type: \"string[]\" },\n { name: \"id\", type: \"string\" },\n { name: \"issuer\", type: \"Issuer\" },\n { name: \"credentialSubject\", type: \"CredentialSubject\" },\n { name: \"credentialSchema\", type: \"CredentialSchema\" },\n { name: \"issuanceDate\", type: \"string\" },\n { name: \"expirationDate\", type: \"string\" },\n];\nexport const CREDENTIAL_SCHEMA_EIP712_TYPE = [\n { name: \"id\", type: \"string\" },\n { name: \"type\", type: \"string\" },\n];\nexport const CREDENTIAL_SUBJECT_TYPE = [\n { name: \"app\", type: \"string\" },\n { name: \"id\", type: \"string\" },\n { name: \"name\", type: \"string\" },\n];\nexport const ISSUER_TYPE = [\n { name: \"id\", type: \"string\" },\n { name: \"ethereumAddress\", type: \"string\" },\n];\nexport const CREDENTIAL_TYPES = {\n EIP712Domain: DOMAIN_TYPE,\n VerifiableCredential: VERIFIABLE_CREDENTIAL_EIP712_TYPE,\n CredentialSchema: CREDENTIAL_SCHEMA_EIP712_TYPE,\n CredentialSubject: CREDENTIAL_SUBJECT_TYPE,\n Issuer: ISSUER_TYPE,\n};\n//# sourceMappingURL=constants.js.map","export function asUint8Array(buf) {\n if (globalThis.Buffer != null) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n return buf;\n}","import { asUint8Array } from './util/as-uint8array.js';\nexport function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return asUint8Array(globalThis.Buffer.alloc(size));\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n }\n return new Uint8Array(size);\n}","import { allocUnsafe } from './alloc.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return asUint8Array(output);\n}","function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256);\n var iFACTOR = Math.log(256) / Math.log(BASE);\n function encode(source) {\n if (source instanceof Uint8Array);\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += 256 * b58[it1] >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = carry / BASE >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += BASE * b256[it3] >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = carry / 256 >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};","import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});","var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;","import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};","import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}","import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}","import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: sha('SHA-512')\n});","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};","import { coerce } from '../bytes.js';\nexport const name = 'raw';\nexport const code = 85;\nexport const encode = node => coerce(node);\nexport const decode = data => coerce(data);","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as varint from './varint.js';\nimport * as Digest from './hashes/digest.js';\nimport { base58btc } from './bases/base58.js';\nimport { base32 } from './bases/base32.js';\nimport { coerce } from './bytes.js';\nexport class CID {\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n this.byteOffset = bytes.byteOffset;\n this.byteLength = bytes.byteLength;\n this.asCID = this;\n this._baseCache = new Map();\n Object.defineProperties(this, {\n byteOffset: hidden,\n byteLength: hidden,\n code: readonly,\n version: readonly,\n multihash: readonly,\n bytes: readonly,\n _baseCache: hidden,\n asCID: hidden\n });\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n default: {\n const {code, multihash} = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return CID.createV0(multihash);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const {code, digest} = this.multihash;\n const multihash = Digest.create(code, digest);\n return CID.createV1(this.code, multihash);\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${ this.version } to version 0. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return other && this.code === other.code && this.version === other.version && Digest.equals(this.multihash, other.multihash);\n }\n toString(base) {\n const {bytes, version, _baseCache} = this;\n switch (version) {\n case 0:\n return toStringV0(bytes, _baseCache, base || base58btc.encoder);\n default:\n return toStringV1(bytes, _baseCache, base || base32.encoder);\n }\n }\n toJSON() {\n return {\n code: this.code,\n version: this.version,\n hash: this.multihash.bytes\n };\n }\n get [Symbol.toStringTag]() {\n return 'CID';\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return 'CID(' + this.toString() + ')';\n }\n static isCID(value) {\n deprecate(/^0\\.0/, IS_CID_DEPRECATION);\n return !!(value && (value[cidSymbol] || value.asCID === value));\n }\n get toBaseEncodedString() {\n throw new Error('Deprecated, use .toString()');\n }\n get codec() {\n throw new Error('\"codec\" property is deprecated, use integer \"code\" property instead');\n }\n get buffer() {\n throw new Error('Deprecated .buffer property, use .bytes to get Uint8Array instead');\n }\n get multibaseName() {\n throw new Error('\"multibaseName\" property is deprecated');\n }\n get prefix() {\n throw new Error('\"prefix\" property is deprecated');\n }\n static asCID(value) {\n if (value instanceof CID) {\n return value;\n } else if (value != null && value.asCID === value) {\n const {version, code, multihash, bytes} = value;\n return new CID(version, code, multihash, bytes || encodeCID(version, code, multihash.bytes));\n } else if (value != null && value[cidSymbol] === true) {\n const {version, multihash, code} = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n } else {\n return null;\n }\n }\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${ DAG_PB_CODE }) block encoding`);\n } else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0 ? CID.createV0(digest) : CID.createV1(specs.codec, digest);\n return [\n cid,\n bytes.subarray(specs.size)\n ];\n }\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n version = 0;\n offset = 0;\n } else if (version === 1) {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${ version }`);\n }\n const prefixSize = offset;\n const multihashCode = next();\n const digestSize = next();\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return {\n version,\n codec,\n multihashCode,\n digestSize,\n multihashSize,\n size\n };\n }\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n cid._baseCache.set(prefix, source);\n return cid;\n }\n}\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n case 'Q': {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${ base58btc.prefix }${ source }`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(source)\n ];\n }\n case base32.prefix: {\n const decoder = base || base32;\n return [\n base32.prefix,\n decoder.decode(source)\n ];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [\n source[0],\n base.decode(source)\n ];\n }\n }\n};\nconst toStringV0 = (bytes, cache, base) => {\n const {prefix} = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${ base.name } encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst toStringV1 = (bytes, cache, base) => {\n const {prefix} = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst DAG_PB_CODE = 112;\nconst SHA_256_CODE = 18;\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n};\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\nconst readonly = {\n writable: false,\n configurable: false,\n enumerable: true\n};\nconst hidden = {\n writable: false,\n enumerable: false,\n configurable: false\n};\nconst version = '0.0.0-dev';\nconst deprecate = (range, message) => {\n if (range.test(version)) {\n console.warn(message);\n } else {\n throw new Error(message);\n }\n};\nconst IS_CID_DEPRECATION = `CID.isCID(v) is deprecated and will be removed in the next major release.\nFollowing code pattern:\n\nif (CID.isCID(value)) {\n doSomethingWithCID(value)\n}\n\nIs replaced with:\n\nconst cid = CID.asCID(value)\nif (cid) {\n // Make sure to use cid instead of value\n doSomethingWithCID(cid)\n}\n`;","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (typeof object === 'number' && isNaN(object)) {\n throw new Error('NaN is not allowed');\n }\n\n if (typeof object === 'number' && !isFinite(object)) {\n throw new Error('Infinity is not allowed');\n }\n\n if (object === null || typeof object !== 'object') {\n return JSON.stringify(object);\n }\n\n if (object.toJSON instanceof Function) {\n return serialize(object.toJSON());\n }\n\n if (Array.isArray(object)) {\n const values = object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return `${t}${comma}${serialize(value)}`;\n }, '');\n return `[${values}]`;\n }\n\n const values = Object.keys(object).sort().reduce((t, cv) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return `${t}${comma}${serialize(cv)}:${serialize(object[cv])}`;\n }, '');\n return `{${values}}`;\n};\n","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb) {\n return true;\n }\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') {\n return o;\n }\n if (o instanceof ArrayBuffer) {\n return new Uint8Array(o);\n }\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable<number>} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n const prefixCodePoint = prefix.codePointAt(0);\n /* c8 ignore next 3 */\n if (prefixCodePoint === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefixCodePoint;\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabetIdx, bitsPerChar, name) {\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = alphabetIdx[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\nfunction createAlphabetIdx(alphabet) {\n // Build the character lookup table:\n const alphabetIdx = {};\n for (let i = 0; i < alphabet.length; ++i) {\n alphabetIdx[alphabet[i]] = i;\n }\n return alphabetIdx;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n const alphabetIdx = createAlphabetIdx(alphabet);\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabetIdx, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base36.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc(size = 0) {\n return new Uint8Array(size);\n}\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe(size = 0) {\n return new Uint8Array(size);\n}\n//# sourceMappingURL=alloc.js.map","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});\n//# sourceMappingURL=base10.js.map","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});\n//# sourceMappingURL=base16.js.map","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});\n//# sourceMappingURL=base2.js.map","import { from } from './base.js';\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂');\nconst alphabetBytesToChars = (alphabet.reduce((p, c, i) => { p[i] = c; return p; }, ([])));\nconst alphabetCharsToBytes = (alphabet.reduce((p, c, i) => {\n const codePoint = c.codePointAt(0);\n if (codePoint == null) {\n throw new Error(`Invalid character: ${c}`);\n }\n p[codePoint] = i;\n return p;\n}, ([])));\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const codePoint = char.codePointAt(0);\n if (codePoint == null) {\n throw new Error(`Invalid character: ${char}`);\n }\n const byt = alphabetCharsToBytes[codePoint];\n if (byt == null) {\n throw new Error(`Non-base256emoji character: ${char}`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n});\n//# sourceMappingURL=base256emoji.js.map","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});\n//# sourceMappingURL=base8.js.map","import { fromString, toString } from '../bytes.js';\nimport { from } from './base.js';\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n});\n//# sourceMappingURL=identity.js.map","import * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base2 from './bases/base2.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base8 from './bases/base8.js';\nimport * as identityBase from './bases/identity.js';\nimport * as json from './codecs/json.js';\nimport * as raw from './codecs/raw.js';\nimport * as identity from './hashes/identity.js';\nimport * as sha2 from './hashes/sha2.js';\nimport { CID, hasher, digest, varint, bytes } from './index.js';\nexport const bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji };\nexport const hashes = { ...sha2, ...identity };\nexport const codecs = { raw, json };\nexport { CID, hasher, digest, varint, bytes };\n//# sourceMappingURL=basics.js.map","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '#alloc';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: {\n decode\n }\n };\n}\nconst string = createCodec('utf8', 'u', (buf) => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, (str) => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', (buf) => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, (str) => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;\n//# sourceMappingURL=bases.js.map","import bases, {} from './util/bases.js';\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n // add multibase prefix\n return base.decoder.decode(`${base.prefix}${string}`); // eslint-disable-line @typescript-eslint/restrict-template-expressions\n}\n//# sourceMappingURL=from-string.js.map","module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {\n encode.bytes = 0\n throw new RangeError('Could not encode varint')\n }\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n","module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l || shift > 49) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n","\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n","module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n","import { toString, fromString, concat } from 'uint8arrays';\nimport { x25519, ed25519 } from '@noble/curves/ed25519';\nimport { varint } from 'multiformats';\nimport { encode, decode } from 'multibase';\nimport { secp256k1 } from '@noble/curves/secp256k1';\nimport { p256 } from '@noble/curves/p256';\nimport { sha256 as sha256$1 } from '@noble/hashes/sha256';\nimport { ripemd160 } from '@noble/hashes/ripemd160';\nimport { keccak_256 } from '@noble/hashes/sha3';\nimport canonicalizeData from 'canonicalize';\nimport { parse } from 'did-resolver';\nimport { bech32 } from '@scure/base';\nimport { xchacha20poly1305 } from '@noble/ciphers/chacha';\nimport { randomBytes } from '@noble/hashes/utils';\n\nconst u8a = {\n toString,\n fromString,\n concat\n};\nfunction bytesToBase64url(b) {\n return u8a.toString(b, 'base64url');\n}\nfunction base64ToBytes(s) {\n const inputBase64Url = s.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n return u8a.fromString(inputBase64Url, 'base64url');\n}\nfunction base58ToBytes(s) {\n return u8a.fromString(s, 'base58btc');\n}\nfunction bytesToBase58(b) {\n return u8a.toString(b, 'base58btc');\n}\nconst SUPPORTED_PUBLIC_KEY_TYPES = {\n ES256: ['JsonWebKey2020', 'Multikey', 'EcdsaSecp256r1VerificationKey2019'],\n ES256K: ['EcdsaSecp256k1VerificationKey2019',\n /**\n * Equivalent to EcdsaSecp256k1VerificationKey2019 when key is an ethereumAddress\n */\n 'EcdsaSecp256k1RecoveryMethod2020',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'Secp256k1VerificationKey2018',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'Secp256k1SignatureVerificationKey2018',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'EcdsaPublicKeySecp256k1',\n /**\n * TODO - support R1 key as well\n * 'ConditionalProof2022',\n */\n 'JsonWebKey2020', 'Multikey'],\n 'ES256K-R': ['EcdsaSecp256k1VerificationKey2019',\n /**\n * Equivalent to EcdsaSecp256k1VerificationKey2019 when key is an ethereumAddress\n */\n 'EcdsaSecp256k1RecoveryMethod2020',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'Secp256k1VerificationKey2018',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'Secp256k1SignatureVerificationKey2018',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'EcdsaPublicKeySecp256k1', 'ConditionalProof2022', 'JsonWebKey2020', 'Multikey'],\n Ed25519: ['ED25519SignatureVerification', 'Ed25519VerificationKey2018', 'Ed25519VerificationKey2020', 'JsonWebKey2020', 'Multikey'],\n EdDSA: ['ED25519SignatureVerification', 'Ed25519VerificationKey2018', 'Ed25519VerificationKey2020', 'JsonWebKey2020', 'Multikey']\n};\nconst VM_TO_KEY_TYPE = {\n Secp256k1SignatureVerificationKey2018: 'Secp256k1',\n Secp256k1VerificationKey2018: 'Secp256k1',\n EcdsaSecp256k1VerificationKey2019: 'Secp256k1',\n EcdsaPublicKeySecp256k1: 'Secp256k1',\n EcdsaSecp256k1RecoveryMethod2020: 'Secp256k1',\n EcdsaSecp256r1VerificationKey2019: 'P-256',\n Ed25519VerificationKey2018: 'Ed25519',\n Ed25519VerificationKey2020: 'Ed25519',\n ED25519SignatureVerification: 'Ed25519',\n X25519KeyAgreementKey2019: 'X25519',\n X25519KeyAgreementKey2020: 'X25519',\n ConditionalProof2022: undefined,\n JsonWebKey2020: undefined,\n // key type must be specified in the JWK\n Multikey: undefined // key type must be extracted from the multicodec\n\n}; // this is from the multicodec table https://github.com/multiformats/multicodec/blob/master/table.csv\n\nconst supportedCodecs = {\n 'ed25519-pub': 0xed,\n 'x25519-pub': 0xec,\n 'secp256k1-pub': 0xe7,\n 'bls12_381-g1-pub': 0xea,\n 'bls12_381-g2-pub': 0xeb,\n 'p256-pub': 0x1200\n};\nconst CODEC_TO_KEY_TYPE = {\n 'bls12_381-g1-pub': 'Bls12381G1',\n 'bls12_381-g2-pub': 'Bls12381G2',\n 'ed25519-pub': 'Ed25519',\n 'p256-pub': 'P-256',\n 'secp256k1-pub': 'Secp256k1',\n 'x25519-pub': 'X25519'\n};\n/**\n * Extracts the raw byte representation of a public key from a VerificationMethod along with an inferred key type\n * @param pk a VerificationMethod entry from a DIDDocument\n * @return an object containing the `keyBytes` of the public key and an inferred `keyType`\n */\n\nfunction extractPublicKeyBytes(pk) {\n if (pk.publicKeyBase58) {\n return {\n keyBytes: base58ToBytes(pk.publicKeyBase58),\n keyType: VM_TO_KEY_TYPE[pk.type]\n };\n } else if (pk.publicKeyBase64) {\n return {\n keyBytes: base64ToBytes(pk.publicKeyBase64),\n keyType: VM_TO_KEY_TYPE[pk.type]\n };\n } else if (pk.publicKeyHex) {\n return {\n keyBytes: hexToBytes(pk.publicKeyHex),\n keyType: VM_TO_KEY_TYPE[pk.type]\n };\n } else if (pk.publicKeyJwk && pk.publicKeyJwk.crv === 'secp256k1' && pk.publicKeyJwk.x && pk.publicKeyJwk.y) {\n return {\n keyBytes: secp256k1.ProjectivePoint.fromAffine({\n x: bytesToBigInt(base64ToBytes(pk.publicKeyJwk.x)),\n y: bytesToBigInt(base64ToBytes(pk.publicKeyJwk.y))\n }).toRawBytes(false),\n keyType: 'Secp256k1'\n };\n } else if (pk.publicKeyJwk && pk.publicKeyJwk.crv === 'P-256' && pk.publicKeyJwk.x && pk.publicKeyJwk.y) {\n return {\n keyBytes: p256.ProjectivePoint.fromAffine({\n x: bytesToBigInt(base64ToBytes(pk.publicKeyJwk.x)),\n y: bytesToBigInt(base64ToBytes(pk.publicKeyJwk.y))\n }).toRawBytes(false),\n keyType: 'P-256'\n };\n } else if (pk.publicKeyJwk && pk.publicKeyJwk.kty === 'OKP' && ['Ed25519', 'X25519'].includes(pk.publicKeyJwk.crv ?? '') && pk.publicKeyJwk.x) {\n return {\n keyBytes: base64ToBytes(pk.publicKeyJwk.x),\n keyType: pk.publicKeyJwk.crv\n };\n } else if (pk.publicKeyMultibase) {\n const {\n keyBytes,\n keyType\n } = multibaseToBytes(pk.publicKeyMultibase);\n return {\n keyBytes,\n keyType: keyType ?? VM_TO_KEY_TYPE[pk.type]\n };\n }\n\n return {\n keyBytes: new Uint8Array()\n };\n}\n/**\n * Encodes the given byte array to a multibase string (defaulting to base58btc).\n * If a codec is provided, the corresponding multicodec prefix will be added.\n *\n * @param b - the Uint8Array to be encoded\n * @param base - the base to use for encoding (defaults to base58btc)\n * @param codec - the codec to use for encoding (defaults to no codec)\n *\n * @returns the multibase encoded string\n *\n * @public\n */\n\nfunction bytesToMultibase(b, base = 'base58btc', codec) {\n if (!codec) {\n return u8a.toString(encode(base, b), 'utf-8');\n } else {\n const codecCode = typeof codec === 'string' ? supportedCodecs[codec] : codec;\n const prefixLength = varint.encodingLength(codecCode);\n const multicodecEncoding = new Uint8Array(prefixLength + b.length);\n varint.encodeTo(codecCode, multicodecEncoding); // set prefix\n\n multicodecEncoding.set(b, prefixLength); // add the original bytes\n\n return u8a.toString(encode(base, multicodecEncoding), 'utf-8');\n }\n}\n/**\n * Converts a multibase string to the Uint8Array it represents.\n * This method will assume the byte array that is multibase encoded is a multicodec and will attempt to decode it.\n *\n * @param s - the string to be converted\n *\n * @throws if the string is not formatted correctly.\n *\n * @public\n */\n\nfunction multibaseToBytes(s) {\n const bytes = decode(s); // look for known key lengths first\n // Ed25519/X25519, secp256k1/P256 compressed or not, BLS12-381 G1/G2 compressed\n\n if ([32, 33, 48, 64, 65, 96].includes(bytes.length)) {\n return {\n keyBytes: bytes\n };\n } // then assume multicodec, otherwise return the bytes\n\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [codec, length] = varint.decode(bytes);\n const possibleCodec = Object.entries(supportedCodecs).filter(([, code]) => code === codec)?.[0][0] ?? '';\n return {\n keyBytes: bytes.slice(length),\n keyType: CODEC_TO_KEY_TYPE[possibleCodec]\n };\n } catch (e) {\n // not a multicodec, return the bytes\n return {\n keyBytes: bytes\n };\n }\n}\nfunction hexToBytes(s, minLength) {\n let input = s.startsWith('0x') ? s.substring(2) : s;\n\n if (input.length % 2 !== 0) {\n input = `0${input}`;\n }\n\n if (minLength) {\n const paddedLength = Math.max(input.length, minLength * 2);\n input = input.padStart(paddedLength, '00');\n }\n\n return u8a.fromString(input.toLowerCase(), 'base16');\n}\nfunction encodeBase64url(s) {\n return bytesToBase64url(u8a.fromString(s));\n}\nfunction decodeBase64url(s) {\n return u8a.toString(base64ToBytes(s));\n}\nfunction bytesToHex(b) {\n return u8a.toString(b, 'base16');\n}\nfunction bytesToBigInt(b) {\n return BigInt(`0x` + u8a.toString(b, 'base16'));\n}\nfunction stringToBytes(s) {\n return u8a.fromString(s, 'utf-8');\n}\nfunction toJose({\n r,\n s,\n recoveryParam\n}, recoverable) {\n const jose = new Uint8Array(recoverable ? 65 : 64);\n jose.set(u8a.fromString(r, 'base16'), 0);\n jose.set(u8a.fromString(s, 'base16'), 32);\n\n if (recoverable) {\n if (typeof recoveryParam === 'undefined') {\n throw new Error('Signer did not return a recoveryParam');\n }\n\n jose[64] = recoveryParam;\n }\n\n return bytesToBase64url(jose);\n}\nfunction fromJose(signature) {\n const signatureBytes = base64ToBytes(signature);\n\n if (signatureBytes.length < 64 || signatureBytes.length > 65) {\n throw new TypeError(`Wrong size for signature. Expected 64 or 65 bytes, but got ${signatureBytes.length}`);\n }\n\n const r = bytesToHex(signatureBytes.slice(0, 32));\n const s = bytesToHex(signatureBytes.slice(32, 64));\n const recoveryParam = signatureBytes.length === 65 ? signatureBytes[64] : undefined;\n return {\n r,\n s,\n recoveryParam\n };\n}\nfunction toSealed(ciphertext, tag) {\n return u8a.concat([base64ToBytes(ciphertext), tag ? base64ToBytes(tag) : new Uint8Array(0)]);\n}\nfunction leftpad(data, size = 64) {\n if (data.length === size) return data;\n return '0'.repeat(size - data.length) + data;\n}\n/**\n * Generate random x25519 key pair.\n */\n\nfunction generateKeyPair() {\n const secretKey = x25519.utils.randomPrivateKey();\n const publicKey = x25519.getPublicKey(secretKey);\n return {\n secretKey: secretKey,\n publicKey: publicKey\n };\n}\n/**\n * Generate private-public x25519 key pair from `seed`.\n */\n\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== 32) {\n throw new Error(`x25519: seed must be ${32} bytes`);\n }\n\n return {\n publicKey: x25519.getPublicKey(seed),\n secretKey: seed\n };\n}\nfunction genX25519EphemeralKeyPair() {\n const epk = generateKeyPair();\n return {\n publicKeyJWK: {\n kty: 'OKP',\n crv: 'X25519',\n x: bytesToBase64url(epk.publicKey)\n },\n secretKey: epk.secretKey\n };\n}\n/**\n * Checks if a variable is defined and not null.\n * After this check, typescript sees the variable as defined.\n *\n * @param arg - The input to be verified\n *\n * @returns true if the input variable is defined.\n */\n\nfunction isDefined(arg) {\n return arg !== null && typeof arg !== 'undefined';\n}\n\nfunction sha256(payload) {\n const data = typeof payload === 'string' ? fromString(payload) : payload;\n return sha256$1(data);\n}\nconst keccak = keccak_256;\nfunction toEthereumAddress(hexPublicKey) {\n const hashInput = fromString(hexPublicKey.slice(2), 'base16');\n return `0x${toString(keccak(hashInput).slice(-20), 'base16')}`;\n}\n\nfunction writeUint32BE(value, array = new Uint8Array(4)) {\n const encoded = fromString(value.toString(), 'base10');\n array.set(encoded, 4 - encoded.length);\n return array;\n}\n\nconst lengthAndInput = input => concat([writeUint32BE(input.length), input]); // This implementation of concatKDF was inspired by these two implementations:\n// https://github.com/digitalbazaar/minimal-cipher/blob/master/algorithms/ecdhkdf.js\n// https://github.com/panva/jose/blob/master/lib/jwa/ecdh/derive.js\n\n\nfunction concatKDF(secret, keyLen, alg, producerInfo, consumerInfo) {\n if (keyLen !== 256) throw new Error(`Unsupported key length: ${keyLen}`);\n const value = concat([lengthAndInput(fromString(alg)), lengthAndInput(typeof producerInfo === 'undefined' ? new Uint8Array(0) : producerInfo), // apu\n lengthAndInput(typeof consumerInfo === 'undefined' ? new Uint8Array(0) : consumerInfo), // apv\n writeUint32BE(keyLen)]); // since our key lenght is 256 we only have to do one round\n\n const roundNumber = 1;\n return sha256(concat([writeUint32BE(roundNumber), secret, value]));\n}\n\n/**\n * Creates a configured signer function for signing data using the ES256K (secp256k1 + sha256) algorithm.\n *\n * The signing function itself takes the data as a `Uint8Array` or `string` and returns a `base64Url`-encoded signature\n *\n * @example\n * ```typescript\n * const sign: Signer = ES256KSigner(process.env.PRIVATE_KEY)\n * const signature: string = await sign(data)\n * ```\n *\n * @param {String} privateKey a private key as `Uint8Array`\n * @param {Boolean} recoverable an optional flag to add the recovery param to the generated signatures\n * @return {Function} a configured signer function `(data: string | Uint8Array): Promise<string>`\n */\n\nfunction ES256KSigner(privateKey, recoverable = false) {\n const privateKeyBytes = privateKey;\n\n if (privateKeyBytes.length !== 32) {\n throw new Error(`bad_key: Invalid private key format. Expecting 32 bytes, but got ${privateKeyBytes.length}`);\n }\n\n return function (data) {\n try {\n const signature = secp256k1.sign(sha256(data), privateKeyBytes);\n return Promise.resolve(toJose({\n r: leftpad(signature.r.toString(16)),\n s: leftpad(signature.s.toString(16)),\n recoveryParam: signature.recovery\n }, recoverable));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\n/**\n * @deprecated Please use ES256KSigner\n * The SimpleSigner returns a configured function for signing data.\n *\n * @example\n * const signer = SimpleSigner(process.env.PRIVATE_KEY)\n * signer(data, (err, signature) => {\n * ...\n * })\n *\n * @param {String} hexPrivateKey a hex encoded private key\n * @return {Function} a configured signer function\n */\n\nfunction SimpleSigner(hexPrivateKey) {\n const signer = ES256KSigner(hexToBytes(hexPrivateKey), true);\n return function (data) {\n try {\n return Promise.resolve(signer(data)).then(fromJose);\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\n/**\n * @deprecated Please use ES256KSigner\n * The EllipticSigner returns a configured function for signing data.\n *\n * @example\n * ```typescript\n * const signer = EllipticSigner(process.env.PRIVATE_KEY)\n * signer(data).then( (signature: string) => {\n * ...\n * })\n * ```\n *\n * @param {String} hexPrivateKey a hex encoded private key\n * @return {Function} a configured signer function\n */\n\nfunction EllipticSigner(hexPrivateKey) {\n return ES256KSigner(hexToBytes(hexPrivateKey));\n}\n\n/**\n * Creates a configured signer function for signing data using the EdDSA (Ed25519) algorithm.\n *\n * The private key is expected to be a `Uint8Array` of 32 bytes, but for compatibility 64 bytes are also acceptable.\n * Users of `@stablelib/ed25519` or `tweetnacl` will be able to use the 64 byte secret keys that library generates.\n * These libraries precompute the public key and append it as the last 32 bytes of the secretKey, to speed up later\n * signing operations.\n *\n * The signing function itself takes the data as a `Uint8Array` or utf8 `string` and returns a `base64Url`-encoded\n * signature\n *\n * @example\n * ```typescript\n * const sign: Signer = EdDSASigner(process.env.PRIVATE_KEY)\n * const signature: string = await sign(data)\n * ```\n *\n * @param {String} secretKey a 32 or 64 byte secret key as `Uint8Array`\n * @return {Function} a configured signer function `(data: string | Uint8Array): Promise<string>`\n */\n\nfunction EdDSASigner(secretKey) {\n const privateKeyBytes = secretKey;\n\n if (![32, 64].includes(privateKeyBytes.length)) {\n throw new Error(`bad_key: Invalid private key format. Expecting 32 or 64 bytes, but got ${privateKeyBytes.length}`);\n }\n\n return function (data) {\n try {\n const dataBytes = typeof data === 'string' ? stringToBytes(data) : data;\n const signature = ed25519.sign(dataBytes, privateKeyBytes.slice(0, 32));\n return Promise.resolve(bytesToBase64url(signature));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\n/**\n * @deprecated Please use EdDSASigner\n *\n * The NaclSigner returns a configured function for signing data using the Ed25519 algorithm.\n *\n * The signing function itself takes the data as a `string` or `Uint8Array` parameter and returns a\n * `base64Url`-encoded signature.\n *\n * @example\n * const signer = NaclSigner(process.env.PRIVATE_KEY)\n * const data: string = '...'\n * signer(data).then( (signature: string) => {\n * ...\n * })\n *\n * @param {String} base64PrivateKey a 64 byte base64 encoded private key\n * @return {Function} a configured signer function\n */\n\nfunction NaclSigner(base64PrivateKey) {\n return EdDSASigner(base64ToBytes(base64PrivateKey));\n}\n\n/**\n * Creates a configured signer function for signing data using the ES256 (secp256r1 + sha256) algorithm.\n *\n * The signing function itself takes the data as a `Uint8Array` or `string` and returns a `base64Url`-encoded signature\n *\n * @example\n * ```typescript\n * const sign: Signer = ES256Signer(process.env.PRIVATE_KEY)\n * const signature: string = await sign(data)\n * ```\n *\n * @param {String} privateKey a private key as `Uint8Array`\n * @return {Function} a configured signer function `(data: string | Uint8Array): Promise<string>`\n */\n\nfunction ES256Signer(privateKey) {\n if (privateKey.length !== 32) {\n throw new Error(`bad_key: Invalid private key format. Expecting 32 bytes, but got ${privateKey.length}`);\n }\n\n return function (data) {\n try {\n const signature = p256.sign(sha256(data), privateKey);\n return Promise.resolve(toJose({\n r: leftpad(signature.r.toString(16)),\n s: leftpad(signature.s.toString(16))\n }));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nfunction instanceOfEcdsaSignature(object) {\n return typeof object === 'object' && 'r' in object && 's' in object;\n}\n\nfunction ES256SignerAlg() {\n return function sign(payload, signer) {\n try {\n return Promise.resolve(signer(payload)).then(function (signature) {\n if (instanceOfEcdsaSignature(signature)) {\n return toJose(signature);\n } else {\n return signature;\n }\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\nfunction ES256KSignerAlg(recoverable) {\n return function sign(payload, signer) {\n try {\n return Promise.resolve(signer(payload)).then(function (signature) {\n if (instanceOfEcdsaSignature(signature)) {\n return toJose(signature, recoverable);\n } else {\n if (recoverable && typeof fromJose(signature).recoveryParam === 'undefined') {\n throw new Error(`not_supported: ES256K-R not supported when signer doesn't provide a recovery param`);\n }\n\n return signature;\n }\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\nfunction Ed25519SignerAlg() {\n return function sign(payload, signer) {\n try {\n return Promise.resolve(signer(payload)).then(function (signature) {\n if (!instanceOfEcdsaSignature(signature)) {\n return signature;\n } else {\n throw new Error('invalid_config: expected a signer function that returns a string instead of signature object');\n }\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\nconst algorithms$1 = {\n ES256: ES256SignerAlg(),\n ES256K: ES256KSignerAlg(),\n // This is a non-standard algorithm but retained for backwards compatibility\n // see https://github.com/decentralized-identity/did-jwt/issues/146\n 'ES256K-R': ES256KSignerAlg(true),\n // This is actually incorrect but retained for backwards compatibility\n // see https://github.com/decentralized-identity/did-jwt/issues/130\n Ed25519: Ed25519SignerAlg(),\n EdDSA: Ed25519SignerAlg()\n};\n\nfunction SignerAlg(alg) {\n const impl = algorithms$1[alg];\n if (!impl) throw new Error(`not_supported: Unsupported algorithm ${alg}`);\n return impl;\n}\n\nfunction publicKeyToAddress$1(publicKey, otherAddress) {\n // Use the same version/prefix byte as the given address.\n const version = bytesToHex(base58ToBytes(otherAddress).slice(0, 1));\n const publicKeyBuffer = hexToBytes(publicKey);\n const publicKeyHash = ripemd160(sha256(publicKeyBuffer));\n const step1 = version + bytesToHex(publicKeyHash);\n const step2 = sha256(hexToBytes(step1));\n const step3 = sha256(step2);\n const checksum = bytesToHex(step3).substring(0, 8);\n const step4 = step1 + checksum;\n return bytesToBase58(hexToBytes(step4));\n}\n\nfunction publicKeyToAddress(publicKey, prefix) {\n const publicKeyBuffer = secp256k1.ProjectivePoint.fromHex(publicKey).toRawBytes();\n const hash = ripemd160(sha256(publicKeyBuffer));\n const words = bech32.toWords(hash);\n return bech32.encode(prefix, words).replace(prefix, '');\n}\n\nfunction verifyBlockchainAccountId(publicKey, blockchainAccountId) {\n if (blockchainAccountId) {\n const chain = blockchainAccountId.split(':');\n\n switch (chain[0]) {\n case 'bip122':\n chain[chain.length - 1] = publicKeyToAddress$1(publicKey, chain[chain.length - 1]);\n break;\n\n case 'cosmos':\n chain[chain.length - 1] = publicKeyToAddress(publicKey, chain[1]);\n break;\n\n case 'eip155':\n chain[chain.length - 1] = toEthereumAddress(publicKey);\n break;\n\n default:\n return false;\n }\n\n return chain.join(':').toLowerCase() === blockchainAccountId.toLowerCase();\n }\n\n return false;\n}\n\nfunction toSignatureObject(signature, recoverable = false) {\n const rawSig = base64ToBytes(signature);\n\n if (rawSig.length !== (recoverable ? 65 : 64)) {\n throw new Error('wrong signature length');\n }\n\n const r = bytesToHex(rawSig.slice(0, 32));\n const s = bytesToHex(rawSig.slice(32, 64));\n const sigObj = {\n r,\n s\n };\n\n if (recoverable) {\n sigObj.recoveryParam = rawSig[64];\n }\n\n return sigObj;\n}\nfunction toSignatureObject2(signature, recoverable = false) {\n const bytes = base64ToBytes(signature);\n\n if (bytes.length !== (recoverable ? 65 : 64)) {\n throw new Error('wrong signature length');\n }\n\n return {\n compact: bytes.slice(0, 64),\n recovery: bytes[64]\n };\n}\nfunction verifyES256(data, signature, authenticators) {\n const hash = sha256(data);\n const sig = p256.Signature.fromCompact(toSignatureObject2(signature).compact);\n const fullPublicKeys = authenticators.filter(a => !a.ethereumAddress && !a.blockchainAccountId);\n const signer = fullPublicKeys.find(pk => {\n try {\n const {\n keyBytes\n } = extractPublicKeyBytes(pk);\n return p256.verify(sig, hash, keyBytes);\n } catch (err) {\n return false;\n }\n });\n if (!signer) throw new Error('invalid_signature: Signature invalid for JWT');\n return signer;\n}\nfunction verifyES256K(data, signature, authenticators) {\n const hash = sha256(data);\n const signatureNormalized = secp256k1.Signature.fromCompact(base64ToBytes(signature)).normalizeS();\n const fullPublicKeys = authenticators.filter(a => {\n return !a.ethereumAddress && !a.blockchainAccountId;\n });\n const blockchainAddressKeys = authenticators.filter(a => {\n return a.ethereumAddress || a.blockchainAccountId;\n });\n let signer = fullPublicKeys.find(pk => {\n try {\n const {\n keyBytes\n } = extractPublicKeyBytes(pk);\n return secp256k1.verify(signatureNormalized, hash, keyBytes);\n } catch (err) {\n return false;\n }\n });\n\n if (!signer && blockchainAddressKeys.length > 0) {\n signer = verifyRecoverableES256K(data, signature, blockchainAddressKeys);\n }\n\n if (!signer) throw new Error('invalid_signature: Signature invalid for JWT');\n return signer;\n}\nfunction verifyRecoverableES256K(data, signature, authenticators) {\n const signatures = [];\n\n if (signature.length > 86) {\n signatures.push(toSignatureObject2(signature, true));\n } else {\n const so = toSignatureObject2(signature, false);\n signatures.push({ ...so,\n recovery: 0\n });\n signatures.push({ ...so,\n recovery: 1\n });\n }\n\n const hash = sha256(data);\n\n const checkSignatureAgainstSigner = sigObj => {\n const signature = secp256k1.Signature.fromCompact(sigObj.compact).addRecoveryBit(sigObj.recovery || 0);\n const recoveredPublicKey = signature.recoverPublicKey(hash);\n const recoveredAddress = toEthereumAddress(recoveredPublicKey.toHex(false)).toLowerCase();\n const recoveredPublicKeyHex = recoveredPublicKey.toHex(false);\n const recoveredCompressedPublicKeyHex = recoveredPublicKey.toHex(true);\n return authenticators.find(a => {\n const {\n keyBytes\n } = extractPublicKeyBytes(a);\n const keyHex = bytesToHex(keyBytes);\n return keyHex === recoveredPublicKeyHex || keyHex === recoveredCompressedPublicKeyHex || a.ethereumAddress?.toLowerCase() === recoveredAddress || a.blockchainAccountId?.split('@eip155')?.[0].toLowerCase() === recoveredAddress || // CAIP-2\n verifyBlockchainAccountId(recoveredPublicKeyHex, a.blockchainAccountId) // CAIP-10\n ;\n });\n }; // Find first verification method\n\n\n for (const signature of signatures) {\n const verificationMethod = checkSignatureAgainstSigner(signature);\n if (verificationMethod) return verificationMethod;\n } // If no one found matching\n\n\n throw new Error('invalid_signature: Signature invalid for JWT');\n}\nfunction verifyEd25519(data, signature, authenticators) {\n const clear = stringToBytes(data);\n const signatureBytes = base64ToBytes(signature);\n const signer = authenticators.find(a => {\n const {\n keyBytes,\n keyType\n } = extractPublicKeyBytes(a);\n\n if (keyType === 'Ed25519') {\n return ed25519.verify(signatureBytes, clear, keyBytes);\n } else {\n return false;\n }\n });\n if (!signer) throw new Error('invalid_signature: Signature invalid for JWT');\n return signer;\n}\nconst algorithms = {\n ES256: verifyES256,\n ES256K: verifyES256K,\n // This is a non-standard algorithm but retained for backwards compatibility\n // see https://github.com/decentralized-identity/did-jwt/issues/146\n 'ES256K-R': verifyRecoverableES256K,\n // This is actually incorrect but retained for backwards compatibility\n // see https://github.com/decentralized-identity/did-jwt/issues/130\n Ed25519: verifyEd25519,\n EdDSA: verifyEd25519\n};\n\nfunction VerifierAlgorithm(alg) {\n const impl = algorithms[alg];\n if (!impl) throw new Error(`not_supported: Unsupported algorithm ${alg}`);\n return impl;\n}\n\nVerifierAlgorithm.toSignatureObject = toSignatureObject;\n\n/**\n * Error prefixes used for known verification failure cases.\n *\n * For compatibility, these error prefixes match the existing error messages, but will be adjusted in a future major\n * version update to match the scenarios better.\n *\n * @beta\n */\nconst JWT_ERROR = {\n /**\n * Thrown when a JWT payload schema is unexpected or when validity period does not match\n */\n INVALID_JWT: 'invalid_jwt',\n\n /**\n * Thrown when the verifier audience does not match the one set in the JWT payload\n */\n INVALID_AUDIENCE: 'invalid_config',\n\n /**\n * Thrown when none of the public keys of the issuer match the signature of the JWT.\n *\n * This is equivalent to `NO_SUITABLE_KEYS` when the `proofPurpose` is NOT specified.\n */\n INVALID_SIGNATURE: 'invalid_signature',\n\n /**\n * Thrown when the DID document of the issuer does not have any keys that match the signature for the given\n * `proofPurpose`.\n *\n * This is equivalent to `invalid_signature`, when a `proofPurpose` is specified.\n */\n NO_SUITABLE_KEYS: 'no_suitable_keys',\n\n /**\n * Thrown when the `alg` of the JWT or the encoding of the key is not supported\n */\n NOT_SUPPORTED: 'not_supported',\n\n /**\n * Thrown when the DID resolver is unable to resolve the issuer DID.\n */\n RESOLVER_ERROR: 'resolver_error'\n};\n\nfunction _catch$1(body, recover) {\n try {\n var result = body();\n } catch (e) {\n return recover(e);\n }\n\n if (result && result.then) {\n return result.then(void 0, recover);\n }\n\n return result;\n}\n\nconst verifyConditionDelegated = function (jwt, {\n header,\n payload,\n data,\n signature\n}, authenticator, options) {\n try {\n if (!authenticator.conditionDelegated) {\n throw new Error('Expected conditionDelegated');\n }\n\n if (!options.resolver) {\n throw new Error('Expected resolver');\n }\n\n let foundSigner;\n const issuer = authenticator.conditionDelegated;\n return Promise.resolve(resolveAuthenticator(options.resolver, header.alg, issuer, options.proofPurpose)).then(function (didAuthenticator) {\n let _exit2;\n\n function _temp6(_result4) {\n if (_exit2) ;\n\n if (foundSigner) {\n return authenticator;\n }\n\n throw new Error(`${JWT_ERROR.INVALID_SIGNATURE}: condition for authenticator ${authenticator.id} is not met.`);\n }\n\n const didResolutionResult = didAuthenticator.didResolutionResult;\n\n if (!didResolutionResult?.didDocument) {\n throw new Error(`${JWT_ERROR.RESOLVER_ERROR}: Could not resolve delegated DID ${issuer}.`);\n }\n\n const delegatedAuthenticator = didAuthenticator.authenticators.find(authenticator => authenticator.id === issuer);\n\n if (!delegatedAuthenticator) {\n throw new Error(`${JWT_ERROR.NO_SUITABLE_KEYS}: Could not find delegated authenticator ${issuer} in it's DID Document`);\n }\n\n const _temp5 = function () {\n if (delegatedAuthenticator.type === CONDITIONAL_PROOF_2022) {\n return Promise.resolve(verifyJWT(jwt, { ...options,\n ...{\n didAuthenticator: {\n didResolutionResult,\n authenticators: [delegatedAuthenticator],\n issuer: delegatedAuthenticator.id\n }\n }\n })).then(function ({\n verified\n }) {\n if (verified) {\n foundSigner = delegatedAuthenticator;\n }\n });\n } else {\n try {\n foundSigner = verifyJWTDecoded({\n header,\n payload,\n data,\n signature\n }, delegatedAuthenticator);\n } catch (e) {\n if (!e.message.startsWith('invalid_signature:')) throw e;\n }\n }\n }();\n\n return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\nconst _iteratorSymbol$1 = typeof Symbol !== \"undefined\" ? Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\")) : \"@@iterator\";\n\nfunction _settle$2(pact, state, value) {\n if (!pact.s) {\n if (value instanceof _Pact$2) {\n if (value.s) {\n if (state & 1) {\n state = value.s;\n }\n\n value = value.v;\n } else {\n value.o = _settle$2.bind(null, pact, state);\n return;\n }\n }\n\n if (value && value.then) {\n value.then(_settle$2.bind(null, pact, state), _settle$2.bind(null, pact, 2));\n return;\n }\n\n pact.s = state;\n pact.v = value;\n const observer = pact.o;\n\n if (observer) {\n observer(pact);\n }\n }\n}\n\nconst _Pact$2 = /*#__PURE__*/function () {\n function _Pact() {}\n\n _Pact.prototype.then = function (onFulfilled, onRejected) {\n const result = new _Pact();\n const state = this.s;\n\n if (state) {\n const callback = state & 1 ? onFulfilled : onRejected;\n\n if (callback) {\n try {\n _settle$2(result, 1, callback(this.v));\n } catch (e) {\n _settle$2(result, 2, e);\n }\n\n return result;\n } else {\n return this;\n }\n }\n\n this.o = function (_this) {\n try {\n const value = _this.v;\n\n if (_this.s & 1) {\n _settle$2(result, 1, onFulfilled ? onFulfilled(value) : value);\n } else if (onRejected) {\n _settle$2(result, 1, onRejected(value));\n } else {\n _settle$2(result, 2, value);\n }\n } catch (e) {\n _settle$2(result, 2, e);\n }\n };\n\n return result;\n };\n\n return _Pact;\n}();\n\nfunction _isSettledPact$2(thenable) {\n return thenable instanceof _Pact$2 && thenable.s & 1;\n}\n\nfunction _forTo$2(array, body, check) {\n var i = -1,\n pact,\n reject;\n\n function _cycle(result) {\n try {\n while (++i < array.length && (!check || !check())) {\n result = body(i);\n\n if (result && result.then) {\n if (_isSettledPact$2(result)) {\n result = result.v;\n } else {\n result.then(_cycle, reject || (reject = _settle$2.bind(null, pact = new _Pact$2(), 2)));\n return;\n }\n }\n }\n\n if (pact) {\n _settle$2(pact, 1, result);\n } else {\n pact = result;\n }\n } catch (e) {\n _settle$2(pact || (pact = new _Pact$2()), 2, e);\n }\n }\n\n _cycle();\n\n return pact;\n}\n\nconst verifyConditionWeightedThreshold = function (jwt, {\n header,\n payload,\n data,\n signature\n}, authenticator, options) {\n try {\n let _exit;\n\n function _temp4(_result3) {\n if (_exit) return _result3;\n throw new Error(`${JWT_ERROR.INVALID_SIGNATURE}: condition for authenticator ${authenticator.id} is not met.`);\n }\n\n if (!authenticator.conditionWeightedThreshold || !authenticator.threshold) {\n throw new Error('Expected conditionWeightedThreshold and threshold');\n }\n\n const issuers = [];\n const threshold = authenticator.threshold;\n let weightCount = 0;\n\n const _temp3 = _forOf$1(authenticator.conditionWeightedThreshold, function (weightedCondition) {\n function _temp2(_result2) {\n if (_exit) return _result2;\n\n if (foundSigner && !issuers.includes(foundSigner.id)) {\n issuers.push(foundSigner.id);\n weightCount += weightedCondition.weight;\n\n if (weightCount >= threshold) {\n _exit = 1;\n return authenticator;\n }\n }\n }\n\n const currentCondition = weightedCondition.condition;\n let foundSigner;\n\n const _temp = _catch$1(function () {\n if (currentCondition.type === CONDITIONAL_PROOF_2022) {\n if (!options.didAuthenticator) {\n throw new Error('Expected didAuthenticator');\n }\n\n const newOptions = { ...options,\n didAuthenticator: {\n didResolutionResult: options.didAuthenticator?.didResolutionResult,\n authenticators: [currentCondition],\n issuer: currentCondition.id\n }\n };\n return Promise.resolve(verifyJWT(jwt, newOptions)).then(function ({\n verified\n }) {\n if (verified) {\n foundSigner = currentCondition;\n }\n });\n } else {\n return Promise.resolve(verifyJWTDecoded({\n header,\n payload,\n data,\n signature\n }, currentCondition)).then(function (_verifyJWTDecoded) {\n foundSigner = _verifyJWTDecoded;\n });\n }\n }, function (e) {\n if (!e.message.startsWith(JWT_ERROR.INVALID_SIGNATURE)) throw e;\n });\n\n return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);\n }, function () {\n return _exit;\n });\n\n return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\nfunction _forOf$1(target, body, check) {\n if (typeof target[_iteratorSymbol$1] === \"function\") {\n var iterator = target[_iteratorSymbol$1](),\n step,\n pact,\n reject;\n\n function _cycle(result) {\n try {\n while (!(step = iterator.next()).done && (!check || !check())) {\n result = body(step.value);\n\n if (result && result.then) {\n if (_isSettledPact$2(result)) {\n result = result.v;\n } else {\n result.then(_cycle, reject || (reject = _settle$2.bind(null, pact = new _Pact$2(), 2)));\n return;\n }\n }\n }\n\n if (pact) {\n _settle$2(pact, 1, result);\n } else {\n pact = result;\n }\n } catch (e) {\n _settle$2(pact || (pact = new _Pact$2()), 2, e);\n }\n }\n\n _cycle();\n\n if (iterator.return) {\n var _fixup = function (value) {\n try {\n if (!step.done) {\n iterator.return();\n }\n } catch (e) {}\n\n return value;\n };\n\n if (pact && pact.then) {\n return pact.then(_fixup, function (e) {\n throw _fixup(e);\n });\n }\n\n _fixup();\n }\n\n return pact;\n } // No support for Symbol.iterator\n\n\n if (!(\"length\" in target)) {\n throw new TypeError(\"Object is not iterable\");\n } // Handle live collections properly\n\n\n var values = [];\n\n for (var i = 0; i < target.length; i++) {\n values.push(target[i]);\n }\n\n return _forTo$2(values, function (i) {\n return body(values[i]);\n }, check);\n}\n\nconst verifyConditionalProof = function (jwt, {\n header,\n payload,\n signature,\n data\n}, authenticator, options) {\n try {\n // Validate the condition according to its condition property\n if (authenticator.conditionWeightedThreshold) {\n return verifyConditionWeightedThreshold(jwt, {\n header,\n payload,\n data,\n signature\n }, authenticator, options);\n } else if (authenticator.conditionDelegated) {\n return verifyConditionDelegated(jwt, {\n header,\n payload,\n data,\n signature\n }, authenticator, options);\n } // TODO other conditions\n\n\n throw new Error(`${JWT_ERROR.INVALID_JWT}: conditional proof type did not find condition for authenticator ${authenticator.id}.`);\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst verifyProof = function (jwt, {\n header,\n payload,\n signature,\n data\n}, authenticator, options) {\n try {\n if (authenticator.type === CONDITIONAL_PROOF_2022) {\n return verifyConditionalProof(jwt, {\n payload,\n header,\n signature,\n data\n }, authenticator, options);\n } else {\n return Promise.resolve(verifyJWTDecoded({\n header,\n payload,\n data,\n signature\n }, [authenticator]));\n }\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst CONDITIONAL_PROOF_2022 = 'ConditionalProof2022';\n\n/**\n * Resolves relevant public keys or other authenticating material used to verify signature from the DID document of\n * provided DID\n *\n * @example\n * ```ts\n * resolveAuthenticator(resolver, 'ES256K', 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX').then(obj => {\n * const payload = obj.payload\n * const profile = obj.profile\n * const jwt = obj.jwt\n * // ...\n * })\n * ```\n *\n * @param resolver - {Resolvable} a DID resolver function that can obtain the `DIDDocument` for the `issuer`\n * @param alg - {String} a JWT algorithm\n * @param issuer - {String} a Decentralized Identifier (DID) to lookup\n * @param proofPurpose - {ProofPurposeTypes} *Optional* Use the verificationMethod linked in that section of the\n * issuer DID document\n * @return {Promise<DIDAuthenticator>} a promise which resolves with an object containing an array of authenticators\n * or rejects with an error if none exist\n */\nfunction _settle$1(pact, state, value) {\n if (!pact.s) {\n if (value instanceof _Pact$1) {\n if (value.s) {\n if (state & 1) {\n state = value.s;\n }\n\n value = value.v;\n } else {\n value.o = _settle$1.bind(null, pact, state);\n return;\n }\n }\n\n if (value && value.then) {\n value.then(_settle$1.bind(null, pact, state), _settle$1.bind(null, pact, 2));\n return;\n }\n\n pact.s = state;\n pact.v = value;\n const observer = pact.o;\n\n if (observer) {\n observer(pact);\n }\n }\n}\n\nconst _Pact$1 = /*#__PURE__*/function () {\n function _Pact() {}\n\n _Pact.prototype.then = function (onFulfilled, onRejected) {\n const result = new _Pact();\n const state = this.s;\n\n if (state) {\n const callback = state & 1 ? onFulfilled : onRejected;\n\n if (callback) {\n try {\n _settle$1(result, 1, callback(this.v));\n } catch (e) {\n _settle$1(result, 2, e);\n }\n\n return result;\n } else {\n return this;\n }\n }\n\n this.o = function (_this) {\n try {\n const value = _this.v;\n\n if (_this.s & 1) {\n _settle$1(result, 1, onFulfilled ? onFulfilled(value) : value);\n } else if (onRejected) {\n _settle$1(result, 1, onRejected(value));\n } else {\n _settle$1(result, 2, value);\n }\n } catch (e) {\n _settle$1(result, 2, e);\n }\n };\n\n return result;\n };\n\n return _Pact;\n}();\n\nfunction _isSettledPact$1(thenable) {\n return thenable instanceof _Pact$1 && thenable.s & 1;\n}\n\nfunction _forTo$1(array, body, check) {\n var i = -1,\n pact,\n reject;\n\n function _cycle(result) {\n try {\n while (++i < array.length && (!check || !check())) {\n result = body(i);\n\n if (result && result.then) {\n if (_isSettledPact$1(result)) {\n result = result.v;\n } else {\n result.then(_cycle, reject || (reject = _settle$1.bind(null, pact = new _Pact$1(), 2)));\n return;\n }\n }\n }\n\n if (pact) {\n _settle$1(pact, 1, result);\n } else {\n pact = result;\n }\n } catch (e) {\n _settle$1(pact || (pact = new _Pact$1()), 2, e);\n }\n }\n\n _cycle();\n\n return pact;\n}\n\nfunction _catch(body, recover) {\n try {\n var result = body();\n } catch (e) {\n return recover(e);\n }\n\n if (result && result.then) {\n return result.then(void 0, recover);\n }\n\n return result;\n}\n\nfunction _for$1(test, update, body) {\n var stage;\n\n for (;;) {\n var shouldContinue = test();\n\n if (_isSettledPact$1(shouldContinue)) {\n shouldContinue = shouldContinue.v;\n }\n\n if (!shouldContinue) {\n return result;\n }\n\n if (shouldContinue.then) {\n stage = 0;\n break;\n }\n\n var result = body();\n\n if (result && result.then) {\n if (_isSettledPact$1(result)) {\n result = result.s;\n } else {\n stage = 1;\n break;\n }\n }\n\n if (update) {\n var updateValue = update();\n\n if (updateValue && updateValue.then && !_isSettledPact$1(updateValue)) {\n stage = 2;\n break;\n }\n }\n }\n\n var pact = new _Pact$1();\n\n var reject = _settle$1.bind(null, pact, 2);\n\n (stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n return pact;\n\n function _resumeAfterBody(value) {\n result = value;\n\n do {\n if (update) {\n updateValue = update();\n\n if (updateValue && updateValue.then && !_isSettledPact$1(updateValue)) {\n updateValue.then(_resumeAfterUpdate).then(void 0, reject);\n return;\n }\n }\n\n shouldContinue = test();\n\n if (!shouldContinue || _isSettledPact$1(shouldContinue) && !shouldContinue.v) {\n _settle$1(pact, 1, result);\n\n return;\n }\n\n if (shouldContinue.then) {\n shouldContinue.then(_resumeAfterTest).then(void 0, reject);\n return;\n }\n\n result = body();\n\n if (_isSettledPact$1(result)) {\n result = result.v;\n }\n } while (!result || !result.then);\n\n result.then(_resumeAfterBody).then(void 0, reject);\n }\n\n function _resumeAfterTest(shouldContinue) {\n if (shouldContinue) {\n result = body();\n\n if (result && result.then) {\n result.then(_resumeAfterBody).then(void 0, reject);\n } else {\n _resumeAfterBody(result);\n }\n } else {\n _settle$1(pact, 1, result);\n }\n }\n\n function _resumeAfterUpdate() {\n if (shouldContinue = test()) {\n if (shouldContinue.then) {\n shouldContinue.then(_resumeAfterTest).then(void 0, reject);\n } else {\n _resumeAfterTest(shouldContinue);\n }\n } else {\n _settle$1(pact, 1, result);\n }\n }\n}\n\nconst resolveAuthenticator = function (resolver, alg, issuer, proofPurpose) {\n try {\n const types = SUPPORTED_PUBLIC_KEY_TYPES[alg];\n\n if (!types || types.length === 0) {\n throw new Error(`${JWT_ERROR.NOT_SUPPORTED}: No supported signature types for algorithm ${alg}`);\n }\n\n let didResult;\n return Promise.resolve(resolver.resolve(issuer, {\n accept: DID_JSON\n })).then(function (result) {\n // support legacy resolvers that do not produce DIDResolutionResult\n if (Object.getOwnPropertyNames(result).indexOf('didDocument') === -1) {\n didResult = {\n didDocument: result,\n didDocumentMetadata: {},\n didResolutionMetadata: {\n contentType: DID_JSON\n }\n };\n } else {\n didResult = result;\n }\n\n if (didResult.didResolutionMetadata?.error || didResult.didDocument == null) {\n const {\n error,\n message\n } = didResult.didResolutionMetadata;\n throw new Error(`${JWT_ERROR.RESOLVER_ERROR}: Unable to resolve DID document for ${issuer}: ${error}, ${message || ''}`);\n }\n\n const getPublicKeyById = (verificationMethods, pubid) => {\n const filtered = verificationMethods.filter(({\n id\n }) => pubid === id);\n return filtered.length > 0 ? filtered[0] : null;\n };\n\n let publicKeysToCheck = [...(didResult?.didDocument?.verificationMethod || []), ...(didResult?.didDocument?.publicKey || [])];\n\n if (typeof proofPurpose === 'string') {\n // support legacy DID Documents that do not list assertionMethod\n if (proofPurpose.startsWith('assertion') && !Object.getOwnPropertyNames(didResult?.didDocument).includes('assertionMethod')) {\n didResult.didDocument = { ...didResult.didDocument\n };\n didResult.didDocument.assertionMethod = [...publicKeysToCheck.map(pk => pk.id)];\n }\n\n publicKeysToCheck = (didResult.didDocument[proofPurpose] || []).map(verificationMethod => {\n if (typeof verificationMethod === 'string') {\n return getPublicKeyById(publicKeysToCheck, verificationMethod);\n } else if (typeof verificationMethod.publicKey === 'string') {\n // this is a legacy format\n return getPublicKeyById(publicKeysToCheck, verificationMethod.publicKey);\n } else {\n return verificationMethod;\n }\n }).filter(key => key != null);\n }\n\n const authenticators = publicKeysToCheck.filter(({\n type\n }) => types.find(supported => supported === type));\n\n if (typeof proofPurpose === 'string' && (!authenticators || authenticators.length === 0)) {\n throw new Error(`${JWT_ERROR.NO_SUITABLE_KEYS}: DID document for ${issuer} does not have public keys suitable for ${alg} with ${proofPurpose} purpose`);\n }\n\n if (!authenticators || authenticators.length === 0) {\n throw new Error(`${JWT_ERROR.NO_SUITABLE_KEYS}: DID document for ${issuer} does not have public keys for ${alg}`);\n }\n\n return {\n authenticators,\n issuer,\n didResolutionResult: didResult\n };\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n/**\n * Verifies given JWT. If the JWT is valid, the promise returns an object including the JWT, the payload of the JWT,\n * and the DID document of the issuer of the JWT.\n *\n * @example\n * ```ts\n * verifyJWT(\n * 'did:uport:eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJyZXF1Z....',\n * {audience: '5A8bRWU3F7j3REx3vkJ...', callbackUrl: 'https://...'}\n * ).then(obj => {\n * const did = obj.did // DID of signer\n * const payload = obj.payload\n * const doc = obj.didResolutionResult.didDocument // DID Document of issuer\n * const jwt = obj.jwt\n * const signerKeyId = obj.signer.id // ID of key in DID document that signed JWT\n * ...\n * })\n * ```\n *\n * @param {String} jwt a JSON Web Token to verify\n * @param {Object} [options] an unsigned credential object\n * @param {Boolean} options.auth Require signer to be listed in the authentication section of the\n * DID document (for Authentication purposes)\n * @param {String} options.audience DID of the recipient of the JWT\n * @param {String} options.callbackUrl callback url in JWT\n * @return {Promise<Object, Error>} a promise which resolves with a response object or rejects with an\n * error\n */\nconst verifyJWT = function (jwt, options = {\n resolver: undefined,\n auth: undefined,\n audience: undefined,\n callbackUrl: undefined,\n skewTime: undefined,\n proofPurpose: undefined,\n policies: {},\n didAuthenticator: undefined\n}) {\n try {\n function _temp7() {\n let _exit;\n\n function _temp5(_result) {\n if (_exit) ;\n\n if (signer) {\n const now = typeof options.policies?.now === 'number' ? options.policies.now : Math.floor(Date.now() / 1000);\n const skewTime = typeof options.skewTime !== 'undefined' && options.skewTime >= 0 ? options.skewTime : NBF_SKEW;\n const nowSkewed = now + skewTime;\n\n if (options.policies?.nbf !== false && payload.nbf) {\n if (payload.nbf > nowSkewed) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT not valid before nbf: ${payload.nbf}`);\n }\n } else if (options.policies?.iat !== false && payload.iat && payload.iat > nowSkewed) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT not valid yet (issued in the future) iat: ${payload.iat}`);\n }\n\n if (options.policies?.exp !== false && payload.exp && payload.exp <= now - skewTime) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT has expired: exp: ${payload.exp} < now: ${now}`);\n }\n\n if (options.policies?.aud !== false && payload.aud) {\n if (!options.audience && !options.callbackUrl) {\n throw new Error(`${JWT_ERROR.INVALID_AUDIENCE}: JWT audience is required but your app address has not been configured`);\n }\n\n const audArray = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n const matchedAudience = audArray.find(item => options.audience === item || options.callbackUrl === item);\n\n if (typeof matchedAudience === 'undefined') {\n throw new Error(`${JWT_ERROR.INVALID_AUDIENCE}: JWT audience does not match your DID or callback url`);\n }\n }\n\n return {\n verified: true,\n payload,\n didResolutionResult,\n issuer,\n signer,\n jwt,\n policies: options.policies\n };\n }\n\n throw new Error(`${JWT_ERROR.INVALID_SIGNATURE}: JWT not valid. issuer DID document does not contain a verificationMethod that matches the signature.`);\n }\n\n const {\n did\n } = parse(didUrl);\n let signer = null;\n\n const _temp4 = function () {\n if (did !== didUrl) {\n const authenticator = authenticators.find(auth => auth.id === didUrl);\n\n if (!authenticator) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: No authenticator found for did URL ${didUrl}`);\n }\n\n return Promise.resolve(verifyProof(jwt, {\n payload,\n header,\n signature,\n data\n }, authenticator, options)).then(function (_verifyProof) {\n signer = _verifyProof;\n });\n } else {\n let i = 0;\n return _for$1(function () {\n return !_exit && !signer && i < authenticators.length;\n }, void 0, function () {\n function _temp3(_result2) {\n if (_exit) ;\n i++;\n }\n\n const authenticator = authenticators[i];\n\n const _temp2 = _catch(function () {\n return Promise.resolve(verifyProof(jwt, {\n payload,\n header,\n signature,\n data\n }, authenticator, options)).then(function (_verifyProof2) {\n signer = _verifyProof2;\n });\n }, function (e) {\n if (!e.message.includes(JWT_ERROR.INVALID_SIGNATURE) || i === authenticators.length - 1) throw e;\n });\n\n return _temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2);\n });\n }\n }();\n\n return _temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4);\n }\n\n if (!options.resolver) throw new Error('missing_resolver: No DID resolver has been configured');\n const {\n payload,\n header,\n signature,\n data\n } = decodeJWT(jwt, false);\n const proofPurpose = Object.prototype.hasOwnProperty.call(options, 'auth') ? options.auth ? 'authentication' : undefined : options.proofPurpose;\n let didUrl;\n\n if (!payload.iss && !payload.client_id) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT iss or client_id are required`);\n }\n\n if (options.didAuthenticator) {\n didUrl = options.didAuthenticator.issuer;\n } else if (payload.iss === SELF_ISSUED_V2 || payload.iss === SELF_ISSUED_V2_VC_INTEROP) {\n if (!payload.sub) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT sub is required`);\n }\n\n if (typeof payload.sub_jwk === 'undefined') {\n didUrl = payload.sub;\n } else {\n didUrl = (header.kid || '').split('#')[0];\n }\n } else if (payload.iss === SELF_ISSUED_V0_1) {\n if (!payload.did) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT did is required`);\n }\n\n didUrl = payload.did;\n } else if (!payload.iss && payload.scope === 'openid' && payload.redirect_uri) {\n // SIOP Request payload\n // https://identity.foundation/jwt-vc-presentation-profile/#self-issued-op-request-object\n if (!payload.client_id) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT client_id is required`);\n }\n\n didUrl = payload.client_id;\n } else {\n didUrl = payload.iss;\n }\n\n if (!didUrl) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: No DID has been found in the JWT`);\n }\n\n let authenticators;\n let issuer;\n let didResolutionResult;\n\n const _temp6 = function () {\n if (options.didAuthenticator) {\n ({\n didResolutionResult,\n authenticators,\n issuer\n } = options.didAuthenticator);\n } else {\n return Promise.resolve(resolveAuthenticator(options.resolver, header.alg, didUrl, proofPurpose)).then(function (_resolveAuthenticator) {\n ({\n didResolutionResult,\n authenticators,\n issuer\n } = _resolveAuthenticator);\n // Add to options object for recursive reference\n options.didAuthenticator = {\n didResolutionResult,\n authenticators,\n issuer\n };\n });\n }\n }();\n\n return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n/**\n * Creates a multi-signature signed JWT given multiple issuers and their corresponding signers, and a payload for\n * which the signature is over.\n *\n * @example\n * const signer = ES256KSigner(process.env.PRIVATE_KEY)\n * createJWT({address: '5A8bRWU3F7j3REx3vkJ...', signer}, {key1: 'value', key2: ..., ... }).then(jwt => {\n * ...\n * })\n *\n * @param {Object} payload payload object\n * @param {Object} [options] an unsigned credential object\n * @param {boolean} options.expiresIn optional flag to denote the expiration time\n * @param {boolean} options.canonicalize optional flag to canonicalize header and payload before signing\n * @param {Object[]} issuers array of the issuers, their signers and algorithms\n * @param {string} issuers[].issuer The DID of the issuer (signer) of JWT\n * @param {Signer} issuers[].signer a `Signer` function, Please see `ES256KSigner` or `EdDSASigner`\n * @param {String} issuers[].alg [DEPRECATED] The JWT signing algorithm to use. Supports:\n * [ES256K, ES256K-R, Ed25519, EdDSA], Defaults to: ES256K. Please use `header.alg` to specify the algorithm\n * @return {Promise<Object, Error>} a promise which resolves with a signed JSON Web Token or\n * rejects with an error\n */\nconst createMultisignatureJWT = function (payload, {\n expiresIn,\n canonicalize\n}, issuers) {\n try {\n if (issuers.length === 0) throw new Error('invalid_argument: must provide one or more issuers');\n let payloadResult = payload;\n let jwt = '';\n\n const _temp = _forTo$1(issuers, function (i) {\n const issuer = issuers[i];\n const header = {\n typ: 'JWT',\n alg: issuer.alg\n }; // Create nested JWT\n // See Point 5 of https://www.rfc-editor.org/rfc/rfc7519#section-7.1\n // After the first JWT is created (the first JWS), the next JWT is created by inputting the previous JWT as the\n // payload\n\n if (i !== 0) {\n header.cty = 'JWT';\n }\n\n return Promise.resolve(createJWT(payloadResult, { ...issuer,\n canonicalize,\n expiresIn\n }, header)).then(function (_createJWT) {\n jwt = _createJWT;\n payloadResult = {\n jwt\n };\n });\n });\n\n return Promise.resolve(_temp && _temp.then ? _temp.then(function () {\n return jwt;\n }) : jwt);\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n/**\n * Creates a signed JWT given an address which becomes the issuer, a signer, and a payload for which the signature is\n * over.\n *\n * @example\n * const signer = ES256KSigner(process.env.PRIVATE_KEY)\n * createJWT({address: '5A8bRWU3F7j3REx3vkJ...', signer}, {key1: 'value', key2: ..., ... }).then(jwt => {\n * ...\n * })\n *\n * @param {Object} payload payload object\n * @param {Object} [options] an unsigned credential object\n * @param {String} options.issuer The DID of the issuer (signer) of JWT\n * @param {String} options.alg [DEPRECATED] The JWT signing algorithm to use. Supports:\n * [ES256K, ES256K-R, Ed25519, EdDSA], Defaults to: ES256K. Please use `header.alg` to specify the algorithm\n * @param {Signer} options.signer a `Signer` function, Please see `ES256KSigner` or `EdDSASigner`\n * @param {boolean} options.canonicalize optional flag to canonicalize header and payload before signing\n * @param {Object} header optional object to specify or customize the JWT header\n * @return {Promise<Object, Error>} a promise which resolves with a signed JSON Web Token or\n * rejects with an error\n */\nconst createJWT = function (payload, {\n issuer,\n signer,\n alg,\n expiresIn,\n canonicalize\n}, header = {}) {\n try {\n if (!signer) throw new Error('missing_signer: No Signer functionality has been configured');\n if (!issuer) throw new Error('missing_issuer: No issuing DID has been configured');\n if (!header.typ) header.typ = 'JWT';\n if (!header.alg) header.alg = alg;\n const timestamps = {\n iat: Math.floor(Date.now() / 1000),\n exp: undefined\n };\n\n if (expiresIn) {\n if (typeof expiresIn === 'number') {\n timestamps.exp = (payload.nbf || timestamps.iat) + Math.floor(expiresIn);\n } else {\n throw new Error('invalid_argument: JWT expiresIn is not a number');\n }\n }\n\n const fullPayload = { ...timestamps,\n ...payload,\n iss: issuer\n };\n return createJWS(fullPayload, signer, header, {\n canonicalize\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n/**\n * Creates a signed JWS given a payload, a signer, and an optional header.\n *\n * @example\n * const signer = ES256KSigner(process.env.PRIVATE_KEY)\n * const jws = await createJWS({ my: 'payload' }, signer)\n *\n * @param {Object} payload payload object\n * @param {Signer} signer a signer, see `ES256KSigner or `EdDSASigner`\n * @param {Object} header optional object to specify or customize the JWS header\n * @param {Object} options can be used to trigger automatic canonicalization of header and\n * payload properties\n * @return {Promise<string>} a Promise which resolves to a JWS string or rejects with an error\n */\nconst createJWS = function (payload, signer, header = {}, options = {}) {\n try {\n if (!header.alg) header.alg = defaultAlg;\n const encodedPayload = typeof payload === 'string' ? payload : encodeSection(payload, options.canonicalize);\n const signingInput = [encodeSection(header, options.canonicalize), encodedPayload].join('.');\n const jwtSigner = SignerAlg(header.alg);\n return Promise.resolve(jwtSigner(signingInput, signer)).then(function (signature) {\n // JWS Compact Serialization\n // https://www.rfc-editor.org/rfc/rfc7515#section-7.1\n return [signingInput, signature].join('.');\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst SELF_ISSUED_V2 = 'https://self-issued.me/v2';\nconst SELF_ISSUED_V2_VC_INTEROP = 'https://self-issued.me/v2/openid-vc'; // https://identity.foundation/jwt-vc-presentation-profile/#id-token-validation\n\nconst SELF_ISSUED_V0_1 = 'https://self-issued.me';\nconst defaultAlg = 'ES256K';\nconst DID_JSON = 'application/did+json'; // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\nfunction encodeSection(data, shouldCanonicalize = false) {\n if (shouldCanonicalize) {\n return encodeBase64url(canonicalizeData(data));\n } else {\n return encodeBase64url(JSON.stringify(data));\n }\n}\n\nconst NBF_SKEW = 300;\n\nfunction decodeJWS(jws) {\n const parts = jws.match(/^([a-zA-Z0-9_-]+)\\.([a-zA-Z0-9_-]+)\\.([a-zA-Z0-9_-]+)$/);\n\n if (parts) {\n return {\n header: JSON.parse(decodeBase64url(parts[1])),\n payload: parts[2],\n signature: parts[3],\n data: `${parts[1]}.${parts[2]}`\n };\n }\n\n throw new Error('invalid_argument: Incorrect format JWS');\n}\n/**\n * Decodes a JWT and returns an object representing the payload\n *\n * @example\n * decodeJWT('eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJpYXQiOjE1...')\n *\n * @param {String} jwt a JSON Web Token to verify\n * @param {Object} [recurse] whether to recurse into the payload to decode any nested JWTs\n * @return {Object} a JS object representing the decoded JWT\n */\n\n\nfunction decodeJWT(jwt, recurse = true) {\n if (!jwt) throw new Error('invalid_argument: no JWT passed into decodeJWT');\n\n try {\n const jws = decodeJWS(jwt);\n const decodedJwt = Object.assign(jws, {\n payload: JSON.parse(decodeBase64url(jws.payload))\n });\n const iss = decodedJwt.payload.iss;\n\n if (decodedJwt.header.cty === 'JWT' && recurse) {\n const innerDecodedJwt = decodeJWT(decodedJwt.payload.jwt);\n if (innerDecodedJwt.payload.iss !== iss) throw new Error(`${JWT_ERROR.INVALID_JWT}: multiple issuers`);\n return innerDecodedJwt;\n }\n\n return decodedJwt;\n } catch (e) {\n throw new Error(`invalid_argument: ${JWT_ERROR.INVALID_JWT}: ${e}`);\n }\n}\nfunction verifyJWTDecoded({\n header,\n payload,\n data,\n signature\n}, pubKeys) {\n if (!Array.isArray(pubKeys)) pubKeys = [pubKeys];\n const iss = payload.iss;\n let recurse = true;\n\n do {\n if (iss !== payload.iss) throw new Error(`${JWT_ERROR.INVALID_JWT}: multiple issuers`);\n\n try {\n const result = VerifierAlgorithm(header.alg)(data, signature, pubKeys);\n return result;\n } catch (e) {\n if (!e.message.startsWith(JWT_ERROR.INVALID_SIGNATURE)) throw e;\n } // TODO probably best to create copy objects than replace reference objects\n\n\n if (header.cty !== 'JWT') {\n recurse = false;\n } else {\n ({\n payload,\n header,\n signature,\n data\n } = decodeJWT(payload.jwt, false));\n }\n } while (recurse);\n\n throw new Error(`${JWT_ERROR.INVALID_SIGNATURE}: no matching public key found`);\n}\nfunction verifyJWSDecoded({\n header,\n data,\n signature\n}, pubKeys) {\n if (!Array.isArray(pubKeys)) pubKeys = [pubKeys];\n const signer = VerifierAlgorithm(header.alg)(data, signature, pubKeys);\n return signer;\n}\n/**\n * Verifies given JWS. If the JWS is valid, returns the public key that was\n * used to sign the JWS, or throws an `Error` if none of the `pubKeys` match.\n *\n * @example\n * const pubKey = verifyJWS('eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJyZXF1Z....', { publicKeyHex: '0x12341...' })\n *\n * @param {String} jws A JWS string to verify\n * @param {Array<VerificationMethod> | VerificationMethod} pubKeys The public keys used to verify the JWS\n * @return {VerificationMethod} The public key used to sign the JWS\n */\n\nfunction verifyJWS(jws, pubKeys) {\n const jwsDecoded = decodeJWS(jws);\n return verifyJWSDecoded(jwsDecoded, pubKeys);\n}\n\nconst _iteratorSymbol = typeof Symbol !== \"undefined\" ? Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\")) : \"@@iterator\";\n\nfunction _settle(pact, state, value) {\n if (!pact.s) {\n if (value instanceof _Pact) {\n if (value.s) {\n if (state & 1) {\n state = value.s;\n }\n\n value = value.v;\n } else {\n value.o = _settle.bind(null, pact, state);\n return;\n }\n }\n\n if (value && value.then) {\n value.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n return;\n }\n\n pact.s = state;\n pact.v = value;\n const observer = pact.o;\n\n if (observer) {\n observer(pact);\n }\n }\n}\n\nconst _Pact = /*#__PURE__*/function () {\n function _Pact() {}\n\n _Pact.prototype.then = function (onFulfilled, onRejected) {\n const result = new _Pact();\n const state = this.s;\n\n if (state) {\n const callback = state & 1 ? onFulfilled : onRejected;\n\n if (callback) {\n try {\n _settle(result, 1, callback(this.v));\n } catch (e) {\n _settle(result, 2, e);\n }\n\n return result;\n } else {\n return this;\n }\n }\n\n this.o = function (_this) {\n try {\n const value = _this.v;\n\n if (_this.s & 1) {\n _settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n } else if (onRejected) {\n _settle(result, 1, onRejected(value));\n } else {\n _settle(result, 2, value);\n }\n } catch (e) {\n _settle(result, 2, e);\n }\n };\n\n return result;\n };\n\n return _Pact;\n}();\n\nfunction _isSettledPact(thenable) {\n return thenable instanceof _Pact && thenable.s & 1;\n}\n\nfunction _forTo(array, body, check) {\n var i = -1,\n pact,\n reject;\n\n function _cycle(result) {\n try {\n while (++i < array.length && (!check || !check())) {\n result = body(i);\n\n if (result && result.then) {\n if (_isSettledPact(result)) {\n result = result.v;\n } else {\n result.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n return;\n }\n }\n }\n\n if (pact) {\n _settle(pact, 1, result);\n } else {\n pact = result;\n }\n } catch (e) {\n _settle(pact || (pact = new _Pact()), 2, e);\n }\n }\n\n _cycle();\n\n return pact;\n}\n\nfunction _forOf(target, body, check) {\n if (typeof target[_iteratorSymbol] === \"function\") {\n var iterator = target[_iteratorSymbol](),\n step,\n pact,\n reject;\n\n function _cycle(result) {\n try {\n while (!(step = iterator.next()).done && (!check || !check())) {\n result = body(step.value);\n\n if (result && result.then) {\n if (_isSettledPact(result)) {\n result = result.v;\n } else {\n result.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n return;\n }\n }\n }\n\n if (pact) {\n _settle(pact, 1, result);\n } else {\n pact = result;\n }\n } catch (e) {\n _settle(pact || (pact = new _Pact()), 2, e);\n }\n }\n\n _cycle();\n\n if (iterator.return) {\n var _fixup = function (value) {\n try {\n if (!step.done) {\n iterator.return();\n }\n } catch (e) {}\n\n return value;\n };\n\n if (pact && pact.then) {\n return pact.then(_fixup, function (e) {\n throw _fixup(e);\n });\n }\n\n _fixup();\n }\n\n return pact;\n } // No support for Symbol.iterator\n\n\n if (!(\"length\" in target)) {\n throw new TypeError(\"Object is not iterable\");\n } // Handle live collections properly\n\n\n var values = [];\n\n for (var i = 0; i < target.length; i++) {\n values.push(target[i]);\n }\n\n return _forTo(values, function (i) {\n return body(values[i]);\n }, check);\n}\n\nfunction _for(test, update, body) {\n var stage;\n\n for (;;) {\n var shouldContinue = test();\n\n if (_isSettledPact(shouldContinue)) {\n shouldContinue = shouldContinue.v;\n }\n\n if (!shouldContinue) {\n return result;\n }\n\n if (shouldContinue.then) {\n stage = 0;\n break;\n }\n\n var result = body();\n\n if (result && result.then) {\n if (_isSettledPact(result)) {\n result = result.s;\n } else {\n stage = 1;\n break;\n }\n }\n\n if (update) {\n var updateValue = update();\n\n if (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n stage = 2;\n break;\n }\n }\n }\n\n var pact = new _Pact();\n\n var reject = _settle.bind(null, pact, 2);\n\n (stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n return pact;\n\n function _resumeAfterBody(value) {\n result = value;\n\n do {\n if (update) {\n updateValue = update();\n\n if (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n updateValue.then(_resumeAfterUpdate).then(void 0, reject);\n return;\n }\n }\n\n shouldContinue = test();\n\n if (!shouldContinue || _isSettledPact(shouldContinue) && !shouldContinue.v) {\n _settle(pact, 1, result);\n\n return;\n }\n\n if (shouldContinue.then) {\n shouldContinue.then(_resumeAfterTest).then(void 0, reject);\n return;\n }\n\n result = body();\n\n if (_isSettledPact(result)) {\n result = result.v;\n }\n } while (!result || !result.then);\n\n result.then(_resumeAfterBody).then(void 0, reject);\n }\n\n function _resumeAfterTest(shouldContinue) {\n if (shouldContinue) {\n result = body();\n\n if (result && result.then) {\n result.then(_resumeAfterBody).then(void 0, reject);\n } else {\n _resumeAfterBody(result);\n }\n } else {\n _settle(pact, 1, result);\n }\n }\n\n function _resumeAfterUpdate() {\n if (shouldContinue = test()) {\n if (shouldContinue.then) {\n shouldContinue.then(_resumeAfterTest).then(void 0, reject);\n } else {\n _resumeAfterTest(shouldContinue);\n }\n } else {\n _settle(pact, 1, result);\n }\n }\n}\n\nfunction validateJWE(jwe) {\n if (!(jwe.protected && jwe.iv && jwe.ciphertext && jwe.tag)) {\n throw new Error('bad_jwe: missing properties');\n }\n\n if (jwe.recipients) {\n jwe.recipients.map(rec => {\n if (!(rec.header && rec.encrypted_key)) {\n throw new Error('bad_jwe: malformed recipients');\n }\n });\n }\n}\n\nfunction encodeJWE({\n ciphertext,\n tag,\n iv,\n protectedHeader,\n recipient\n}, aad) {\n const jwe = {\n protected: protectedHeader,\n iv: bytesToBase64url(iv ?? new Uint8Array(0)),\n ciphertext: bytesToBase64url(ciphertext),\n tag: bytesToBase64url(tag ?? new Uint8Array(0))\n };\n if (aad) jwe.aad = bytesToBase64url(aad);\n if (recipient) jwe.recipients = [recipient];\n return jwe;\n}\n\nconst decryptJWE = function (jwe, decrypter) {\n try {\n let _exit;\n\n function _temp5(_result) {\n if (_exit) ;\n if (cleartext === null) throw new Error('failure: Failed to decrypt');\n return cleartext;\n }\n\n validateJWE(jwe);\n const protHeader = JSON.parse(decodeBase64url(jwe.protected));\n if (protHeader.enc !== decrypter.enc) throw new Error(`not_supported: Decrypter does not supported: '${protHeader.enc}'`);\n const sealed = toSealed(jwe.ciphertext, jwe.tag);\n const aad = stringToBytes(jwe.aad ? `${jwe.protected}.${jwe.aad}` : jwe.protected);\n let cleartext = null;\n\n const _temp4 = function () {\n if (protHeader.alg === 'dir' && decrypter.alg === 'dir') {\n return Promise.resolve(decrypter.decrypt(sealed, base64ToBytes(jwe.iv), aad)).then(function (_decrypter$decrypt) {\n cleartext = _decrypter$decrypt;\n });\n } else return function () {\n if (!jwe.recipients || jwe.recipients.length === 0) {\n throw new Error('bad_jwe: missing recipients');\n } else {\n let i = 0;\n return _for(function () {\n return !cleartext && i < jwe.recipients.length;\n }, function () {\n return i++;\n }, function () {\n const recipient = jwe.recipients[i];\n Object.assign(recipient.header, protHeader);\n\n const _temp3 = function () {\n if (recipient.header.alg === decrypter.alg) {\n return Promise.resolve(decrypter.decrypt(sealed, base64ToBytes(jwe.iv), aad, recipient)).then(function (_decrypter$decrypt2) {\n cleartext = _decrypter$decrypt2;\n });\n }\n }();\n\n if (_temp3 && _temp3.then) return _temp3.then(function () {});\n });\n }\n }();\n }();\n\n return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst createJWE = function (cleartext, encrypters, protectedHeader = {}, aad, useSingleEphemeralKey = false) {\n try {\n if (encrypters[0].alg === 'dir') {\n if (encrypters.length > 1) throw new Error('not_supported: Can only do \"dir\" encryption to one key.');\n return Promise.resolve(encrypters[0].encrypt(cleartext, protectedHeader, aad)).then(function (encryptionResult) {\n return encodeJWE(encryptionResult, aad);\n });\n } else {\n const tmpEnc = encrypters[0].enc;\n\n if (!encrypters.reduce((acc, encrypter) => acc && encrypter.enc === tmpEnc, true)) {\n throw new Error('invalid_argument: Incompatible encrypters passed');\n }\n\n let cek;\n let jwe;\n let epk;\n\n if (useSingleEphemeralKey) {\n epk = encrypters[0].genEpk?.();\n const alg = encrypters[0].alg;\n protectedHeader = { ...protectedHeader,\n alg,\n epk: epk?.publicKeyJWK\n };\n }\n\n const _temp2 = _forOf(encrypters, function (encrypter) {\n const _temp = function () {\n if (!cek) {\n return Promise.resolve(encrypter.encrypt(cleartext, protectedHeader, aad, epk)).then(function (encryptionResult) {\n cek = encryptionResult.cek;\n jwe = encodeJWE(encryptionResult, aad);\n });\n } else {\n return Promise.resolve(encrypter.encryptCek?.(cek, epk)).then(function (recipient) {\n if (recipient) {\n jwe?.recipients?.push(recipient);\n }\n });\n }\n }();\n\n if (_temp && _temp.then) return _temp.then(function () {});\n });\n\n return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {\n return jwe;\n }) : jwe);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\nfunction xc20pEncrypter(key) {\n return (cleartext, aad) => {\n const iv = randomBytes(24);\n const cipher = xchacha20poly1305(key, iv, aad);\n const sealed = cipher.encrypt(cleartext);\n return {\n ciphertext: sealed.subarray(0, sealed.length - 16),\n tag: sealed.subarray(sealed.length - 16),\n iv\n };\n };\n}\nfunction xc20pDirEncrypter(key) {\n const encrypt = function (cleartext, protectedHeader = {}, aad) {\n try {\n const protHeader = encodeBase64url(JSON.stringify(Object.assign({\n alg\n }, protectedHeader, {\n enc\n })));\n const encodedAad = stringToBytes(aad ? `${protHeader}.${bytesToBase64url(aad)}` : protHeader);\n return Promise.resolve({ ...xc20pEncrypt(cleartext, encodedAad),\n protectedHeader: protHeader\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n const xc20pEncrypt = xc20pEncrypter(key);\n const enc = 'XC20P';\n const alg = 'dir';\n return {\n alg,\n enc,\n encrypt\n };\n}\nfunction xc20pDirDecrypter(key) {\n const decrypt = function (sealed, iv, aad) {\n try {\n try {\n return Promise.resolve(xchacha20poly1305(key, iv, aad).decrypt(sealed));\n } catch (error) {\n return Promise.resolve(null);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n return {\n alg: 'dir',\n enc: 'XC20P',\n decrypt\n };\n}\n\nconst createX25519EcdhEsKek = function (recipientPublicKey, senderSecret, // unused\nalg, apu, // unused\napv, ephemeralKeyPair) {\n try {\n const crv = 'X25519';\n const keyLen = 256;\n const ephemeral = ephemeralKeyPair ? generateKeyPairFromSeed(ephemeralKeyPair.secretKey) : generateKeyPair();\n const epk = {\n kty: 'OKP',\n crv,\n x: bytesToBase64url(ephemeral.publicKey)\n };\n const sharedSecret = x25519.getSharedSecret(ephemeral.secretKey, recipientPublicKey); // Key Encryption Key\n\n const consumerInfo = base64ToBytes(apv ?? '');\n const kek = concatKDF(sharedSecret, keyLen, alg, undefined, consumerInfo);\n return Promise.resolve({\n epk,\n kek\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst computeX25519EcdhEsKek = function (recipient, receiverSecret, alg) {\n try {\n function _temp2() {\n // Key Encryption Key\n let producerInfo = undefined;\n let consumerInfo = undefined;\n if (recipient.header.apu) producerInfo = base64ToBytes(recipient.header.apu);\n if (recipient.header.apv) consumerInfo = base64ToBytes(recipient.header.apv);\n return concatKDF(sharedSecret, keyLen, alg, producerInfo, consumerInfo);\n }\n\n const crv = 'X25519';\n const keyLen = 256;\n const header = recipient.header;\n if (header.epk?.crv !== crv || typeof header.epk.x == 'undefined') return Promise.resolve(null);\n const publicKey = base64ToBytes(header.epk.x);\n let sharedSecret;\n\n const _temp = function () {\n if (receiverSecret instanceof Uint8Array) {\n sharedSecret = x25519.getSharedSecret(receiverSecret, publicKey);\n } else {\n return Promise.resolve(receiverSecret(publicKey)).then(function (_receiverSecret) {\n sharedSecret = _receiverSecret;\n });\n }\n }();\n\n return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\nconst createX25519Ecdh1PUv3Kek = function (recipientPublicKey, senderSecret, alg, // must be provided as this is the key agreement alg + the key wrapper alg, Example: 'ECDH-ES+A256KW'\napu, apv, ephemeralKeyPair) {\n try {\n function _temp4() {\n const sharedSecret = new Uint8Array(zE.length + zS.length);\n sharedSecret.set(zE);\n sharedSecret.set(zS, zE.length);\n let partyUInfo = new Uint8Array(0);\n let partyVInfo = new Uint8Array(0);\n if (apu) partyUInfo = base64ToBytes(apu);\n if (apv) partyVInfo = base64ToBytes(apv); // Key Encryption Key\n\n const kek = concatKDF(sharedSecret, keyLen, alg, partyUInfo, partyVInfo);\n return {\n epk,\n kek\n };\n }\n\n const crv = 'X25519';\n const keyLen = 256;\n const ephemeral = ephemeralKeyPair ? generateKeyPairFromSeed(ephemeralKeyPair.secretKey) : generateKeyPair();\n const epk = {\n kty: 'OKP',\n crv,\n x: bytesToBase64url(ephemeral.publicKey)\n };\n const zE = x25519.getSharedSecret(ephemeral.secretKey, recipientPublicKey); // ECDH-1PU requires additional shared secret between\n // static key of sender and static key of recipient\n\n let zS;\n\n const _temp3 = function () {\n if (senderSecret instanceof Uint8Array) {\n zS = x25519.getSharedSecret(senderSecret, recipientPublicKey);\n } else {\n return Promise.resolve(senderSecret(recipientPublicKey)).then(function (_senderSecret) {\n zS = _senderSecret;\n });\n }\n }();\n\n return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst computeX25519Ecdh1PUv3Kek = function (recipient, recipientSecret, senderPublicKey, alg) {\n try {\n function _temp2() {\n const sharedSecret = new Uint8Array(zE.length + zS.length);\n sharedSecret.set(zE);\n sharedSecret.set(zS, zE.length); // Key Encryption Key\n\n let producerInfo;\n let consumerInfo;\n if (recipient.header.apu) producerInfo = base64ToBytes(recipient.header.apu);\n if (recipient.header.apv) consumerInfo = base64ToBytes(recipient.header.apv);\n return concatKDF(sharedSecret, keyLen, alg, producerInfo, consumerInfo);\n }\n\n const crv = 'X25519';\n const keyLen = 256;\n const header = recipient.header;\n if (header.epk?.crv !== crv || typeof header.epk.x == 'undefined') return Promise.resolve(null); // ECDH-1PU requires additional shared secret between\n // static key of sender and static key of recipient\n\n const publicKey = base64ToBytes(header.epk.x);\n let zE;\n let zS;\n\n const _temp = function () {\n if (recipientSecret instanceof Uint8Array) {\n zE = x25519.getSharedSecret(recipientSecret, publicKey);\n zS = x25519.getSharedSecret(recipientSecret, senderPublicKey);\n } else {\n return Promise.resolve(recipientSecret(publicKey)).then(function (_recipientSecret) {\n zE = _recipientSecret;\n return Promise.resolve(recipientSecret(senderPublicKey)).then(function (_recipientSecret2) {\n zS = _recipientSecret2;\n });\n });\n }\n }();\n\n return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n/**\n * Wraps an X25519 secret key into an ECDH method that can be used to compute a shared secret with a public key.\n * @param mySecretKey A `Uint8Array` of length 32 representing the bytes of my secret key\n * @returns an `ECDH` method with the signature `(theirPublicKey: Uint8Array) => Promise<Uint8Array>`\n *\n * @throws 'invalid_argument:...' if the secret key size is wrong\n */\n\nfunction createX25519ECDH(mySecretKey) {\n if (mySecretKey.length !== 32) {\n throw new Error('invalid_argument: incorrect secret key length for X25519');\n }\n\n return function (theirPublicKey) {\n try {\n if (theirPublicKey.length !== 32) {\n throw new Error('invalid_argument: incorrect publicKey key length for X25519');\n }\n\n return Promise.resolve(x25519.getSharedSecret(mySecretKey, theirPublicKey));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nfunction createFullEncrypter(recipientPublicKey, senderSecret, options = {}, kekCreator, keyWrapper, contentEncrypter) {\n const encrypt = function (cleartext, protectedHeader = {}, aad, ephemeralKeyPair) {\n try {\n // we won't want alg to be set to dir from xc20pDirEncrypter\n Object.assign(protectedHeader, {\n alg: undefined\n }); // Content Encryption Key\n\n const cek = randomBytes(32);\n return Promise.resolve(encryptCek(cek, ephemeralKeyPair)).then(function (recipient) {\n // getting an ephemeral key means the epk is set only once per all recipients\n if (ephemeralKeyPair) {\n protectedHeader.alg = `${kekCreator.alg}+${keyWrapper.alg}`;\n protectedHeader.epk = ephemeralKeyPair.publicKeyJWK;\n }\n\n return Promise.resolve(contentEncrypter.from(cek).encrypt(cleartext, protectedHeader, aad)).then(function (_contentEncrypter$fro) {\n return { ..._contentEncrypter$fro,\n recipient,\n cek\n };\n });\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n const encryptCek = function (cek, ephemeralKeyPair) {\n try {\n return Promise.resolve(kekCreator.createKek(recipientPublicKey, senderSecret, `${kekCreator.alg}+${keyWrapper.alg}`, options.apu, options.apv, ephemeralKeyPair)).then(function ({\n epk,\n kek\n }) {\n return Promise.resolve(keyWrapper.from(kek).wrap(cek)).then(function (res) {\n const recipient = {\n encrypted_key: bytesToBase64url(res.ciphertext),\n header: {}\n };\n if (res.iv) recipient.header.iv = bytesToBase64url(res.iv);\n if (res.tag) recipient.header.tag = bytesToBase64url(res.tag);\n if (options.kid) recipient.header.kid = options.kid;\n if (options.apu) recipient.header.apu = options.apu;\n if (options.apv) recipient.header.apv = options.apv;\n\n if (!ephemeralKeyPair) {\n recipient.header.alg = `${kekCreator.alg}+${keyWrapper.alg}`;\n recipient.header.epk = epk;\n }\n\n return recipient;\n });\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n return {\n alg: keyWrapper.alg,\n enc: contentEncrypter.enc,\n encrypt,\n encryptCek,\n genEpk: genX25519EphemeralKeyPair\n };\n}\n\n/**\n * @deprecated Use\n * {@link xc20pAuthEncrypterEcdh1PuV3x25519WithXc20PkwV2 | xc20pAuthEncrypterEcdh1PuV3x25519WithXc20PkwV2() } instead\n */\n\nconst resolveX25519Encrypters = function (dids, resolver) {\n try {\n const encryptersForDID = function (did, resolved = []) {\n try {\n return Promise.resolve(resolver.resolve(did)).then(function ({\n didResolutionMetadata,\n didDocument\n }) {\n function _temp2() {\n const agreementKeys = didDocument.keyAgreement?.map(key => {\n if (typeof key === 'string') {\n return [...(didDocument.publicKey || []), ...(didDocument.verificationMethod || [])].find(pk => pk.id === key);\n }\n\n return key;\n })?.filter(key => typeof key !== 'undefined');\n const pks = agreementKeys?.filter(key => ['X25519KeyAgreementKey2019', 'X25519KeyAgreementKey2020', 'JsonWebKey2020', 'Multikey'].includes(key.type)) ?? [];\n if (!pks.length && !controllerEncrypters.length) throw new Error(`no_suitable_keys: Could not find X25519 key for ${did}`);\n return pks.map(pk => {\n const {\n keyBytes,\n keyType\n } = extractPublicKeyBytes(pk);\n\n if (keyType === 'X25519') {\n return x25519Encrypter(keyBytes, pk.id);\n } else {\n return null;\n }\n }).filter(isDefined).concat(...controllerEncrypters);\n }\n\n resolved.push(did);\n\n if (didResolutionMetadata?.error || didDocument == null) {\n throw new Error(`resolver_error: Could not resolve ${did}: ${didResolutionMetadata.error}, ${didResolutionMetadata.message}`);\n }\n\n let controllerEncrypters = [];\n\n if (!didDocument.controller && !didDocument.keyAgreement) {\n throw new Error(`no_suitable_keys: Could not find x25519 key for ${did}`);\n }\n\n const _temp = function () {\n if (didDocument.controller) {\n let controllers = Array.isArray(didDocument.controller) ? didDocument.controller : [didDocument.controller];\n controllers = controllers.filter(c => !resolved.includes(c));\n const encrypterPromises = controllers.map(did => encryptersForDID(did, resolved).catch(() => {\n return [];\n }));\n return Promise.resolve(Promise.all(encrypterPromises)).then(function (encrypterArrays) {\n controllerEncrypters = [].concat(...encrypterArrays);\n });\n }\n }();\n\n return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n const encrypterPromises = dids.map(did => encryptersForDID(did));\n return Promise.resolve(Promise.all(encrypterPromises)).then(function (encrypterArrays) {\n return [].concat(...encrypterArrays);\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n/**\n * @deprecated Use {@link xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2 | xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2() }\n * instead\n */\n\nfunction createAuthEncrypter(recipientPublicKey, senderSecret, options = {}) {\n return xc20pAuthEncrypterEcdh1PuV3x25519WithXc20PkwV2(recipientPublicKey, senderSecret, options);\n}\n/**\n * @deprecated Use {@link xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2 | xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2() }\n * instead\n */\n\nfunction createAnonEncrypter(publicKey, options = {}) {\n return xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2(publicKey, options);\n}\n/**\n * @deprecated Use\n * {@link xc20pAuthDecrypterEcdh1PuV3x25519WithXc20PkwV2 | xc20pAuthDecrypterEcdh1PuV3x25519WithXc20PkwV2() } instead\n */\n\nfunction createAuthDecrypter(recipientSecret, senderPublicKey) {\n return xc20pAuthDecrypterEcdh1PuV3x25519WithXc20PkwV2(recipientSecret, senderPublicKey);\n}\n/**\n * @deprecated Use {@link xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2 | xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2() }\n * instead\n */\n\nfunction createAnonDecrypter(recipientSecret) {\n return xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2(recipientSecret);\n}\nfunction validateHeader(header) {\n if (!(header && header.epk && header.iv && header.tag)) {\n throw new Error('bad_jwe: malformed header');\n }\n\n return header;\n}\nconst xc20pKeyWrapper = {\n from: wrappingKey => {\n const wrap = function (cek) {\n try {\n return Promise.resolve(xc20pEncrypter(wrappingKey)(cek));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n return {\n wrap\n };\n },\n alg: 'XC20PKW'\n};\n/**\n * @deprecated Use {@link xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2 | xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2() }\n * instead\n */\n\nfunction x25519Encrypter(publicKey, kid, apv) {\n return xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2(publicKey, {\n kid,\n apv\n });\n}\n/**\n * Recommended encrypter for anonymous encryption (i.e. no sender authentication).\n * Uses {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | ECDH-ES+XC20PKW v2}.\n *\n * @param recipientPublicKey - the byte array representing the recipient public key\n * @param options - {@link AnonEncryptParams} used to specify the recipient key ID (`kid`)\n *\n * @returns an {@link Encrypter} instance usable with {@link createJWE}\n *\n * NOTE: ECDH-ES+XC20PKW is a proposed draft in IETF and not a standard yet and\n * is subject to change as new revisions or until the official CFRG specification is released.\n */\n\nfunction xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2(recipientPublicKey, options = {}) {\n return createFullEncrypter(recipientPublicKey, undefined, options, {\n createKek: createX25519EcdhEsKek,\n alg: 'ECDH-ES'\n }, xc20pKeyWrapper, {\n from: cek => xc20pDirEncrypter(cek),\n enc: 'XC20P'\n });\n}\n/**\n * Recommended encrypter for authenticated encryption (i.e. sender authentication and requires\n * sender private key to encrypt the data).\n * Uses {@link https://tools.ietf.org/html/draft-madden-jose-ecdh-1pu-03 | ECDH-1PU v3 } and\n * {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | XC20PKW v2 }.\n *\n * @param recipientPublicKey - the byte array representing the recipient public key\n * @param senderSecret - either a Uint8Array representing the sender secret key or\n * an ECDH function that wraps the key and can promise a shared secret given a public key\n * @param options - {@link AuthEncryptParams} used to specify extra header parameters\n *\n * @returns an {@link Encrypter} instance usable with {@link createJWE}\n *\n * NOTE: ECDH-1PU and XC20PKW are proposed drafts in IETF and not a standard yet and\n * are subject to change as new revisions or until the official CFRG specification are released.\n *\n * Implements ECDH-1PU+XC20PKW with XChaCha20Poly1305 based on the following specs:\n * - {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | XC20PKW}\n * - {@link https://tools.ietf.org/html/draft-madden-jose-ecdh-1pu-03 | ECDH-1PU}\n */\n\nfunction xc20pAuthEncrypterEcdh1PuV3x25519WithXc20PkwV2(recipientPublicKey, senderSecret, options = {}) {\n return createFullEncrypter(recipientPublicKey, senderSecret, options, {\n createKek: createX25519Ecdh1PUv3Kek,\n alg: 'ECDH-1PU'\n }, xc20pKeyWrapper, {\n from: cek => xc20pDirEncrypter(cek),\n enc: 'XC20P'\n });\n}\nfunction x25519Decrypter(receiverSecret) {\n return xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2(receiverSecret);\n}\n/**\n * Recommended decrypter for anonymous encryption (i.e. no sender authentication).\n * Uses {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | ECDH-ES+XC20PKW v2 }.\n *\n * @param recipientSecret - either a Uint8Array representing the recipient secret key or\n * an ECDH function that wraps the key and can promise a shared secret given a public key\n *\n * @returns a {@link Decrypter} instance usable with {@link decryptJWE}\n *\n * NOTE: ECDH-ES+XC20PKW is a proposed draft in IETF and not a standard yet and\n * is subject to change as new revisions or until the official CFRG specification is released.\n *\n * @beta\n */\n\nfunction xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2(recipientSecret) {\n const decrypt = function (sealed, iv, aad, recipient) {\n try {\n recipient = recipient;\n const header = validateHeader(recipient.header);\n return Promise.resolve(computeX25519EcdhEsKek(recipient, recipientSecret, alg)).then(function (kek) {\n if (!kek) return null; // Content Encryption Key\n\n const sealedCek = toSealed(recipient.encrypted_key, header.tag);\n return Promise.resolve(xc20pDirDecrypter(kek).decrypt(sealedCek, base64ToBytes(header.iv))).then(function (cek) {\n return cek === null ? null : xc20pDirDecrypter(cek).decrypt(sealed, iv, aad);\n });\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n const alg = 'ECDH-ES+XC20PKW';\n const enc = 'XC20P';\n return {\n alg,\n enc,\n decrypt\n };\n}\n/**\n * Recommended decrypter for authenticated encryption (i.e. sender authentication and requires\n * sender public key to decrypt the data).\n * Uses {@link https://tools.ietf.org/html/draft-madden-jose-ecdh-1pu-03 | ECDH-1PU v3 } and\n * {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | XC20PKW v2 }.\n *\n * @param recipientSecret - either a Uint8Array representing the recipient secret key or\n * an ECDH function that wraps the key and can promise a shared secret given a public key\n * @param senderPublicKey - the byte array representing the sender public key\n *\n * @returns a {@link Decrypter} instance usable with {@link decryptJWE}\n *\n * NOTE: ECDH-1PU and XC20PKW are proposed drafts in IETF and not a standard yet and\n * are subject to change as new revisions or until the official CFRG specification are released.\n *\n * @beta\n *\n * Implements ECDH-1PU+XC20PKW with XChaCha20Poly1305 based on the following specs:\n * - {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | XC20PKW}\n * - {@link https://tools.ietf.org/html/draft-madden-jose-ecdh-1pu-03 | ECDH-1PU}\n */\n\nfunction xc20pAuthDecrypterEcdh1PuV3x25519WithXc20PkwV2(recipientSecret, senderPublicKey) {\n const decrypt = function (sealed, iv, aad, recipient) {\n try {\n recipient = recipient;\n const header = validateHeader(recipient.header);\n return Promise.resolve(computeX25519Ecdh1PUv3Kek(recipient, recipientSecret, senderPublicKey, alg)).then(function (kek) {\n if (!kek) return null; // Content Encryption Key\n\n const sealedCek = toSealed(recipient.encrypted_key, header.tag);\n return Promise.resolve(xc20pDirDecrypter(kek).decrypt(sealedCek, base64ToBytes(header.iv))).then(function (cek) {\n return cek === null ? null : xc20pDirDecrypter(cek).decrypt(sealed, iv, aad);\n });\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n const alg = 'ECDH-1PU+XC20PKW';\n const enc = 'XC20P';\n return {\n alg,\n enc,\n decrypt\n };\n}\n\nexport { ES256KSigner, ES256Signer, EdDSASigner, EllipticSigner, JWT_ERROR, NaclSigner, SimpleSigner, base58ToBytes, base64ToBytes, bytesToBase58, bytesToBase64url, bytesToHex, bytesToMultibase, computeX25519Ecdh1PUv3Kek, computeX25519EcdhEsKek, concatKDF, createAnonDecrypter, createAnonEncrypter, createAuthDecrypter, createAuthEncrypter, createFullEncrypter, createJWE, createJWS, createJWT, createMultisignatureJWT, createX25519ECDH, createX25519Ecdh1PUv3Kek, createX25519EcdhEsKek, decodeJWT, decryptJWE, extractPublicKeyBytes, genX25519EphemeralKeyPair, hexToBytes, multibaseToBytes, resolveX25519Encrypters, supportedCodecs, toEthereumAddress, verifyJWS, verifyJWT, x25519Decrypter, x25519Encrypter, xc20pAuthDecrypterEcdh1PuV3x25519WithXc20PkwV2, xc20pAuthEncrypterEcdh1PuV3x25519WithXc20PkwV2, xc20pDirDecrypter, xc20pDirEncrypter };\n//# sourceMappingURL=index.module.js.map\n","import { decodeJWT, JWT_ERROR, verifyJWT, createJWT, createMultisignatureJWT } from 'did-jwt';\n\nconst JWT_ALG = 'ES256K';\nconst JWT_FORMAT = /^[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.?[A-Za-z0-9-_.+/=]*$/;\nconst DEFAULT_CONTEXT = 'https://www.w3.org/2018/credentials/v1';\nconst DEFAULT_VC_TYPE = 'VerifiableCredential';\nconst DEFAULT_VP_TYPE = 'VerifiablePresentation';\n/**\n * The `JwtProof2020` is a synthetic proof type, usable for differentiating credentials by proof type when representing\n * JWT credentials as W3C VC JSON. It is not a registered W3C VC Data Model algorithm and should not be treated as\n * such.\n *\n * This proof type is only intended as a convenience and does not actually prove the validity of a VC/VP in JSON\n * representation. The actual verifiable credential or presentation is represented in the `jwt` property.\n */\nconst DEFAULT_JWT_PROOF_TYPE = 'JwtProof2020';\n\n/**\n * Additional W3C VC fields:\n * These are defined as optional top-level properties in the W3C spec but are not mapped to top-level JWT names,\n * so they should be moved inside the \"vc\" object when transforming to a JWT.\n * Conversely, they should be moved out of the \"vc\" object when transforming from a JWT to W3C JSON.\n */\nconst additionalPropNames = ['evidence', 'termsOfUse', 'refreshService', 'credentialSchema', 'credentialStatus'];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction asArray(arg) {\n return Array.isArray(arg) ? arg : [arg];\n}\nfunction deepCopy(source) {\n return Array.isArray(source) ? source.map(item => deepCopy(item)) : source instanceof Date ? new Date(source.getTime()) : source && typeof source === 'object' ? Object.getOwnPropertyNames(source).reduce((o, prop) => {\n Object.defineProperty(o, prop, Object.getOwnPropertyDescriptor(source, prop));\n o[prop] = deepCopy(source[prop]);\n return o;\n }, Object.create(Object.getPrototypeOf(source))) : source;\n}\nfunction notEmpty(value) {\n return value !== null && value !== undefined;\n}\nfunction cleanUndefined(input) {\n if (typeof input !== 'object' || input === null) {\n return input;\n }\n const obj = {\n ...input\n };\n Object.keys(obj).forEach(key => obj[key] === undefined && delete obj[key]);\n return obj;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isLegacyAttestationFormat(payload) {\n // payload is an object and has all the required fields of old attestation format\n return typeof payload === 'object' && payload.sub && payload.iss && payload.claim && payload.iat;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction attestationToVcFormat(payload) {\n const {\n iat,\n nbf,\n claim,\n vc,\n ...rest\n } = payload;\n const result = {\n ...rest,\n nbf: nbf ? nbf : iat,\n vc: {\n '@context': [DEFAULT_CONTEXT],\n type: [DEFAULT_VC_TYPE],\n credentialSubject: claim\n }\n };\n if (vc) payload.issVc = vc;\n return result;\n}\nfunction normalizeJwtCredentialPayload(input, removeOriginalFields = true) {\n let result = deepCopy(input);\n if (isLegacyAttestationFormat(input)) {\n result = attestationToVcFormat(input);\n }\n // FIXME: handle case when credentialSubject(s) are not object types\n result.credentialSubject = {\n ...input.credentialSubject,\n ...input.vc?.credentialSubject\n };\n if (input.sub && !input.credentialSubject?.id && result.credentialSubject) {\n result.credentialSubject.id = input.sub;\n if (removeOriginalFields) {\n delete result.sub;\n }\n }\n if (removeOriginalFields) {\n delete result.vc?.credentialSubject;\n }\n if (typeof input.issuer === 'undefined' || typeof input.issuer === 'object') {\n result.issuer = cleanUndefined({\n id: input.iss,\n ...input.issuer\n });\n if (removeOriginalFields && !input.issuer?.id) {\n delete result.iss;\n }\n }\n if (!input.id && input.jti) {\n result.id = result.id || result.jti;\n if (removeOriginalFields) {\n delete result.jti;\n }\n }\n const types = [...asArray(result.type), ...asArray(result.vc?.type)].filter(notEmpty);\n result.type = [...new Set(types)];\n if (removeOriginalFields) {\n delete result.vc?.type;\n }\n for (const prop of additionalPropNames) {\n if (input.vc && input.vc[prop]) {\n if (!result[prop]) {\n result[prop] = input.vc[prop];\n }\n if (removeOriginalFields) {\n delete result.vc[prop];\n }\n }\n }\n const contextArray = [...asArray(input.context), ...asArray(input['@context']), ...asArray(input.vc?.['@context'])].filter(notEmpty);\n result['@context'] = [...new Set(contextArray)];\n if (removeOriginalFields) {\n delete result.context;\n delete result.vc?.['@context'];\n }\n if (!input.issuanceDate && (input.iat || input.nbf)) {\n result.issuanceDate = new Date((input.nbf || input.iat) * 1000).toISOString();\n if (removeOriginalFields) {\n if (input.nbf) {\n delete result.nbf;\n } else {\n delete result.iat;\n }\n }\n }\n if (!input.expirationDate && input.exp) {\n result.expirationDate = new Date(input.exp * 1000).toISOString();\n if (removeOriginalFields) {\n delete result.exp;\n }\n }\n if (removeOriginalFields) {\n if (result.vc && Object.keys(result.vc).length === 0) {\n delete result.vc;\n }\n }\n // FIXME: interpret `aud` property as `verifier`\n return result;\n}\nfunction normalizeJwtCredential(input, removeOriginalFields = true) {\n let decoded;\n try {\n decoded = decodeJWT(input);\n } catch {\n throw new TypeError('unknown credential format');\n }\n return {\n ...normalizeJwtCredentialPayload(decoded.payload, removeOriginalFields),\n proof: {\n type: DEFAULT_JWT_PROOF_TYPE,\n jwt: input\n }\n };\n}\n/**\n * Normalizes a credential payload into an unambiguous W3C credential data type In case of conflict, existing W3C\n * Credential specific properties take precedence, except for arrays and object types which get merged.\n *\n * @param input - either a JWT or JWT payload, or a VerifiableCredential\n * @param removeOriginalFields - if true, removes all fields that were transformed according to the W3C mapping\n *\n * @see {@link https://www.w3.org/TR/vc-data-model/#jwt-encoding | VC JWT encoding }\n */\nfunction normalizeCredential(input, removeOriginalFields = true) {\n if (typeof input === 'string') {\n if (JWT_FORMAT.test(input)) {\n return normalizeJwtCredential(input, removeOriginalFields);\n } else {\n let parsed;\n try {\n parsed = JSON.parse(input);\n } catch {\n throw new TypeError('unknown credential format');\n }\n return normalizeCredential(parsed, removeOriginalFields);\n }\n } else if (input.proof?.jwt) {\n // TODO: test that it correctly propagates app specific proof properties\n return deepCopy({\n ...normalizeJwtCredential(input.proof.jwt, removeOriginalFields),\n proof: input.proof\n });\n } else {\n // TODO: test that it accepts JWT payload, CredentialPayload, VerifiableCredential\n // TODO: test that it correctly propagates proof, if any\n return {\n proof: {},\n ...normalizeJwtCredentialPayload(input, removeOriginalFields)\n };\n }\n}\n/**\n * Transforms a W3C Credential payload into a JWT compatible encoding.\n * The method accepts app specific fields and in case of collision, existing JWT properties will take precedence.\n * Also, `nbf`, `exp` and `jti` properties can be explicitly set to `undefined` and they will be kept intact.\n * @param input - either a JWT payload or a CredentialPayloadInput\n * @param removeOriginalFields - if true, removes original W3C fields from the resulting object\n *\n * @see {@link https://www.w3.org/TR/vc-data-model/#jwt-encoding | VC JWT encoding }\n */\nfunction transformCredentialInput(input, removeOriginalFields = true) {\n if (Array.isArray(input.credentialSubject)) throw Error('credentialSubject of type array not supported');\n const result = deepCopy({\n vc: {\n ...input.vc\n },\n ...input\n });\n result.vc = result.vc;\n const credentialSubject = {\n ...input.credentialSubject,\n ...input.vc?.credentialSubject\n };\n if (!input.sub) {\n result.sub = input.credentialSubject?.id;\n if (removeOriginalFields) {\n delete credentialSubject.id;\n }\n }\n const contextEntries = [...asArray(input.context), ...asArray(input['@context']), ...asArray(input.vc?.['@context'])].filter(notEmpty);\n result.vc['@context'] = [...new Set(contextEntries)];\n if (removeOriginalFields) {\n delete result.context;\n delete result['@context'];\n }\n const types = [...asArray(input.type), ...asArray(input.vc?.type)].filter(notEmpty);\n result.vc.type = [...new Set(types)];\n if (removeOriginalFields) {\n delete result.type;\n }\n if (input.id && Object.getOwnPropertyNames(input).indexOf('jti') === -1) {\n result.jti = input.id;\n if (removeOriginalFields) {\n delete result.id;\n }\n }\n if (input.issuanceDate && Object.getOwnPropertyNames(input).indexOf('nbf') === -1) {\n const converted = Date.parse(input.issuanceDate);\n if (!isNaN(converted)) {\n result.nbf = Math.floor(converted / 1000);\n if (removeOriginalFields) {\n delete result.issuanceDate;\n }\n }\n }\n if (input.expirationDate && Object.getOwnPropertyNames(input).indexOf('exp') === -1) {\n const converted = Date.parse(input.expirationDate);\n if (!isNaN(converted)) {\n result.exp = Math.floor(converted / 1000);\n if (removeOriginalFields) {\n delete result.expirationDate;\n }\n }\n }\n if (input.issuer && Object.getOwnPropertyNames(input).indexOf('iss') === -1) {\n if (typeof input.issuer === 'object') {\n result.iss = input.issuer?.id;\n if (removeOriginalFields) {\n delete result.issuer.id;\n if (Object.keys(result.issuer).length === 0) {\n delete result.issuer;\n }\n }\n } else if (typeof input.issuer === 'string') {\n result.iss = input.iss || '' + input.issuer;\n if (removeOriginalFields) {\n delete result.issuer;\n }\n } else ;\n }\n result.vc.credentialSubject = credentialSubject;\n if (removeOriginalFields) {\n delete result.credentialSubject;\n }\n for (const prop of additionalPropNames) {\n if (input[prop]) {\n if (!result.vc[prop]) {\n result.vc[prop] = input[prop];\n }\n if (removeOriginalFields) {\n delete result[prop];\n }\n }\n }\n return result;\n}\nfunction normalizeJwtPresentationPayload(input, removeOriginalFields = true) {\n const result = deepCopy(input);\n result.verifiableCredential = [...asArray(input.verifiableCredential), ...asArray(input.vp?.verifiableCredential)].filter(notEmpty);\n result.verifiableCredential = result.verifiableCredential.map(cred => {\n return normalizeCredential(cred, removeOriginalFields);\n });\n if (removeOriginalFields) {\n delete result.vp?.verifiableCredential;\n }\n if (input.iss && !input.holder) {\n result.holder = input.iss;\n if (removeOriginalFields) {\n delete result.iss;\n }\n }\n if (input.aud) {\n result.verifier = [...asArray(input.verifier), ...asArray(input.aud)].filter(notEmpty);\n result.verifier = [...new Set(result.verifier)];\n if (removeOriginalFields) {\n delete result.aud;\n }\n }\n if (input.jti && Object.getOwnPropertyNames(input).indexOf('id') === -1) {\n result.id = input.id || input.jti;\n if (removeOriginalFields) {\n delete result.jti;\n }\n }\n const types = [...asArray(input.type), ...asArray(input.vp?.type)].filter(notEmpty);\n result.type = [...new Set(types)];\n if (removeOriginalFields) {\n delete result.vp?.type;\n }\n const contexts = [...asArray(input.context), ...asArray(input['@context']), ...asArray(input.vp?.['@context'])].filter(notEmpty);\n result['@context'] = [...new Set(contexts)];\n if (removeOriginalFields) {\n delete result.context;\n delete result.vp?.['@context'];\n }\n if (!input.issuanceDate && (input.iat || input.nbf)) {\n result.issuanceDate = new Date((input.nbf || input.iat) * 1000).toISOString();\n if (removeOriginalFields) {\n if (input.nbf) {\n delete result.nbf;\n } else {\n delete result.iat;\n }\n }\n }\n if (!input.expirationDate && input.exp) {\n result.expirationDate = new Date(input.exp * 1000).toISOString();\n if (removeOriginalFields) {\n delete result.exp;\n }\n }\n if (result.vp && Object.keys(result.vp).length === 0) {\n if (removeOriginalFields) {\n delete result.vp;\n }\n }\n return result;\n}\nfunction normalizeJwtPresentation(input, removeOriginalFields = true) {\n let decoded;\n try {\n decoded = decodeJWT(input);\n } catch {\n throw new TypeError('unknown presentation format');\n }\n return {\n ...normalizeJwtPresentationPayload(decoded.payload, removeOriginalFields),\n proof: {\n type: DEFAULT_JWT_PROOF_TYPE,\n jwt: input\n }\n };\n}\n/**\n * Normalizes a presentation payload into an unambiguous W3C Presentation data type.\n *\n * @see {@link https://www.w3.org/TR/vc-data-model/#jwt-encoding | VP JWT encoding }\n *\n * @param input - either a JWT or JWT payload, or a VerifiablePresentation\n * @param removeOriginalFields - if true, removes all fields that were transformed according to the W3C mapping\n */\nfunction normalizePresentation(input, removeOriginalFields = true) {\n if (typeof input === 'string') {\n if (JWT_FORMAT.test(input)) {\n return normalizeJwtPresentation(input, removeOriginalFields);\n } else {\n let parsed;\n try {\n parsed = JSON.parse(input);\n } catch {\n throw new TypeError('unknown presentation format');\n }\n return normalizePresentation(parsed, removeOriginalFields);\n }\n } else if (input.proof?.jwt) {\n // TODO: test that it correctly propagates app specific proof properties\n return {\n ...normalizeJwtPresentation(input.proof.jwt, removeOriginalFields),\n proof: input.proof\n };\n } else {\n // TODO: test that it accepts JWT payload, PresentationPayload, VerifiablePresentation\n // TODO: test that it correctly propagates proof, if any\n return {\n proof: {},\n ...normalizeJwtPresentationPayload(input, removeOriginalFields)\n };\n }\n}\n/**\n * Transforms a W3C Presentation payload into a JWT compatible encoding.\n * The method accepts app specific fields and in case of collision, existing JWT properties will take precedence.\n * Also, `nbf`, `exp` and `jti` properties can be explicitly set to `undefined` and they will be kept intact.\n * @param input - either a JWT payload or a CredentialPayloadInput\n * @param removeOriginalFields - when true, removes the original W3C fields from the resulting object\n *\n * @see {@link https://www.w3.org/TR/vc-data-model/#jwt-encoding | VP JWT encoding }\n */\nfunction transformPresentationInput(input, removeOriginalFields = true) {\n const result = deepCopy({\n vp: {\n ...input.vp\n },\n ...input\n });\n result.vp = result.vp;\n const contextEntries = [...asArray(input.context), ...asArray(input['@context']), ...asArray(input.vp?.['@context'])].filter(notEmpty);\n result.vp['@context'] = [...new Set(contextEntries)];\n if (removeOriginalFields) {\n delete result.context;\n delete result['@context'];\n }\n const types = [...asArray(input.type), ...asArray(input.vp?.type)].filter(notEmpty);\n result.vp.type = [...new Set(types)];\n if (removeOriginalFields) {\n delete result.type;\n }\n if (input.id && Object.getOwnPropertyNames(input).indexOf('jti') === -1) {\n result.jti = input.id;\n if (removeOriginalFields) {\n delete result.id;\n }\n }\n if (input.issuanceDate && Object.getOwnPropertyNames(input).indexOf('nbf') === -1) {\n const converted = Date.parse(input.issuanceDate);\n if (!isNaN(converted)) {\n result.nbf = Math.floor(converted / 1000);\n if (removeOriginalFields) {\n delete result.issuanceDate;\n }\n }\n }\n if (input.expirationDate && Object.getOwnPropertyNames(input).indexOf('exp') === -1) {\n const converted = Date.parse(input.expirationDate);\n if (!isNaN(converted)) {\n result.exp = Math.floor(converted / 1000);\n if (removeOriginalFields) {\n delete result.expirationDate;\n }\n }\n }\n if (result.verifiableCredential || result.vp?.verifiableCredential) {\n result.vp.verifiableCredential = [...asArray(result.verifiableCredential), ...asArray(result.vp?.verifiableCredential)].filter(notEmpty).map(credential => {\n if (typeof credential === 'object' && credential.proof?.jwt) {\n return credential.proof.jwt;\n } else {\n return credential;\n }\n });\n }\n if (removeOriginalFields) {\n delete result.verifiableCredential;\n }\n if (input.holder && Object.getOwnPropertyNames(input).indexOf('iss') === -1) {\n if (typeof input.holder === 'string') {\n result.iss = input.holder;\n if (removeOriginalFields) {\n delete result.holder;\n }\n }\n }\n if (input.verifier) {\n const audience = [...asArray(input.verifier), ...asArray(input.aud)].filter(notEmpty);\n result.aud = [...new Set(audience)];\n if (removeOriginalFields) {\n delete result.verifier;\n }\n }\n return result;\n}\n\n/**\n * Error prefixes used for known verification failure cases related to the\n * {@link https://www.w3.org/TR/vc-data-model/ | Verifiable Credential data model }\n */\nconst VC_ERROR = {\n /**\n * Thrown when the credential or presentation being verified does not conform to the data model defined by\n * {@link https://www.w3.org/TR/vc-data-model/ | the spec}\n */\n SCHEMA_ERROR: 'schema_error',\n /**\n * Thrown when the input is not a JWT string\n */\n FORMAT_ERROR: 'format_error',\n /**\n * Thrown when verifying a presentation where `challenge` and/or `domain` don't match the expected values.\n */\n AUTH_ERROR: 'auth_error'\n};\n/**\n * Known validation or verification error prefixes.\n */\nconst VC_JWT_ERROR = {\n ...VC_ERROR,\n ...JWT_ERROR\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isDateObject(input) {\n return input && !isNaN(input) && Object.prototype.toString.call(input) === '[object Date]';\n}\nfunction validateJwtFormat(value) {\n if (typeof value === 'string' && !value.match(JWT_FORMAT)) {\n throw new TypeError(`${VC_ERROR.FORMAT_ERROR}: \"${value}\" is not a valid JWT format`);\n }\n}\n// The main scenario we want to guard against is having a timestamp in milliseconds\n// instead of seconds (ex: from new Date().getTime()).\n// We will check the number of digits and assume that any number with 12 or more\n// digits is a millisecond timestamp.\n// 10 digits max is 9999999999 -> 11/20/2286 @ 5:46pm (UTC)\n// 11 digits max is 99999999999 -> 11/16/5138 @ 9:46am (UTC)\n// 12 digits max is 999999999999 -> 09/27/33658 @ 1:46am (UTC)\nfunction validateTimestamp(value) {\n if (typeof value === 'number') {\n if (!(Number.isInteger(value) && value < 100000000000)) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: \"${value}\" is not a unix timestamp in seconds`);\n }\n } else if (typeof value === 'string') {\n validateTimestamp(Math.floor(new Date(value).valueOf() / 1000));\n } else if (!isDateObject(value)) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: \"${value}\" is not a valid time`);\n }\n}\nfunction validateContext(value) {\n const input = asArray(value);\n if (input.length < 1 || input.indexOf(DEFAULT_CONTEXT) === -1) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: @context is missing default context \"${DEFAULT_CONTEXT}\"`);\n }\n}\nfunction validateVcType(value) {\n const input = asArray(value);\n if (input.length < 1 || input.indexOf(DEFAULT_VC_TYPE) === -1) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: type is missing default \"${DEFAULT_VC_TYPE}\"`);\n }\n}\nfunction validateVpType(value) {\n const input = asArray(value);\n if (input.length < 1 || input.indexOf(DEFAULT_VP_TYPE) === -1) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: type is missing default \"${DEFAULT_VP_TYPE}\"`);\n }\n}\nfunction validateCredentialSubject(value) {\n if (Object.keys(value).length === 0) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: credentialSubject must not be empty`);\n }\n}\n\n/**\n * Verifies and validates a VerifiablePresentation that is encoded as a JWT according to the W3C spec.\n *\n * @return a `Promise` that resolves to a `VerifiedPresentation` or rejects with `TypeError` if the input is\n * not W3C compliant or the VerifyPresentationOptions are not satisfied.\n * @param presentation - the presentation to be verified. Currently only the JWT encoding is supported by this library\n * @param resolver - a configured `Resolver` or an implementation of `Resolvable` that can provide the DID document of\n * the JWT issuer (presentation holder)\n * @param options - optional verification options that need to be satisfied. These are also forwarded to did-jwt.\n */\nconst verifyPresentation = function (presentation, resolver, options = {}) {\n try {\n const nbf = options?.policies?.issuanceDate === false ? false : undefined;\n const exp = options?.policies?.expirationDate === false ? false : undefined;\n options = {\n audience: options.domain,\n ...options,\n policies: {\n ...options?.policies,\n nbf,\n exp,\n iat: nbf\n }\n };\n return Promise.resolve(verifyJWT(presentation, {\n resolver,\n ...options\n })).then(function (verified) {\n verifyPresentationPayloadOptions(verified.payload, options);\n verified.verifiablePresentation = normalizePresentation(verified.jwt, options?.removeOriginalFields);\n if (options?.policies?.format !== false) {\n validatePresentationPayload(verified.verifiablePresentation);\n }\n return verified;\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n/**\n * Verifies and validates a VerifiableCredential that is encoded as a JWT according to the W3C spec.\n *\n * @return a `Promise` that resolves to a `VerifiedCredential` or rejects with `TypeError` if the input is not\n * W3C compliant\n * @param vc - the credential to be verified. Currently only the JWT encoding is supported by this library\n * @param resolver - a configured `Resolver` (or an implementation of `Resolvable`) that can provide the DID document\n * of the JWT issuer\n * @param options - optional tweaks to the verification process. These are forwarded to did-jwt.\n */\nconst verifyCredential = function (vc, resolver, options = {}) {\n try {\n const nbf = options?.policies?.issuanceDate === false ? false : undefined;\n const exp = options?.policies?.expirationDate === false ? false : undefined;\n options = {\n ...options,\n policies: {\n ...options?.policies,\n nbf,\n exp,\n iat: nbf\n }\n };\n return Promise.resolve(verifyJWT(vc, {\n resolver,\n ...options\n })).then(function (verified) {\n verified.verifiableCredential = normalizeCredential(verified.jwt, options?.removeOriginalFields);\n if (options?.policies?.format !== false) {\n validateCredentialPayload(verified.verifiableCredential);\n }\n return verified;\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n/**\n * Verifies that the given JwtPresentationPayload contains the appropriate options from VerifyPresentationOptions\n *\n * @param payload - the JwtPresentationPayload to verify against\n * @param options - the VerifyPresentationOptions that contain the optional values to verify.\n * @throws {Error} If VerifyPresentationOptions are not satisfied\n */\n/**\n * Creates a VerifiablePresentation JWT given a `PresentationPayload` or `JwtPresentationPayload` and an `Issuer`.\n *\n * This method transforms the payload into the [JWT encoding](https://www.w3.org/TR/vc-data-model/#jwt-encoding)\n * described in the [W3C VC spec](https://www.w3.org/TR/vc-data-model) and then validated to conform to the minimum\n * spec\n * required spec.\n *\n * The `holder` is then used to assign an algorithm, override the `iss` field of the payload and then sign the JWT.\n *\n * @param payload - `PresentationPayload` or `JwtPresentationPayload`\n * @param holder - `Issuer` of the Presentation JWT (holder of the VC), signer and algorithm that will sign the token\n * @param options - `CreatePresentationOptions` allows to pass additional values to the resulting JWT payload. These\n * options are forwarded to did-jwt.\n * @return a `Promise` that resolves to the JWT encoded verifiable presentation or rejects with `TypeError` if the\n * `payload` is not W3C compliant\n */\nconst createVerifiablePresentationJwt = function (payload, holder, options = {}) {\n try {\n const parsedPayload = {\n iat: undefined,\n ...transformPresentationInput(payload, options?.removeOriginalFields)\n };\n // add challenge to nonce\n if (options.challenge && Object.getOwnPropertyNames(parsedPayload).indexOf('nonce') === -1) {\n parsedPayload.nonce = options.challenge;\n }\n // add domain to audience.\n if (options.domain) {\n const audience = [...asArray(options.domain), ...asArray(parsedPayload.aud)].filter(notEmpty);\n parsedPayload.aud = [...new Set(audience)];\n }\n validateJwtPresentationPayload(parsedPayload);\n return Promise.resolve(createJWT(parsedPayload, {\n ...options,\n issuer: holder.did || parsedPayload.iss || '',\n signer: holder.signer\n }, {\n ...options.header,\n alg: holder.alg || options.header?.alg || JWT_ALG\n }));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n/**\n * Creates a VerifiableCredential given a `CredentialPayload` or `JwtCredentialPayload` and an `Issuer`.\n *\n * This method transforms the payload into the [JWT encoding](https://www.w3.org/TR/vc-data-model/#jwt-encoding)\n * described in the [W3C VC spec](https://www.w3.org/TR/vc-data-model) and then validated to conform to the minimum\n * spec\n * required spec.\n *\n * The `issuer` is then used to assign an algorithm, override the `iss` field of the payload and then sign the JWT.\n *\n * @param payload - `CredentialPayload` or `JwtCredentialPayload`\n * @param issuer - `Issuer` the DID, signer and algorithm that will sign the token\n * @param options - Use these options to tweak the creation of the JWT Credential. These are forwarded to did-jwt.\n * @return a `Promise` that resolves to the JWT encoded verifiable credential or rejects with `TypeError` if the\n * `payload` is not W3C compliant\n */\nconst createVerifiableCredentialJwt = function (payload, issuer, options = {}) {\n try {\n const parsedPayload = {\n iat: undefined,\n ...transformCredentialInput(payload, options.removeOriginalFields)\n };\n validateJwtCredentialPayload(parsedPayload);\n if (!Array.isArray(issuer)) {\n return Promise.resolve(createJWT(parsedPayload, {\n ...options,\n issuer: issuer.did || parsedPayload.iss || '',\n signer: issuer.signer\n }, {\n ...options.header,\n alg: issuer.alg || options.header?.alg || JWT_ALG\n }));\n } else {\n const did = issuer[0].did;\n const issuers = [];\n for (const iss of issuer) {\n if (iss.did !== did) {\n throw new Error('All issuers must be the same did to comply with the Verifiable Conditions spec');\n }\n issuers.push({\n issuer: iss.did || parsedPayload.iss || '',\n signer: iss.signer,\n alg: iss.alg || options.header?.alg || JWT_ALG\n });\n }\n return Promise.resolve(createMultisignatureJWT(parsedPayload, {\n ...options\n }, issuers));\n }\n } catch (e) {\n return Promise.reject(e);\n }\n};\nfunction validateJwtCredentialPayload(payload) {\n validateContext(payload.vc['@context']);\n validateVcType(payload.vc.type);\n validateCredentialSubject(payload.vc.credentialSubject);\n if (payload.nbf) validateTimestamp(payload.nbf);\n if (payload.exp) validateTimestamp(payload.exp);\n}\nfunction validateCredentialPayload(payload) {\n validateContext(payload['@context']);\n validateVcType(payload.type);\n validateCredentialSubject(payload.credentialSubject);\n if (payload.issuanceDate) validateTimestamp(payload.issuanceDate);\n if (payload.expirationDate) validateTimestamp(payload.expirationDate);\n}\nfunction validateJwtPresentationPayload(payload) {\n validateContext(payload.vp['@context']);\n validateVpType(payload.vp.type);\n // empty credential array is allowed\n if (payload.vp.verifiableCredential && payload.vp.verifiableCredential.length >= 1) {\n for (const vc of asArray(payload.vp.verifiableCredential)) {\n if (typeof vc === 'string') {\n validateJwtFormat(vc);\n } else {\n validateCredentialPayload(vc);\n }\n }\n }\n if (payload.exp) validateTimestamp(payload.exp);\n}\nfunction validatePresentationPayload(payload) {\n validateContext(payload['@context']);\n validateVpType(payload.type);\n // empty credential array is allowed\n if (payload.verifiableCredential && payload.verifiableCredential.length >= 1) {\n for (const vc of payload.verifiableCredential) {\n if (typeof vc === 'string') {\n validateJwtFormat(vc);\n } else {\n validateCredentialPayload(vc);\n }\n }\n }\n if (payload.expirationDate) validateTimestamp(payload.expirationDate);\n}\nfunction verifyPresentationPayloadOptions(payload, options) {\n if (options.challenge && options.challenge !== payload.nonce) {\n throw new Error(`${VC_ERROR.AUTH_ERROR}: Presentation does not contain the mandatory challenge (JWT: nonce) for : ${options.challenge}`);\n }\n if (options.domain) {\n // aud might be an array\n let matchedAudience;\n if (payload.aud) {\n const audArray = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n matchedAudience = audArray.find(item => options.domain === item);\n }\n if (typeof matchedAudience === 'undefined') {\n throw new Error(`${VC_ERROR.AUTH_ERROR}: Presentation does not contain the mandatory domain (JWT: aud) for : ${options.domain}`);\n }\n }\n}\n\nexport { VC_ERROR, VC_JWT_ERROR, createVerifiableCredentialJwt, createVerifiablePresentationJwt, normalizeCredential, normalizePresentation, transformCredentialInput, transformPresentationInput, validateCredentialPayload, validateJwtCredentialPayload, validateJwtPresentationPayload, validatePresentationPayload, verifyCredential, verifyPresentation, verifyPresentationPayloadOptions };\n//# sourceMappingURL=index.module.js.map\n","import { getAuthenticatedDID } from \"@didtools/key-did\";\nimport { EdDSASigner } from \"did-jwt\";\nimport { createVerifiableCredentialJwt, verifyCredential, } from \"did-jwt-vc\";\nimport { Resolver } from \"did-resolver\";\nimport { getResolver as keyDidResolver } from \"key-did-resolver\";\nexport function parsePkhDid(did) {\n const parts = did.split(\":\");\n if (!did.startsWith(\"did:pkh:\") || parts.length !== 5) {\n throw new Error(\"Invalid pkh did\");\n }\n const [, , networkId, chainIdStr, address] = parts;\n if (!address.startsWith(\"0x\")) {\n throw new Error(`Invalid address: ${address}`);\n }\n const chainId = Number(chainIdStr);\n if (isNaN(chainId)) {\n throw new Error(`Invalid chain id: ${chainIdStr}`);\n }\n return {\n chainId,\n networkId,\n address: address,\n };\n}\nexport async function verifyAuthBearerToken(jwt) {\n try {\n const verified = await verifyCredential(jwt, getResolver());\n return verified;\n }\n catch (e) {\n console.error(e);\n return false;\n }\n}\nexport async function createAuthBearerToken(chainId, networkId, address, issuer) {\n const vcPayload = {\n sub: issuer.did,\n vc: {\n \"@context\": [\"https://www.w3.org/2018/credentials/v1\"],\n type: [\"VerifiableCredential\"],\n credentialSubject: {\n chainId,\n networkId,\n address,\n },\n },\n };\n const jwt = await createVerifiableCredentialJwt(vcPayload, issuer);\n return jwt;\n}\nexport const getResolver = () => {\n const keyResolver = keyDidResolver();\n if (!keyResolver) {\n throw new Error(\"Failed to get key resolver\");\n }\n return new Resolver(keyResolver);\n};\nexport async function getIssuer(privateKey) {\n const signer = EdDSASigner(privateKey);\n const did = await getAuthenticatedDID(privateKey);\n return {\n did: did.id,\n signer,\n alg: \"EdDSA\",\n };\n}\n//# sourceMappingURL=utils.js.map","'use strict'\n\n/**\n * Can be used with Array.sort to sort and array with Uint8Array entries\n *\n * @param {Uint8Array} a\n * @param {Uint8Array} b\n */\nfunction compare (a, b) {\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] < b[i]) {\n return -1\n }\n\n if (a[i] > b[i]) {\n return 1\n }\n }\n\n if (a.byteLength > b.byteLength) {\n return 1\n }\n\n if (a.byteLength < b.byteLength) {\n return -1\n }\n\n return 0\n}\n\nmodule.exports = compare\n","'use strict'\n\n/**\n * Returns a new Uint8Array created by concatenating the passed ArrayLikes\n *\n * @param {Array<ArrayLike<number>>} arrays\n * @param {number} [length]\n */\nfunction concat (arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0)\n }\n\n const output = new Uint8Array(length)\n let offset = 0\n\n for (const arr of arrays) {\n output.set(arr, offset)\n offset += arr.length\n }\n\n return output\n}\n\nmodule.exports = concat\n","'use strict'\n\n/**\n * Returns true if the two passed Uint8Arrays have the same content\n *\n * @param {Uint8Array} a\n * @param {Uint8Array} b\n */\nfunction equals (a, b) {\n if (a === b) {\n return true\n }\n\n if (a.byteLength !== b.byteLength) {\n return false\n }\n\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n\n return true\n}\n\nmodule.exports = equals\n"," 'use strict'\n\nconst { bases } = require('multiformats/basics')\n\n/**\n * @typedef {import('multiformats/bases/interface').MultibaseCodec<any>} MultibaseCodec\n */\n\n/**\n * @param {string} name\n * @param {string} prefix\n * @param {(buf: Uint8Array) => string} encode\n * @param {(str: string) => Uint8Array} decode\n * @returns {MultibaseCodec}\n */\nfunction createCodec (name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: {\n decode\n }\n }\n}\n\nconst string = createCodec('utf8', 'u', (buf) => {\n const decoder = new TextDecoder('utf8')\n return 'u' + decoder.decode(buf)\n}, (str) => {\n const encoder = new TextEncoder()\n return encoder.encode(str.substring(1))\n})\n\nconst ascii = createCodec('ascii', 'a', (buf) => {\n let string = 'a'\n\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i])\n }\n return string\n}, (str) => {\n str = str.substring(1)\n const buf = new Uint8Array(str.length)\n\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i)\n }\n\n return buf\n})\n\n/**\n * @typedef {'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof bases } SupportedEncodings\n */\n\n/**\n * @type {Record<SupportedEncodings, MultibaseCodec>}\n */\nconst BASES = {\n 'utf8': string,\n 'utf-8': string,\n 'hex': bases.base16,\n 'latin1': ascii,\n 'ascii': ascii,\n 'binary': ascii,\n\n ...bases\n}\n\nmodule.exports = BASES\n","'use strict'\n\nconst bases = require('./util/bases')\n\n/**\n * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings\n */\n\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n *\n * @param {string} string\n * @param {SupportedEncodings} [encoding=utf8] - utf8, base16, base64, base64urlpad, etc\n * @returns {Uint8Array}\n */\nfunction fromString (string, encoding = 'utf8') {\n const base = bases[encoding]\n\n if (!base) {\n throw new Error(`Unsupported encoding \"${encoding}\"`)\n }\n\n // add multibase prefix\n return base.decoder.decode(`${base.prefix}${string}`)\n}\n\nmodule.exports = fromString\n","'use strict'\n\nconst bases = require('./util/bases')\n\n/**\n * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings\n */\n\n/**\n * Turns a `Uint8Array` into a string.\n *\n * Supports `utf8`, `utf-8` and any encoding supported by the multibase module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n *\n * @param {Uint8Array} array - The array to turn into a string\n * @param {SupportedEncodings} [encoding=utf8] - The encoding to use\n * @returns {string}\n */\nfunction toString (array, encoding = 'utf8') {\n const base = bases[encoding]\n\n if (!base) {\n throw new Error(`Unsupported encoding \"${encoding}\"`)\n }\n\n // strip multibase prefix\n return base.encoder.encode(array).substring(1)\n}\n\nmodule.exports = toString\n","'use strict'\n\n/**\n * Returns the xor distance between two arrays\n *\n * @param {Uint8Array} a\n * @param {Uint8Array} b\n */\nfunction xor (a, b) {\n if (a.length !== b.length) {\n throw new Error('Inputs should have the same length')\n }\n\n const result = new Uint8Array(a.length)\n\n for (let i = 0; i < a.length; i++) {\n result[i] = a[i] ^ b[i]\n }\n\n return result\n}\n\nmodule.exports = xor\n","'use strict'\nconst compare = require('./compare')\nconst concat = require('./concat')\nconst equals = require('./equals')\nconst fromString = require('./from-string')\nconst toString = require('./to-string')\nconst xor = require('./xor')\n\nmodule.exports = {\n compare,\n concat,\n equals,\n fromString,\n toString,\n xor\n}\n","'use strict'\n\nconst varint = require('varint')\nconst { toString: uint8ArrayToString } = require('uint8arrays/to-string')\nconst { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')\n\nmodule.exports = {\n numberToUint8Array,\n uint8ArrayToNumber,\n varintUint8ArrayEncode,\n varintEncode\n}\n\n/**\n * @param {Uint8Array} buf\n */\nfunction uint8ArrayToNumber (buf) {\n return parseInt(uint8ArrayToString(buf, 'base16'), 16)\n}\n\n/**\n * @param {number} num\n */\nfunction numberToUint8Array (num) {\n let hexString = num.toString(16)\n if (hexString.length % 2 === 1) {\n hexString = '0' + hexString\n }\n return uint8ArrayFromString(hexString, 'base16')\n}\n\n/**\n * @param {Uint8Array} input\n */\nfunction varintUint8ArrayEncode (input) {\n return Uint8Array.from(varint.encode(uint8ArrayToNumber(input)))\n}\n\n/**\n * @param {number} num\n */\nfunction varintEncode (num) {\n return Uint8Array.from(varint.encode(num))\n}\n","// DO NOT CHANGE THIS FILE. IT IS GENERATED BY tools/update-table.js\n/* eslint quote-props: off */\n'use strict'\n\n/**\n * @type {import('./generated-types').NameCodeMap}\n */\nconst baseTable = Object.freeze({\n 'identity': 0x00,\n 'cidv1': 0x01,\n 'cidv2': 0x02,\n 'cidv3': 0x03,\n 'ip4': 0x04,\n 'tcp': 0x06,\n 'sha1': 0x11,\n 'sha2-256': 0x12,\n 'sha2-512': 0x13,\n 'sha3-512': 0x14,\n 'sha3-384': 0x15,\n 'sha3-256': 0x16,\n 'sha3-224': 0x17,\n 'shake-128': 0x18,\n 'shake-256': 0x19,\n 'keccak-224': 0x1a,\n 'keccak-256': 0x1b,\n 'keccak-384': 0x1c,\n 'keccak-512': 0x1d,\n 'blake3': 0x1e,\n 'dccp': 0x21,\n 'murmur3-128': 0x22,\n 'murmur3-32': 0x23,\n 'ip6': 0x29,\n 'ip6zone': 0x2a,\n 'path': 0x2f,\n 'multicodec': 0x30,\n 'multihash': 0x31,\n 'multiaddr': 0x32,\n 'multibase': 0x33,\n 'dns': 0x35,\n 'dns4': 0x36,\n 'dns6': 0x37,\n 'dnsaddr': 0x38,\n 'protobuf': 0x50,\n 'cbor': 0x51,\n 'raw': 0x55,\n 'dbl-sha2-256': 0x56,\n 'rlp': 0x60,\n 'bencode': 0x63,\n 'dag-pb': 0x70,\n 'dag-cbor': 0x71,\n 'libp2p-key': 0x72,\n 'git-raw': 0x78,\n 'torrent-info': 0x7b,\n 'torrent-file': 0x7c,\n 'leofcoin-block': 0x81,\n 'leofcoin-tx': 0x82,\n 'leofcoin-pr': 0x83,\n 'sctp': 0x84,\n 'dag-jose': 0x85,\n 'dag-cose': 0x86,\n 'eth-block': 0x90,\n 'eth-block-list': 0x91,\n 'eth-tx-trie': 0x92,\n 'eth-tx': 0x93,\n 'eth-tx-receipt-trie': 0x94,\n 'eth-tx-receipt': 0x95,\n 'eth-state-trie': 0x96,\n 'eth-account-snapshot': 0x97,\n 'eth-storage-trie': 0x98,\n 'eth-receipt-log-trie': 0x99,\n 'eth-reciept-log': 0x9a,\n 'bitcoin-block': 0xb0,\n 'bitcoin-tx': 0xb1,\n 'bitcoin-witness-commitment': 0xb2,\n 'zcash-block': 0xc0,\n 'zcash-tx': 0xc1,\n 'caip-50': 0xca,\n 'streamid': 0xce,\n 'stellar-block': 0xd0,\n 'stellar-tx': 0xd1,\n 'md4': 0xd4,\n 'md5': 0xd5,\n 'bmt': 0xd6,\n 'decred-block': 0xe0,\n 'decred-tx': 0xe1,\n 'ipld-ns': 0xe2,\n 'ipfs-ns': 0xe3,\n 'swarm-ns': 0xe4,\n 'ipns-ns': 0xe5,\n 'zeronet': 0xe6,\n 'secp256k1-pub': 0xe7,\n 'bls12_381-g1-pub': 0xea,\n 'bls12_381-g2-pub': 0xeb,\n 'x25519-pub': 0xec,\n 'ed25519-pub': 0xed,\n 'bls12_381-g1g2-pub': 0xee,\n 'dash-block': 0xf0,\n 'dash-tx': 0xf1,\n 'swarm-manifest': 0xfa,\n 'swarm-feed': 0xfb,\n 'udp': 0x0111,\n 'p2p-webrtc-star': 0x0113,\n 'p2p-webrtc-direct': 0x0114,\n 'p2p-stardust': 0x0115,\n 'p2p-circuit': 0x0122,\n 'dag-json': 0x0129,\n 'udt': 0x012d,\n 'utp': 0x012e,\n 'unix': 0x0190,\n 'thread': 0x0196,\n 'p2p': 0x01a5,\n 'ipfs': 0x01a5,\n 'https': 0x01bb,\n 'onion': 0x01bc,\n 'onion3': 0x01bd,\n 'garlic64': 0x01be,\n 'garlic32': 0x01bf,\n 'tls': 0x01c0,\n 'noise': 0x01c6,\n 'quic': 0x01cc,\n 'ws': 0x01dd,\n 'wss': 0x01de,\n 'p2p-websocket-star': 0x01df,\n 'http': 0x01e0,\n 'swhid-1-snp': 0x01f0,\n 'json': 0x0200,\n 'messagepack': 0x0201,\n 'libp2p-peer-record': 0x0301,\n 'libp2p-relay-rsvp': 0x0302,\n 'car-index-sorted': 0x0400,\n 'sha2-256-trunc254-padded': 0x1012,\n 'ripemd-128': 0x1052,\n 'ripemd-160': 0x1053,\n 'ripemd-256': 0x1054,\n 'ripemd-320': 0x1055,\n 'x11': 0x1100,\n 'p256-pub': 0x1200,\n 'p384-pub': 0x1201,\n 'p521-pub': 0x1202,\n 'ed448-pub': 0x1203,\n 'x448-pub': 0x1204,\n 'ed25519-priv': 0x1300,\n 'secp256k1-priv': 0x1301,\n 'x25519-priv': 0x1302,\n 'kangarootwelve': 0x1d01,\n 'sm3-256': 0x534d,\n 'blake2b-8': 0xb201,\n 'blake2b-16': 0xb202,\n 'blake2b-24': 0xb203,\n 'blake2b-32': 0xb204,\n 'blake2b-40': 0xb205,\n 'blake2b-48': 0xb206,\n 'blake2b-56': 0xb207,\n 'blake2b-64': 0xb208,\n 'blake2b-72': 0xb209,\n 'blake2b-80': 0xb20a,\n 'blake2b-88': 0xb20b,\n 'blake2b-96': 0xb20c,\n 'blake2b-104': 0xb20d,\n 'blake2b-112': 0xb20e,\n 'blake2b-120': 0xb20f,\n 'blake2b-128': 0xb210,\n 'blake2b-136': 0xb211,\n 'blake2b-144': 0xb212,\n 'blake2b-152': 0xb213,\n 'blake2b-160': 0xb214,\n 'blake2b-168': 0xb215,\n 'blake2b-176': 0xb216,\n 'blake2b-184': 0xb217,\n 'blake2b-192': 0xb218,\n 'blake2b-200': 0xb219,\n 'blake2b-208': 0xb21a,\n 'blake2b-216': 0xb21b,\n 'blake2b-224': 0xb21c,\n 'blake2b-232': 0xb21d,\n 'blake2b-240': 0xb21e,\n 'blake2b-248': 0xb21f,\n 'blake2b-256': 0xb220,\n 'blake2b-264': 0xb221,\n 'blake2b-272': 0xb222,\n 'blake2b-280': 0xb223,\n 'blake2b-288': 0xb224,\n 'blake2b-296': 0xb225,\n 'blake2b-304': 0xb226,\n 'blake2b-312': 0xb227,\n 'blake2b-320': 0xb228,\n 'blake2b-328': 0xb229,\n 'blake2b-336': 0xb22a,\n 'blake2b-344': 0xb22b,\n 'blake2b-352': 0xb22c,\n 'blake2b-360': 0xb22d,\n 'blake2b-368': 0xb22e,\n 'blake2b-376': 0xb22f,\n 'blake2b-384': 0xb230,\n 'blake2b-392': 0xb231,\n 'blake2b-400': 0xb232,\n 'blake2b-408': 0xb233,\n 'blake2b-416': 0xb234,\n 'blake2b-424': 0xb235,\n 'blake2b-432': 0xb236,\n 'blake2b-440': 0xb237,\n 'blake2b-448': 0xb238,\n 'blake2b-456': 0xb239,\n 'blake2b-464': 0xb23a,\n 'blake2b-472': 0xb23b,\n 'blake2b-480': 0xb23c,\n 'blake2b-488': 0xb23d,\n 'blake2b-496': 0xb23e,\n 'blake2b-504': 0xb23f,\n 'blake2b-512': 0xb240,\n 'blake2s-8': 0xb241,\n 'blake2s-16': 0xb242,\n 'blake2s-24': 0xb243,\n 'blake2s-32': 0xb244,\n 'blake2s-40': 0xb245,\n 'blake2s-48': 0xb246,\n 'blake2s-56': 0xb247,\n 'blake2s-64': 0xb248,\n 'blake2s-72': 0xb249,\n 'blake2s-80': 0xb24a,\n 'blake2s-88': 0xb24b,\n 'blake2s-96': 0xb24c,\n 'blake2s-104': 0xb24d,\n 'blake2s-112': 0xb24e,\n 'blake2s-120': 0xb24f,\n 'blake2s-128': 0xb250,\n 'blake2s-136': 0xb251,\n 'blake2s-144': 0xb252,\n 'blake2s-152': 0xb253,\n 'blake2s-160': 0xb254,\n 'blake2s-168': 0xb255,\n 'blake2s-176': 0xb256,\n 'blake2s-184': 0xb257,\n 'blake2s-192': 0xb258,\n 'blake2s-200': 0xb259,\n 'blake2s-208': 0xb25a,\n 'blake2s-216': 0xb25b,\n 'blake2s-224': 0xb25c,\n 'blake2s-232': 0xb25d,\n 'blake2s-240': 0xb25e,\n 'blake2s-248': 0xb25f,\n 'blake2s-256': 0xb260,\n 'skein256-8': 0xb301,\n 'skein256-16': 0xb302,\n 'skein256-24': 0xb303,\n 'skein256-32': 0xb304,\n 'skein256-40': 0xb305,\n 'skein256-48': 0xb306,\n 'skein256-56': 0xb307,\n 'skein256-64': 0xb308,\n 'skein256-72': 0xb309,\n 'skein256-80': 0xb30a,\n 'skein256-88': 0xb30b,\n 'skein256-96': 0xb30c,\n 'skein256-104': 0xb30d,\n 'skein256-112': 0xb30e,\n 'skein256-120': 0xb30f,\n 'skein256-128': 0xb310,\n 'skein256-136': 0xb311,\n 'skein256-144': 0xb312,\n 'skein256-152': 0xb313,\n 'skein256-160': 0xb314,\n 'skein256-168': 0xb315,\n 'skein256-176': 0xb316,\n 'skein256-184': 0xb317,\n 'skein256-192': 0xb318,\n 'skein256-200': 0xb319,\n 'skein256-208': 0xb31a,\n 'skein256-216': 0xb31b,\n 'skein256-224': 0xb31c,\n 'skein256-232': 0xb31d,\n 'skein256-240': 0xb31e,\n 'skein256-248': 0xb31f,\n 'skein256-256': 0xb320,\n 'skein512-8': 0xb321,\n 'skein512-16': 0xb322,\n 'skein512-24': 0xb323,\n 'skein512-32': 0xb324,\n 'skein512-40': 0xb325,\n 'skein512-48': 0xb326,\n 'skein512-56': 0xb327,\n 'skein512-64': 0xb328,\n 'skein512-72': 0xb329,\n 'skein512-80': 0xb32a,\n 'skein512-88': 0xb32b,\n 'skein512-96': 0xb32c,\n 'skein512-104': 0xb32d,\n 'skein512-112': 0xb32e,\n 'skein512-120': 0xb32f,\n 'skein512-128': 0xb330,\n 'skein512-136': 0xb331,\n 'skein512-144': 0xb332,\n 'skein512-152': 0xb333,\n 'skein512-160': 0xb334,\n 'skein512-168': 0xb335,\n 'skein512-176': 0xb336,\n 'skein512-184': 0xb337,\n 'skein512-192': 0xb338,\n 'skein512-200': 0xb339,\n 'skein512-208': 0xb33a,\n 'skein512-216': 0xb33b,\n 'skein512-224': 0xb33c,\n 'skein512-232': 0xb33d,\n 'skein512-240': 0xb33e,\n 'skein512-248': 0xb33f,\n 'skein512-256': 0xb340,\n 'skein512-264': 0xb341,\n 'skein512-272': 0xb342,\n 'skein512-280': 0xb343,\n 'skein512-288': 0xb344,\n 'skein512-296': 0xb345,\n 'skein512-304': 0xb346,\n 'skein512-312': 0xb347,\n 'skein512-320': 0xb348,\n 'skein512-328': 0xb349,\n 'skein512-336': 0xb34a,\n 'skein512-344': 0xb34b,\n 'skein512-352': 0xb34c,\n 'skein512-360': 0xb34d,\n 'skein512-368': 0xb34e,\n 'skein512-376': 0xb34f,\n 'skein512-384': 0xb350,\n 'skein512-392': 0xb351,\n 'skein512-400': 0xb352,\n 'skein512-408': 0xb353,\n 'skein512-416': 0xb354,\n 'skein512-424': 0xb355,\n 'skein512-432': 0xb356,\n 'skein512-440': 0xb357,\n 'skein512-448': 0xb358,\n 'skein512-456': 0xb359,\n 'skein512-464': 0xb35a,\n 'skein512-472': 0xb35b,\n 'skein512-480': 0xb35c,\n 'skein512-488': 0xb35d,\n 'skein512-496': 0xb35e,\n 'skein512-504': 0xb35f,\n 'skein512-512': 0xb360,\n 'skein1024-8': 0xb361,\n 'skein1024-16': 0xb362,\n 'skein1024-24': 0xb363,\n 'skein1024-32': 0xb364,\n 'skein1024-40': 0xb365,\n 'skein1024-48': 0xb366,\n 'skein1024-56': 0xb367,\n 'skein1024-64': 0xb368,\n 'skein1024-72': 0xb369,\n 'skein1024-80': 0xb36a,\n 'skein1024-88': 0xb36b,\n 'skein1024-96': 0xb36c,\n 'skein1024-104': 0xb36d,\n 'skein1024-112': 0xb36e,\n 'skein1024-120': 0xb36f,\n 'skein1024-128': 0xb370,\n 'skein1024-136': 0xb371,\n 'skein1024-144': 0xb372,\n 'skein1024-152': 0xb373,\n 'skein1024-160': 0xb374,\n 'skein1024-168': 0xb375,\n 'skein1024-176': 0xb376,\n 'skein1024-184': 0xb377,\n 'skein1024-192': 0xb378,\n 'skein1024-200': 0xb379,\n 'skein1024-208': 0xb37a,\n 'skein1024-216': 0xb37b,\n 'skein1024-224': 0xb37c,\n 'skein1024-232': 0xb37d,\n 'skein1024-240': 0xb37e,\n 'skein1024-248': 0xb37f,\n 'skein1024-256': 0xb380,\n 'skein1024-264': 0xb381,\n 'skein1024-272': 0xb382,\n 'skein1024-280': 0xb383,\n 'skein1024-288': 0xb384,\n 'skein1024-296': 0xb385,\n 'skein1024-304': 0xb386,\n 'skein1024-312': 0xb387,\n 'skein1024-320': 0xb388,\n 'skein1024-328': 0xb389,\n 'skein1024-336': 0xb38a,\n 'skein1024-344': 0xb38b,\n 'skein1024-352': 0xb38c,\n 'skein1024-360': 0xb38d,\n 'skein1024-368': 0xb38e,\n 'skein1024-376': 0xb38f,\n 'skein1024-384': 0xb390,\n 'skein1024-392': 0xb391,\n 'skein1024-400': 0xb392,\n 'skein1024-408': 0xb393,\n 'skein1024-416': 0xb394,\n 'skein1024-424': 0xb395,\n 'skein1024-432': 0xb396,\n 'skein1024-440': 0xb397,\n 'skein1024-448': 0xb398,\n 'skein1024-456': 0xb399,\n 'skein1024-464': 0xb39a,\n 'skein1024-472': 0xb39b,\n 'skein1024-480': 0xb39c,\n 'skein1024-488': 0xb39d,\n 'skein1024-496': 0xb39e,\n 'skein1024-504': 0xb39f,\n 'skein1024-512': 0xb3a0,\n 'skein1024-520': 0xb3a1,\n 'skein1024-528': 0xb3a2,\n 'skein1024-536': 0xb3a3,\n 'skein1024-544': 0xb3a4,\n 'skein1024-552': 0xb3a5,\n 'skein1024-560': 0xb3a6,\n 'skein1024-568': 0xb3a7,\n 'skein1024-576': 0xb3a8,\n 'skein1024-584': 0xb3a9,\n 'skein1024-592': 0xb3aa,\n 'skein1024-600': 0xb3ab,\n 'skein1024-608': 0xb3ac,\n 'skein1024-616': 0xb3ad,\n 'skein1024-624': 0xb3ae,\n 'skein1024-632': 0xb3af,\n 'skein1024-640': 0xb3b0,\n 'skein1024-648': 0xb3b1,\n 'skein1024-656': 0xb3b2,\n 'skein1024-664': 0xb3b3,\n 'skein1024-672': 0xb3b4,\n 'skein1024-680': 0xb3b5,\n 'skein1024-688': 0xb3b6,\n 'skein1024-696': 0xb3b7,\n 'skein1024-704': 0xb3b8,\n 'skein1024-712': 0xb3b9,\n 'skein1024-720': 0xb3ba,\n 'skein1024-728': 0xb3bb,\n 'skein1024-736': 0xb3bc,\n 'skein1024-744': 0xb3bd,\n 'skein1024-752': 0xb3be,\n 'skein1024-760': 0xb3bf,\n 'skein1024-768': 0xb3c0,\n 'skein1024-776': 0xb3c1,\n 'skein1024-784': 0xb3c2,\n 'skein1024-792': 0xb3c3,\n 'skein1024-800': 0xb3c4,\n 'skein1024-808': 0xb3c5,\n 'skein1024-816': 0xb3c6,\n 'skein1024-824': 0xb3c7,\n 'skein1024-832': 0xb3c8,\n 'skein1024-840': 0xb3c9,\n 'skein1024-848': 0xb3ca,\n 'skein1024-856': 0xb3cb,\n 'skein1024-864': 0xb3cc,\n 'skein1024-872': 0xb3cd,\n 'skein1024-880': 0xb3ce,\n 'skein1024-888': 0xb3cf,\n 'skein1024-896': 0xb3d0,\n 'skein1024-904': 0xb3d1,\n 'skein1024-912': 0xb3d2,\n 'skein1024-920': 0xb3d3,\n 'skein1024-928': 0xb3d4,\n 'skein1024-936': 0xb3d5,\n 'skein1024-944': 0xb3d6,\n 'skein1024-952': 0xb3d7,\n 'skein1024-960': 0xb3d8,\n 'skein1024-968': 0xb3d9,\n 'skein1024-976': 0xb3da,\n 'skein1024-984': 0xb3db,\n 'skein1024-992': 0xb3dc,\n 'skein1024-1000': 0xb3dd,\n 'skein1024-1008': 0xb3de,\n 'skein1024-1016': 0xb3df,\n 'skein1024-1024': 0xb3e0,\n 'poseidon-bls12_381-a2-fc1': 0xb401,\n 'poseidon-bls12_381-a2-fc1-sc': 0xb402,\n 'zeroxcert-imprint-256': 0xce11,\n 'fil-commitment-unsealed': 0xf101,\n 'fil-commitment-sealed': 0xf102,\n 'holochain-adr-v0': 0x807124,\n 'holochain-adr-v1': 0x817124,\n 'holochain-key-v0': 0x947124,\n 'holochain-key-v1': 0x957124,\n 'holochain-sig-v0': 0xa27124,\n 'holochain-sig-v1': 0xa37124,\n 'skynet-ns': 0xb19910,\n 'arweave-ns': 0xb29910\n})\n\nmodule.exports = { baseTable }\n","'use strict'\n\n/** @typedef {import('./generated-types').ConstantCodeMap} ConstantCodeMap */\n/** @typedef {import('./generated-types').NameUint8ArrayMap} NameUint8ArrayMap */\n/** @typedef {import('./generated-types').CodeNameMap} CodeNameMap */\n/** @typedef {import('./generated-types').CodecName} CodecName */\n/** @typedef {import('./generated-types').CodecConstant} CodecConstant */\n\nconst { baseTable } = require('./generated-table')\nconst varintEncode = require('./util').varintEncode\n\nconst nameToVarint = /** @type {NameUint8ArrayMap} */ ({})\nconst constantToCode = /** @type {ConstantCodeMap} */({})\nconst codeToName = /** @type {CodeNameMap} */({})\n\n// eslint-disable-next-line guard-for-in\nfor (const name in baseTable) {\n const codecName = /** @type {CodecName} */(name)\n const code = baseTable[codecName]\n nameToVarint[codecName] = varintEncode(code)\n\n const constant = /** @type {CodecConstant} */(codecName.toUpperCase().replace(/-/g, '_'))\n constantToCode[constant] = code\n\n if (!codeToName[code]) {\n codeToName[code] = codecName\n }\n}\n\nObject.freeze(nameToVarint)\nObject.freeze(constantToCode)\nObject.freeze(codeToName)\nconst nameToCode = Object.freeze(baseTable)\nmodule.exports = {\n nameToVarint,\n constantToCode,\n nameToCode,\n codeToName\n}\n","/**\n * Implementation of the multicodec specification.\n *\n * @module multicodec\n * @example\n * const multicodec = require('multicodec')\n *\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\n * // prefixedProtobuf 0x50...\n *\n */\n'use strict'\n\n/** @typedef {import('./generated-types').CodecName} CodecName */\n/** @typedef {import('./generated-types').CodecCode} CodecCode */\n\nconst varint = require('varint')\nconst { concat: uint8ArrayConcat } = require('uint8arrays/concat')\nconst util = require('./util')\nconst { nameToVarint, constantToCode, nameToCode, codeToName } = require('./maps')\n\n/**\n * Prefix a buffer with a multicodec-packed.\n *\n * @param {CodecName|Uint8Array} multicodecStrOrCode\n * @param {Uint8Array} data\n * @returns {Uint8Array}\n */\nfunction addPrefix (multicodecStrOrCode, data) {\n let prefix\n\n if (multicodecStrOrCode instanceof Uint8Array) {\n prefix = util.varintUint8ArrayEncode(multicodecStrOrCode)\n } else {\n if (nameToVarint[multicodecStrOrCode]) {\n prefix = nameToVarint[multicodecStrOrCode]\n } else {\n throw new Error('multicodec not recognized')\n }\n }\n\n return uint8ArrayConcat([prefix, data], prefix.length + data.length)\n}\n\n/**\n * Decapsulate the multicodec-packed prefix from the data.\n *\n * @param {Uint8Array} data\n * @returns {Uint8Array}\n */\nfunction rmPrefix (data) {\n varint.decode(/** @type {Buffer} */(data))\n return data.slice(varint.decode.bytes)\n}\n\n/**\n * Get the codec name of the prefixed data.\n *\n * @param {Uint8Array} prefixedData\n * @returns {CodecName}\n */\nfunction getNameFromData (prefixedData) {\n const code = /** @type {CodecCode} */(varint.decode(/** @type {Buffer} */(prefixedData)))\n const name = codeToName[code]\n if (name === undefined) {\n throw new Error(`Code \"${code}\" not found`)\n }\n return name\n}\n\n/**\n * Get the codec name from a code.\n *\n * @param {CodecCode} codec\n * @returns {CodecName}\n */\nfunction getNameFromCode (codec) {\n return codeToName[codec]\n}\n\n/**\n * Get the code of the codec\n *\n * @param {CodecName} name\n * @returns {CodecCode}\n */\nfunction getCodeFromName (name) {\n const code = nameToCode[name]\n if (code === undefined) {\n throw new Error(`Codec \"${name}\" not found`)\n }\n return code\n}\n\n/**\n * Get the code of the prefixed data.\n *\n * @param {Uint8Array} prefixedData\n * @returns {CodecCode}\n */\nfunction getCodeFromData (prefixedData) {\n return /** @type {CodecCode} */(varint.decode(/** @type {Buffer} */(prefixedData)))\n}\n\n/**\n * Get the code as varint of a codec name.\n *\n * @param {CodecName} name\n * @returns {Uint8Array}\n */\nfunction getVarintFromName (name) {\n const code = nameToVarint[name]\n if (code === undefined) {\n throw new Error(`Codec \"${name}\" not found`)\n }\n return code\n}\n\n/**\n * Get the varint of a code.\n *\n * @param {CodecCode} code\n * @returns {Uint8Array}\n */\nfunction getVarintFromCode (code) {\n return util.varintEncode(code)\n}\n\n/**\n * Get the codec name of the prefixed data.\n *\n * @deprecated use getNameFromData instead.\n * @param {Uint8Array} prefixedData\n * @returns {CodecName}\n */\nfunction getCodec (prefixedData) {\n return getNameFromData(prefixedData)\n}\n\n/**\n * Get the codec name from a code.\n *\n * @deprecated use getNameFromCode instead.\n * @param {CodecCode} codec\n * @returns {CodecName}\n */\nfunction getName (codec) {\n return getNameFromCode(codec)\n}\n\n/**\n * Get the code of the codec\n *\n * @deprecated use getCodeFromName instead.\n * @param {CodecName} name\n * @returns {CodecCode}\n */\nfunction getNumber (name) {\n return getCodeFromName(name)\n}\n\n/**\n * Get the code of the prefixed data.\n *\n * @deprecated use getCodeFromData instead.\n * @param {Uint8Array} prefixedData\n * @returns {CodecCode}\n */\nfunction getCode (prefixedData) {\n return getCodeFromData(prefixedData)\n}\n\n/**\n * Get the code as varint of a codec name.\n *\n * @deprecated use getVarintFromName instead.\n * @param {CodecName} name\n * @returns {Uint8Array}\n */\nfunction getCodeVarint (name) {\n return getVarintFromName(name)\n}\n\n/**\n * Get the varint of a code.\n *\n * @deprecated use getVarintFromCode instead.\n * @param {CodecCode} code\n * @returns {Array.<number>}\n */\nfunction getVarint (code) {\n return Array.from(getVarintFromCode(code))\n}\n\nmodule.exports = {\n addPrefix,\n rmPrefix,\n getNameFromData,\n getNameFromCode,\n getCodeFromName,\n getCodeFromData,\n getVarintFromName,\n getVarintFromCode,\n // Deprecated\n getCodec,\n getName,\n getNumber,\n getCode,\n getCodeVarint,\n getVarint,\n // Make the constants top-level constants\n ...constantToCode,\n // Export the maps\n nameToVarint,\n nameToCode,\n codeToName\n}\n","import * as u8a from \"uint8arrays\";\nimport multicodec from \"multicodec\";\nimport { base58btc } from \"multiformats/bases/base58\";\nexport function ECPointCompress(x, y) {\n const out = new Uint8Array(x.length + 1);\n out[0] = 2 + (y[y.length - 1] & 1);\n out.set(x, 1);\n return out;\n}\nexport function compressedKeyInHexfromRaw(publicKeyHex) {\n const xHex = publicKeyHex.slice(0, publicKeyHex.length / 2);\n const yHex = publicKeyHex.slice(publicKeyHex.length / 2, publicKeyHex.length);\n const xOctet = u8a.fromString(xHex, \"base16\");\n const yOctet = u8a.fromString(yHex, \"base16\");\n const compressedPoint = ECPointCompress(xOctet, yOctet);\n const compressedPointHex = u8a.toString(compressedPoint, \"base16\");\n return compressedPointHex;\n}\nexport function uncompressedKeyInHexfromRaw(publicKeyHex) {\n return \"04\" + publicKeyHex;\n}\nexport function rawKeyInHexfromUncompressed(publicKeyHex) {\n return publicKeyHex.slice(2);\n}\nexport function pubKeyHexToUint8Array(publicKeyHex) {\n if (publicKeyHex == null) {\n throw new TypeError(\"input cannot be null or undefined.\");\n }\n if (publicKeyHex.length % 2 === 0) {\n return u8a.fromString(publicKeyHex, \"base16\");\n }\n else {\n return u8a.fromString(\"0\" + publicKeyHex, \"base16\");\n }\n}\nexport function didKeyIDtoPubKeyHex(didKeyID) {\n const buf = base58btc.decode(didKeyID);\n const bufwoPrefix = multicodec.rmPrefix(buf);\n return u8a.toString(bufwoPrefix, \"base16\");\n}\nexport function didKeyURLtoPubKeyHex(didKeyURL) {\n const didKeyID = didKeyURL.split(\":\")[2];\n return didKeyIDtoPubKeyHex(didKeyID);\n}\n//# sourceMappingURL=did_key_utils.js.map","import * as u8a from \"uint8arrays\";\nimport multicodec from \"multicodec\";\nimport { base58btc } from \"multiformats/bases/base58\";\nexport function encodeDIDfromHexString(multicodecName, publicKeyHex) {\n const publicKey = u8a.fromString(publicKeyHex, \"base16\");\n const didKey = encodeDIDfromBytes(multicodecName, publicKey);\n return didKey;\n}\nexport function encodeDIDfromBytes(multicodecName, publicKey) {\n const publicKeywPrefix = multicodec.addPrefix(multicodecName, publicKey);\n const bufAsString = base58btc.encode(publicKeywPrefix);\n return `did:key:${bufAsString}`;\n}\n//# sourceMappingURL=encodeDIDkey.js.map","import { type JsonWebKeyPairStorage, type JwkKeyPair } from './index.js';\n\nexport class BrowserKeyStorage implements JsonWebKeyPairStorage {\n static #DB_NAME = 'browserKeyDB';\n static #STORE_NAME = 'keyPairs';\n static #KEY = 'keyPair';\n\n #db: Promise<IDBDatabase>;\n constructor() {\n this.#db = new Promise((resolve, reject) => {\n const req = indexedDB.open(BrowserKeyStorage.#DB_NAME, 1);\n req.onupgradeneeded = () => {\n req.result.createObjectStore(BrowserKeyStorage.#STORE_NAME);\n };\n req.onsuccess = () => resolve(req.result);\n req.onerror = () => reject(req.error as Error);\n });\n }\n\n async #useStore(mode: IDBTransactionMode = 'readwrite') {\n const database = await this.#db;\n const transaction = database.transaction(\n BrowserKeyStorage.#STORE_NAME,\n mode,\n );\n const store = transaction.objectStore(BrowserKeyStorage.#STORE_NAME);\n return store;\n }\n\n async saveKeyPair(keyPair: JwkKeyPair) {\n const store = await this.#useStore();\n const request = store.put(keyPair, BrowserKeyStorage.#KEY);\n return new Promise<void>((resolve, reject) => {\n request.onsuccess = () => {\n resolve();\n };\n request.onerror = () => {\n reject(new Error('Failed to save key pair'));\n };\n });\n }\n\n async loadKeyPair(): Promise<JwkKeyPair | undefined> {\n const store = await this.#useStore('readonly');\n const request = store.getAll();\n\n return new Promise<JwkKeyPair | undefined>((resolve, reject) => {\n request.onsuccess = () => {\n const keyPair = request.result.length\n ? (request.result[0] as JwkKeyPair)\n : undefined;\n resolve(keyPair);\n };\n request.onerror = () => {\n reject(new Error('Failed to load key pair'));\n };\n });\n }\n}\n","/* eslint-disable no-unused-private-class-members */\nimport {\n RENOWN_CHAIN_ID,\n RENOWN_NETWORK_ID,\n} from '@powerhousedao/reactor-browser/renown/constants';\nimport { createAuthBearerToken } from '@renown/sdk';\nimport { bytesToBase64url } from 'did-jwt';\nimport type { Issuer } from 'did-jwt-vc';\nimport {\n compressedKeyInHexfromRaw,\n encodeDIDfromHexString,\n rawKeyInHexfromUncompressed,\n} from 'did-key-creator';\nimport { fromString } from 'uint8arrays';\n\nimport { childLogger } from 'document-drive';\n\nconst logger = childLogger(['connect', 'crypto']);\nexport type JwkKeyPair = {\n publicKey: JsonWebKey;\n privateKey: JsonWebKey;\n};\n\nexport interface JsonWebKeyPairStorage {\n loadKeyPair(): Promise<JwkKeyPair | undefined>;\n saveKeyPair(keyPair: JwkKeyPair): Promise<void>;\n}\n\nfunction ab2hex(ab: ArrayBuffer) {\n return Array.prototype.map\n .call(new Uint8Array(ab), (x: number) =>\n ('00' + x.toString(16)).slice(-2),\n )\n .join('');\n}\n\nexport interface IConnectCrypto {\n did: () => Promise<DID>;\n regenerateDid(): Promise<void>;\n sign: (data: Uint8Array) => Promise<Uint8Array>;\n getIssuer: () => Promise<Issuer>;\n getBearerToken: (\n driveUrl: string,\n address: string | undefined,\n refresh?: boolean,\n ) => Promise<string>;\n}\n\nexport type DID = `did:key:${string}`;\n\nexport class ConnectCrypto implements IConnectCrypto {\n #subtleCrypto: Promise<SubtleCrypto>;\n #keyPair: CryptoKeyPair | undefined;\n #keyPairStorage: JsonWebKeyPairStorage;\n\n #did: Promise<DID>;\n #bearerToken: string | undefined;\n\n static algorithm: EcKeyAlgorithm = {\n name: 'ECDSA',\n namedCurve: 'P-256',\n };\n\n static signAlgorithm = {\n name: 'ECDSA',\n namedCurve: 'P-256',\n hash: 'SHA-256',\n };\n\n constructor(keyPairStorage: JsonWebKeyPairStorage) {\n this.#keyPairStorage = keyPairStorage;\n\n // Initializes the subtleCrypto module according to the host environment\n this.#subtleCrypto = this.#initCrypto();\n\n this.#did = this.#initialize();\n }\n\n #initCrypto() {\n return new Promise<SubtleCrypto>((resolve, reject) => {\n if (typeof window === 'undefined') {\n import('node:crypto')\n .then(module => {\n resolve(module.webcrypto.subtle as SubtleCrypto);\n })\n .catch(reject);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!window.crypto?.subtle) {\n reject(new Error('Crypto module not available'));\n }\n resolve(window.crypto.subtle);\n }\n });\n }\n\n // loads the key pair from storage or generates a new one if none is stored\n async #initialize() {\n const loadedKeyPair = await this.#keyPairStorage.loadKeyPair();\n if (loadedKeyPair) {\n this.#keyPair = await this.#importKeyPair(loadedKeyPair);\n logger.debug('Found key pair');\n } else {\n this.#keyPair = await this.#generateECDSAKeyPair();\n logger.debug('Created key pair');\n await this.#keyPairStorage.saveKeyPair(await this.#exportKeyPair());\n }\n const did = await this.#parseDid();\n logger.debug('Connect DID:', did);\n return did;\n }\n\n async getBearerToken(\n driveUrl: string,\n address: string | undefined,\n refresh = false,\n ) {\n const issuer = await this.getIssuer();\n if (refresh || !this.#bearerToken) {\n this.#bearerToken = await createAuthBearerToken(\n Number(RENOWN_CHAIN_ID),\n RENOWN_NETWORK_ID,\n address || (await this.#did),\n issuer,\n );\n }\n\n return this.#bearerToken;\n }\n\n did() {\n return this.#did;\n }\n\n async regenerateDid() {\n this.#keyPair = await this.#generateECDSAKeyPair();\n await this.#keyPairStorage.saveKeyPair(await this.#exportKeyPair());\n }\n\n async #parseDid(): Promise<DID> {\n if (!this.#keyPair) {\n throw new Error('No key pair available');\n }\n\n const subtleCrypto = await this.#subtleCrypto;\n const publicKeyRaw = await subtleCrypto.exportKey(\n 'raw',\n this.#keyPair.publicKey,\n );\n\n const multicodecName = 'p256-pub';\n const rawKey = rawKeyInHexfromUncompressed(ab2hex(publicKeyRaw));\n const compressedKey = compressedKeyInHexfromRaw(rawKey);\n const did = encodeDIDfromHexString(multicodecName, compressedKey);\n return did as DID;\n }\n\n async #generateECDSAKeyPair() {\n const subtleCrypto = await this.#subtleCrypto;\n const keyPair = await subtleCrypto.generateKey(\n ConnectCrypto.algorithm,\n true,\n ['sign', 'verify'],\n );\n return keyPair;\n }\n\n async #exportKeyPair(): Promise<JwkKeyPair> {\n if (!this.#keyPair) {\n throw new Error('No key pair available');\n }\n const subtleCrypto = await this.#subtleCrypto;\n const jwkKeyPair = {\n publicKey: await subtleCrypto.exportKey(\n 'jwk',\n this.#keyPair.publicKey,\n ),\n privateKey: await subtleCrypto.exportKey(\n 'jwk',\n this.#keyPair.privateKey,\n ),\n };\n return jwkKeyPair;\n }\n\n async #importKeyPair(jwkKeyPair: JwkKeyPair): Promise<CryptoKeyPair> {\n const subtleCrypto = await this.#subtleCrypto;\n return {\n publicKey: await subtleCrypto.importKey(\n 'jwk',\n jwkKeyPair.publicKey,\n ConnectCrypto.algorithm,\n true,\n ['verify'],\n ),\n privateKey: await subtleCrypto.importKey(\n 'jwk',\n jwkKeyPair.privateKey,\n ConnectCrypto.algorithm,\n true,\n ['sign'],\n ),\n };\n }\n\n #sign = async (\n ...args: Parameters<SubtleCrypto['sign']>\n ): Promise<ArrayBuffer> => {\n return (await this.#subtleCrypto).sign(...args);\n };\n\n #verify = async (\n ...args: Parameters<SubtleCrypto['verify']>\n ): Promise<boolean> => {\n return (await this.#subtleCrypto).verify(...args);\n };\n\n #stringToBytes(s: string): Uint8Array {\n return fromString(s, 'utf-8');\n }\n\n async sign(data: Uint8Array | string): Promise<Uint8Array> {\n if (this.#keyPair?.privateKey) {\n const dataBytes: Uint8Array =\n typeof data === 'string' ? this.#stringToBytes(data) : data;\n\n const subtleCrypto = await this.#subtleCrypto;\n\n const arrayBuffer = await subtleCrypto.sign(\n ConnectCrypto.signAlgorithm,\n this.#keyPair.privateKey,\n dataBytes.buffer as ArrayBuffer,\n );\n\n return new Uint8Array(arrayBuffer);\n } else {\n throw new Error('No private key available');\n }\n }\n\n async getIssuer(): Promise<Issuer> {\n if (!this.#keyPair?.privateKey) {\n throw new Error('No private key available');\n }\n\n return {\n did: await this.#did,\n signer: async (data: string | Uint8Array) => {\n const signature = await this.sign(\n typeof data === 'string'\n ? new TextEncoder().encode(data)\n : data,\n );\n return bytesToBase64url(signature);\n },\n alg: 'ES256',\n };\n }\n}\nexport * from './browser.js';\n// export * from './electron.js';\n"],"file":"assets/index.AZjpWAnF.js"}
|
|
1
|
+
{"version":3,"mappings":"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,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,YAAa,MACb,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,KACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,iBAAkB,MAClB,iBAAkB,MAClB,iBAAkB,MAClB,iBAAkB,MAClB,4BAA6B,MAC7B,+BAAgC,MAChC,wBAAyB,MACzB,0BAA2B,MAC3B,wBAAyB,MACzB,mBAAoB,QACpB,mBAAoB,QACpB,mBAAoB,QACpB,mBAAoB,QACpB,mBAAoB,SACpB,mBAAoB,SACpB,YAAa,SACb,aAAc,SACf,CAE2B,mDCzd5B,KAAM,CAAE,UAAAC,CAAS,EAAK9H,GAAA,EAChB2H,EAAe1H,KAAkB,aAEjC8H,EAAiD,GACjDC,EAAgD,GAChDC,EAAwC,GAG9C,UAAWhW,KAAQ6V,EAAW,CAC5B,MAAMI,EAAqCjW,EACrC8I,EAAO+M,EAAUI,CAAS,EAChCH,EAAaG,CAAS,EAAIP,EAAa5M,CAAI,EAE3C,MAAMoN,EAAwCD,EAAU,YAAW,EAAG,QAAQ,KAAM,GAAG,EACvFF,EAAeG,CAAQ,EAAIpN,EAEtBkN,EAAWlN,CAAI,IAClBkN,EAAWlN,CAAI,EAAImN,EAEvB,CAEA,OAAO,OAAOH,CAAY,EAC1B,OAAO,OAAOC,CAAc,EAC5B,OAAO,OAAOC,CAAU,EACxB,MAAMG,EAAa,OAAO,OAAON,CAAS,EAC1C,OAAAO,GAAiB,CACf,aAAAN,EACA,eAAAC,EACA,WAAAI,EACA,WAAAH,CACF,kDCtBA,MAAMzN,EAASwF,GAAA,EACT,CAAE,OAAQsI,GAAqBrI,GAC/BsH,EAAOrH,GAAA,EACP,CAAE,aAAA6H,EAAc,eAAAC,EAAgB,WAAAI,EAAY,WAAAH,CAAU,EAAKf,GAAA,EASjE,SAASqB,EAAWC,EAAqBzR,EAAM,CAC7C,IAAI7B,EAEJ,GAAIsT,aAA+B,WACjCtT,EAASqS,EAAK,uBAAuBiB,CAAmB,UAEpDT,EAAaS,CAAmB,EAClCtT,EAAS6S,EAAaS,CAAmB,MAEzC,OAAM,IAAI,MAAM,2BAA2B,EAI/C,OAAOF,EAAiB,CAACpT,EAAQ6B,CAAI,EAAG7B,EAAO,OAAS6B,EAAK,MAAM,CACrE,CAQA,SAAS0R,EAAU1R,EAAM,CACvB,OAAAyD,EAAO,OAA6BzD,CAAI,EACjCA,EAAK,MAAMyD,EAAO,OAAO,KAAK,CACvC,CAQA,SAASkO,EAAiBC,EAAc,CACtC,MAAM5N,EAAgCP,EAAO,OAA6BmO,CAAY,EAChF1W,EAAOgW,EAAWlN,CAAI,EAC5B,GAAI9I,IAAS,OACX,MAAM,IAAI,MAAM,SAAS8I,CAAI,aAAa,EAE5C,OAAO9I,CACT,CAQA,SAAS2W,EAAiBhL,EAAO,CAC/B,OAAOqK,EAAWrK,CAAK,CACzB,CAQA,SAASiL,EAAiB5W,EAAM,CAC9B,MAAM8I,EAAOqN,EAAWnW,CAAI,EAC5B,GAAI8I,IAAS,OACX,MAAM,IAAI,MAAM,UAAU9I,CAAI,aAAa,EAE7C,OAAO8I,CACT,CAQA,SAAS+N,EAAiBH,EAAc,CACtC,OAAgCnO,EAAO,OAA6BmO,CAAY,CAClF,CAQA,SAASI,EAAmB9W,EAAM,CAChC,MAAM8I,EAAOgN,EAAa9V,CAAI,EAC9B,GAAI8I,IAAS,OACX,MAAM,IAAI,MAAM,UAAU9I,CAAI,aAAa,EAE7C,OAAO8I,CACT,CAQA,SAASiO,EAAmBjO,EAAM,CAChC,OAAOwM,EAAK,aAAaxM,CAAI,CAC/B,CASA,SAASkO,EAAUN,EAAc,CAC/B,OAAOD,EAAgBC,CAAY,CACrC,CASA,SAASO,EAAStL,EAAO,CACvB,OAAOgL,EAAgBhL,CAAK,CAC9B,CASA,SAASuL,EAAWlX,EAAM,CACxB,OAAO4W,EAAgB5W,CAAI,CAC7B,CASA,SAASmX,EAAST,EAAc,CAC9B,OAAOG,EAAgBH,CAAY,CACrC,CASA,SAASU,EAAepX,EAAM,CAC5B,OAAO8W,EAAkB9W,CAAI,CAC/B,CASA,SAASqX,EAAWvO,EAAM,CACxB,OAAO,MAAM,KAAKiO,EAAkBjO,CAAI,CAAC,CAC3C,CAEA,OAAAjH,GAAiB,CACf,UAAAyU,EACA,SAAAE,EACA,gBAAAC,EACA,gBAAAE,EACA,gBAAAC,EACA,gBAAAC,EACA,kBAAAC,EACA,kBAAAC,EAEA,SAAAC,EACA,QAAAC,EACA,UAAAC,EACA,QAAAC,EACA,cAAAC,EACA,UAAAC,EAEA,GAAGtB,EAEH,aAAAD,EACA,WAAAK,EACA,WAAAH,CACF,iCCrNO,SAASsB,GAAgBlX,EAAGmX,EAAG,CAClC,MAAM7S,EAAM,IAAI,WAAWtE,EAAE,OAAS,CAAC,EACvC,OAAAsE,EAAI,CAAC,EAAI,GAAK6S,EAAEA,EAAE,OAAS,CAAC,EAAI,GAChC7S,EAAI,IAAItE,EAAG,CAAC,EACLsE,CACX,CACO,SAAS8S,GAA0BC,EAAc,CACpD,MAAMC,EAAOD,EAAa,MAAM,EAAGA,EAAa,OAAS,CAAC,EACpDE,EAAOF,EAAa,MAAMA,EAAa,OAAS,EAAGA,EAAa,MAAM,EACtEG,EAASC,cAAeH,EAAM,QAAQ,EACtCI,EAASD,cAAeF,EAAM,QAAQ,EACtCI,EAAkBT,GAAgBM,EAAQE,CAAM,EAEtD,OAD2BE,YAAaD,EAAiB,QAAQ,CAErE,CAIO,SAASE,GAA4BR,EAAc,CACtD,OAAOA,EAAa,MAAM,CAAC,CAC/B,CCpBO,SAASS,GAAuBC,EAAgBV,EAAc,CACjE,MAAMW,EAAYP,cAAeJ,EAAc,QAAQ,EAEvD,OADeY,GAAmBF,EAAgBC,CAAS,CAE/D,CACO,SAASC,GAAmBF,EAAgBC,EAAW,CAC1D,MAAME,EAAmBC,GAAW,UAAUJ,EAAgBC,CAAS,EAEvE,MAAO,WADajS,EAAU,OAAOmS,CAAgB,CACxB,EACjC,sBCVO,MAAME,EAAN,MAAMA,CAAmD,CAM5D,aAAc,CANXC,EAAA,KAAAC,IAKHD,EAAA,KAAAE,IAEIC,EAAA,KAAKD,GAAM,IAAI,QAAQ,CAACE,EAASlI,IAAW,CACxC,MAAMmI,EAAM,UAAU,KAAKC,EAAAP,EAAkBQ,IAAU,CAAC,EACxDF,EAAI,gBAAkB,IAAM,CACxBA,EAAI,OAAO,kBAAkBC,EAAAP,EAAkBS,EAAW,GAE9DH,EAAI,UAAY,IAAMD,EAAQC,EAAI,MAAM,EACxCA,EAAI,QAAU,IAAMnI,EAAOmI,EAAI,KAAc,EAChD,GAaL,MAAM,YAAYI,EAAqB,CAEnC,MAAMC,GADQ,MAAMC,EAAA,KAAKV,GAAAW,IAAL,YACE,IAAIH,EAASH,EAAAP,EAAkBc,GAAI,EACzD,OAAO,IAAI,QAAc,CAACT,EAASlI,IAAW,CAC1CwI,EAAQ,UAAY,IAAM,CACtBN,EAAA,CAAQ,EAEZM,EAAQ,QAAU,IAAM,CACpBxI,EAAO,IAAI,MAAM,yBAAyB,CAAC,EAC/C,CACH,EAGL,MAAM,aAA+C,CAEjD,MAAMwI,GADQ,MAAMC,EAAA,KAAKV,GAAAW,IAAL,UAAe,aACb,SAEtB,OAAO,IAAI,QAAgC,CAACR,EAASlI,IAAW,CAC5DwI,EAAQ,UAAY,IAAM,CACtB,MAAMD,EAAUC,EAAQ,OAAO,OACxBA,EAAQ,OAAO,CAAC,EACjB,OACNN,EAAQK,CAAO,GAEnBC,EAAQ,QAAU,IAAM,CACpBxI,EAAO,IAAI,MAAM,yBAAyB,CAAC,EAC/C,CACH,EAET,EAvDWqI,GAAA,YACAC,EAAA,YACAK,GAAA,YAEPX,GAAA,YALGD,GAAA,YAiBGW,GAAA,eAAUE,EAA2B,YAAa,CAOpD,OANiB,MAAMR,EAAA,KAAKJ,KACC,YACzBI,EAAAP,EAAkBS,GAClBM,CAAA,EAEsB,YAAYR,EAAAP,EAAkBS,EAAW,CAC5D,EAvBXR,EADSD,EACFQ,GAAW,gBAClBP,EAFSD,EAEFS,EAAc,YACrBR,EAHSD,EAGFc,GAAO,WAHX,IAAME,GAANhB,ECeP,MAAMiB,GAASC,GAAY,CAAC,UAAW,QAAQ,CAAC,EAWhD,SAASC,GAAOC,EAAiB,CAC7B,OAAO,MAAM,UAAU,IAClB,KAAK,IAAI,WAAWA,CAAE,EAAIxZ,IACtB,KAAOA,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,GAEnC,KAAK,EAAE,CAChB,4CAgBO,MAAMyZ,EAAN,MAAMA,CAAwC,CAmBjD,YAAYC,EAAuC,CAnBhDrB,EAAA,KAAAsB,GACHtB,EAAA,KAAAuB,GACAvB,EAAA,KAAAwB,GACAxB,EAAA,KAAAyB,GAEAzB,EAAA,KAAA0B,GACA1B,EAAA,KAAA2B,GAqJA3B,EAAA,KAAA4B,GAAQ,SACDC,KAEK,MAAMvB,EAAA,KAAKiB,IAAe,KAAK,GAAGM,CAAI,GAGlD7B,EAAA,KAAA8B,GAAU,SACHD,KAEK,MAAMvB,EAAA,KAAKiB,IAAe,OAAO,GAAGM,CAAI,GAhJhD1B,EAAA,KAAKsB,EAAkBJ,GAGvBlB,EAAA,KAAKoB,EAAgBZ,EAAA,KAAKW,EAAAS,IAAL,YAErB5B,EAAA,KAAKuB,EAAOf,EAAA,KAAKW,EAAAU,IAAL,WAAiB,CAqCjC,MAAM,eACFC,EACArG,EACAsG,EAAU,GACZ,CACE,MAAMxJ,EAAS,MAAM,KAAK,YAC1B,OAAIwJ,GAAW,CAAC5B,EAAA,KAAKqB,KACjBxB,EAAA,KAAKwB,EAAe,MAAMlG,GACtB,OAAOjV,EAAe,EACtBD,GACAqV,GAAY,MAAM0E,EAAA,KAAKoB,GACvBhJ,CAAA,GAID4H,EAAA,KAAKqB,EAAA,CAGhB,KAAM,CACF,OAAOrB,EAAA,KAAKoB,EAAA,CAGhB,MAAM,eAAgB,CAClBvB,EAAA,KAAKqB,EAAW,MAAMb,EAAA,KAAKW,EAAAa,IAAL,YACtB,MAAM7B,EAAA,KAAKmB,GAAgB,YAAY,MAAMd,EAAA,KAAKW,EAAAc,IAAL,UAAqB,EAqFtE,MAAM,KAAK/V,EAAgD,OACvD,IAAIiO,EAAAgG,EAAA,KAAKkB,KAAL,MAAAlH,EAAe,WAAY,CAC3B,MAAM+H,EACF,OAAOhW,GAAS,SAAWsU,EAAA,KAAKW,EAAAgB,IAAL,UAAoBjW,GAAQA,EAIrDkW,EAAc,MAFC,MAAMjC,EAAA,KAAKiB,IAEO,KACnCH,EAAc,cACdd,EAAA,KAAKkB,GAAS,WACda,EAAU,QAGd,OAAO,IAAI,WAAWE,CAAW,MAEjC,OAAM,IAAI,MAAM,0BAA0B,CAC9C,CAGJ,MAAM,WAA6B,OAC/B,GAAI,GAACjI,EAAAgG,EAAA,KAAKkB,KAAL,MAAAlH,EAAe,YAChB,MAAM,IAAI,MAAM,0BAA0B,EAG9C,MAAO,CACH,IAAK,MAAMgG,EAAA,KAAKoB,GAChB,OAAQ,MAAOrV,GAA8B,CACzC,MAAMiK,EAAY,MAAM,KAAK,KACzB,OAAOjK,GAAS,SACV,IAAI,cAAc,OAAOA,CAAI,EAC7BA,CAAA,EAEV,OAAOqJ,GAAiBY,CAAS,GAErC,IAAK,QACT,CAER,EA/MIiL,EAAA,YACAC,EAAA,YACAC,EAAA,YAEAC,EAAA,YACAC,EAAA,YANGL,EAAA,YA4BHS,GAAA,UAAc,CACV,OAAO,IAAI,QAAsB,CAAC3B,EAASlI,IAAW,OAC9C,OAAO,OAAW,IAClBsK,GAAA,WAAO,aAAa,sBACf,KAAKC,GAAU,CACZrC,EAAQqC,EAAO,UAAU,MAAsB,EAClD,EACA,MAAMvK,CAAM,IAGZoC,EAAA,OAAO,SAAP,MAAAA,EAAe,QAChBpC,EAAO,IAAI,MAAM,6BAA6B,CAAC,EAEnDkI,EAAQ,OAAO,OAAO,MAAM,EAChC,CACH,GAIC4B,GAAA,gBAAc,CAChB,MAAMU,EAAgB,MAAMpC,EAAA,KAAKmB,GAAgB,cAC7CiB,GACAvC,EAAA,KAAKqB,EAAW,MAAMb,EAAA,KAAKW,EAAAqB,IAAL,UAAoBD,IAC1C1B,GAAO,MAAM,gBAAgB,IAE7Bb,EAAA,KAAKqB,EAAW,MAAMb,EAAA,KAAKW,EAAAa,IAAL,YACtBnB,GAAO,MAAM,kBAAkB,EAC/B,MAAMV,EAAA,KAAKmB,GAAgB,YAAY,MAAMd,EAAA,KAAKW,EAAAc,IAAL,UAAqB,GAEtE,MAAM7G,EAAM,MAAMoF,EAAA,KAAKW,EAAAsB,IAAL,WAClB,OAAA5B,GAAO,MAAM,eAAgBzF,CAAG,EACzBA,CAAA,EA8BLqH,GAAA,gBAA0B,CAC5B,GAAI,CAACtC,EAAA,KAAKkB,GACN,MAAM,IAAI,MAAM,uBAAuB,EAI3C,MAAMqB,EAAe,MADA,MAAMvC,EAAA,KAAKiB,IACQ,UACpC,MACAjB,EAAA,KAAKkB,GAAS,WAGZ9B,EAAiB,WACjBoD,EAAStD,GAA4B0B,GAAO2B,CAAY,CAAC,EACzDE,EAAgBhE,GAA0B+D,CAAM,EAEtD,OADYrD,GAAuBC,EAAgBqD,CAAa,CACzD,EAGLZ,GAAA,gBAAwB,CAO1B,OALgB,MADK,MAAM7B,EAAA,KAAKiB,IACG,YAC/BH,EAAc,UACd,GACA,CAAC,OAAQ,QAAQ,EAEd,EAGLgB,GAAA,gBAAsC,CACxC,GAAI,CAAC9B,EAAA,KAAKkB,GACN,MAAM,IAAI,MAAM,uBAAuB,EAE3C,MAAMwB,EAAe,MAAM1C,EAAA,KAAKiB,GAWhC,MAVmB,CACf,UAAW,MAAMyB,EAAa,UAC1B,MACA1C,EAAA,KAAKkB,GAAS,WAElB,WAAY,MAAMwB,EAAa,UAC3B,MACA1C,EAAA,KAAKkB,GAAS,WAClB,CAEG,EAGLmB,kBAAeM,EAAgD,CACjE,MAAMD,EAAe,MAAM1C,EAAA,KAAKiB,GAChC,MAAO,CACH,UAAW,MAAMyB,EAAa,UAC1B,MACAC,EAAW,UACX7B,EAAc,UACd,GACA,CAAC,QAAQ,GAEb,WAAY,MAAM4B,EAAa,UAC3B,MACAC,EAAW,WACX7B,EAAc,UACd,GACA,CAAC,MAAM,EACX,CACJ,EAGJQ,GAAA,YAMAE,GAAA,YAMAQ,YAAe1M,EAAuB,CAClC,OAAOvL,GAAWuL,EAAG,OAAO,GAhKhCZ,EARSoM,EAQF,YAA4B,CAC/B,KAAM,QACN,WAAY,UAGhBpM,EAbSoM,EAaF,gBAAgB,CACnB,KAAM,QACN,WAAY,QACZ,KAAM,YAhBP,IAAM8B,GAAN9B","names":["RENOWN_NETWORK_ID","RENOWN_CHAIN_ID","asUint8Array","buf","allocUnsafe","size","concat","arrays","length","acc","curr","output","offset","arr","base","ALPHABET","name","BASE_MAP","j","i","x","xc","BASE","LEADER","FACTOR","iFACTOR","encode","source","zeroes","pbegin","pend","b58","carry","it1","it2","str","decodeUnsafe","psz","b256","it3","it4","vch","decode","string","buffer","src","_brrp__multiformats_scope_baseX","empty","toHex","d","hex","byte","fromHex","hexes","b","equals","aa","bb","ii","coerce","o","isBinary","fromString","toString","Encoder$1","prefix","baseEncode","bytes","Decoder$1","baseDecode","text","decoder","or","ComposedDecoder$1","decoders","input","left","right","ComposedDecoder","Codec$1","Encoder","Decoder","from","Codec","baseX","alphabet","basex","bitsPerChar","codes","end","out","bits","written","value","data","pad","mask","rfc4648","identity","base2","base8","base10","base16","base16upper","base32","base32upper","base32pad","base32padupper","base32hex","base32hexupper","base32hexpad","base32hexpadupper","base32z","base36","base36upper","base58btc","base58flickr","base64","base64pad","base64url","base64urlpad","alphabetBytesToChars","p","c","alphabetCharsToBytes","byts","char","byt","base256emoji","encode_1","MSB","MSBALL","INT","num","oldOffset","read","MSB$1","REST$1","res","shift","counter","l","N1","N2","N3","N4","N5","N6","N7","N8","N9","varint","_brrp_varint","encodeTo","int","target","encodingLength","create","code","digest","sizeOffset","varint.encodingLength","digestOffset","varint.encodeTo","Digest","multihash","varint.decode","a","equalBytes","Hasher","result","Digest.create","sha","sha256","sha512","node","textEncoder","textDecoder","CID","version","hidden","readonly","DAG_PB_CODE","SHA_256_CODE","other","Digest.equals","_baseCache","toStringV0","toStringV1","deprecate","IS_CID_DEPRECATION","cidSymbol","encodeCID","Digest.decode","cid","remainder","specs","prefixSize","multihashBytes","digestBytes","Digest.Digest","initialBytes","next","codec","multihashCode","digestSize","multihashSize","parseCIDtoBytes","cache","codeOffset","hashOffset","range","message","bases","identityBase","base58","hashes","sha2","codecs","raw","json","createCodec","ascii","BASES","encoding","array","canonicalize","serialize","object","t","cv","ci","comma","__publicField","prefixCodePoint","alphabetIdx","createAlphabetIdx","codePoint","REST","require$$0","require$$1","require$$2","u8a","bytesToBase64url","base64ToBytes","s","inputBase64Url","encodeBase64url","bytesToHex","toJose","r","recoveryParam","recoverable","jose","fromJose","signature","signatureBytes","instanceOfEcdsaSignature","ES256SignerAlg","payload","signer","e","ES256KSignerAlg","Ed25519SignerAlg","algorithms$1","SignerAlg","alg","impl","_settle$1","pact","state","_Pact$1","observer","_Pact","onFulfilled","onRejected","callback","_this","_isSettledPact$1","thenable","_forTo$1","body","check","reject","_cycle","createMultisignatureJWT","expiresIn","issuers","payloadResult","jwt","_temp","issuer","header","createJWT","_createJWT","timestamps","fullPayload","createJWS","options","defaultAlg","encodedPayload","encodeSection","signingInput","jwtSigner","shouldCanonicalize","canonicalizeData","JWT_ALG","DEFAULT_CONTEXT","DEFAULT_VC_TYPE","additionalPropNames","asArray","arg","deepCopy","item","prop","notEmpty","transformCredentialInput","removeOriginalFields","credentialSubject","_a","_b","contextEntries","_c","types","_d","converted","_e","VC_ERROR","isDateObject","validateTimestamp","validateContext","validateVcType","validateCredentialSubject","createVerifiableCredentialJwt","parsedPayload","validateJwtCredentialPayload","did","iss","createAuthBearerToken","chainId","networkId","address","vcPayload","compare","compare_1","concat_1","equals_1","bases_1","fromString_1","toString_1","xor","xor_1","uint8arrays","require$$3","require$$4","require$$5","uint8ArrayToString","uint8ArrayFromString","util","numberToUint8Array","uint8ArrayToNumber","varintUint8ArrayEncode","varintEncode","hexString","generatedTable","baseTable","nameToVarint","constantToCode","codeToName","codecName","constant","nameToCode","maps","uint8ArrayConcat","addPrefix","multicodecStrOrCode","rmPrefix","getNameFromData","prefixedData","getNameFromCode","getCodeFromName","getCodeFromData","getVarintFromName","getVarintFromCode","getCodec","getName","getNumber","getCode","getCodeVarint","getVarint","ECPointCompress","y","compressedKeyInHexfromRaw","publicKeyHex","xHex","yHex","xOctet","u8a.fromString","yOctet","compressedPoint","u8a.toString","rawKeyInHexfromUncompressed","encodeDIDfromHexString","multicodecName","publicKey","encodeDIDfromBytes","publicKeywPrefix","multicodec","_BrowserKeyStorage","__privateAdd","_BrowserKeyStorage_instances","_db","__privateSet","resolve","req","__privateGet","_DB_NAME","_STORE_NAME","keyPair","request","__privateMethod","useStore_fn","_KEY","mode","BrowserKeyStorage","logger","childLogger","ab2hex","ab","_ConnectCrypto","keyPairStorage","_ConnectCrypto_instances","_subtleCrypto","_keyPair","_keyPairStorage","_did","_bearerToken","_sign","args","_verify","initCrypto_fn","initialize_fn","driveUrl","refresh","generateECDSAKeyPair_fn","exportKeyPair_fn","dataBytes","stringToBytes_fn","arrayBuffer","__vitePreload","module","loadedKeyPair","importKeyPair_fn","parseDid_fn","publicKeyRaw","rawKey","compressedKey","subtleCrypto","jwkKeyPair","ConnectCrypto"],"ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,55,56,57,58,59,60,61,62,63,64,65,66,67,68],"sources":["../../../../packages/reactor-browser/dist/src/renown/constants.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/util/as-uint8array.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/alloc.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/concat.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/vendor/base-x.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bytes.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/identity.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base2.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base8.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base10.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base16.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base32.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base36.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base58.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base64.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base256emoji.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/vendor/varint.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/varint.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/digest.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/hasher.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/sha2-browser.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/identity.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/codecs/raw.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/codecs/json.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/cid.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/basics.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/util/bases.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/from-string.js","../../../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/to-string.js","../../../../node_modules/.pnpm/canonicalize@2.1.0/node_modules/canonicalize/lib/canonicalize.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base36.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/.pnpm/uint8arrays@5.1.0/node_modules/uint8arrays/dist/src/alloc.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base10.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base16.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base2.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base256emoji.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/base8.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/bases/identity.js","../../../../node_modules/.pnpm/multiformats@13.3.7/node_modules/multiformats/dist/src/basics.js","../../../../node_modules/.pnpm/uint8arrays@5.1.0/node_modules/uint8arrays/dist/src/util/bases.js","../../../../node_modules/.pnpm/uint8arrays@5.1.0/node_modules/uint8arrays/dist/src/from-string.js","../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/encode.js","../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/decode.js","../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/length.js","../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/index.js","../../../../node_modules/.pnpm/did-jwt@8.0.17/node_modules/did-jwt/lib/index.module.js","../../../../node_modules/.pnpm/did-jwt-vc@4.0.15/node_modules/did-jwt-vc/lib/index.module.js","../../../../packages/renown/dist/src/utils.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/compare.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/concat.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/equals.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/util/bases.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/from-string.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/to-string.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/xor.js","../../../../node_modules/.pnpm/uint8arrays@2.1.10/node_modules/uint8arrays/index.js","../../../../node_modules/.pnpm/multicodec@3.2.1/node_modules/multicodec/src/util.js","../../../../node_modules/.pnpm/multicodec@3.2.1/node_modules/multicodec/src/generated-table.js","../../../../node_modules/.pnpm/multicodec@3.2.1/node_modules/multicodec/src/maps.js","../../../../node_modules/.pnpm/multicodec@3.2.1/node_modules/multicodec/src/index.js","../../../../node_modules/.pnpm/did-key-creator@1.2.0/node_modules/did-key-creator/lib/did_key_utils.js","../../../../node_modules/.pnpm/did-key-creator@1.2.0/node_modules/did-key-creator/lib/encodeDIDkey.js","../../src/services/crypto/browser.ts","../../src/services/crypto/index.ts"],"sourcesContent":["export const RENOWN_URL = \"https://auth.renown.id\";\nexport const RENOWN_NETWORK_ID = \"eip155\";\nexport const RENOWN_CHAIN_ID = \"1\";\nexport const DOMAIN_TYPE = [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n];\nexport const VERIFIABLE_CREDENTIAL_EIP712_TYPE = [\n { name: \"@context\", type: \"string[]\" },\n { name: \"type\", type: \"string[]\" },\n { name: \"id\", type: \"string\" },\n { name: \"issuer\", type: \"Issuer\" },\n { name: \"credentialSubject\", type: \"CredentialSubject\" },\n { name: \"credentialSchema\", type: \"CredentialSchema\" },\n { name: \"issuanceDate\", type: \"string\" },\n { name: \"expirationDate\", type: \"string\" },\n];\nexport const CREDENTIAL_SCHEMA_EIP712_TYPE = [\n { name: \"id\", type: \"string\" },\n { name: \"type\", type: \"string\" },\n];\nexport const CREDENTIAL_SUBJECT_TYPE = [\n { name: \"app\", type: \"string\" },\n { name: \"id\", type: \"string\" },\n { name: \"name\", type: \"string\" },\n];\nexport const ISSUER_TYPE = [\n { name: \"id\", type: \"string\" },\n { name: \"ethereumAddress\", type: \"string\" },\n];\nexport const CREDENTIAL_TYPES = {\n EIP712Domain: DOMAIN_TYPE,\n VerifiableCredential: VERIFIABLE_CREDENTIAL_EIP712_TYPE,\n CredentialSchema: CREDENTIAL_SCHEMA_EIP712_TYPE,\n CredentialSubject: CREDENTIAL_SUBJECT_TYPE,\n Issuer: ISSUER_TYPE,\n};\n//# sourceMappingURL=constants.js.map","export function asUint8Array(buf) {\n if (globalThis.Buffer != null) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n return buf;\n}","import { asUint8Array } from './util/as-uint8array.js';\nexport function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return asUint8Array(globalThis.Buffer.alloc(size));\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n }\n return new Uint8Array(size);\n}","import { allocUnsafe } from './alloc.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return asUint8Array(output);\n}","function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256);\n var iFACTOR = Math.log(256) / Math.log(BASE);\n function encode(source) {\n if (source instanceof Uint8Array);\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += 256 * b58[it1] >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = carry / BASE >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += BASE * b256[it3] >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = carry / 256 >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};","import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});","var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;","import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};","import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}","import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}","import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: sha('SHA-512')\n});","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};","import { coerce } from '../bytes.js';\nexport const name = 'raw';\nexport const code = 85;\nexport const encode = node => coerce(node);\nexport const decode = data => coerce(data);","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as varint from './varint.js';\nimport * as Digest from './hashes/digest.js';\nimport { base58btc } from './bases/base58.js';\nimport { base32 } from './bases/base32.js';\nimport { coerce } from './bytes.js';\nexport class CID {\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n this.byteOffset = bytes.byteOffset;\n this.byteLength = bytes.byteLength;\n this.asCID = this;\n this._baseCache = new Map();\n Object.defineProperties(this, {\n byteOffset: hidden,\n byteLength: hidden,\n code: readonly,\n version: readonly,\n multihash: readonly,\n bytes: readonly,\n _baseCache: hidden,\n asCID: hidden\n });\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n default: {\n const {code, multihash} = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return CID.createV0(multihash);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const {code, digest} = this.multihash;\n const multihash = Digest.create(code, digest);\n return CID.createV1(this.code, multihash);\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${ this.version } to version 0. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return other && this.code === other.code && this.version === other.version && Digest.equals(this.multihash, other.multihash);\n }\n toString(base) {\n const {bytes, version, _baseCache} = this;\n switch (version) {\n case 0:\n return toStringV0(bytes, _baseCache, base || base58btc.encoder);\n default:\n return toStringV1(bytes, _baseCache, base || base32.encoder);\n }\n }\n toJSON() {\n return {\n code: this.code,\n version: this.version,\n hash: this.multihash.bytes\n };\n }\n get [Symbol.toStringTag]() {\n return 'CID';\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return 'CID(' + this.toString() + ')';\n }\n static isCID(value) {\n deprecate(/^0\\.0/, IS_CID_DEPRECATION);\n return !!(value && (value[cidSymbol] || value.asCID === value));\n }\n get toBaseEncodedString() {\n throw new Error('Deprecated, use .toString()');\n }\n get codec() {\n throw new Error('\"codec\" property is deprecated, use integer \"code\" property instead');\n }\n get buffer() {\n throw new Error('Deprecated .buffer property, use .bytes to get Uint8Array instead');\n }\n get multibaseName() {\n throw new Error('\"multibaseName\" property is deprecated');\n }\n get prefix() {\n throw new Error('\"prefix\" property is deprecated');\n }\n static asCID(value) {\n if (value instanceof CID) {\n return value;\n } else if (value != null && value.asCID === value) {\n const {version, code, multihash, bytes} = value;\n return new CID(version, code, multihash, bytes || encodeCID(version, code, multihash.bytes));\n } else if (value != null && value[cidSymbol] === true) {\n const {version, multihash, code} = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n } else {\n return null;\n }\n }\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${ DAG_PB_CODE }) block encoding`);\n } else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0 ? CID.createV0(digest) : CID.createV1(specs.codec, digest);\n return [\n cid,\n bytes.subarray(specs.size)\n ];\n }\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n version = 0;\n offset = 0;\n } else if (version === 1) {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${ version }`);\n }\n const prefixSize = offset;\n const multihashCode = next();\n const digestSize = next();\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return {\n version,\n codec,\n multihashCode,\n digestSize,\n multihashSize,\n size\n };\n }\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n cid._baseCache.set(prefix, source);\n return cid;\n }\n}\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n case 'Q': {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${ base58btc.prefix }${ source }`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(source)\n ];\n }\n case base32.prefix: {\n const decoder = base || base32;\n return [\n base32.prefix,\n decoder.decode(source)\n ];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [\n source[0],\n base.decode(source)\n ];\n }\n }\n};\nconst toStringV0 = (bytes, cache, base) => {\n const {prefix} = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${ base.name } encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst toStringV1 = (bytes, cache, base) => {\n const {prefix} = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst DAG_PB_CODE = 112;\nconst SHA_256_CODE = 18;\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n};\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\nconst readonly = {\n writable: false,\n configurable: false,\n enumerable: true\n};\nconst hidden = {\n writable: false,\n enumerable: false,\n configurable: false\n};\nconst version = '0.0.0-dev';\nconst deprecate = (range, message) => {\n if (range.test(version)) {\n console.warn(message);\n } else {\n throw new Error(message);\n }\n};\nconst IS_CID_DEPRECATION = `CID.isCID(v) is deprecated and will be removed in the next major release.\nFollowing code pattern:\n\nif (CID.isCID(value)) {\n doSomethingWithCID(value)\n}\n\nIs replaced with:\n\nconst cid = CID.asCID(value)\nif (cid) {\n // Make sure to use cid instead of value\n doSomethingWithCID(cid)\n}\n`;","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (typeof object === 'number' && isNaN(object)) {\n throw new Error('NaN is not allowed');\n }\n\n if (typeof object === 'number' && !isFinite(object)) {\n throw new Error('Infinity is not allowed');\n }\n\n if (object === null || typeof object !== 'object') {\n return JSON.stringify(object);\n }\n\n if (object.toJSON instanceof Function) {\n return serialize(object.toJSON());\n }\n\n if (Array.isArray(object)) {\n const values = object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return `${t}${comma}${serialize(value)}`;\n }, '');\n return `[${values}]`;\n }\n\n const values = Object.keys(object).sort().reduce((t, cv) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return `${t}${comma}${serialize(cv)}:${serialize(object[cv])}`;\n }, '');\n return `{${values}}`;\n};\n","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb) {\n return true;\n }\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') {\n return o;\n }\n if (o instanceof ArrayBuffer) {\n return new Uint8Array(o);\n }\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable<number>} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n const prefixCodePoint = prefix.codePointAt(0);\n /* c8 ignore next 3 */\n if (prefixCodePoint === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefixCodePoint;\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabetIdx, bitsPerChar, name) {\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = alphabetIdx[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\nfunction createAlphabetIdx(alphabet) {\n // Build the character lookup table:\n const alphabetIdx = {};\n for (let i = 0; i < alphabet.length; ++i) {\n alphabetIdx[alphabet[i]] = i;\n }\n return alphabetIdx;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n const alphabetIdx = createAlphabetIdx(alphabet);\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabetIdx, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base36.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc(size = 0) {\n return new Uint8Array(size);\n}\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe(size = 0) {\n return new Uint8Array(size);\n}\n//# sourceMappingURL=alloc.js.map","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});\n//# sourceMappingURL=base10.js.map","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});\n//# sourceMappingURL=base16.js.map","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});\n//# sourceMappingURL=base2.js.map","import { from } from './base.js';\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂');\nconst alphabetBytesToChars = (alphabet.reduce((p, c, i) => { p[i] = c; return p; }, ([])));\nconst alphabetCharsToBytes = (alphabet.reduce((p, c, i) => {\n const codePoint = c.codePointAt(0);\n if (codePoint == null) {\n throw new Error(`Invalid character: ${c}`);\n }\n p[codePoint] = i;\n return p;\n}, ([])));\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const codePoint = char.codePointAt(0);\n if (codePoint == null) {\n throw new Error(`Invalid character: ${char}`);\n }\n const byt = alphabetCharsToBytes[codePoint];\n if (byt == null) {\n throw new Error(`Non-base256emoji character: ${char}`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n});\n//# sourceMappingURL=base256emoji.js.map","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});\n//# sourceMappingURL=base8.js.map","import { fromString, toString } from '../bytes.js';\nimport { from } from './base.js';\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n});\n//# sourceMappingURL=identity.js.map","import * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base2 from './bases/base2.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base8 from './bases/base8.js';\nimport * as identityBase from './bases/identity.js';\nimport * as json from './codecs/json.js';\nimport * as raw from './codecs/raw.js';\nimport * as identity from './hashes/identity.js';\nimport * as sha2 from './hashes/sha2.js';\nimport { CID, hasher, digest, varint, bytes } from './index.js';\nexport const bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji };\nexport const hashes = { ...sha2, ...identity };\nexport const codecs = { raw, json };\nexport { CID, hasher, digest, varint, bytes };\n//# sourceMappingURL=basics.js.map","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '#alloc';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: {\n decode\n }\n };\n}\nconst string = createCodec('utf8', 'u', (buf) => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, (str) => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', (buf) => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, (str) => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;\n//# sourceMappingURL=bases.js.map","import bases, {} from './util/bases.js';\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n // add multibase prefix\n return base.decoder.decode(`${base.prefix}${string}`); // eslint-disable-line @typescript-eslint/restrict-template-expressions\n}\n//# sourceMappingURL=from-string.js.map","module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {\n encode.bytes = 0\n throw new RangeError('Could not encode varint')\n }\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n","module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l || shift > 49) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n","\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n","module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n","import { toString, fromString, concat } from 'uint8arrays';\nimport { x25519, ed25519 } from '@noble/curves/ed25519';\nimport { varint } from 'multiformats';\nimport { encode, decode } from 'multibase';\nimport { secp256k1 } from '@noble/curves/secp256k1';\nimport { p256 } from '@noble/curves/p256';\nimport { sha256 as sha256$1 } from '@noble/hashes/sha256';\nimport { ripemd160 } from '@noble/hashes/ripemd160';\nimport { keccak_256 } from '@noble/hashes/sha3';\nimport canonicalizeData from 'canonicalize';\nimport { parse } from 'did-resolver';\nimport { bech32 } from '@scure/base';\nimport { xchacha20poly1305 } from '@noble/ciphers/chacha';\nimport { randomBytes } from '@noble/hashes/utils';\n\nconst u8a = {\n toString,\n fromString,\n concat\n};\nfunction bytesToBase64url(b) {\n return u8a.toString(b, 'base64url');\n}\nfunction base64ToBytes(s) {\n const inputBase64Url = s.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n return u8a.fromString(inputBase64Url, 'base64url');\n}\nfunction base58ToBytes(s) {\n return u8a.fromString(s, 'base58btc');\n}\nfunction bytesToBase58(b) {\n return u8a.toString(b, 'base58btc');\n}\nconst SUPPORTED_PUBLIC_KEY_TYPES = {\n ES256: ['JsonWebKey2020', 'Multikey', 'EcdsaSecp256r1VerificationKey2019'],\n ES256K: ['EcdsaSecp256k1VerificationKey2019',\n /**\n * Equivalent to EcdsaSecp256k1VerificationKey2019 when key is an ethereumAddress\n */\n 'EcdsaSecp256k1RecoveryMethod2020',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'Secp256k1VerificationKey2018',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'Secp256k1SignatureVerificationKey2018',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'EcdsaPublicKeySecp256k1',\n /**\n * TODO - support R1 key as well\n * 'ConditionalProof2022',\n */\n 'JsonWebKey2020', 'Multikey'],\n 'ES256K-R': ['EcdsaSecp256k1VerificationKey2019',\n /**\n * Equivalent to EcdsaSecp256k1VerificationKey2019 when key is an ethereumAddress\n */\n 'EcdsaSecp256k1RecoveryMethod2020',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'Secp256k1VerificationKey2018',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'Secp256k1SignatureVerificationKey2018',\n /**\n * @deprecated, supported for backward compatibility. Equivalent to EcdsaSecp256k1VerificationKey2019 when key is\n * not an ethereumAddress\n */\n 'EcdsaPublicKeySecp256k1', 'ConditionalProof2022', 'JsonWebKey2020', 'Multikey'],\n Ed25519: ['ED25519SignatureVerification', 'Ed25519VerificationKey2018', 'Ed25519VerificationKey2020', 'JsonWebKey2020', 'Multikey'],\n EdDSA: ['ED25519SignatureVerification', 'Ed25519VerificationKey2018', 'Ed25519VerificationKey2020', 'JsonWebKey2020', 'Multikey']\n};\nconst VM_TO_KEY_TYPE = {\n Secp256k1SignatureVerificationKey2018: 'Secp256k1',\n Secp256k1VerificationKey2018: 'Secp256k1',\n EcdsaSecp256k1VerificationKey2019: 'Secp256k1',\n EcdsaPublicKeySecp256k1: 'Secp256k1',\n EcdsaSecp256k1RecoveryMethod2020: 'Secp256k1',\n EcdsaSecp256r1VerificationKey2019: 'P-256',\n Ed25519VerificationKey2018: 'Ed25519',\n Ed25519VerificationKey2020: 'Ed25519',\n ED25519SignatureVerification: 'Ed25519',\n X25519KeyAgreementKey2019: 'X25519',\n X25519KeyAgreementKey2020: 'X25519',\n ConditionalProof2022: undefined,\n JsonWebKey2020: undefined,\n // key type must be specified in the JWK\n Multikey: undefined // key type must be extracted from the multicodec\n\n}; // this is from the multicodec table https://github.com/multiformats/multicodec/blob/master/table.csv\n\nconst supportedCodecs = {\n 'ed25519-pub': 0xed,\n 'x25519-pub': 0xec,\n 'secp256k1-pub': 0xe7,\n 'bls12_381-g1-pub': 0xea,\n 'bls12_381-g2-pub': 0xeb,\n 'p256-pub': 0x1200\n};\nconst CODEC_TO_KEY_TYPE = {\n 'bls12_381-g1-pub': 'Bls12381G1',\n 'bls12_381-g2-pub': 'Bls12381G2',\n 'ed25519-pub': 'Ed25519',\n 'p256-pub': 'P-256',\n 'secp256k1-pub': 'Secp256k1',\n 'x25519-pub': 'X25519'\n};\n/**\n * Extracts the raw byte representation of a public key from a VerificationMethod along with an inferred key type\n * @param pk a VerificationMethod entry from a DIDDocument\n * @return an object containing the `keyBytes` of the public key and an inferred `keyType`\n */\n\nfunction extractPublicKeyBytes(pk) {\n if (pk.publicKeyBase58) {\n return {\n keyBytes: base58ToBytes(pk.publicKeyBase58),\n keyType: VM_TO_KEY_TYPE[pk.type]\n };\n } else if (pk.publicKeyBase64) {\n return {\n keyBytes: base64ToBytes(pk.publicKeyBase64),\n keyType: VM_TO_KEY_TYPE[pk.type]\n };\n } else if (pk.publicKeyHex) {\n return {\n keyBytes: hexToBytes(pk.publicKeyHex),\n keyType: VM_TO_KEY_TYPE[pk.type]\n };\n } else if (pk.publicKeyJwk && pk.publicKeyJwk.crv === 'secp256k1' && pk.publicKeyJwk.x && pk.publicKeyJwk.y) {\n return {\n keyBytes: secp256k1.ProjectivePoint.fromAffine({\n x: bytesToBigInt(base64ToBytes(pk.publicKeyJwk.x)),\n y: bytesToBigInt(base64ToBytes(pk.publicKeyJwk.y))\n }).toRawBytes(false),\n keyType: 'Secp256k1'\n };\n } else if (pk.publicKeyJwk && pk.publicKeyJwk.crv === 'P-256' && pk.publicKeyJwk.x && pk.publicKeyJwk.y) {\n return {\n keyBytes: p256.ProjectivePoint.fromAffine({\n x: bytesToBigInt(base64ToBytes(pk.publicKeyJwk.x)),\n y: bytesToBigInt(base64ToBytes(pk.publicKeyJwk.y))\n }).toRawBytes(false),\n keyType: 'P-256'\n };\n } else if (pk.publicKeyJwk && pk.publicKeyJwk.kty === 'OKP' && ['Ed25519', 'X25519'].includes(pk.publicKeyJwk.crv ?? '') && pk.publicKeyJwk.x) {\n return {\n keyBytes: base64ToBytes(pk.publicKeyJwk.x),\n keyType: pk.publicKeyJwk.crv\n };\n } else if (pk.publicKeyMultibase) {\n const {\n keyBytes,\n keyType\n } = multibaseToBytes(pk.publicKeyMultibase);\n return {\n keyBytes,\n keyType: keyType ?? VM_TO_KEY_TYPE[pk.type]\n };\n }\n\n return {\n keyBytes: new Uint8Array()\n };\n}\n/**\n * Encodes the given byte array to a multibase string (defaulting to base58btc).\n * If a codec is provided, the corresponding multicodec prefix will be added.\n *\n * @param b - the Uint8Array to be encoded\n * @param base - the base to use for encoding (defaults to base58btc)\n * @param codec - the codec to use for encoding (defaults to no codec)\n *\n * @returns the multibase encoded string\n *\n * @public\n */\n\nfunction bytesToMultibase(b, base = 'base58btc', codec) {\n if (!codec) {\n return u8a.toString(encode(base, b), 'utf-8');\n } else {\n const codecCode = typeof codec === 'string' ? supportedCodecs[codec] : codec;\n const prefixLength = varint.encodingLength(codecCode);\n const multicodecEncoding = new Uint8Array(prefixLength + b.length);\n varint.encodeTo(codecCode, multicodecEncoding); // set prefix\n\n multicodecEncoding.set(b, prefixLength); // add the original bytes\n\n return u8a.toString(encode(base, multicodecEncoding), 'utf-8');\n }\n}\n/**\n * Converts a multibase string to the Uint8Array it represents.\n * This method will assume the byte array that is multibase encoded is a multicodec and will attempt to decode it.\n *\n * @param s - the string to be converted\n *\n * @throws if the string is not formatted correctly.\n *\n * @public\n */\n\nfunction multibaseToBytes(s) {\n const bytes = decode(s); // look for known key lengths first\n // Ed25519/X25519, secp256k1/P256 compressed or not, BLS12-381 G1/G2 compressed\n\n if ([32, 33, 48, 64, 65, 96].includes(bytes.length)) {\n return {\n keyBytes: bytes\n };\n } // then assume multicodec, otherwise return the bytes\n\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [codec, length] = varint.decode(bytes);\n const possibleCodec = Object.entries(supportedCodecs).filter(([, code]) => code === codec)?.[0][0] ?? '';\n return {\n keyBytes: bytes.slice(length),\n keyType: CODEC_TO_KEY_TYPE[possibleCodec]\n };\n } catch (e) {\n // not a multicodec, return the bytes\n return {\n keyBytes: bytes\n };\n }\n}\nfunction hexToBytes(s, minLength) {\n let input = s.startsWith('0x') ? s.substring(2) : s;\n\n if (input.length % 2 !== 0) {\n input = `0${input}`;\n }\n\n if (minLength) {\n const paddedLength = Math.max(input.length, minLength * 2);\n input = input.padStart(paddedLength, '00');\n }\n\n return u8a.fromString(input.toLowerCase(), 'base16');\n}\nfunction encodeBase64url(s) {\n return bytesToBase64url(u8a.fromString(s));\n}\nfunction decodeBase64url(s) {\n return u8a.toString(base64ToBytes(s));\n}\nfunction bytesToHex(b) {\n return u8a.toString(b, 'base16');\n}\nfunction bytesToBigInt(b) {\n return BigInt(`0x` + u8a.toString(b, 'base16'));\n}\nfunction stringToBytes(s) {\n return u8a.fromString(s, 'utf-8');\n}\nfunction toJose({\n r,\n s,\n recoveryParam\n}, recoverable) {\n const jose = new Uint8Array(recoverable ? 65 : 64);\n jose.set(u8a.fromString(r, 'base16'), 0);\n jose.set(u8a.fromString(s, 'base16'), 32);\n\n if (recoverable) {\n if (typeof recoveryParam === 'undefined') {\n throw new Error('Signer did not return a recoveryParam');\n }\n\n jose[64] = recoveryParam;\n }\n\n return bytesToBase64url(jose);\n}\nfunction fromJose(signature) {\n const signatureBytes = base64ToBytes(signature);\n\n if (signatureBytes.length < 64 || signatureBytes.length > 65) {\n throw new TypeError(`Wrong size for signature. Expected 64 or 65 bytes, but got ${signatureBytes.length}`);\n }\n\n const r = bytesToHex(signatureBytes.slice(0, 32));\n const s = bytesToHex(signatureBytes.slice(32, 64));\n const recoveryParam = signatureBytes.length === 65 ? signatureBytes[64] : undefined;\n return {\n r,\n s,\n recoveryParam\n };\n}\nfunction toSealed(ciphertext, tag) {\n return u8a.concat([base64ToBytes(ciphertext), tag ? base64ToBytes(tag) : new Uint8Array(0)]);\n}\nfunction leftpad(data, size = 64) {\n if (data.length === size) return data;\n return '0'.repeat(size - data.length) + data;\n}\n/**\n * Generate random x25519 key pair.\n */\n\nfunction generateKeyPair() {\n const secretKey = x25519.utils.randomPrivateKey();\n const publicKey = x25519.getPublicKey(secretKey);\n return {\n secretKey: secretKey,\n publicKey: publicKey\n };\n}\n/**\n * Generate private-public x25519 key pair from `seed`.\n */\n\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== 32) {\n throw new Error(`x25519: seed must be ${32} bytes`);\n }\n\n return {\n publicKey: x25519.getPublicKey(seed),\n secretKey: seed\n };\n}\nfunction genX25519EphemeralKeyPair() {\n const epk = generateKeyPair();\n return {\n publicKeyJWK: {\n kty: 'OKP',\n crv: 'X25519',\n x: bytesToBase64url(epk.publicKey)\n },\n secretKey: epk.secretKey\n };\n}\n/**\n * Checks if a variable is defined and not null.\n * After this check, typescript sees the variable as defined.\n *\n * @param arg - The input to be verified\n *\n * @returns true if the input variable is defined.\n */\n\nfunction isDefined(arg) {\n return arg !== null && typeof arg !== 'undefined';\n}\n\nfunction sha256(payload) {\n const data = typeof payload === 'string' ? fromString(payload) : payload;\n return sha256$1(data);\n}\nconst keccak = keccak_256;\nfunction toEthereumAddress(hexPublicKey) {\n const hashInput = fromString(hexPublicKey.slice(2), 'base16');\n return `0x${toString(keccak(hashInput).slice(-20), 'base16')}`;\n}\n\nfunction writeUint32BE(value, array = new Uint8Array(4)) {\n const encoded = fromString(value.toString(), 'base10');\n array.set(encoded, 4 - encoded.length);\n return array;\n}\n\nconst lengthAndInput = input => concat([writeUint32BE(input.length), input]); // This implementation of concatKDF was inspired by these two implementations:\n// https://github.com/digitalbazaar/minimal-cipher/blob/master/algorithms/ecdhkdf.js\n// https://github.com/panva/jose/blob/master/lib/jwa/ecdh/derive.js\n\n\nfunction concatKDF(secret, keyLen, alg, producerInfo, consumerInfo) {\n if (keyLen !== 256) throw new Error(`Unsupported key length: ${keyLen}`);\n const value = concat([lengthAndInput(fromString(alg)), lengthAndInput(typeof producerInfo === 'undefined' ? new Uint8Array(0) : producerInfo), // apu\n lengthAndInput(typeof consumerInfo === 'undefined' ? new Uint8Array(0) : consumerInfo), // apv\n writeUint32BE(keyLen)]); // since our key lenght is 256 we only have to do one round\n\n const roundNumber = 1;\n return sha256(concat([writeUint32BE(roundNumber), secret, value]));\n}\n\n/**\n * Creates a configured signer function for signing data using the ES256K (secp256k1 + sha256) algorithm.\n *\n * The signing function itself takes the data as a `Uint8Array` or `string` and returns a `base64Url`-encoded signature\n *\n * @example\n * ```typescript\n * const sign: Signer = ES256KSigner(process.env.PRIVATE_KEY)\n * const signature: string = await sign(data)\n * ```\n *\n * @param {String} privateKey a private key as `Uint8Array`\n * @param {Boolean} recoverable an optional flag to add the recovery param to the generated signatures\n * @return {Function} a configured signer function `(data: string | Uint8Array): Promise<string>`\n */\n\nfunction ES256KSigner(privateKey, recoverable = false) {\n const privateKeyBytes = privateKey;\n\n if (privateKeyBytes.length !== 32) {\n throw new Error(`bad_key: Invalid private key format. Expecting 32 bytes, but got ${privateKeyBytes.length}`);\n }\n\n return function (data) {\n try {\n const signature = secp256k1.sign(sha256(data), privateKeyBytes);\n return Promise.resolve(toJose({\n r: leftpad(signature.r.toString(16)),\n s: leftpad(signature.s.toString(16)),\n recoveryParam: signature.recovery\n }, recoverable));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\n/**\n * @deprecated Please use ES256KSigner\n * The SimpleSigner returns a configured function for signing data.\n *\n * @example\n * const signer = SimpleSigner(process.env.PRIVATE_KEY)\n * signer(data, (err, signature) => {\n * ...\n * })\n *\n * @param {String} hexPrivateKey a hex encoded private key\n * @return {Function} a configured signer function\n */\n\nfunction SimpleSigner(hexPrivateKey) {\n const signer = ES256KSigner(hexToBytes(hexPrivateKey), true);\n return function (data) {\n try {\n return Promise.resolve(signer(data)).then(fromJose);\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\n/**\n * @deprecated Please use ES256KSigner\n * The EllipticSigner returns a configured function for signing data.\n *\n * @example\n * ```typescript\n * const signer = EllipticSigner(process.env.PRIVATE_KEY)\n * signer(data).then( (signature: string) => {\n * ...\n * })\n * ```\n *\n * @param {String} hexPrivateKey a hex encoded private key\n * @return {Function} a configured signer function\n */\n\nfunction EllipticSigner(hexPrivateKey) {\n return ES256KSigner(hexToBytes(hexPrivateKey));\n}\n\n/**\n * Creates a configured signer function for signing data using the EdDSA (Ed25519) algorithm.\n *\n * The private key is expected to be a `Uint8Array` of 32 bytes, but for compatibility 64 bytes are also acceptable.\n * Users of `@stablelib/ed25519` or `tweetnacl` will be able to use the 64 byte secret keys that library generates.\n * These libraries precompute the public key and append it as the last 32 bytes of the secretKey, to speed up later\n * signing operations.\n *\n * The signing function itself takes the data as a `Uint8Array` or utf8 `string` and returns a `base64Url`-encoded\n * signature\n *\n * @example\n * ```typescript\n * const sign: Signer = EdDSASigner(process.env.PRIVATE_KEY)\n * const signature: string = await sign(data)\n * ```\n *\n * @param {String} secretKey a 32 or 64 byte secret key as `Uint8Array`\n * @return {Function} a configured signer function `(data: string | Uint8Array): Promise<string>`\n */\n\nfunction EdDSASigner(secretKey) {\n const privateKeyBytes = secretKey;\n\n if (![32, 64].includes(privateKeyBytes.length)) {\n throw new Error(`bad_key: Invalid private key format. Expecting 32 or 64 bytes, but got ${privateKeyBytes.length}`);\n }\n\n return function (data) {\n try {\n const dataBytes = typeof data === 'string' ? stringToBytes(data) : data;\n const signature = ed25519.sign(dataBytes, privateKeyBytes.slice(0, 32));\n return Promise.resolve(bytesToBase64url(signature));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\n/**\n * @deprecated Please use EdDSASigner\n *\n * The NaclSigner returns a configured function for signing data using the Ed25519 algorithm.\n *\n * The signing function itself takes the data as a `string` or `Uint8Array` parameter and returns a\n * `base64Url`-encoded signature.\n *\n * @example\n * const signer = NaclSigner(process.env.PRIVATE_KEY)\n * const data: string = '...'\n * signer(data).then( (signature: string) => {\n * ...\n * })\n *\n * @param {String} base64PrivateKey a 64 byte base64 encoded private key\n * @return {Function} a configured signer function\n */\n\nfunction NaclSigner(base64PrivateKey) {\n return EdDSASigner(base64ToBytes(base64PrivateKey));\n}\n\n/**\n * Creates a configured signer function for signing data using the ES256 (secp256r1 + sha256) algorithm.\n *\n * The signing function itself takes the data as a `Uint8Array` or `string` and returns a `base64Url`-encoded signature\n *\n * @example\n * ```typescript\n * const sign: Signer = ES256Signer(process.env.PRIVATE_KEY)\n * const signature: string = await sign(data)\n * ```\n *\n * @param {String} privateKey a private key as `Uint8Array`\n * @return {Function} a configured signer function `(data: string | Uint8Array): Promise<string>`\n */\n\nfunction ES256Signer(privateKey) {\n if (privateKey.length !== 32) {\n throw new Error(`bad_key: Invalid private key format. Expecting 32 bytes, but got ${privateKey.length}`);\n }\n\n return function (data) {\n try {\n const signature = p256.sign(sha256(data), privateKey);\n return Promise.resolve(toJose({\n r: leftpad(signature.r.toString(16)),\n s: leftpad(signature.s.toString(16))\n }));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nfunction instanceOfEcdsaSignature(object) {\n return typeof object === 'object' && 'r' in object && 's' in object;\n}\n\nfunction ES256SignerAlg() {\n return function sign(payload, signer) {\n try {\n return Promise.resolve(signer(payload)).then(function (signature) {\n if (instanceOfEcdsaSignature(signature)) {\n return toJose(signature);\n } else {\n return signature;\n }\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\nfunction ES256KSignerAlg(recoverable) {\n return function sign(payload, signer) {\n try {\n return Promise.resolve(signer(payload)).then(function (signature) {\n if (instanceOfEcdsaSignature(signature)) {\n return toJose(signature, recoverable);\n } else {\n if (recoverable && typeof fromJose(signature).recoveryParam === 'undefined') {\n throw new Error(`not_supported: ES256K-R not supported when signer doesn't provide a recovery param`);\n }\n\n return signature;\n }\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\nfunction Ed25519SignerAlg() {\n return function sign(payload, signer) {\n try {\n return Promise.resolve(signer(payload)).then(function (signature) {\n if (!instanceOfEcdsaSignature(signature)) {\n return signature;\n } else {\n throw new Error('invalid_config: expected a signer function that returns a string instead of signature object');\n }\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\nconst algorithms$1 = {\n ES256: ES256SignerAlg(),\n ES256K: ES256KSignerAlg(),\n // This is a non-standard algorithm but retained for backwards compatibility\n // see https://github.com/decentralized-identity/did-jwt/issues/146\n 'ES256K-R': ES256KSignerAlg(true),\n // This is actually incorrect but retained for backwards compatibility\n // see https://github.com/decentralized-identity/did-jwt/issues/130\n Ed25519: Ed25519SignerAlg(),\n EdDSA: Ed25519SignerAlg()\n};\n\nfunction SignerAlg(alg) {\n const impl = algorithms$1[alg];\n if (!impl) throw new Error(`not_supported: Unsupported algorithm ${alg}`);\n return impl;\n}\n\nfunction publicKeyToAddress$1(publicKey, otherAddress) {\n // Use the same version/prefix byte as the given address.\n const version = bytesToHex(base58ToBytes(otherAddress).slice(0, 1));\n const publicKeyBuffer = hexToBytes(publicKey);\n const publicKeyHash = ripemd160(sha256(publicKeyBuffer));\n const step1 = version + bytesToHex(publicKeyHash);\n const step2 = sha256(hexToBytes(step1));\n const step3 = sha256(step2);\n const checksum = bytesToHex(step3).substring(0, 8);\n const step4 = step1 + checksum;\n return bytesToBase58(hexToBytes(step4));\n}\n\nfunction publicKeyToAddress(publicKey, prefix) {\n const publicKeyBuffer = secp256k1.ProjectivePoint.fromHex(publicKey).toRawBytes();\n const hash = ripemd160(sha256(publicKeyBuffer));\n const words = bech32.toWords(hash);\n return bech32.encode(prefix, words).replace(prefix, '');\n}\n\nfunction verifyBlockchainAccountId(publicKey, blockchainAccountId) {\n if (blockchainAccountId) {\n const chain = blockchainAccountId.split(':');\n\n switch (chain[0]) {\n case 'bip122':\n chain[chain.length - 1] = publicKeyToAddress$1(publicKey, chain[chain.length - 1]);\n break;\n\n case 'cosmos':\n chain[chain.length - 1] = publicKeyToAddress(publicKey, chain[1]);\n break;\n\n case 'eip155':\n chain[chain.length - 1] = toEthereumAddress(publicKey);\n break;\n\n default:\n return false;\n }\n\n return chain.join(':').toLowerCase() === blockchainAccountId.toLowerCase();\n }\n\n return false;\n}\n\nfunction toSignatureObject(signature, recoverable = false) {\n const rawSig = base64ToBytes(signature);\n\n if (rawSig.length !== (recoverable ? 65 : 64)) {\n throw new Error('wrong signature length');\n }\n\n const r = bytesToHex(rawSig.slice(0, 32));\n const s = bytesToHex(rawSig.slice(32, 64));\n const sigObj = {\n r,\n s\n };\n\n if (recoverable) {\n sigObj.recoveryParam = rawSig[64];\n }\n\n return sigObj;\n}\nfunction toSignatureObject2(signature, recoverable = false) {\n const bytes = base64ToBytes(signature);\n\n if (bytes.length !== (recoverable ? 65 : 64)) {\n throw new Error('wrong signature length');\n }\n\n return {\n compact: bytes.slice(0, 64),\n recovery: bytes[64]\n };\n}\nfunction verifyES256(data, signature, authenticators) {\n const hash = sha256(data);\n const sig = p256.Signature.fromCompact(toSignatureObject2(signature).compact);\n const fullPublicKeys = authenticators.filter(a => !a.ethereumAddress && !a.blockchainAccountId);\n const signer = fullPublicKeys.find(pk => {\n try {\n const {\n keyBytes\n } = extractPublicKeyBytes(pk);\n return p256.verify(sig, hash, keyBytes);\n } catch (err) {\n return false;\n }\n });\n if (!signer) throw new Error('invalid_signature: Signature invalid for JWT');\n return signer;\n}\nfunction verifyES256K(data, signature, authenticators) {\n const hash = sha256(data);\n const signatureNormalized = secp256k1.Signature.fromCompact(base64ToBytes(signature)).normalizeS();\n const fullPublicKeys = authenticators.filter(a => {\n return !a.ethereumAddress && !a.blockchainAccountId;\n });\n const blockchainAddressKeys = authenticators.filter(a => {\n return a.ethereumAddress || a.blockchainAccountId;\n });\n let signer = fullPublicKeys.find(pk => {\n try {\n const {\n keyBytes\n } = extractPublicKeyBytes(pk);\n return secp256k1.verify(signatureNormalized, hash, keyBytes);\n } catch (err) {\n return false;\n }\n });\n\n if (!signer && blockchainAddressKeys.length > 0) {\n signer = verifyRecoverableES256K(data, signature, blockchainAddressKeys);\n }\n\n if (!signer) throw new Error('invalid_signature: Signature invalid for JWT');\n return signer;\n}\nfunction verifyRecoverableES256K(data, signature, authenticators) {\n const signatures = [];\n\n if (signature.length > 86) {\n signatures.push(toSignatureObject2(signature, true));\n } else {\n const so = toSignatureObject2(signature, false);\n signatures.push({ ...so,\n recovery: 0\n });\n signatures.push({ ...so,\n recovery: 1\n });\n }\n\n const hash = sha256(data);\n\n const checkSignatureAgainstSigner = sigObj => {\n const signature = secp256k1.Signature.fromCompact(sigObj.compact).addRecoveryBit(sigObj.recovery || 0);\n const recoveredPublicKey = signature.recoverPublicKey(hash);\n const recoveredAddress = toEthereumAddress(recoveredPublicKey.toHex(false)).toLowerCase();\n const recoveredPublicKeyHex = recoveredPublicKey.toHex(false);\n const recoveredCompressedPublicKeyHex = recoveredPublicKey.toHex(true);\n return authenticators.find(a => {\n const {\n keyBytes\n } = extractPublicKeyBytes(a);\n const keyHex = bytesToHex(keyBytes);\n return keyHex === recoveredPublicKeyHex || keyHex === recoveredCompressedPublicKeyHex || a.ethereumAddress?.toLowerCase() === recoveredAddress || a.blockchainAccountId?.split('@eip155')?.[0].toLowerCase() === recoveredAddress || // CAIP-2\n verifyBlockchainAccountId(recoveredPublicKeyHex, a.blockchainAccountId) // CAIP-10\n ;\n });\n }; // Find first verification method\n\n\n for (const signature of signatures) {\n const verificationMethod = checkSignatureAgainstSigner(signature);\n if (verificationMethod) return verificationMethod;\n } // If no one found matching\n\n\n throw new Error('invalid_signature: Signature invalid for JWT');\n}\nfunction verifyEd25519(data, signature, authenticators) {\n const clear = stringToBytes(data);\n const signatureBytes = base64ToBytes(signature);\n const signer = authenticators.find(a => {\n const {\n keyBytes,\n keyType\n } = extractPublicKeyBytes(a);\n\n if (keyType === 'Ed25519') {\n return ed25519.verify(signatureBytes, clear, keyBytes);\n } else {\n return false;\n }\n });\n if (!signer) throw new Error('invalid_signature: Signature invalid for JWT');\n return signer;\n}\nconst algorithms = {\n ES256: verifyES256,\n ES256K: verifyES256K,\n // This is a non-standard algorithm but retained for backwards compatibility\n // see https://github.com/decentralized-identity/did-jwt/issues/146\n 'ES256K-R': verifyRecoverableES256K,\n // This is actually incorrect but retained for backwards compatibility\n // see https://github.com/decentralized-identity/did-jwt/issues/130\n Ed25519: verifyEd25519,\n EdDSA: verifyEd25519\n};\n\nfunction VerifierAlgorithm(alg) {\n const impl = algorithms[alg];\n if (!impl) throw new Error(`not_supported: Unsupported algorithm ${alg}`);\n return impl;\n}\n\nVerifierAlgorithm.toSignatureObject = toSignatureObject;\n\n/**\n * Error prefixes used for known verification failure cases.\n *\n * For compatibility, these error prefixes match the existing error messages, but will be adjusted in a future major\n * version update to match the scenarios better.\n *\n * @beta\n */\nconst JWT_ERROR = {\n /**\n * Thrown when a JWT payload schema is unexpected or when validity period does not match\n */\n INVALID_JWT: 'invalid_jwt',\n\n /**\n * Thrown when the verifier audience does not match the one set in the JWT payload\n */\n INVALID_AUDIENCE: 'invalid_config',\n\n /**\n * Thrown when none of the public keys of the issuer match the signature of the JWT.\n *\n * This is equivalent to `NO_SUITABLE_KEYS` when the `proofPurpose` is NOT specified.\n */\n INVALID_SIGNATURE: 'invalid_signature',\n\n /**\n * Thrown when the DID document of the issuer does not have any keys that match the signature for the given\n * `proofPurpose`.\n *\n * This is equivalent to `invalid_signature`, when a `proofPurpose` is specified.\n */\n NO_SUITABLE_KEYS: 'no_suitable_keys',\n\n /**\n * Thrown when the `alg` of the JWT or the encoding of the key is not supported\n */\n NOT_SUPPORTED: 'not_supported',\n\n /**\n * Thrown when the DID resolver is unable to resolve the issuer DID.\n */\n RESOLVER_ERROR: 'resolver_error'\n};\n\nfunction _catch$1(body, recover) {\n try {\n var result = body();\n } catch (e) {\n return recover(e);\n }\n\n if (result && result.then) {\n return result.then(void 0, recover);\n }\n\n return result;\n}\n\nconst verifyConditionDelegated = function (jwt, {\n header,\n payload,\n data,\n signature\n}, authenticator, options) {\n try {\n if (!authenticator.conditionDelegated) {\n throw new Error('Expected conditionDelegated');\n }\n\n if (!options.resolver) {\n throw new Error('Expected resolver');\n }\n\n let foundSigner;\n const issuer = authenticator.conditionDelegated;\n return Promise.resolve(resolveAuthenticator(options.resolver, header.alg, issuer, options.proofPurpose)).then(function (didAuthenticator) {\n let _exit2;\n\n function _temp6(_result4) {\n if (_exit2) ;\n\n if (foundSigner) {\n return authenticator;\n }\n\n throw new Error(`${JWT_ERROR.INVALID_SIGNATURE}: condition for authenticator ${authenticator.id} is not met.`);\n }\n\n const didResolutionResult = didAuthenticator.didResolutionResult;\n\n if (!didResolutionResult?.didDocument) {\n throw new Error(`${JWT_ERROR.RESOLVER_ERROR}: Could not resolve delegated DID ${issuer}.`);\n }\n\n const delegatedAuthenticator = didAuthenticator.authenticators.find(authenticator => authenticator.id === issuer);\n\n if (!delegatedAuthenticator) {\n throw new Error(`${JWT_ERROR.NO_SUITABLE_KEYS}: Could not find delegated authenticator ${issuer} in it's DID Document`);\n }\n\n const _temp5 = function () {\n if (delegatedAuthenticator.type === CONDITIONAL_PROOF_2022) {\n return Promise.resolve(verifyJWT(jwt, { ...options,\n ...{\n didAuthenticator: {\n didResolutionResult,\n authenticators: [delegatedAuthenticator],\n issuer: delegatedAuthenticator.id\n }\n }\n })).then(function ({\n verified\n }) {\n if (verified) {\n foundSigner = delegatedAuthenticator;\n }\n });\n } else {\n try {\n foundSigner = verifyJWTDecoded({\n header,\n payload,\n data,\n signature\n }, delegatedAuthenticator);\n } catch (e) {\n if (!e.message.startsWith('invalid_signature:')) throw e;\n }\n }\n }();\n\n return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\nconst _iteratorSymbol$1 = typeof Symbol !== \"undefined\" ? Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\")) : \"@@iterator\";\n\nfunction _settle$2(pact, state, value) {\n if (!pact.s) {\n if (value instanceof _Pact$2) {\n if (value.s) {\n if (state & 1) {\n state = value.s;\n }\n\n value = value.v;\n } else {\n value.o = _settle$2.bind(null, pact, state);\n return;\n }\n }\n\n if (value && value.then) {\n value.then(_settle$2.bind(null, pact, state), _settle$2.bind(null, pact, 2));\n return;\n }\n\n pact.s = state;\n pact.v = value;\n const observer = pact.o;\n\n if (observer) {\n observer(pact);\n }\n }\n}\n\nconst _Pact$2 = /*#__PURE__*/function () {\n function _Pact() {}\n\n _Pact.prototype.then = function (onFulfilled, onRejected) {\n const result = new _Pact();\n const state = this.s;\n\n if (state) {\n const callback = state & 1 ? onFulfilled : onRejected;\n\n if (callback) {\n try {\n _settle$2(result, 1, callback(this.v));\n } catch (e) {\n _settle$2(result, 2, e);\n }\n\n return result;\n } else {\n return this;\n }\n }\n\n this.o = function (_this) {\n try {\n const value = _this.v;\n\n if (_this.s & 1) {\n _settle$2(result, 1, onFulfilled ? onFulfilled(value) : value);\n } else if (onRejected) {\n _settle$2(result, 1, onRejected(value));\n } else {\n _settle$2(result, 2, value);\n }\n } catch (e) {\n _settle$2(result, 2, e);\n }\n };\n\n return result;\n };\n\n return _Pact;\n}();\n\nfunction _isSettledPact$2(thenable) {\n return thenable instanceof _Pact$2 && thenable.s & 1;\n}\n\nfunction _forTo$2(array, body, check) {\n var i = -1,\n pact,\n reject;\n\n function _cycle(result) {\n try {\n while (++i < array.length && (!check || !check())) {\n result = body(i);\n\n if (result && result.then) {\n if (_isSettledPact$2(result)) {\n result = result.v;\n } else {\n result.then(_cycle, reject || (reject = _settle$2.bind(null, pact = new _Pact$2(), 2)));\n return;\n }\n }\n }\n\n if (pact) {\n _settle$2(pact, 1, result);\n } else {\n pact = result;\n }\n } catch (e) {\n _settle$2(pact || (pact = new _Pact$2()), 2, e);\n }\n }\n\n _cycle();\n\n return pact;\n}\n\nconst verifyConditionWeightedThreshold = function (jwt, {\n header,\n payload,\n data,\n signature\n}, authenticator, options) {\n try {\n let _exit;\n\n function _temp4(_result3) {\n if (_exit) return _result3;\n throw new Error(`${JWT_ERROR.INVALID_SIGNATURE}: condition for authenticator ${authenticator.id} is not met.`);\n }\n\n if (!authenticator.conditionWeightedThreshold || !authenticator.threshold) {\n throw new Error('Expected conditionWeightedThreshold and threshold');\n }\n\n const issuers = [];\n const threshold = authenticator.threshold;\n let weightCount = 0;\n\n const _temp3 = _forOf$1(authenticator.conditionWeightedThreshold, function (weightedCondition) {\n function _temp2(_result2) {\n if (_exit) return _result2;\n\n if (foundSigner && !issuers.includes(foundSigner.id)) {\n issuers.push(foundSigner.id);\n weightCount += weightedCondition.weight;\n\n if (weightCount >= threshold) {\n _exit = 1;\n return authenticator;\n }\n }\n }\n\n const currentCondition = weightedCondition.condition;\n let foundSigner;\n\n const _temp = _catch$1(function () {\n if (currentCondition.type === CONDITIONAL_PROOF_2022) {\n if (!options.didAuthenticator) {\n throw new Error('Expected didAuthenticator');\n }\n\n const newOptions = { ...options,\n didAuthenticator: {\n didResolutionResult: options.didAuthenticator?.didResolutionResult,\n authenticators: [currentCondition],\n issuer: currentCondition.id\n }\n };\n return Promise.resolve(verifyJWT(jwt, newOptions)).then(function ({\n verified\n }) {\n if (verified) {\n foundSigner = currentCondition;\n }\n });\n } else {\n return Promise.resolve(verifyJWTDecoded({\n header,\n payload,\n data,\n signature\n }, currentCondition)).then(function (_verifyJWTDecoded) {\n foundSigner = _verifyJWTDecoded;\n });\n }\n }, function (e) {\n if (!e.message.startsWith(JWT_ERROR.INVALID_SIGNATURE)) throw e;\n });\n\n return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);\n }, function () {\n return _exit;\n });\n\n return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\nfunction _forOf$1(target, body, check) {\n if (typeof target[_iteratorSymbol$1] === \"function\") {\n var iterator = target[_iteratorSymbol$1](),\n step,\n pact,\n reject;\n\n function _cycle(result) {\n try {\n while (!(step = iterator.next()).done && (!check || !check())) {\n result = body(step.value);\n\n if (result && result.then) {\n if (_isSettledPact$2(result)) {\n result = result.v;\n } else {\n result.then(_cycle, reject || (reject = _settle$2.bind(null, pact = new _Pact$2(), 2)));\n return;\n }\n }\n }\n\n if (pact) {\n _settle$2(pact, 1, result);\n } else {\n pact = result;\n }\n } catch (e) {\n _settle$2(pact || (pact = new _Pact$2()), 2, e);\n }\n }\n\n _cycle();\n\n if (iterator.return) {\n var _fixup = function (value) {\n try {\n if (!step.done) {\n iterator.return();\n }\n } catch (e) {}\n\n return value;\n };\n\n if (pact && pact.then) {\n return pact.then(_fixup, function (e) {\n throw _fixup(e);\n });\n }\n\n _fixup();\n }\n\n return pact;\n } // No support for Symbol.iterator\n\n\n if (!(\"length\" in target)) {\n throw new TypeError(\"Object is not iterable\");\n } // Handle live collections properly\n\n\n var values = [];\n\n for (var i = 0; i < target.length; i++) {\n values.push(target[i]);\n }\n\n return _forTo$2(values, function (i) {\n return body(values[i]);\n }, check);\n}\n\nconst verifyConditionalProof = function (jwt, {\n header,\n payload,\n signature,\n data\n}, authenticator, options) {\n try {\n // Validate the condition according to its condition property\n if (authenticator.conditionWeightedThreshold) {\n return verifyConditionWeightedThreshold(jwt, {\n header,\n payload,\n data,\n signature\n }, authenticator, options);\n } else if (authenticator.conditionDelegated) {\n return verifyConditionDelegated(jwt, {\n header,\n payload,\n data,\n signature\n }, authenticator, options);\n } // TODO other conditions\n\n\n throw new Error(`${JWT_ERROR.INVALID_JWT}: conditional proof type did not find condition for authenticator ${authenticator.id}.`);\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst verifyProof = function (jwt, {\n header,\n payload,\n signature,\n data\n}, authenticator, options) {\n try {\n if (authenticator.type === CONDITIONAL_PROOF_2022) {\n return verifyConditionalProof(jwt, {\n payload,\n header,\n signature,\n data\n }, authenticator, options);\n } else {\n return Promise.resolve(verifyJWTDecoded({\n header,\n payload,\n data,\n signature\n }, [authenticator]));\n }\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst CONDITIONAL_PROOF_2022 = 'ConditionalProof2022';\n\n/**\n * Resolves relevant public keys or other authenticating material used to verify signature from the DID document of\n * provided DID\n *\n * @example\n * ```ts\n * resolveAuthenticator(resolver, 'ES256K', 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX').then(obj => {\n * const payload = obj.payload\n * const profile = obj.profile\n * const jwt = obj.jwt\n * // ...\n * })\n * ```\n *\n * @param resolver - {Resolvable} a DID resolver function that can obtain the `DIDDocument` for the `issuer`\n * @param alg - {String} a JWT algorithm\n * @param issuer - {String} a Decentralized Identifier (DID) to lookup\n * @param proofPurpose - {ProofPurposeTypes} *Optional* Use the verificationMethod linked in that section of the\n * issuer DID document\n * @return {Promise<DIDAuthenticator>} a promise which resolves with an object containing an array of authenticators\n * or rejects with an error if none exist\n */\nfunction _settle$1(pact, state, value) {\n if (!pact.s) {\n if (value instanceof _Pact$1) {\n if (value.s) {\n if (state & 1) {\n state = value.s;\n }\n\n value = value.v;\n } else {\n value.o = _settle$1.bind(null, pact, state);\n return;\n }\n }\n\n if (value && value.then) {\n value.then(_settle$1.bind(null, pact, state), _settle$1.bind(null, pact, 2));\n return;\n }\n\n pact.s = state;\n pact.v = value;\n const observer = pact.o;\n\n if (observer) {\n observer(pact);\n }\n }\n}\n\nconst _Pact$1 = /*#__PURE__*/function () {\n function _Pact() {}\n\n _Pact.prototype.then = function (onFulfilled, onRejected) {\n const result = new _Pact();\n const state = this.s;\n\n if (state) {\n const callback = state & 1 ? onFulfilled : onRejected;\n\n if (callback) {\n try {\n _settle$1(result, 1, callback(this.v));\n } catch (e) {\n _settle$1(result, 2, e);\n }\n\n return result;\n } else {\n return this;\n }\n }\n\n this.o = function (_this) {\n try {\n const value = _this.v;\n\n if (_this.s & 1) {\n _settle$1(result, 1, onFulfilled ? onFulfilled(value) : value);\n } else if (onRejected) {\n _settle$1(result, 1, onRejected(value));\n } else {\n _settle$1(result, 2, value);\n }\n } catch (e) {\n _settle$1(result, 2, e);\n }\n };\n\n return result;\n };\n\n return _Pact;\n}();\n\nfunction _isSettledPact$1(thenable) {\n return thenable instanceof _Pact$1 && thenable.s & 1;\n}\n\nfunction _forTo$1(array, body, check) {\n var i = -1,\n pact,\n reject;\n\n function _cycle(result) {\n try {\n while (++i < array.length && (!check || !check())) {\n result = body(i);\n\n if (result && result.then) {\n if (_isSettledPact$1(result)) {\n result = result.v;\n } else {\n result.then(_cycle, reject || (reject = _settle$1.bind(null, pact = new _Pact$1(), 2)));\n return;\n }\n }\n }\n\n if (pact) {\n _settle$1(pact, 1, result);\n } else {\n pact = result;\n }\n } catch (e) {\n _settle$1(pact || (pact = new _Pact$1()), 2, e);\n }\n }\n\n _cycle();\n\n return pact;\n}\n\nfunction _catch(body, recover) {\n try {\n var result = body();\n } catch (e) {\n return recover(e);\n }\n\n if (result && result.then) {\n return result.then(void 0, recover);\n }\n\n return result;\n}\n\nfunction _for$1(test, update, body) {\n var stage;\n\n for (;;) {\n var shouldContinue = test();\n\n if (_isSettledPact$1(shouldContinue)) {\n shouldContinue = shouldContinue.v;\n }\n\n if (!shouldContinue) {\n return result;\n }\n\n if (shouldContinue.then) {\n stage = 0;\n break;\n }\n\n var result = body();\n\n if (result && result.then) {\n if (_isSettledPact$1(result)) {\n result = result.s;\n } else {\n stage = 1;\n break;\n }\n }\n\n if (update) {\n var updateValue = update();\n\n if (updateValue && updateValue.then && !_isSettledPact$1(updateValue)) {\n stage = 2;\n break;\n }\n }\n }\n\n var pact = new _Pact$1();\n\n var reject = _settle$1.bind(null, pact, 2);\n\n (stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n return pact;\n\n function _resumeAfterBody(value) {\n result = value;\n\n do {\n if (update) {\n updateValue = update();\n\n if (updateValue && updateValue.then && !_isSettledPact$1(updateValue)) {\n updateValue.then(_resumeAfterUpdate).then(void 0, reject);\n return;\n }\n }\n\n shouldContinue = test();\n\n if (!shouldContinue || _isSettledPact$1(shouldContinue) && !shouldContinue.v) {\n _settle$1(pact, 1, result);\n\n return;\n }\n\n if (shouldContinue.then) {\n shouldContinue.then(_resumeAfterTest).then(void 0, reject);\n return;\n }\n\n result = body();\n\n if (_isSettledPact$1(result)) {\n result = result.v;\n }\n } while (!result || !result.then);\n\n result.then(_resumeAfterBody).then(void 0, reject);\n }\n\n function _resumeAfterTest(shouldContinue) {\n if (shouldContinue) {\n result = body();\n\n if (result && result.then) {\n result.then(_resumeAfterBody).then(void 0, reject);\n } else {\n _resumeAfterBody(result);\n }\n } else {\n _settle$1(pact, 1, result);\n }\n }\n\n function _resumeAfterUpdate() {\n if (shouldContinue = test()) {\n if (shouldContinue.then) {\n shouldContinue.then(_resumeAfterTest).then(void 0, reject);\n } else {\n _resumeAfterTest(shouldContinue);\n }\n } else {\n _settle$1(pact, 1, result);\n }\n }\n}\n\nconst resolveAuthenticator = function (resolver, alg, issuer, proofPurpose) {\n try {\n const types = SUPPORTED_PUBLIC_KEY_TYPES[alg];\n\n if (!types || types.length === 0) {\n throw new Error(`${JWT_ERROR.NOT_SUPPORTED}: No supported signature types for algorithm ${alg}`);\n }\n\n let didResult;\n return Promise.resolve(resolver.resolve(issuer, {\n accept: DID_JSON\n })).then(function (result) {\n // support legacy resolvers that do not produce DIDResolutionResult\n if (Object.getOwnPropertyNames(result).indexOf('didDocument') === -1) {\n didResult = {\n didDocument: result,\n didDocumentMetadata: {},\n didResolutionMetadata: {\n contentType: DID_JSON\n }\n };\n } else {\n didResult = result;\n }\n\n if (didResult.didResolutionMetadata?.error || didResult.didDocument == null) {\n const {\n error,\n message\n } = didResult.didResolutionMetadata;\n throw new Error(`${JWT_ERROR.RESOLVER_ERROR}: Unable to resolve DID document for ${issuer}: ${error}, ${message || ''}`);\n }\n\n const getPublicKeyById = (verificationMethods, pubid) => {\n const filtered = verificationMethods.filter(({\n id\n }) => pubid === id);\n return filtered.length > 0 ? filtered[0] : null;\n };\n\n let publicKeysToCheck = [...(didResult?.didDocument?.verificationMethod || []), ...(didResult?.didDocument?.publicKey || [])];\n\n if (typeof proofPurpose === 'string') {\n // support legacy DID Documents that do not list assertionMethod\n if (proofPurpose.startsWith('assertion') && !Object.getOwnPropertyNames(didResult?.didDocument).includes('assertionMethod')) {\n didResult.didDocument = { ...didResult.didDocument\n };\n didResult.didDocument.assertionMethod = [...publicKeysToCheck.map(pk => pk.id)];\n }\n\n publicKeysToCheck = (didResult.didDocument[proofPurpose] || []).map(verificationMethod => {\n if (typeof verificationMethod === 'string') {\n return getPublicKeyById(publicKeysToCheck, verificationMethod);\n } else if (typeof verificationMethod.publicKey === 'string') {\n // this is a legacy format\n return getPublicKeyById(publicKeysToCheck, verificationMethod.publicKey);\n } else {\n return verificationMethod;\n }\n }).filter(key => key != null);\n }\n\n const authenticators = publicKeysToCheck.filter(({\n type\n }) => types.find(supported => supported === type));\n\n if (typeof proofPurpose === 'string' && (!authenticators || authenticators.length === 0)) {\n throw new Error(`${JWT_ERROR.NO_SUITABLE_KEYS}: DID document for ${issuer} does not have public keys suitable for ${alg} with ${proofPurpose} purpose`);\n }\n\n if (!authenticators || authenticators.length === 0) {\n throw new Error(`${JWT_ERROR.NO_SUITABLE_KEYS}: DID document for ${issuer} does not have public keys for ${alg}`);\n }\n\n return {\n authenticators,\n issuer,\n didResolutionResult: didResult\n };\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n/**\n * Verifies given JWT. If the JWT is valid, the promise returns an object including the JWT, the payload of the JWT,\n * and the DID document of the issuer of the JWT.\n *\n * @example\n * ```ts\n * verifyJWT(\n * 'did:uport:eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJyZXF1Z....',\n * {audience: '5A8bRWU3F7j3REx3vkJ...', callbackUrl: 'https://...'}\n * ).then(obj => {\n * const did = obj.did // DID of signer\n * const payload = obj.payload\n * const doc = obj.didResolutionResult.didDocument // DID Document of issuer\n * const jwt = obj.jwt\n * const signerKeyId = obj.signer.id // ID of key in DID document that signed JWT\n * ...\n * })\n * ```\n *\n * @param {String} jwt a JSON Web Token to verify\n * @param {Object} [options] an unsigned credential object\n * @param {Boolean} options.auth Require signer to be listed in the authentication section of the\n * DID document (for Authentication purposes)\n * @param {String} options.audience DID of the recipient of the JWT\n * @param {String} options.callbackUrl callback url in JWT\n * @return {Promise<Object, Error>} a promise which resolves with a response object or rejects with an\n * error\n */\nconst verifyJWT = function (jwt, options = {\n resolver: undefined,\n auth: undefined,\n audience: undefined,\n callbackUrl: undefined,\n skewTime: undefined,\n proofPurpose: undefined,\n policies: {},\n didAuthenticator: undefined\n}) {\n try {\n function _temp7() {\n let _exit;\n\n function _temp5(_result) {\n if (_exit) ;\n\n if (signer) {\n const now = typeof options.policies?.now === 'number' ? options.policies.now : Math.floor(Date.now() / 1000);\n const skewTime = typeof options.skewTime !== 'undefined' && options.skewTime >= 0 ? options.skewTime : NBF_SKEW;\n const nowSkewed = now + skewTime;\n\n if (options.policies?.nbf !== false && payload.nbf) {\n if (payload.nbf > nowSkewed) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT not valid before nbf: ${payload.nbf}`);\n }\n } else if (options.policies?.iat !== false && payload.iat && payload.iat > nowSkewed) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT not valid yet (issued in the future) iat: ${payload.iat}`);\n }\n\n if (options.policies?.exp !== false && payload.exp && payload.exp <= now - skewTime) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT has expired: exp: ${payload.exp} < now: ${now}`);\n }\n\n if (options.policies?.aud !== false && payload.aud) {\n if (!options.audience && !options.callbackUrl) {\n throw new Error(`${JWT_ERROR.INVALID_AUDIENCE}: JWT audience is required but your app address has not been configured`);\n }\n\n const audArray = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n const matchedAudience = audArray.find(item => options.audience === item || options.callbackUrl === item);\n\n if (typeof matchedAudience === 'undefined') {\n throw new Error(`${JWT_ERROR.INVALID_AUDIENCE}: JWT audience does not match your DID or callback url`);\n }\n }\n\n return {\n verified: true,\n payload,\n didResolutionResult,\n issuer,\n signer,\n jwt,\n policies: options.policies\n };\n }\n\n throw new Error(`${JWT_ERROR.INVALID_SIGNATURE}: JWT not valid. issuer DID document does not contain a verificationMethod that matches the signature.`);\n }\n\n const {\n did\n } = parse(didUrl);\n let signer = null;\n\n const _temp4 = function () {\n if (did !== didUrl) {\n const authenticator = authenticators.find(auth => auth.id === didUrl);\n\n if (!authenticator) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: No authenticator found for did URL ${didUrl}`);\n }\n\n return Promise.resolve(verifyProof(jwt, {\n payload,\n header,\n signature,\n data\n }, authenticator, options)).then(function (_verifyProof) {\n signer = _verifyProof;\n });\n } else {\n let i = 0;\n return _for$1(function () {\n return !_exit && !signer && i < authenticators.length;\n }, void 0, function () {\n function _temp3(_result2) {\n if (_exit) ;\n i++;\n }\n\n const authenticator = authenticators[i];\n\n const _temp2 = _catch(function () {\n return Promise.resolve(verifyProof(jwt, {\n payload,\n header,\n signature,\n data\n }, authenticator, options)).then(function (_verifyProof2) {\n signer = _verifyProof2;\n });\n }, function (e) {\n if (!e.message.includes(JWT_ERROR.INVALID_SIGNATURE) || i === authenticators.length - 1) throw e;\n });\n\n return _temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2);\n });\n }\n }();\n\n return _temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4);\n }\n\n if (!options.resolver) throw new Error('missing_resolver: No DID resolver has been configured');\n const {\n payload,\n header,\n signature,\n data\n } = decodeJWT(jwt, false);\n const proofPurpose = Object.prototype.hasOwnProperty.call(options, 'auth') ? options.auth ? 'authentication' : undefined : options.proofPurpose;\n let didUrl;\n\n if (!payload.iss && !payload.client_id) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT iss or client_id are required`);\n }\n\n if (options.didAuthenticator) {\n didUrl = options.didAuthenticator.issuer;\n } else if (payload.iss === SELF_ISSUED_V2 || payload.iss === SELF_ISSUED_V2_VC_INTEROP) {\n if (!payload.sub) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT sub is required`);\n }\n\n if (typeof payload.sub_jwk === 'undefined') {\n didUrl = payload.sub;\n } else {\n didUrl = (header.kid || '').split('#')[0];\n }\n } else if (payload.iss === SELF_ISSUED_V0_1) {\n if (!payload.did) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT did is required`);\n }\n\n didUrl = payload.did;\n } else if (!payload.iss && payload.scope === 'openid' && payload.redirect_uri) {\n // SIOP Request payload\n // https://identity.foundation/jwt-vc-presentation-profile/#self-issued-op-request-object\n if (!payload.client_id) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT client_id is required`);\n }\n\n didUrl = payload.client_id;\n } else {\n didUrl = payload.iss;\n }\n\n if (!didUrl) {\n throw new Error(`${JWT_ERROR.INVALID_JWT}: No DID has been found in the JWT`);\n }\n\n let authenticators;\n let issuer;\n let didResolutionResult;\n\n const _temp6 = function () {\n if (options.didAuthenticator) {\n ({\n didResolutionResult,\n authenticators,\n issuer\n } = options.didAuthenticator);\n } else {\n return Promise.resolve(resolveAuthenticator(options.resolver, header.alg, didUrl, proofPurpose)).then(function (_resolveAuthenticator) {\n ({\n didResolutionResult,\n authenticators,\n issuer\n } = _resolveAuthenticator);\n // Add to options object for recursive reference\n options.didAuthenticator = {\n didResolutionResult,\n authenticators,\n issuer\n };\n });\n }\n }();\n\n return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n/**\n * Creates a multi-signature signed JWT given multiple issuers and their corresponding signers, and a payload for\n * which the signature is over.\n *\n * @example\n * const signer = ES256KSigner(process.env.PRIVATE_KEY)\n * createJWT({address: '5A8bRWU3F7j3REx3vkJ...', signer}, {key1: 'value', key2: ..., ... }).then(jwt => {\n * ...\n * })\n *\n * @param {Object} payload payload object\n * @param {Object} [options] an unsigned credential object\n * @param {boolean} options.expiresIn optional flag to denote the expiration time\n * @param {boolean} options.canonicalize optional flag to canonicalize header and payload before signing\n * @param {Object[]} issuers array of the issuers, their signers and algorithms\n * @param {string} issuers[].issuer The DID of the issuer (signer) of JWT\n * @param {Signer} issuers[].signer a `Signer` function, Please see `ES256KSigner` or `EdDSASigner`\n * @param {String} issuers[].alg [DEPRECATED] The JWT signing algorithm to use. Supports:\n * [ES256K, ES256K-R, Ed25519, EdDSA], Defaults to: ES256K. Please use `header.alg` to specify the algorithm\n * @return {Promise<Object, Error>} a promise which resolves with a signed JSON Web Token or\n * rejects with an error\n */\nconst createMultisignatureJWT = function (payload, {\n expiresIn,\n canonicalize\n}, issuers) {\n try {\n if (issuers.length === 0) throw new Error('invalid_argument: must provide one or more issuers');\n let payloadResult = payload;\n let jwt = '';\n\n const _temp = _forTo$1(issuers, function (i) {\n const issuer = issuers[i];\n const header = {\n typ: 'JWT',\n alg: issuer.alg\n }; // Create nested JWT\n // See Point 5 of https://www.rfc-editor.org/rfc/rfc7519#section-7.1\n // After the first JWT is created (the first JWS), the next JWT is created by inputting the previous JWT as the\n // payload\n\n if (i !== 0) {\n header.cty = 'JWT';\n }\n\n return Promise.resolve(createJWT(payloadResult, { ...issuer,\n canonicalize,\n expiresIn\n }, header)).then(function (_createJWT) {\n jwt = _createJWT;\n payloadResult = {\n jwt\n };\n });\n });\n\n return Promise.resolve(_temp && _temp.then ? _temp.then(function () {\n return jwt;\n }) : jwt);\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n/**\n * Creates a signed JWT given an address which becomes the issuer, a signer, and a payload for which the signature is\n * over.\n *\n * @example\n * const signer = ES256KSigner(process.env.PRIVATE_KEY)\n * createJWT({address: '5A8bRWU3F7j3REx3vkJ...', signer}, {key1: 'value', key2: ..., ... }).then(jwt => {\n * ...\n * })\n *\n * @param {Object} payload payload object\n * @param {Object} [options] an unsigned credential object\n * @param {String} options.issuer The DID of the issuer (signer) of JWT\n * @param {String} options.alg [DEPRECATED] The JWT signing algorithm to use. Supports:\n * [ES256K, ES256K-R, Ed25519, EdDSA], Defaults to: ES256K. Please use `header.alg` to specify the algorithm\n * @param {Signer} options.signer a `Signer` function, Please see `ES256KSigner` or `EdDSASigner`\n * @param {boolean} options.canonicalize optional flag to canonicalize header and payload before signing\n * @param {Object} header optional object to specify or customize the JWT header\n * @return {Promise<Object, Error>} a promise which resolves with a signed JSON Web Token or\n * rejects with an error\n */\nconst createJWT = function (payload, {\n issuer,\n signer,\n alg,\n expiresIn,\n canonicalize\n}, header = {}) {\n try {\n if (!signer) throw new Error('missing_signer: No Signer functionality has been configured');\n if (!issuer) throw new Error('missing_issuer: No issuing DID has been configured');\n if (!header.typ) header.typ = 'JWT';\n if (!header.alg) header.alg = alg;\n const timestamps = {\n iat: Math.floor(Date.now() / 1000),\n exp: undefined\n };\n\n if (expiresIn) {\n if (typeof expiresIn === 'number') {\n timestamps.exp = (payload.nbf || timestamps.iat) + Math.floor(expiresIn);\n } else {\n throw new Error('invalid_argument: JWT expiresIn is not a number');\n }\n }\n\n const fullPayload = { ...timestamps,\n ...payload,\n iss: issuer\n };\n return createJWS(fullPayload, signer, header, {\n canonicalize\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n/**\n * Creates a signed JWS given a payload, a signer, and an optional header.\n *\n * @example\n * const signer = ES256KSigner(process.env.PRIVATE_KEY)\n * const jws = await createJWS({ my: 'payload' }, signer)\n *\n * @param {Object} payload payload object\n * @param {Signer} signer a signer, see `ES256KSigner or `EdDSASigner`\n * @param {Object} header optional object to specify or customize the JWS header\n * @param {Object} options can be used to trigger automatic canonicalization of header and\n * payload properties\n * @return {Promise<string>} a Promise which resolves to a JWS string or rejects with an error\n */\nconst createJWS = function (payload, signer, header = {}, options = {}) {\n try {\n if (!header.alg) header.alg = defaultAlg;\n const encodedPayload = typeof payload === 'string' ? payload : encodeSection(payload, options.canonicalize);\n const signingInput = [encodeSection(header, options.canonicalize), encodedPayload].join('.');\n const jwtSigner = SignerAlg(header.alg);\n return Promise.resolve(jwtSigner(signingInput, signer)).then(function (signature) {\n // JWS Compact Serialization\n // https://www.rfc-editor.org/rfc/rfc7515#section-7.1\n return [signingInput, signature].join('.');\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst SELF_ISSUED_V2 = 'https://self-issued.me/v2';\nconst SELF_ISSUED_V2_VC_INTEROP = 'https://self-issued.me/v2/openid-vc'; // https://identity.foundation/jwt-vc-presentation-profile/#id-token-validation\n\nconst SELF_ISSUED_V0_1 = 'https://self-issued.me';\nconst defaultAlg = 'ES256K';\nconst DID_JSON = 'application/did+json'; // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\nfunction encodeSection(data, shouldCanonicalize = false) {\n if (shouldCanonicalize) {\n return encodeBase64url(canonicalizeData(data));\n } else {\n return encodeBase64url(JSON.stringify(data));\n }\n}\n\nconst NBF_SKEW = 300;\n\nfunction decodeJWS(jws) {\n const parts = jws.match(/^([a-zA-Z0-9_-]+)\\.([a-zA-Z0-9_-]+)\\.([a-zA-Z0-9_-]+)$/);\n\n if (parts) {\n return {\n header: JSON.parse(decodeBase64url(parts[1])),\n payload: parts[2],\n signature: parts[3],\n data: `${parts[1]}.${parts[2]}`\n };\n }\n\n throw new Error('invalid_argument: Incorrect format JWS');\n}\n/**\n * Decodes a JWT and returns an object representing the payload\n *\n * @example\n * decodeJWT('eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJpYXQiOjE1...')\n *\n * @param {String} jwt a JSON Web Token to verify\n * @param {Object} [recurse] whether to recurse into the payload to decode any nested JWTs\n * @return {Object} a JS object representing the decoded JWT\n */\n\n\nfunction decodeJWT(jwt, recurse = true) {\n if (!jwt) throw new Error('invalid_argument: no JWT passed into decodeJWT');\n\n try {\n const jws = decodeJWS(jwt);\n const decodedJwt = Object.assign(jws, {\n payload: JSON.parse(decodeBase64url(jws.payload))\n });\n const iss = decodedJwt.payload.iss;\n\n if (decodedJwt.header.cty === 'JWT' && recurse) {\n const innerDecodedJwt = decodeJWT(decodedJwt.payload.jwt);\n if (innerDecodedJwt.payload.iss !== iss) throw new Error(`${JWT_ERROR.INVALID_JWT}: multiple issuers`);\n return innerDecodedJwt;\n }\n\n return decodedJwt;\n } catch (e) {\n throw new Error(`invalid_argument: ${JWT_ERROR.INVALID_JWT}: ${e}`);\n }\n}\nfunction verifyJWTDecoded({\n header,\n payload,\n data,\n signature\n}, pubKeys) {\n if (!Array.isArray(pubKeys)) pubKeys = [pubKeys];\n const iss = payload.iss;\n let recurse = true;\n\n do {\n if (iss !== payload.iss) throw new Error(`${JWT_ERROR.INVALID_JWT}: multiple issuers`);\n\n try {\n const result = VerifierAlgorithm(header.alg)(data, signature, pubKeys);\n return result;\n } catch (e) {\n if (!e.message.startsWith(JWT_ERROR.INVALID_SIGNATURE)) throw e;\n } // TODO probably best to create copy objects than replace reference objects\n\n\n if (header.cty !== 'JWT') {\n recurse = false;\n } else {\n ({\n payload,\n header,\n signature,\n data\n } = decodeJWT(payload.jwt, false));\n }\n } while (recurse);\n\n throw new Error(`${JWT_ERROR.INVALID_SIGNATURE}: no matching public key found`);\n}\nfunction verifyJWSDecoded({\n header,\n data,\n signature\n}, pubKeys) {\n if (!Array.isArray(pubKeys)) pubKeys = [pubKeys];\n const signer = VerifierAlgorithm(header.alg)(data, signature, pubKeys);\n return signer;\n}\n/**\n * Verifies given JWS. If the JWS is valid, returns the public key that was\n * used to sign the JWS, or throws an `Error` if none of the `pubKeys` match.\n *\n * @example\n * const pubKey = verifyJWS('eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJyZXF1Z....', { publicKeyHex: '0x12341...' })\n *\n * @param {String} jws A JWS string to verify\n * @param {Array<VerificationMethod> | VerificationMethod} pubKeys The public keys used to verify the JWS\n * @return {VerificationMethod} The public key used to sign the JWS\n */\n\nfunction verifyJWS(jws, pubKeys) {\n const jwsDecoded = decodeJWS(jws);\n return verifyJWSDecoded(jwsDecoded, pubKeys);\n}\n\nconst _iteratorSymbol = typeof Symbol !== \"undefined\" ? Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\")) : \"@@iterator\";\n\nfunction _settle(pact, state, value) {\n if (!pact.s) {\n if (value instanceof _Pact) {\n if (value.s) {\n if (state & 1) {\n state = value.s;\n }\n\n value = value.v;\n } else {\n value.o = _settle.bind(null, pact, state);\n return;\n }\n }\n\n if (value && value.then) {\n value.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n return;\n }\n\n pact.s = state;\n pact.v = value;\n const observer = pact.o;\n\n if (observer) {\n observer(pact);\n }\n }\n}\n\nconst _Pact = /*#__PURE__*/function () {\n function _Pact() {}\n\n _Pact.prototype.then = function (onFulfilled, onRejected) {\n const result = new _Pact();\n const state = this.s;\n\n if (state) {\n const callback = state & 1 ? onFulfilled : onRejected;\n\n if (callback) {\n try {\n _settle(result, 1, callback(this.v));\n } catch (e) {\n _settle(result, 2, e);\n }\n\n return result;\n } else {\n return this;\n }\n }\n\n this.o = function (_this) {\n try {\n const value = _this.v;\n\n if (_this.s & 1) {\n _settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n } else if (onRejected) {\n _settle(result, 1, onRejected(value));\n } else {\n _settle(result, 2, value);\n }\n } catch (e) {\n _settle(result, 2, e);\n }\n };\n\n return result;\n };\n\n return _Pact;\n}();\n\nfunction _isSettledPact(thenable) {\n return thenable instanceof _Pact && thenable.s & 1;\n}\n\nfunction _forTo(array, body, check) {\n var i = -1,\n pact,\n reject;\n\n function _cycle(result) {\n try {\n while (++i < array.length && (!check || !check())) {\n result = body(i);\n\n if (result && result.then) {\n if (_isSettledPact(result)) {\n result = result.v;\n } else {\n result.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n return;\n }\n }\n }\n\n if (pact) {\n _settle(pact, 1, result);\n } else {\n pact = result;\n }\n } catch (e) {\n _settle(pact || (pact = new _Pact()), 2, e);\n }\n }\n\n _cycle();\n\n return pact;\n}\n\nfunction _forOf(target, body, check) {\n if (typeof target[_iteratorSymbol] === \"function\") {\n var iterator = target[_iteratorSymbol](),\n step,\n pact,\n reject;\n\n function _cycle(result) {\n try {\n while (!(step = iterator.next()).done && (!check || !check())) {\n result = body(step.value);\n\n if (result && result.then) {\n if (_isSettledPact(result)) {\n result = result.v;\n } else {\n result.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n return;\n }\n }\n }\n\n if (pact) {\n _settle(pact, 1, result);\n } else {\n pact = result;\n }\n } catch (e) {\n _settle(pact || (pact = new _Pact()), 2, e);\n }\n }\n\n _cycle();\n\n if (iterator.return) {\n var _fixup = function (value) {\n try {\n if (!step.done) {\n iterator.return();\n }\n } catch (e) {}\n\n return value;\n };\n\n if (pact && pact.then) {\n return pact.then(_fixup, function (e) {\n throw _fixup(e);\n });\n }\n\n _fixup();\n }\n\n return pact;\n } // No support for Symbol.iterator\n\n\n if (!(\"length\" in target)) {\n throw new TypeError(\"Object is not iterable\");\n } // Handle live collections properly\n\n\n var values = [];\n\n for (var i = 0; i < target.length; i++) {\n values.push(target[i]);\n }\n\n return _forTo(values, function (i) {\n return body(values[i]);\n }, check);\n}\n\nfunction _for(test, update, body) {\n var stage;\n\n for (;;) {\n var shouldContinue = test();\n\n if (_isSettledPact(shouldContinue)) {\n shouldContinue = shouldContinue.v;\n }\n\n if (!shouldContinue) {\n return result;\n }\n\n if (shouldContinue.then) {\n stage = 0;\n break;\n }\n\n var result = body();\n\n if (result && result.then) {\n if (_isSettledPact(result)) {\n result = result.s;\n } else {\n stage = 1;\n break;\n }\n }\n\n if (update) {\n var updateValue = update();\n\n if (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n stage = 2;\n break;\n }\n }\n }\n\n var pact = new _Pact();\n\n var reject = _settle.bind(null, pact, 2);\n\n (stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n return pact;\n\n function _resumeAfterBody(value) {\n result = value;\n\n do {\n if (update) {\n updateValue = update();\n\n if (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n updateValue.then(_resumeAfterUpdate).then(void 0, reject);\n return;\n }\n }\n\n shouldContinue = test();\n\n if (!shouldContinue || _isSettledPact(shouldContinue) && !shouldContinue.v) {\n _settle(pact, 1, result);\n\n return;\n }\n\n if (shouldContinue.then) {\n shouldContinue.then(_resumeAfterTest).then(void 0, reject);\n return;\n }\n\n result = body();\n\n if (_isSettledPact(result)) {\n result = result.v;\n }\n } while (!result || !result.then);\n\n result.then(_resumeAfterBody).then(void 0, reject);\n }\n\n function _resumeAfterTest(shouldContinue) {\n if (shouldContinue) {\n result = body();\n\n if (result && result.then) {\n result.then(_resumeAfterBody).then(void 0, reject);\n } else {\n _resumeAfterBody(result);\n }\n } else {\n _settle(pact, 1, result);\n }\n }\n\n function _resumeAfterUpdate() {\n if (shouldContinue = test()) {\n if (shouldContinue.then) {\n shouldContinue.then(_resumeAfterTest).then(void 0, reject);\n } else {\n _resumeAfterTest(shouldContinue);\n }\n } else {\n _settle(pact, 1, result);\n }\n }\n}\n\nfunction validateJWE(jwe) {\n if (!(jwe.protected && jwe.iv && jwe.ciphertext && jwe.tag)) {\n throw new Error('bad_jwe: missing properties');\n }\n\n if (jwe.recipients) {\n jwe.recipients.map(rec => {\n if (!(rec.header && rec.encrypted_key)) {\n throw new Error('bad_jwe: malformed recipients');\n }\n });\n }\n}\n\nfunction encodeJWE({\n ciphertext,\n tag,\n iv,\n protectedHeader,\n recipient\n}, aad) {\n const jwe = {\n protected: protectedHeader,\n iv: bytesToBase64url(iv ?? new Uint8Array(0)),\n ciphertext: bytesToBase64url(ciphertext),\n tag: bytesToBase64url(tag ?? new Uint8Array(0))\n };\n if (aad) jwe.aad = bytesToBase64url(aad);\n if (recipient) jwe.recipients = [recipient];\n return jwe;\n}\n\nconst decryptJWE = function (jwe, decrypter) {\n try {\n let _exit;\n\n function _temp5(_result) {\n if (_exit) ;\n if (cleartext === null) throw new Error('failure: Failed to decrypt');\n return cleartext;\n }\n\n validateJWE(jwe);\n const protHeader = JSON.parse(decodeBase64url(jwe.protected));\n if (protHeader.enc !== decrypter.enc) throw new Error(`not_supported: Decrypter does not supported: '${protHeader.enc}'`);\n const sealed = toSealed(jwe.ciphertext, jwe.tag);\n const aad = stringToBytes(jwe.aad ? `${jwe.protected}.${jwe.aad}` : jwe.protected);\n let cleartext = null;\n\n const _temp4 = function () {\n if (protHeader.alg === 'dir' && decrypter.alg === 'dir') {\n return Promise.resolve(decrypter.decrypt(sealed, base64ToBytes(jwe.iv), aad)).then(function (_decrypter$decrypt) {\n cleartext = _decrypter$decrypt;\n });\n } else return function () {\n if (!jwe.recipients || jwe.recipients.length === 0) {\n throw new Error('bad_jwe: missing recipients');\n } else {\n let i = 0;\n return _for(function () {\n return !cleartext && i < jwe.recipients.length;\n }, function () {\n return i++;\n }, function () {\n const recipient = jwe.recipients[i];\n Object.assign(recipient.header, protHeader);\n\n const _temp3 = function () {\n if (recipient.header.alg === decrypter.alg) {\n return Promise.resolve(decrypter.decrypt(sealed, base64ToBytes(jwe.iv), aad, recipient)).then(function (_decrypter$decrypt2) {\n cleartext = _decrypter$decrypt2;\n });\n }\n }();\n\n if (_temp3 && _temp3.then) return _temp3.then(function () {});\n });\n }\n }();\n }();\n\n return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst createJWE = function (cleartext, encrypters, protectedHeader = {}, aad, useSingleEphemeralKey = false) {\n try {\n if (encrypters[0].alg === 'dir') {\n if (encrypters.length > 1) throw new Error('not_supported: Can only do \"dir\" encryption to one key.');\n return Promise.resolve(encrypters[0].encrypt(cleartext, protectedHeader, aad)).then(function (encryptionResult) {\n return encodeJWE(encryptionResult, aad);\n });\n } else {\n const tmpEnc = encrypters[0].enc;\n\n if (!encrypters.reduce((acc, encrypter) => acc && encrypter.enc === tmpEnc, true)) {\n throw new Error('invalid_argument: Incompatible encrypters passed');\n }\n\n let cek;\n let jwe;\n let epk;\n\n if (useSingleEphemeralKey) {\n epk = encrypters[0].genEpk?.();\n const alg = encrypters[0].alg;\n protectedHeader = { ...protectedHeader,\n alg,\n epk: epk?.publicKeyJWK\n };\n }\n\n const _temp2 = _forOf(encrypters, function (encrypter) {\n const _temp = function () {\n if (!cek) {\n return Promise.resolve(encrypter.encrypt(cleartext, protectedHeader, aad, epk)).then(function (encryptionResult) {\n cek = encryptionResult.cek;\n jwe = encodeJWE(encryptionResult, aad);\n });\n } else {\n return Promise.resolve(encrypter.encryptCek?.(cek, epk)).then(function (recipient) {\n if (recipient) {\n jwe?.recipients?.push(recipient);\n }\n });\n }\n }();\n\n if (_temp && _temp.then) return _temp.then(function () {});\n });\n\n return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {\n return jwe;\n }) : jwe);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\nfunction xc20pEncrypter(key) {\n return (cleartext, aad) => {\n const iv = randomBytes(24);\n const cipher = xchacha20poly1305(key, iv, aad);\n const sealed = cipher.encrypt(cleartext);\n return {\n ciphertext: sealed.subarray(0, sealed.length - 16),\n tag: sealed.subarray(sealed.length - 16),\n iv\n };\n };\n}\nfunction xc20pDirEncrypter(key) {\n const encrypt = function (cleartext, protectedHeader = {}, aad) {\n try {\n const protHeader = encodeBase64url(JSON.stringify(Object.assign({\n alg\n }, protectedHeader, {\n enc\n })));\n const encodedAad = stringToBytes(aad ? `${protHeader}.${bytesToBase64url(aad)}` : protHeader);\n return Promise.resolve({ ...xc20pEncrypt(cleartext, encodedAad),\n protectedHeader: protHeader\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n const xc20pEncrypt = xc20pEncrypter(key);\n const enc = 'XC20P';\n const alg = 'dir';\n return {\n alg,\n enc,\n encrypt\n };\n}\nfunction xc20pDirDecrypter(key) {\n const decrypt = function (sealed, iv, aad) {\n try {\n try {\n return Promise.resolve(xchacha20poly1305(key, iv, aad).decrypt(sealed));\n } catch (error) {\n return Promise.resolve(null);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n return {\n alg: 'dir',\n enc: 'XC20P',\n decrypt\n };\n}\n\nconst createX25519EcdhEsKek = function (recipientPublicKey, senderSecret, // unused\nalg, apu, // unused\napv, ephemeralKeyPair) {\n try {\n const crv = 'X25519';\n const keyLen = 256;\n const ephemeral = ephemeralKeyPair ? generateKeyPairFromSeed(ephemeralKeyPair.secretKey) : generateKeyPair();\n const epk = {\n kty: 'OKP',\n crv,\n x: bytesToBase64url(ephemeral.publicKey)\n };\n const sharedSecret = x25519.getSharedSecret(ephemeral.secretKey, recipientPublicKey); // Key Encryption Key\n\n const consumerInfo = base64ToBytes(apv ?? '');\n const kek = concatKDF(sharedSecret, keyLen, alg, undefined, consumerInfo);\n return Promise.resolve({\n epk,\n kek\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst computeX25519EcdhEsKek = function (recipient, receiverSecret, alg) {\n try {\n function _temp2() {\n // Key Encryption Key\n let producerInfo = undefined;\n let consumerInfo = undefined;\n if (recipient.header.apu) producerInfo = base64ToBytes(recipient.header.apu);\n if (recipient.header.apv) consumerInfo = base64ToBytes(recipient.header.apv);\n return concatKDF(sharedSecret, keyLen, alg, producerInfo, consumerInfo);\n }\n\n const crv = 'X25519';\n const keyLen = 256;\n const header = recipient.header;\n if (header.epk?.crv !== crv || typeof header.epk.x == 'undefined') return Promise.resolve(null);\n const publicKey = base64ToBytes(header.epk.x);\n let sharedSecret;\n\n const _temp = function () {\n if (receiverSecret instanceof Uint8Array) {\n sharedSecret = x25519.getSharedSecret(receiverSecret, publicKey);\n } else {\n return Promise.resolve(receiverSecret(publicKey)).then(function (_receiverSecret) {\n sharedSecret = _receiverSecret;\n });\n }\n }();\n\n return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\nconst createX25519Ecdh1PUv3Kek = function (recipientPublicKey, senderSecret, alg, // must be provided as this is the key agreement alg + the key wrapper alg, Example: 'ECDH-ES+A256KW'\napu, apv, ephemeralKeyPair) {\n try {\n function _temp4() {\n const sharedSecret = new Uint8Array(zE.length + zS.length);\n sharedSecret.set(zE);\n sharedSecret.set(zS, zE.length);\n let partyUInfo = new Uint8Array(0);\n let partyVInfo = new Uint8Array(0);\n if (apu) partyUInfo = base64ToBytes(apu);\n if (apv) partyVInfo = base64ToBytes(apv); // Key Encryption Key\n\n const kek = concatKDF(sharedSecret, keyLen, alg, partyUInfo, partyVInfo);\n return {\n epk,\n kek\n };\n }\n\n const crv = 'X25519';\n const keyLen = 256;\n const ephemeral = ephemeralKeyPair ? generateKeyPairFromSeed(ephemeralKeyPair.secretKey) : generateKeyPair();\n const epk = {\n kty: 'OKP',\n crv,\n x: bytesToBase64url(ephemeral.publicKey)\n };\n const zE = x25519.getSharedSecret(ephemeral.secretKey, recipientPublicKey); // ECDH-1PU requires additional shared secret between\n // static key of sender and static key of recipient\n\n let zS;\n\n const _temp3 = function () {\n if (senderSecret instanceof Uint8Array) {\n zS = x25519.getSharedSecret(senderSecret, recipientPublicKey);\n } else {\n return Promise.resolve(senderSecret(recipientPublicKey)).then(function (_senderSecret) {\n zS = _senderSecret;\n });\n }\n }();\n\n return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));\n } catch (e) {\n return Promise.reject(e);\n }\n};\nconst computeX25519Ecdh1PUv3Kek = function (recipient, recipientSecret, senderPublicKey, alg) {\n try {\n function _temp2() {\n const sharedSecret = new Uint8Array(zE.length + zS.length);\n sharedSecret.set(zE);\n sharedSecret.set(zS, zE.length); // Key Encryption Key\n\n let producerInfo;\n let consumerInfo;\n if (recipient.header.apu) producerInfo = base64ToBytes(recipient.header.apu);\n if (recipient.header.apv) consumerInfo = base64ToBytes(recipient.header.apv);\n return concatKDF(sharedSecret, keyLen, alg, producerInfo, consumerInfo);\n }\n\n const crv = 'X25519';\n const keyLen = 256;\n const header = recipient.header;\n if (header.epk?.crv !== crv || typeof header.epk.x == 'undefined') return Promise.resolve(null); // ECDH-1PU requires additional shared secret between\n // static key of sender and static key of recipient\n\n const publicKey = base64ToBytes(header.epk.x);\n let zE;\n let zS;\n\n const _temp = function () {\n if (recipientSecret instanceof Uint8Array) {\n zE = x25519.getSharedSecret(recipientSecret, publicKey);\n zS = x25519.getSharedSecret(recipientSecret, senderPublicKey);\n } else {\n return Promise.resolve(recipientSecret(publicKey)).then(function (_recipientSecret) {\n zE = _recipientSecret;\n return Promise.resolve(recipientSecret(senderPublicKey)).then(function (_recipientSecret2) {\n zS = _recipientSecret2;\n });\n });\n }\n }();\n\n return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n/**\n * Wraps an X25519 secret key into an ECDH method that can be used to compute a shared secret with a public key.\n * @param mySecretKey A `Uint8Array` of length 32 representing the bytes of my secret key\n * @returns an `ECDH` method with the signature `(theirPublicKey: Uint8Array) => Promise<Uint8Array>`\n *\n * @throws 'invalid_argument:...' if the secret key size is wrong\n */\n\nfunction createX25519ECDH(mySecretKey) {\n if (mySecretKey.length !== 32) {\n throw new Error('invalid_argument: incorrect secret key length for X25519');\n }\n\n return function (theirPublicKey) {\n try {\n if (theirPublicKey.length !== 32) {\n throw new Error('invalid_argument: incorrect publicKey key length for X25519');\n }\n\n return Promise.resolve(x25519.getSharedSecret(mySecretKey, theirPublicKey));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nfunction createFullEncrypter(recipientPublicKey, senderSecret, options = {}, kekCreator, keyWrapper, contentEncrypter) {\n const encrypt = function (cleartext, protectedHeader = {}, aad, ephemeralKeyPair) {\n try {\n // we won't want alg to be set to dir from xc20pDirEncrypter\n Object.assign(protectedHeader, {\n alg: undefined\n }); // Content Encryption Key\n\n const cek = randomBytes(32);\n return Promise.resolve(encryptCek(cek, ephemeralKeyPair)).then(function (recipient) {\n // getting an ephemeral key means the epk is set only once per all recipients\n if (ephemeralKeyPair) {\n protectedHeader.alg = `${kekCreator.alg}+${keyWrapper.alg}`;\n protectedHeader.epk = ephemeralKeyPair.publicKeyJWK;\n }\n\n return Promise.resolve(contentEncrypter.from(cek).encrypt(cleartext, protectedHeader, aad)).then(function (_contentEncrypter$fro) {\n return { ..._contentEncrypter$fro,\n recipient,\n cek\n };\n });\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n const encryptCek = function (cek, ephemeralKeyPair) {\n try {\n return Promise.resolve(kekCreator.createKek(recipientPublicKey, senderSecret, `${kekCreator.alg}+${keyWrapper.alg}`, options.apu, options.apv, ephemeralKeyPair)).then(function ({\n epk,\n kek\n }) {\n return Promise.resolve(keyWrapper.from(kek).wrap(cek)).then(function (res) {\n const recipient = {\n encrypted_key: bytesToBase64url(res.ciphertext),\n header: {}\n };\n if (res.iv) recipient.header.iv = bytesToBase64url(res.iv);\n if (res.tag) recipient.header.tag = bytesToBase64url(res.tag);\n if (options.kid) recipient.header.kid = options.kid;\n if (options.apu) recipient.header.apu = options.apu;\n if (options.apv) recipient.header.apv = options.apv;\n\n if (!ephemeralKeyPair) {\n recipient.header.alg = `${kekCreator.alg}+${keyWrapper.alg}`;\n recipient.header.epk = epk;\n }\n\n return recipient;\n });\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n return {\n alg: keyWrapper.alg,\n enc: contentEncrypter.enc,\n encrypt,\n encryptCek,\n genEpk: genX25519EphemeralKeyPair\n };\n}\n\n/**\n * @deprecated Use\n * {@link xc20pAuthEncrypterEcdh1PuV3x25519WithXc20PkwV2 | xc20pAuthEncrypterEcdh1PuV3x25519WithXc20PkwV2() } instead\n */\n\nconst resolveX25519Encrypters = function (dids, resolver) {\n try {\n const encryptersForDID = function (did, resolved = []) {\n try {\n return Promise.resolve(resolver.resolve(did)).then(function ({\n didResolutionMetadata,\n didDocument\n }) {\n function _temp2() {\n const agreementKeys = didDocument.keyAgreement?.map(key => {\n if (typeof key === 'string') {\n return [...(didDocument.publicKey || []), ...(didDocument.verificationMethod || [])].find(pk => pk.id === key);\n }\n\n return key;\n })?.filter(key => typeof key !== 'undefined');\n const pks = agreementKeys?.filter(key => ['X25519KeyAgreementKey2019', 'X25519KeyAgreementKey2020', 'JsonWebKey2020', 'Multikey'].includes(key.type)) ?? [];\n if (!pks.length && !controllerEncrypters.length) throw new Error(`no_suitable_keys: Could not find X25519 key for ${did}`);\n return pks.map(pk => {\n const {\n keyBytes,\n keyType\n } = extractPublicKeyBytes(pk);\n\n if (keyType === 'X25519') {\n return x25519Encrypter(keyBytes, pk.id);\n } else {\n return null;\n }\n }).filter(isDefined).concat(...controllerEncrypters);\n }\n\n resolved.push(did);\n\n if (didResolutionMetadata?.error || didDocument == null) {\n throw new Error(`resolver_error: Could not resolve ${did}: ${didResolutionMetadata.error}, ${didResolutionMetadata.message}`);\n }\n\n let controllerEncrypters = [];\n\n if (!didDocument.controller && !didDocument.keyAgreement) {\n throw new Error(`no_suitable_keys: Could not find x25519 key for ${did}`);\n }\n\n const _temp = function () {\n if (didDocument.controller) {\n let controllers = Array.isArray(didDocument.controller) ? didDocument.controller : [didDocument.controller];\n controllers = controllers.filter(c => !resolved.includes(c));\n const encrypterPromises = controllers.map(did => encryptersForDID(did, resolved).catch(() => {\n return [];\n }));\n return Promise.resolve(Promise.all(encrypterPromises)).then(function (encrypterArrays) {\n controllerEncrypters = [].concat(...encrypterArrays);\n });\n }\n }();\n\n return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n const encrypterPromises = dids.map(did => encryptersForDID(did));\n return Promise.resolve(Promise.all(encrypterPromises)).then(function (encrypterArrays) {\n return [].concat(...encrypterArrays);\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n/**\n * @deprecated Use {@link xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2 | xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2() }\n * instead\n */\n\nfunction createAuthEncrypter(recipientPublicKey, senderSecret, options = {}) {\n return xc20pAuthEncrypterEcdh1PuV3x25519WithXc20PkwV2(recipientPublicKey, senderSecret, options);\n}\n/**\n * @deprecated Use {@link xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2 | xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2() }\n * instead\n */\n\nfunction createAnonEncrypter(publicKey, options = {}) {\n return xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2(publicKey, options);\n}\n/**\n * @deprecated Use\n * {@link xc20pAuthDecrypterEcdh1PuV3x25519WithXc20PkwV2 | xc20pAuthDecrypterEcdh1PuV3x25519WithXc20PkwV2() } instead\n */\n\nfunction createAuthDecrypter(recipientSecret, senderPublicKey) {\n return xc20pAuthDecrypterEcdh1PuV3x25519WithXc20PkwV2(recipientSecret, senderPublicKey);\n}\n/**\n * @deprecated Use {@link xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2 | xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2() }\n * instead\n */\n\nfunction createAnonDecrypter(recipientSecret) {\n return xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2(recipientSecret);\n}\nfunction validateHeader(header) {\n if (!(header && header.epk && header.iv && header.tag)) {\n throw new Error('bad_jwe: malformed header');\n }\n\n return header;\n}\nconst xc20pKeyWrapper = {\n from: wrappingKey => {\n const wrap = function (cek) {\n try {\n return Promise.resolve(xc20pEncrypter(wrappingKey)(cek));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n return {\n wrap\n };\n },\n alg: 'XC20PKW'\n};\n/**\n * @deprecated Use {@link xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2 | xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2() }\n * instead\n */\n\nfunction x25519Encrypter(publicKey, kid, apv) {\n return xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2(publicKey, {\n kid,\n apv\n });\n}\n/**\n * Recommended encrypter for anonymous encryption (i.e. no sender authentication).\n * Uses {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | ECDH-ES+XC20PKW v2}.\n *\n * @param recipientPublicKey - the byte array representing the recipient public key\n * @param options - {@link AnonEncryptParams} used to specify the recipient key ID (`kid`)\n *\n * @returns an {@link Encrypter} instance usable with {@link createJWE}\n *\n * NOTE: ECDH-ES+XC20PKW is a proposed draft in IETF and not a standard yet and\n * is subject to change as new revisions or until the official CFRG specification is released.\n */\n\nfunction xc20pAnonEncrypterEcdhESx25519WithXc20PkwV2(recipientPublicKey, options = {}) {\n return createFullEncrypter(recipientPublicKey, undefined, options, {\n createKek: createX25519EcdhEsKek,\n alg: 'ECDH-ES'\n }, xc20pKeyWrapper, {\n from: cek => xc20pDirEncrypter(cek),\n enc: 'XC20P'\n });\n}\n/**\n * Recommended encrypter for authenticated encryption (i.e. sender authentication and requires\n * sender private key to encrypt the data).\n * Uses {@link https://tools.ietf.org/html/draft-madden-jose-ecdh-1pu-03 | ECDH-1PU v3 } and\n * {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | XC20PKW v2 }.\n *\n * @param recipientPublicKey - the byte array representing the recipient public key\n * @param senderSecret - either a Uint8Array representing the sender secret key or\n * an ECDH function that wraps the key and can promise a shared secret given a public key\n * @param options - {@link AuthEncryptParams} used to specify extra header parameters\n *\n * @returns an {@link Encrypter} instance usable with {@link createJWE}\n *\n * NOTE: ECDH-1PU and XC20PKW are proposed drafts in IETF and not a standard yet and\n * are subject to change as new revisions or until the official CFRG specification are released.\n *\n * Implements ECDH-1PU+XC20PKW with XChaCha20Poly1305 based on the following specs:\n * - {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | XC20PKW}\n * - {@link https://tools.ietf.org/html/draft-madden-jose-ecdh-1pu-03 | ECDH-1PU}\n */\n\nfunction xc20pAuthEncrypterEcdh1PuV3x25519WithXc20PkwV2(recipientPublicKey, senderSecret, options = {}) {\n return createFullEncrypter(recipientPublicKey, senderSecret, options, {\n createKek: createX25519Ecdh1PUv3Kek,\n alg: 'ECDH-1PU'\n }, xc20pKeyWrapper, {\n from: cek => xc20pDirEncrypter(cek),\n enc: 'XC20P'\n });\n}\nfunction x25519Decrypter(receiverSecret) {\n return xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2(receiverSecret);\n}\n/**\n * Recommended decrypter for anonymous encryption (i.e. no sender authentication).\n * Uses {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | ECDH-ES+XC20PKW v2 }.\n *\n * @param recipientSecret - either a Uint8Array representing the recipient secret key or\n * an ECDH function that wraps the key and can promise a shared secret given a public key\n *\n * @returns a {@link Decrypter} instance usable with {@link decryptJWE}\n *\n * NOTE: ECDH-ES+XC20PKW is a proposed draft in IETF and not a standard yet and\n * is subject to change as new revisions or until the official CFRG specification is released.\n *\n * @beta\n */\n\nfunction xc20pAnonDecrypterEcdhESx25519WithXc20PkwV2(recipientSecret) {\n const decrypt = function (sealed, iv, aad, recipient) {\n try {\n recipient = recipient;\n const header = validateHeader(recipient.header);\n return Promise.resolve(computeX25519EcdhEsKek(recipient, recipientSecret, alg)).then(function (kek) {\n if (!kek) return null; // Content Encryption Key\n\n const sealedCek = toSealed(recipient.encrypted_key, header.tag);\n return Promise.resolve(xc20pDirDecrypter(kek).decrypt(sealedCek, base64ToBytes(header.iv))).then(function (cek) {\n return cek === null ? null : xc20pDirDecrypter(cek).decrypt(sealed, iv, aad);\n });\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n const alg = 'ECDH-ES+XC20PKW';\n const enc = 'XC20P';\n return {\n alg,\n enc,\n decrypt\n };\n}\n/**\n * Recommended decrypter for authenticated encryption (i.e. sender authentication and requires\n * sender public key to decrypt the data).\n * Uses {@link https://tools.ietf.org/html/draft-madden-jose-ecdh-1pu-03 | ECDH-1PU v3 } and\n * {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | XC20PKW v2 }.\n *\n * @param recipientSecret - either a Uint8Array representing the recipient secret key or\n * an ECDH function that wraps the key and can promise a shared secret given a public key\n * @param senderPublicKey - the byte array representing the sender public key\n *\n * @returns a {@link Decrypter} instance usable with {@link decryptJWE}\n *\n * NOTE: ECDH-1PU and XC20PKW are proposed drafts in IETF and not a standard yet and\n * are subject to change as new revisions or until the official CFRG specification are released.\n *\n * @beta\n *\n * Implements ECDH-1PU+XC20PKW with XChaCha20Poly1305 based on the following specs:\n * - {@link https://tools.ietf.org/html/draft-amringer-jose-chacha-02 | XC20PKW}\n * - {@link https://tools.ietf.org/html/draft-madden-jose-ecdh-1pu-03 | ECDH-1PU}\n */\n\nfunction xc20pAuthDecrypterEcdh1PuV3x25519WithXc20PkwV2(recipientSecret, senderPublicKey) {\n const decrypt = function (sealed, iv, aad, recipient) {\n try {\n recipient = recipient;\n const header = validateHeader(recipient.header);\n return Promise.resolve(computeX25519Ecdh1PUv3Kek(recipient, recipientSecret, senderPublicKey, alg)).then(function (kek) {\n if (!kek) return null; // Content Encryption Key\n\n const sealedCek = toSealed(recipient.encrypted_key, header.tag);\n return Promise.resolve(xc20pDirDecrypter(kek).decrypt(sealedCek, base64ToBytes(header.iv))).then(function (cek) {\n return cek === null ? null : xc20pDirDecrypter(cek).decrypt(sealed, iv, aad);\n });\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n const alg = 'ECDH-1PU+XC20PKW';\n const enc = 'XC20P';\n return {\n alg,\n enc,\n decrypt\n };\n}\n\nexport { ES256KSigner, ES256Signer, EdDSASigner, EllipticSigner, JWT_ERROR, NaclSigner, SimpleSigner, base58ToBytes, base64ToBytes, bytesToBase58, bytesToBase64url, bytesToHex, bytesToMultibase, computeX25519Ecdh1PUv3Kek, computeX25519EcdhEsKek, concatKDF, createAnonDecrypter, createAnonEncrypter, createAuthDecrypter, createAuthEncrypter, createFullEncrypter, createJWE, createJWS, createJWT, createMultisignatureJWT, createX25519ECDH, createX25519Ecdh1PUv3Kek, createX25519EcdhEsKek, decodeJWT, decryptJWE, extractPublicKeyBytes, genX25519EphemeralKeyPair, hexToBytes, multibaseToBytes, resolveX25519Encrypters, supportedCodecs, toEthereumAddress, verifyJWS, verifyJWT, x25519Decrypter, x25519Encrypter, xc20pAuthDecrypterEcdh1PuV3x25519WithXc20PkwV2, xc20pAuthEncrypterEcdh1PuV3x25519WithXc20PkwV2, xc20pDirDecrypter, xc20pDirEncrypter };\n//# sourceMappingURL=index.module.js.map\n","import { decodeJWT, JWT_ERROR, verifyJWT, createJWT, createMultisignatureJWT } from 'did-jwt';\n\nconst JWT_ALG = 'ES256K';\nconst JWT_FORMAT = /^[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.?[A-Za-z0-9-_.+/=]*$/;\nconst DEFAULT_CONTEXT = 'https://www.w3.org/2018/credentials/v1';\nconst DEFAULT_VC_TYPE = 'VerifiableCredential';\nconst DEFAULT_VP_TYPE = 'VerifiablePresentation';\n/**\n * The `JwtProof2020` is a synthetic proof type, usable for differentiating credentials by proof type when representing\n * JWT credentials as W3C VC JSON. It is not a registered W3C VC Data Model algorithm and should not be treated as\n * such.\n *\n * This proof type is only intended as a convenience and does not actually prove the validity of a VC/VP in JSON\n * representation. The actual verifiable credential or presentation is represented in the `jwt` property.\n */\nconst DEFAULT_JWT_PROOF_TYPE = 'JwtProof2020';\n\n/**\n * Additional W3C VC fields:\n * These are defined as optional top-level properties in the W3C spec but are not mapped to top-level JWT names,\n * so they should be moved inside the \"vc\" object when transforming to a JWT.\n * Conversely, they should be moved out of the \"vc\" object when transforming from a JWT to W3C JSON.\n */\nconst additionalPropNames = ['evidence', 'termsOfUse', 'refreshService', 'credentialSchema', 'credentialStatus'];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction asArray(arg) {\n return Array.isArray(arg) ? arg : [arg];\n}\nfunction deepCopy(source) {\n return Array.isArray(source) ? source.map(item => deepCopy(item)) : source instanceof Date ? new Date(source.getTime()) : source && typeof source === 'object' ? Object.getOwnPropertyNames(source).reduce((o, prop) => {\n Object.defineProperty(o, prop, Object.getOwnPropertyDescriptor(source, prop));\n o[prop] = deepCopy(source[prop]);\n return o;\n }, Object.create(Object.getPrototypeOf(source))) : source;\n}\nfunction notEmpty(value) {\n return value !== null && value !== undefined;\n}\nfunction cleanUndefined(input) {\n if (typeof input !== 'object' || input === null) {\n return input;\n }\n const obj = {\n ...input\n };\n Object.keys(obj).forEach(key => obj[key] === undefined && delete obj[key]);\n return obj;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isLegacyAttestationFormat(payload) {\n // payload is an object and has all the required fields of old attestation format\n return typeof payload === 'object' && payload.sub && payload.iss && payload.claim && payload.iat;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction attestationToVcFormat(payload) {\n const {\n iat,\n nbf,\n claim,\n vc,\n ...rest\n } = payload;\n const result = {\n ...rest,\n nbf: nbf ? nbf : iat,\n vc: {\n '@context': [DEFAULT_CONTEXT],\n type: [DEFAULT_VC_TYPE],\n credentialSubject: claim\n }\n };\n if (vc) payload.issVc = vc;\n return result;\n}\nfunction normalizeJwtCredentialPayload(input, removeOriginalFields = true) {\n let result = deepCopy(input);\n if (isLegacyAttestationFormat(input)) {\n result = attestationToVcFormat(input);\n }\n // FIXME: handle case when credentialSubject(s) are not object types\n result.credentialSubject = {\n ...input.credentialSubject,\n ...input.vc?.credentialSubject\n };\n if (input.sub && !input.credentialSubject?.id && result.credentialSubject) {\n result.credentialSubject.id = input.sub;\n if (removeOriginalFields) {\n delete result.sub;\n }\n }\n if (removeOriginalFields) {\n delete result.vc?.credentialSubject;\n }\n if (typeof input.issuer === 'undefined' || typeof input.issuer === 'object') {\n result.issuer = cleanUndefined({\n id: input.iss,\n ...input.issuer\n });\n if (removeOriginalFields && !input.issuer?.id) {\n delete result.iss;\n }\n }\n if (!input.id && input.jti) {\n result.id = result.id || result.jti;\n if (removeOriginalFields) {\n delete result.jti;\n }\n }\n const types = [...asArray(result.type), ...asArray(result.vc?.type)].filter(notEmpty);\n result.type = [...new Set(types)];\n if (removeOriginalFields) {\n delete result.vc?.type;\n }\n for (const prop of additionalPropNames) {\n if (input.vc && input.vc[prop]) {\n if (!result[prop]) {\n result[prop] = input.vc[prop];\n }\n if (removeOriginalFields) {\n delete result.vc[prop];\n }\n }\n }\n const contextArray = [...asArray(input.context), ...asArray(input['@context']), ...asArray(input.vc?.['@context'])].filter(notEmpty);\n result['@context'] = [...new Set(contextArray)];\n if (removeOriginalFields) {\n delete result.context;\n delete result.vc?.['@context'];\n }\n if (!input.issuanceDate && (input.iat || input.nbf)) {\n result.issuanceDate = new Date((input.nbf || input.iat) * 1000).toISOString();\n if (removeOriginalFields) {\n if (input.nbf) {\n delete result.nbf;\n } else {\n delete result.iat;\n }\n }\n }\n if (!input.expirationDate && input.exp) {\n result.expirationDate = new Date(input.exp * 1000).toISOString();\n if (removeOriginalFields) {\n delete result.exp;\n }\n }\n if (removeOriginalFields) {\n if (result.vc && Object.keys(result.vc).length === 0) {\n delete result.vc;\n }\n }\n // FIXME: interpret `aud` property as `verifier`\n return result;\n}\nfunction normalizeJwtCredential(input, removeOriginalFields = true) {\n let decoded;\n try {\n decoded = decodeJWT(input);\n } catch {\n throw new TypeError('unknown credential format');\n }\n return {\n ...normalizeJwtCredentialPayload(decoded.payload, removeOriginalFields),\n proof: {\n type: DEFAULT_JWT_PROOF_TYPE,\n jwt: input\n }\n };\n}\n/**\n * Normalizes a credential payload into an unambiguous W3C credential data type In case of conflict, existing W3C\n * Credential specific properties take precedence, except for arrays and object types which get merged.\n *\n * @param input - either a JWT or JWT payload, or a VerifiableCredential\n * @param removeOriginalFields - if true, removes all fields that were transformed according to the W3C mapping\n *\n * @see {@link https://www.w3.org/TR/vc-data-model/#jwt-encoding | VC JWT encoding }\n */\nfunction normalizeCredential(input, removeOriginalFields = true) {\n if (typeof input === 'string') {\n if (JWT_FORMAT.test(input)) {\n return normalizeJwtCredential(input, removeOriginalFields);\n } else {\n let parsed;\n try {\n parsed = JSON.parse(input);\n } catch {\n throw new TypeError('unknown credential format');\n }\n return normalizeCredential(parsed, removeOriginalFields);\n }\n } else if (input.proof?.jwt) {\n // TODO: test that it correctly propagates app specific proof properties\n return deepCopy({\n ...normalizeJwtCredential(input.proof.jwt, removeOriginalFields),\n proof: input.proof\n });\n } else {\n // TODO: test that it accepts JWT payload, CredentialPayload, VerifiableCredential\n // TODO: test that it correctly propagates proof, if any\n return {\n proof: {},\n ...normalizeJwtCredentialPayload(input, removeOriginalFields)\n };\n }\n}\n/**\n * Transforms a W3C Credential payload into a JWT compatible encoding.\n * The method accepts app specific fields and in case of collision, existing JWT properties will take precedence.\n * Also, `nbf`, `exp` and `jti` properties can be explicitly set to `undefined` and they will be kept intact.\n * @param input - either a JWT payload or a CredentialPayloadInput\n * @param removeOriginalFields - if true, removes original W3C fields from the resulting object\n *\n * @see {@link https://www.w3.org/TR/vc-data-model/#jwt-encoding | VC JWT encoding }\n */\nfunction transformCredentialInput(input, removeOriginalFields = true) {\n if (Array.isArray(input.credentialSubject)) throw Error('credentialSubject of type array not supported');\n const result = deepCopy({\n vc: {\n ...input.vc\n },\n ...input\n });\n result.vc = result.vc;\n const credentialSubject = {\n ...input.credentialSubject,\n ...input.vc?.credentialSubject\n };\n if (!input.sub) {\n result.sub = input.credentialSubject?.id;\n if (removeOriginalFields) {\n delete credentialSubject.id;\n }\n }\n const contextEntries = [...asArray(input.context), ...asArray(input['@context']), ...asArray(input.vc?.['@context'])].filter(notEmpty);\n result.vc['@context'] = [...new Set(contextEntries)];\n if (removeOriginalFields) {\n delete result.context;\n delete result['@context'];\n }\n const types = [...asArray(input.type), ...asArray(input.vc?.type)].filter(notEmpty);\n result.vc.type = [...new Set(types)];\n if (removeOriginalFields) {\n delete result.type;\n }\n if (input.id && Object.getOwnPropertyNames(input).indexOf('jti') === -1) {\n result.jti = input.id;\n if (removeOriginalFields) {\n delete result.id;\n }\n }\n if (input.issuanceDate && Object.getOwnPropertyNames(input).indexOf('nbf') === -1) {\n const converted = Date.parse(input.issuanceDate);\n if (!isNaN(converted)) {\n result.nbf = Math.floor(converted / 1000);\n if (removeOriginalFields) {\n delete result.issuanceDate;\n }\n }\n }\n if (input.expirationDate && Object.getOwnPropertyNames(input).indexOf('exp') === -1) {\n const converted = Date.parse(input.expirationDate);\n if (!isNaN(converted)) {\n result.exp = Math.floor(converted / 1000);\n if (removeOriginalFields) {\n delete result.expirationDate;\n }\n }\n }\n if (input.issuer && Object.getOwnPropertyNames(input).indexOf('iss') === -1) {\n if (typeof input.issuer === 'object') {\n result.iss = input.issuer?.id;\n if (removeOriginalFields) {\n delete result.issuer.id;\n if (Object.keys(result.issuer).length === 0) {\n delete result.issuer;\n }\n }\n } else if (typeof input.issuer === 'string') {\n result.iss = input.iss || '' + input.issuer;\n if (removeOriginalFields) {\n delete result.issuer;\n }\n } else ;\n }\n result.vc.credentialSubject = credentialSubject;\n if (removeOriginalFields) {\n delete result.credentialSubject;\n }\n for (const prop of additionalPropNames) {\n if (input[prop]) {\n if (!result.vc[prop]) {\n result.vc[prop] = input[prop];\n }\n if (removeOriginalFields) {\n delete result[prop];\n }\n }\n }\n return result;\n}\nfunction normalizeJwtPresentationPayload(input, removeOriginalFields = true) {\n const result = deepCopy(input);\n result.verifiableCredential = [...asArray(input.verifiableCredential), ...asArray(input.vp?.verifiableCredential)].filter(notEmpty);\n result.verifiableCredential = result.verifiableCredential.map(cred => {\n return normalizeCredential(cred, removeOriginalFields);\n });\n if (removeOriginalFields) {\n delete result.vp?.verifiableCredential;\n }\n if (input.iss && !input.holder) {\n result.holder = input.iss;\n if (removeOriginalFields) {\n delete result.iss;\n }\n }\n if (input.aud) {\n result.verifier = [...asArray(input.verifier), ...asArray(input.aud)].filter(notEmpty);\n result.verifier = [...new Set(result.verifier)];\n if (removeOriginalFields) {\n delete result.aud;\n }\n }\n if (input.jti && Object.getOwnPropertyNames(input).indexOf('id') === -1) {\n result.id = input.id || input.jti;\n if (removeOriginalFields) {\n delete result.jti;\n }\n }\n const types = [...asArray(input.type), ...asArray(input.vp?.type)].filter(notEmpty);\n result.type = [...new Set(types)];\n if (removeOriginalFields) {\n delete result.vp?.type;\n }\n const contexts = [...asArray(input.context), ...asArray(input['@context']), ...asArray(input.vp?.['@context'])].filter(notEmpty);\n result['@context'] = [...new Set(contexts)];\n if (removeOriginalFields) {\n delete result.context;\n delete result.vp?.['@context'];\n }\n if (!input.issuanceDate && (input.iat || input.nbf)) {\n result.issuanceDate = new Date((input.nbf || input.iat) * 1000).toISOString();\n if (removeOriginalFields) {\n if (input.nbf) {\n delete result.nbf;\n } else {\n delete result.iat;\n }\n }\n }\n if (!input.expirationDate && input.exp) {\n result.expirationDate = new Date(input.exp * 1000).toISOString();\n if (removeOriginalFields) {\n delete result.exp;\n }\n }\n if (result.vp && Object.keys(result.vp).length === 0) {\n if (removeOriginalFields) {\n delete result.vp;\n }\n }\n return result;\n}\nfunction normalizeJwtPresentation(input, removeOriginalFields = true) {\n let decoded;\n try {\n decoded = decodeJWT(input);\n } catch {\n throw new TypeError('unknown presentation format');\n }\n return {\n ...normalizeJwtPresentationPayload(decoded.payload, removeOriginalFields),\n proof: {\n type: DEFAULT_JWT_PROOF_TYPE,\n jwt: input\n }\n };\n}\n/**\n * Normalizes a presentation payload into an unambiguous W3C Presentation data type.\n *\n * @see {@link https://www.w3.org/TR/vc-data-model/#jwt-encoding | VP JWT encoding }\n *\n * @param input - either a JWT or JWT payload, or a VerifiablePresentation\n * @param removeOriginalFields - if true, removes all fields that were transformed according to the W3C mapping\n */\nfunction normalizePresentation(input, removeOriginalFields = true) {\n if (typeof input === 'string') {\n if (JWT_FORMAT.test(input)) {\n return normalizeJwtPresentation(input, removeOriginalFields);\n } else {\n let parsed;\n try {\n parsed = JSON.parse(input);\n } catch {\n throw new TypeError('unknown presentation format');\n }\n return normalizePresentation(parsed, removeOriginalFields);\n }\n } else if (input.proof?.jwt) {\n // TODO: test that it correctly propagates app specific proof properties\n return {\n ...normalizeJwtPresentation(input.proof.jwt, removeOriginalFields),\n proof: input.proof\n };\n } else {\n // TODO: test that it accepts JWT payload, PresentationPayload, VerifiablePresentation\n // TODO: test that it correctly propagates proof, if any\n return {\n proof: {},\n ...normalizeJwtPresentationPayload(input, removeOriginalFields)\n };\n }\n}\n/**\n * Transforms a W3C Presentation payload into a JWT compatible encoding.\n * The method accepts app specific fields and in case of collision, existing JWT properties will take precedence.\n * Also, `nbf`, `exp` and `jti` properties can be explicitly set to `undefined` and they will be kept intact.\n * @param input - either a JWT payload or a CredentialPayloadInput\n * @param removeOriginalFields - when true, removes the original W3C fields from the resulting object\n *\n * @see {@link https://www.w3.org/TR/vc-data-model/#jwt-encoding | VP JWT encoding }\n */\nfunction transformPresentationInput(input, removeOriginalFields = true) {\n const result = deepCopy({\n vp: {\n ...input.vp\n },\n ...input\n });\n result.vp = result.vp;\n const contextEntries = [...asArray(input.context), ...asArray(input['@context']), ...asArray(input.vp?.['@context'])].filter(notEmpty);\n result.vp['@context'] = [...new Set(contextEntries)];\n if (removeOriginalFields) {\n delete result.context;\n delete result['@context'];\n }\n const types = [...asArray(input.type), ...asArray(input.vp?.type)].filter(notEmpty);\n result.vp.type = [...new Set(types)];\n if (removeOriginalFields) {\n delete result.type;\n }\n if (input.id && Object.getOwnPropertyNames(input).indexOf('jti') === -1) {\n result.jti = input.id;\n if (removeOriginalFields) {\n delete result.id;\n }\n }\n if (input.issuanceDate && Object.getOwnPropertyNames(input).indexOf('nbf') === -1) {\n const converted = Date.parse(input.issuanceDate);\n if (!isNaN(converted)) {\n result.nbf = Math.floor(converted / 1000);\n if (removeOriginalFields) {\n delete result.issuanceDate;\n }\n }\n }\n if (input.expirationDate && Object.getOwnPropertyNames(input).indexOf('exp') === -1) {\n const converted = Date.parse(input.expirationDate);\n if (!isNaN(converted)) {\n result.exp = Math.floor(converted / 1000);\n if (removeOriginalFields) {\n delete result.expirationDate;\n }\n }\n }\n if (result.verifiableCredential || result.vp?.verifiableCredential) {\n result.vp.verifiableCredential = [...asArray(result.verifiableCredential), ...asArray(result.vp?.verifiableCredential)].filter(notEmpty).map(credential => {\n if (typeof credential === 'object' && credential.proof?.jwt) {\n return credential.proof.jwt;\n } else {\n return credential;\n }\n });\n }\n if (removeOriginalFields) {\n delete result.verifiableCredential;\n }\n if (input.holder && Object.getOwnPropertyNames(input).indexOf('iss') === -1) {\n if (typeof input.holder === 'string') {\n result.iss = input.holder;\n if (removeOriginalFields) {\n delete result.holder;\n }\n }\n }\n if (input.verifier) {\n const audience = [...asArray(input.verifier), ...asArray(input.aud)].filter(notEmpty);\n result.aud = [...new Set(audience)];\n if (removeOriginalFields) {\n delete result.verifier;\n }\n }\n return result;\n}\n\n/**\n * Error prefixes used for known verification failure cases related to the\n * {@link https://www.w3.org/TR/vc-data-model/ | Verifiable Credential data model }\n */\nconst VC_ERROR = {\n /**\n * Thrown when the credential or presentation being verified does not conform to the data model defined by\n * {@link https://www.w3.org/TR/vc-data-model/ | the spec}\n */\n SCHEMA_ERROR: 'schema_error',\n /**\n * Thrown when the input is not a JWT string\n */\n FORMAT_ERROR: 'format_error',\n /**\n * Thrown when verifying a presentation where `challenge` and/or `domain` don't match the expected values.\n */\n AUTH_ERROR: 'auth_error'\n};\n/**\n * Known validation or verification error prefixes.\n */\nconst VC_JWT_ERROR = {\n ...VC_ERROR,\n ...JWT_ERROR\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isDateObject(input) {\n return input && !isNaN(input) && Object.prototype.toString.call(input) === '[object Date]';\n}\nfunction validateJwtFormat(value) {\n if (typeof value === 'string' && !value.match(JWT_FORMAT)) {\n throw new TypeError(`${VC_ERROR.FORMAT_ERROR}: \"${value}\" is not a valid JWT format`);\n }\n}\n// The main scenario we want to guard against is having a timestamp in milliseconds\n// instead of seconds (ex: from new Date().getTime()).\n// We will check the number of digits and assume that any number with 12 or more\n// digits is a millisecond timestamp.\n// 10 digits max is 9999999999 -> 11/20/2286 @ 5:46pm (UTC)\n// 11 digits max is 99999999999 -> 11/16/5138 @ 9:46am (UTC)\n// 12 digits max is 999999999999 -> 09/27/33658 @ 1:46am (UTC)\nfunction validateTimestamp(value) {\n if (typeof value === 'number') {\n if (!(Number.isInteger(value) && value < 100000000000)) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: \"${value}\" is not a unix timestamp in seconds`);\n }\n } else if (typeof value === 'string') {\n validateTimestamp(Math.floor(new Date(value).valueOf() / 1000));\n } else if (!isDateObject(value)) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: \"${value}\" is not a valid time`);\n }\n}\nfunction validateContext(value) {\n const input = asArray(value);\n if (input.length < 1 || input.indexOf(DEFAULT_CONTEXT) === -1) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: @context is missing default context \"${DEFAULT_CONTEXT}\"`);\n }\n}\nfunction validateVcType(value) {\n const input = asArray(value);\n if (input.length < 1 || input.indexOf(DEFAULT_VC_TYPE) === -1) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: type is missing default \"${DEFAULT_VC_TYPE}\"`);\n }\n}\nfunction validateVpType(value) {\n const input = asArray(value);\n if (input.length < 1 || input.indexOf(DEFAULT_VP_TYPE) === -1) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: type is missing default \"${DEFAULT_VP_TYPE}\"`);\n }\n}\nfunction validateCredentialSubject(value) {\n if (Object.keys(value).length === 0) {\n throw new TypeError(`${VC_ERROR.SCHEMA_ERROR}: credentialSubject must not be empty`);\n }\n}\n\n/**\n * Verifies and validates a VerifiablePresentation that is encoded as a JWT according to the W3C spec.\n *\n * @return a `Promise` that resolves to a `VerifiedPresentation` or rejects with `TypeError` if the input is\n * not W3C compliant or the VerifyPresentationOptions are not satisfied.\n * @param presentation - the presentation to be verified. Currently only the JWT encoding is supported by this library\n * @param resolver - a configured `Resolver` or an implementation of `Resolvable` that can provide the DID document of\n * the JWT issuer (presentation holder)\n * @param options - optional verification options that need to be satisfied. These are also forwarded to did-jwt.\n */\nconst verifyPresentation = function (presentation, resolver, options = {}) {\n try {\n const nbf = options?.policies?.issuanceDate === false ? false : undefined;\n const exp = options?.policies?.expirationDate === false ? false : undefined;\n options = {\n audience: options.domain,\n ...options,\n policies: {\n ...options?.policies,\n nbf,\n exp,\n iat: nbf\n }\n };\n return Promise.resolve(verifyJWT(presentation, {\n resolver,\n ...options\n })).then(function (verified) {\n verifyPresentationPayloadOptions(verified.payload, options);\n verified.verifiablePresentation = normalizePresentation(verified.jwt, options?.removeOriginalFields);\n if (options?.policies?.format !== false) {\n validatePresentationPayload(verified.verifiablePresentation);\n }\n return verified;\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n/**\n * Verifies and validates a VerifiableCredential that is encoded as a JWT according to the W3C spec.\n *\n * @return a `Promise` that resolves to a `VerifiedCredential` or rejects with `TypeError` if the input is not\n * W3C compliant\n * @param vc - the credential to be verified. Currently only the JWT encoding is supported by this library\n * @param resolver - a configured `Resolver` (or an implementation of `Resolvable`) that can provide the DID document\n * of the JWT issuer\n * @param options - optional tweaks to the verification process. These are forwarded to did-jwt.\n */\nconst verifyCredential = function (vc, resolver, options = {}) {\n try {\n const nbf = options?.policies?.issuanceDate === false ? false : undefined;\n const exp = options?.policies?.expirationDate === false ? false : undefined;\n options = {\n ...options,\n policies: {\n ...options?.policies,\n nbf,\n exp,\n iat: nbf\n }\n };\n return Promise.resolve(verifyJWT(vc, {\n resolver,\n ...options\n })).then(function (verified) {\n verified.verifiableCredential = normalizeCredential(verified.jwt, options?.removeOriginalFields);\n if (options?.policies?.format !== false) {\n validateCredentialPayload(verified.verifiableCredential);\n }\n return verified;\n });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n/**\n * Verifies that the given JwtPresentationPayload contains the appropriate options from VerifyPresentationOptions\n *\n * @param payload - the JwtPresentationPayload to verify against\n * @param options - the VerifyPresentationOptions that contain the optional values to verify.\n * @throws {Error} If VerifyPresentationOptions are not satisfied\n */\n/**\n * Creates a VerifiablePresentation JWT given a `PresentationPayload` or `JwtPresentationPayload` and an `Issuer`.\n *\n * This method transforms the payload into the [JWT encoding](https://www.w3.org/TR/vc-data-model/#jwt-encoding)\n * described in the [W3C VC spec](https://www.w3.org/TR/vc-data-model) and then validated to conform to the minimum\n * spec\n * required spec.\n *\n * The `holder` is then used to assign an algorithm, override the `iss` field of the payload and then sign the JWT.\n *\n * @param payload - `PresentationPayload` or `JwtPresentationPayload`\n * @param holder - `Issuer` of the Presentation JWT (holder of the VC), signer and algorithm that will sign the token\n * @param options - `CreatePresentationOptions` allows to pass additional values to the resulting JWT payload. These\n * options are forwarded to did-jwt.\n * @return a `Promise` that resolves to the JWT encoded verifiable presentation or rejects with `TypeError` if the\n * `payload` is not W3C compliant\n */\nconst createVerifiablePresentationJwt = function (payload, holder, options = {}) {\n try {\n const parsedPayload = {\n iat: undefined,\n ...transformPresentationInput(payload, options?.removeOriginalFields)\n };\n // add challenge to nonce\n if (options.challenge && Object.getOwnPropertyNames(parsedPayload).indexOf('nonce') === -1) {\n parsedPayload.nonce = options.challenge;\n }\n // add domain to audience.\n if (options.domain) {\n const audience = [...asArray(options.domain), ...asArray(parsedPayload.aud)].filter(notEmpty);\n parsedPayload.aud = [...new Set(audience)];\n }\n validateJwtPresentationPayload(parsedPayload);\n return Promise.resolve(createJWT(parsedPayload, {\n ...options,\n issuer: holder.did || parsedPayload.iss || '',\n signer: holder.signer\n }, {\n ...options.header,\n alg: holder.alg || options.header?.alg || JWT_ALG\n }));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n/**\n * Creates a VerifiableCredential given a `CredentialPayload` or `JwtCredentialPayload` and an `Issuer`.\n *\n * This method transforms the payload into the [JWT encoding](https://www.w3.org/TR/vc-data-model/#jwt-encoding)\n * described in the [W3C VC spec](https://www.w3.org/TR/vc-data-model) and then validated to conform to the minimum\n * spec\n * required spec.\n *\n * The `issuer` is then used to assign an algorithm, override the `iss` field of the payload and then sign the JWT.\n *\n * @param payload - `CredentialPayload` or `JwtCredentialPayload`\n * @param issuer - `Issuer` the DID, signer and algorithm that will sign the token\n * @param options - Use these options to tweak the creation of the JWT Credential. These are forwarded to did-jwt.\n * @return a `Promise` that resolves to the JWT encoded verifiable credential or rejects with `TypeError` if the\n * `payload` is not W3C compliant\n */\nconst createVerifiableCredentialJwt = function (payload, issuer, options = {}) {\n try {\n const parsedPayload = {\n iat: undefined,\n ...transformCredentialInput(payload, options.removeOriginalFields)\n };\n validateJwtCredentialPayload(parsedPayload);\n if (!Array.isArray(issuer)) {\n return Promise.resolve(createJWT(parsedPayload, {\n ...options,\n issuer: issuer.did || parsedPayload.iss || '',\n signer: issuer.signer\n }, {\n ...options.header,\n alg: issuer.alg || options.header?.alg || JWT_ALG\n }));\n } else {\n const did = issuer[0].did;\n const issuers = [];\n for (const iss of issuer) {\n if (iss.did !== did) {\n throw new Error('All issuers must be the same did to comply with the Verifiable Conditions spec');\n }\n issuers.push({\n issuer: iss.did || parsedPayload.iss || '',\n signer: iss.signer,\n alg: iss.alg || options.header?.alg || JWT_ALG\n });\n }\n return Promise.resolve(createMultisignatureJWT(parsedPayload, {\n ...options\n }, issuers));\n }\n } catch (e) {\n return Promise.reject(e);\n }\n};\nfunction validateJwtCredentialPayload(payload) {\n validateContext(payload.vc['@context']);\n validateVcType(payload.vc.type);\n validateCredentialSubject(payload.vc.credentialSubject);\n if (payload.nbf) validateTimestamp(payload.nbf);\n if (payload.exp) validateTimestamp(payload.exp);\n}\nfunction validateCredentialPayload(payload) {\n validateContext(payload['@context']);\n validateVcType(payload.type);\n validateCredentialSubject(payload.credentialSubject);\n if (payload.issuanceDate) validateTimestamp(payload.issuanceDate);\n if (payload.expirationDate) validateTimestamp(payload.expirationDate);\n}\nfunction validateJwtPresentationPayload(payload) {\n validateContext(payload.vp['@context']);\n validateVpType(payload.vp.type);\n // empty credential array is allowed\n if (payload.vp.verifiableCredential && payload.vp.verifiableCredential.length >= 1) {\n for (const vc of asArray(payload.vp.verifiableCredential)) {\n if (typeof vc === 'string') {\n validateJwtFormat(vc);\n } else {\n validateCredentialPayload(vc);\n }\n }\n }\n if (payload.exp) validateTimestamp(payload.exp);\n}\nfunction validatePresentationPayload(payload) {\n validateContext(payload['@context']);\n validateVpType(payload.type);\n // empty credential array is allowed\n if (payload.verifiableCredential && payload.verifiableCredential.length >= 1) {\n for (const vc of payload.verifiableCredential) {\n if (typeof vc === 'string') {\n validateJwtFormat(vc);\n } else {\n validateCredentialPayload(vc);\n }\n }\n }\n if (payload.expirationDate) validateTimestamp(payload.expirationDate);\n}\nfunction verifyPresentationPayloadOptions(payload, options) {\n if (options.challenge && options.challenge !== payload.nonce) {\n throw new Error(`${VC_ERROR.AUTH_ERROR}: Presentation does not contain the mandatory challenge (JWT: nonce) for : ${options.challenge}`);\n }\n if (options.domain) {\n // aud might be an array\n let matchedAudience;\n if (payload.aud) {\n const audArray = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n matchedAudience = audArray.find(item => options.domain === item);\n }\n if (typeof matchedAudience === 'undefined') {\n throw new Error(`${VC_ERROR.AUTH_ERROR}: Presentation does not contain the mandatory domain (JWT: aud) for : ${options.domain}`);\n }\n }\n}\n\nexport { VC_ERROR, VC_JWT_ERROR, createVerifiableCredentialJwt, createVerifiablePresentationJwt, normalizeCredential, normalizePresentation, transformCredentialInput, transformPresentationInput, validateCredentialPayload, validateJwtCredentialPayload, validateJwtPresentationPayload, validatePresentationPayload, verifyCredential, verifyPresentation, verifyPresentationPayloadOptions };\n//# sourceMappingURL=index.module.js.map\n","import { getAuthenticatedDID } from \"@didtools/key-did\";\nimport { EdDSASigner } from \"did-jwt\";\nimport { createVerifiableCredentialJwt, verifyCredential, } from \"did-jwt-vc\";\nimport { Resolver } from \"did-resolver\";\nimport { getResolver as keyDidResolver } from \"key-did-resolver\";\nexport function parsePkhDid(did) {\n const parts = did.split(\":\");\n if (!did.startsWith(\"did:pkh:\") || parts.length !== 5) {\n throw new Error(\"Invalid pkh did\");\n }\n const [, , networkId, chainIdStr, address] = parts;\n if (!address.startsWith(\"0x\")) {\n throw new Error(`Invalid address: ${address}`);\n }\n const chainId = Number(chainIdStr);\n if (isNaN(chainId)) {\n throw new Error(`Invalid chain id: ${chainIdStr}`);\n }\n return {\n chainId,\n networkId,\n address: address,\n };\n}\nexport async function verifyAuthBearerToken(jwt) {\n try {\n const verified = await verifyCredential(jwt, getResolver());\n return verified;\n }\n catch (e) {\n console.error(e);\n return false;\n }\n}\nexport async function createAuthBearerToken(chainId, networkId, address, issuer) {\n const vcPayload = {\n sub: issuer.did,\n vc: {\n \"@context\": [\"https://www.w3.org/2018/credentials/v1\"],\n type: [\"VerifiableCredential\"],\n credentialSubject: {\n chainId,\n networkId,\n address,\n },\n },\n };\n const jwt = await createVerifiableCredentialJwt(vcPayload, issuer);\n return jwt;\n}\nexport const getResolver = () => {\n const keyResolver = keyDidResolver();\n if (!keyResolver) {\n throw new Error(\"Failed to get key resolver\");\n }\n return new Resolver(keyResolver);\n};\nexport async function getIssuer(privateKey) {\n const signer = EdDSASigner(privateKey);\n const did = await getAuthenticatedDID(privateKey);\n return {\n did: did.id,\n signer,\n alg: \"EdDSA\",\n };\n}\n//# sourceMappingURL=utils.js.map","'use strict'\n\n/**\n * Can be used with Array.sort to sort and array with Uint8Array entries\n *\n * @param {Uint8Array} a\n * @param {Uint8Array} b\n */\nfunction compare (a, b) {\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] < b[i]) {\n return -1\n }\n\n if (a[i] > b[i]) {\n return 1\n }\n }\n\n if (a.byteLength > b.byteLength) {\n return 1\n }\n\n if (a.byteLength < b.byteLength) {\n return -1\n }\n\n return 0\n}\n\nmodule.exports = compare\n","'use strict'\n\n/**\n * Returns a new Uint8Array created by concatenating the passed ArrayLikes\n *\n * @param {Array<ArrayLike<number>>} arrays\n * @param {number} [length]\n */\nfunction concat (arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0)\n }\n\n const output = new Uint8Array(length)\n let offset = 0\n\n for (const arr of arrays) {\n output.set(arr, offset)\n offset += arr.length\n }\n\n return output\n}\n\nmodule.exports = concat\n","'use strict'\n\n/**\n * Returns true if the two passed Uint8Arrays have the same content\n *\n * @param {Uint8Array} a\n * @param {Uint8Array} b\n */\nfunction equals (a, b) {\n if (a === b) {\n return true\n }\n\n if (a.byteLength !== b.byteLength) {\n return false\n }\n\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n\n return true\n}\n\nmodule.exports = equals\n"," 'use strict'\n\nconst { bases } = require('multiformats/basics')\n\n/**\n * @typedef {import('multiformats/bases/interface').MultibaseCodec<any>} MultibaseCodec\n */\n\n/**\n * @param {string} name\n * @param {string} prefix\n * @param {(buf: Uint8Array) => string} encode\n * @param {(str: string) => Uint8Array} decode\n * @returns {MultibaseCodec}\n */\nfunction createCodec (name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: {\n decode\n }\n }\n}\n\nconst string = createCodec('utf8', 'u', (buf) => {\n const decoder = new TextDecoder('utf8')\n return 'u' + decoder.decode(buf)\n}, (str) => {\n const encoder = new TextEncoder()\n return encoder.encode(str.substring(1))\n})\n\nconst ascii = createCodec('ascii', 'a', (buf) => {\n let string = 'a'\n\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i])\n }\n return string\n}, (str) => {\n str = str.substring(1)\n const buf = new Uint8Array(str.length)\n\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i)\n }\n\n return buf\n})\n\n/**\n * @typedef {'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof bases } SupportedEncodings\n */\n\n/**\n * @type {Record<SupportedEncodings, MultibaseCodec>}\n */\nconst BASES = {\n 'utf8': string,\n 'utf-8': string,\n 'hex': bases.base16,\n 'latin1': ascii,\n 'ascii': ascii,\n 'binary': ascii,\n\n ...bases\n}\n\nmodule.exports = BASES\n","'use strict'\n\nconst bases = require('./util/bases')\n\n/**\n * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings\n */\n\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n *\n * @param {string} string\n * @param {SupportedEncodings} [encoding=utf8] - utf8, base16, base64, base64urlpad, etc\n * @returns {Uint8Array}\n */\nfunction fromString (string, encoding = 'utf8') {\n const base = bases[encoding]\n\n if (!base) {\n throw new Error(`Unsupported encoding \"${encoding}\"`)\n }\n\n // add multibase prefix\n return base.decoder.decode(`${base.prefix}${string}`)\n}\n\nmodule.exports = fromString\n","'use strict'\n\nconst bases = require('./util/bases')\n\n/**\n * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings\n */\n\n/**\n * Turns a `Uint8Array` into a string.\n *\n * Supports `utf8`, `utf-8` and any encoding supported by the multibase module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n *\n * @param {Uint8Array} array - The array to turn into a string\n * @param {SupportedEncodings} [encoding=utf8] - The encoding to use\n * @returns {string}\n */\nfunction toString (array, encoding = 'utf8') {\n const base = bases[encoding]\n\n if (!base) {\n throw new Error(`Unsupported encoding \"${encoding}\"`)\n }\n\n // strip multibase prefix\n return base.encoder.encode(array).substring(1)\n}\n\nmodule.exports = toString\n","'use strict'\n\n/**\n * Returns the xor distance between two arrays\n *\n * @param {Uint8Array} a\n * @param {Uint8Array} b\n */\nfunction xor (a, b) {\n if (a.length !== b.length) {\n throw new Error('Inputs should have the same length')\n }\n\n const result = new Uint8Array(a.length)\n\n for (let i = 0; i < a.length; i++) {\n result[i] = a[i] ^ b[i]\n }\n\n return result\n}\n\nmodule.exports = xor\n","'use strict'\nconst compare = require('./compare')\nconst concat = require('./concat')\nconst equals = require('./equals')\nconst fromString = require('./from-string')\nconst toString = require('./to-string')\nconst xor = require('./xor')\n\nmodule.exports = {\n compare,\n concat,\n equals,\n fromString,\n toString,\n xor\n}\n","'use strict'\n\nconst varint = require('varint')\nconst { toString: uint8ArrayToString } = require('uint8arrays/to-string')\nconst { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')\n\nmodule.exports = {\n numberToUint8Array,\n uint8ArrayToNumber,\n varintUint8ArrayEncode,\n varintEncode\n}\n\n/**\n * @param {Uint8Array} buf\n */\nfunction uint8ArrayToNumber (buf) {\n return parseInt(uint8ArrayToString(buf, 'base16'), 16)\n}\n\n/**\n * @param {number} num\n */\nfunction numberToUint8Array (num) {\n let hexString = num.toString(16)\n if (hexString.length % 2 === 1) {\n hexString = '0' + hexString\n }\n return uint8ArrayFromString(hexString, 'base16')\n}\n\n/**\n * @param {Uint8Array} input\n */\nfunction varintUint8ArrayEncode (input) {\n return Uint8Array.from(varint.encode(uint8ArrayToNumber(input)))\n}\n\n/**\n * @param {number} num\n */\nfunction varintEncode (num) {\n return Uint8Array.from(varint.encode(num))\n}\n","// DO NOT CHANGE THIS FILE. IT IS GENERATED BY tools/update-table.js\n/* eslint quote-props: off */\n'use strict'\n\n/**\n * @type {import('./generated-types').NameCodeMap}\n */\nconst baseTable = Object.freeze({\n 'identity': 0x00,\n 'cidv1': 0x01,\n 'cidv2': 0x02,\n 'cidv3': 0x03,\n 'ip4': 0x04,\n 'tcp': 0x06,\n 'sha1': 0x11,\n 'sha2-256': 0x12,\n 'sha2-512': 0x13,\n 'sha3-512': 0x14,\n 'sha3-384': 0x15,\n 'sha3-256': 0x16,\n 'sha3-224': 0x17,\n 'shake-128': 0x18,\n 'shake-256': 0x19,\n 'keccak-224': 0x1a,\n 'keccak-256': 0x1b,\n 'keccak-384': 0x1c,\n 'keccak-512': 0x1d,\n 'blake3': 0x1e,\n 'dccp': 0x21,\n 'murmur3-128': 0x22,\n 'murmur3-32': 0x23,\n 'ip6': 0x29,\n 'ip6zone': 0x2a,\n 'path': 0x2f,\n 'multicodec': 0x30,\n 'multihash': 0x31,\n 'multiaddr': 0x32,\n 'multibase': 0x33,\n 'dns': 0x35,\n 'dns4': 0x36,\n 'dns6': 0x37,\n 'dnsaddr': 0x38,\n 'protobuf': 0x50,\n 'cbor': 0x51,\n 'raw': 0x55,\n 'dbl-sha2-256': 0x56,\n 'rlp': 0x60,\n 'bencode': 0x63,\n 'dag-pb': 0x70,\n 'dag-cbor': 0x71,\n 'libp2p-key': 0x72,\n 'git-raw': 0x78,\n 'torrent-info': 0x7b,\n 'torrent-file': 0x7c,\n 'leofcoin-block': 0x81,\n 'leofcoin-tx': 0x82,\n 'leofcoin-pr': 0x83,\n 'sctp': 0x84,\n 'dag-jose': 0x85,\n 'dag-cose': 0x86,\n 'eth-block': 0x90,\n 'eth-block-list': 0x91,\n 'eth-tx-trie': 0x92,\n 'eth-tx': 0x93,\n 'eth-tx-receipt-trie': 0x94,\n 'eth-tx-receipt': 0x95,\n 'eth-state-trie': 0x96,\n 'eth-account-snapshot': 0x97,\n 'eth-storage-trie': 0x98,\n 'eth-receipt-log-trie': 0x99,\n 'eth-reciept-log': 0x9a,\n 'bitcoin-block': 0xb0,\n 'bitcoin-tx': 0xb1,\n 'bitcoin-witness-commitment': 0xb2,\n 'zcash-block': 0xc0,\n 'zcash-tx': 0xc1,\n 'caip-50': 0xca,\n 'streamid': 0xce,\n 'stellar-block': 0xd0,\n 'stellar-tx': 0xd1,\n 'md4': 0xd4,\n 'md5': 0xd5,\n 'bmt': 0xd6,\n 'decred-block': 0xe0,\n 'decred-tx': 0xe1,\n 'ipld-ns': 0xe2,\n 'ipfs-ns': 0xe3,\n 'swarm-ns': 0xe4,\n 'ipns-ns': 0xe5,\n 'zeronet': 0xe6,\n 'secp256k1-pub': 0xe7,\n 'bls12_381-g1-pub': 0xea,\n 'bls12_381-g2-pub': 0xeb,\n 'x25519-pub': 0xec,\n 'ed25519-pub': 0xed,\n 'bls12_381-g1g2-pub': 0xee,\n 'dash-block': 0xf0,\n 'dash-tx': 0xf1,\n 'swarm-manifest': 0xfa,\n 'swarm-feed': 0xfb,\n 'udp': 0x0111,\n 'p2p-webrtc-star': 0x0113,\n 'p2p-webrtc-direct': 0x0114,\n 'p2p-stardust': 0x0115,\n 'p2p-circuit': 0x0122,\n 'dag-json': 0x0129,\n 'udt': 0x012d,\n 'utp': 0x012e,\n 'unix': 0x0190,\n 'thread': 0x0196,\n 'p2p': 0x01a5,\n 'ipfs': 0x01a5,\n 'https': 0x01bb,\n 'onion': 0x01bc,\n 'onion3': 0x01bd,\n 'garlic64': 0x01be,\n 'garlic32': 0x01bf,\n 'tls': 0x01c0,\n 'noise': 0x01c6,\n 'quic': 0x01cc,\n 'ws': 0x01dd,\n 'wss': 0x01de,\n 'p2p-websocket-star': 0x01df,\n 'http': 0x01e0,\n 'swhid-1-snp': 0x01f0,\n 'json': 0x0200,\n 'messagepack': 0x0201,\n 'libp2p-peer-record': 0x0301,\n 'libp2p-relay-rsvp': 0x0302,\n 'car-index-sorted': 0x0400,\n 'sha2-256-trunc254-padded': 0x1012,\n 'ripemd-128': 0x1052,\n 'ripemd-160': 0x1053,\n 'ripemd-256': 0x1054,\n 'ripemd-320': 0x1055,\n 'x11': 0x1100,\n 'p256-pub': 0x1200,\n 'p384-pub': 0x1201,\n 'p521-pub': 0x1202,\n 'ed448-pub': 0x1203,\n 'x448-pub': 0x1204,\n 'ed25519-priv': 0x1300,\n 'secp256k1-priv': 0x1301,\n 'x25519-priv': 0x1302,\n 'kangarootwelve': 0x1d01,\n 'sm3-256': 0x534d,\n 'blake2b-8': 0xb201,\n 'blake2b-16': 0xb202,\n 'blake2b-24': 0xb203,\n 'blake2b-32': 0xb204,\n 'blake2b-40': 0xb205,\n 'blake2b-48': 0xb206,\n 'blake2b-56': 0xb207,\n 'blake2b-64': 0xb208,\n 'blake2b-72': 0xb209,\n 'blake2b-80': 0xb20a,\n 'blake2b-88': 0xb20b,\n 'blake2b-96': 0xb20c,\n 'blake2b-104': 0xb20d,\n 'blake2b-112': 0xb20e,\n 'blake2b-120': 0xb20f,\n 'blake2b-128': 0xb210,\n 'blake2b-136': 0xb211,\n 'blake2b-144': 0xb212,\n 'blake2b-152': 0xb213,\n 'blake2b-160': 0xb214,\n 'blake2b-168': 0xb215,\n 'blake2b-176': 0xb216,\n 'blake2b-184': 0xb217,\n 'blake2b-192': 0xb218,\n 'blake2b-200': 0xb219,\n 'blake2b-208': 0xb21a,\n 'blake2b-216': 0xb21b,\n 'blake2b-224': 0xb21c,\n 'blake2b-232': 0xb21d,\n 'blake2b-240': 0xb21e,\n 'blake2b-248': 0xb21f,\n 'blake2b-256': 0xb220,\n 'blake2b-264': 0xb221,\n 'blake2b-272': 0xb222,\n 'blake2b-280': 0xb223,\n 'blake2b-288': 0xb224,\n 'blake2b-296': 0xb225,\n 'blake2b-304': 0xb226,\n 'blake2b-312': 0xb227,\n 'blake2b-320': 0xb228,\n 'blake2b-328': 0xb229,\n 'blake2b-336': 0xb22a,\n 'blake2b-344': 0xb22b,\n 'blake2b-352': 0xb22c,\n 'blake2b-360': 0xb22d,\n 'blake2b-368': 0xb22e,\n 'blake2b-376': 0xb22f,\n 'blake2b-384': 0xb230,\n 'blake2b-392': 0xb231,\n 'blake2b-400': 0xb232,\n 'blake2b-408': 0xb233,\n 'blake2b-416': 0xb234,\n 'blake2b-424': 0xb235,\n 'blake2b-432': 0xb236,\n 'blake2b-440': 0xb237,\n 'blake2b-448': 0xb238,\n 'blake2b-456': 0xb239,\n 'blake2b-464': 0xb23a,\n 'blake2b-472': 0xb23b,\n 'blake2b-480': 0xb23c,\n 'blake2b-488': 0xb23d,\n 'blake2b-496': 0xb23e,\n 'blake2b-504': 0xb23f,\n 'blake2b-512': 0xb240,\n 'blake2s-8': 0xb241,\n 'blake2s-16': 0xb242,\n 'blake2s-24': 0xb243,\n 'blake2s-32': 0xb244,\n 'blake2s-40': 0xb245,\n 'blake2s-48': 0xb246,\n 'blake2s-56': 0xb247,\n 'blake2s-64': 0xb248,\n 'blake2s-72': 0xb249,\n 'blake2s-80': 0xb24a,\n 'blake2s-88': 0xb24b,\n 'blake2s-96': 0xb24c,\n 'blake2s-104': 0xb24d,\n 'blake2s-112': 0xb24e,\n 'blake2s-120': 0xb24f,\n 'blake2s-128': 0xb250,\n 'blake2s-136': 0xb251,\n 'blake2s-144': 0xb252,\n 'blake2s-152': 0xb253,\n 'blake2s-160': 0xb254,\n 'blake2s-168': 0xb255,\n 'blake2s-176': 0xb256,\n 'blake2s-184': 0xb257,\n 'blake2s-192': 0xb258,\n 'blake2s-200': 0xb259,\n 'blake2s-208': 0xb25a,\n 'blake2s-216': 0xb25b,\n 'blake2s-224': 0xb25c,\n 'blake2s-232': 0xb25d,\n 'blake2s-240': 0xb25e,\n 'blake2s-248': 0xb25f,\n 'blake2s-256': 0xb260,\n 'skein256-8': 0xb301,\n 'skein256-16': 0xb302,\n 'skein256-24': 0xb303,\n 'skein256-32': 0xb304,\n 'skein256-40': 0xb305,\n 'skein256-48': 0xb306,\n 'skein256-56': 0xb307,\n 'skein256-64': 0xb308,\n 'skein256-72': 0xb309,\n 'skein256-80': 0xb30a,\n 'skein256-88': 0xb30b,\n 'skein256-96': 0xb30c,\n 'skein256-104': 0xb30d,\n 'skein256-112': 0xb30e,\n 'skein256-120': 0xb30f,\n 'skein256-128': 0xb310,\n 'skein256-136': 0xb311,\n 'skein256-144': 0xb312,\n 'skein256-152': 0xb313,\n 'skein256-160': 0xb314,\n 'skein256-168': 0xb315,\n 'skein256-176': 0xb316,\n 'skein256-184': 0xb317,\n 'skein256-192': 0xb318,\n 'skein256-200': 0xb319,\n 'skein256-208': 0xb31a,\n 'skein256-216': 0xb31b,\n 'skein256-224': 0xb31c,\n 'skein256-232': 0xb31d,\n 'skein256-240': 0xb31e,\n 'skein256-248': 0xb31f,\n 'skein256-256': 0xb320,\n 'skein512-8': 0xb321,\n 'skein512-16': 0xb322,\n 'skein512-24': 0xb323,\n 'skein512-32': 0xb324,\n 'skein512-40': 0xb325,\n 'skein512-48': 0xb326,\n 'skein512-56': 0xb327,\n 'skein512-64': 0xb328,\n 'skein512-72': 0xb329,\n 'skein512-80': 0xb32a,\n 'skein512-88': 0xb32b,\n 'skein512-96': 0xb32c,\n 'skein512-104': 0xb32d,\n 'skein512-112': 0xb32e,\n 'skein512-120': 0xb32f,\n 'skein512-128': 0xb330,\n 'skein512-136': 0xb331,\n 'skein512-144': 0xb332,\n 'skein512-152': 0xb333,\n 'skein512-160': 0xb334,\n 'skein512-168': 0xb335,\n 'skein512-176': 0xb336,\n 'skein512-184': 0xb337,\n 'skein512-192': 0xb338,\n 'skein512-200': 0xb339,\n 'skein512-208': 0xb33a,\n 'skein512-216': 0xb33b,\n 'skein512-224': 0xb33c,\n 'skein512-232': 0xb33d,\n 'skein512-240': 0xb33e,\n 'skein512-248': 0xb33f,\n 'skein512-256': 0xb340,\n 'skein512-264': 0xb341,\n 'skein512-272': 0xb342,\n 'skein512-280': 0xb343,\n 'skein512-288': 0xb344,\n 'skein512-296': 0xb345,\n 'skein512-304': 0xb346,\n 'skein512-312': 0xb347,\n 'skein512-320': 0xb348,\n 'skein512-328': 0xb349,\n 'skein512-336': 0xb34a,\n 'skein512-344': 0xb34b,\n 'skein512-352': 0xb34c,\n 'skein512-360': 0xb34d,\n 'skein512-368': 0xb34e,\n 'skein512-376': 0xb34f,\n 'skein512-384': 0xb350,\n 'skein512-392': 0xb351,\n 'skein512-400': 0xb352,\n 'skein512-408': 0xb353,\n 'skein512-416': 0xb354,\n 'skein512-424': 0xb355,\n 'skein512-432': 0xb356,\n 'skein512-440': 0xb357,\n 'skein512-448': 0xb358,\n 'skein512-456': 0xb359,\n 'skein512-464': 0xb35a,\n 'skein512-472': 0xb35b,\n 'skein512-480': 0xb35c,\n 'skein512-488': 0xb35d,\n 'skein512-496': 0xb35e,\n 'skein512-504': 0xb35f,\n 'skein512-512': 0xb360,\n 'skein1024-8': 0xb361,\n 'skein1024-16': 0xb362,\n 'skein1024-24': 0xb363,\n 'skein1024-32': 0xb364,\n 'skein1024-40': 0xb365,\n 'skein1024-48': 0xb366,\n 'skein1024-56': 0xb367,\n 'skein1024-64': 0xb368,\n 'skein1024-72': 0xb369,\n 'skein1024-80': 0xb36a,\n 'skein1024-88': 0xb36b,\n 'skein1024-96': 0xb36c,\n 'skein1024-104': 0xb36d,\n 'skein1024-112': 0xb36e,\n 'skein1024-120': 0xb36f,\n 'skein1024-128': 0xb370,\n 'skein1024-136': 0xb371,\n 'skein1024-144': 0xb372,\n 'skein1024-152': 0xb373,\n 'skein1024-160': 0xb374,\n 'skein1024-168': 0xb375,\n 'skein1024-176': 0xb376,\n 'skein1024-184': 0xb377,\n 'skein1024-192': 0xb378,\n 'skein1024-200': 0xb379,\n 'skein1024-208': 0xb37a,\n 'skein1024-216': 0xb37b,\n 'skein1024-224': 0xb37c,\n 'skein1024-232': 0xb37d,\n 'skein1024-240': 0xb37e,\n 'skein1024-248': 0xb37f,\n 'skein1024-256': 0xb380,\n 'skein1024-264': 0xb381,\n 'skein1024-272': 0xb382,\n 'skein1024-280': 0xb383,\n 'skein1024-288': 0xb384,\n 'skein1024-296': 0xb385,\n 'skein1024-304': 0xb386,\n 'skein1024-312': 0xb387,\n 'skein1024-320': 0xb388,\n 'skein1024-328': 0xb389,\n 'skein1024-336': 0xb38a,\n 'skein1024-344': 0xb38b,\n 'skein1024-352': 0xb38c,\n 'skein1024-360': 0xb38d,\n 'skein1024-368': 0xb38e,\n 'skein1024-376': 0xb38f,\n 'skein1024-384': 0xb390,\n 'skein1024-392': 0xb391,\n 'skein1024-400': 0xb392,\n 'skein1024-408': 0xb393,\n 'skein1024-416': 0xb394,\n 'skein1024-424': 0xb395,\n 'skein1024-432': 0xb396,\n 'skein1024-440': 0xb397,\n 'skein1024-448': 0xb398,\n 'skein1024-456': 0xb399,\n 'skein1024-464': 0xb39a,\n 'skein1024-472': 0xb39b,\n 'skein1024-480': 0xb39c,\n 'skein1024-488': 0xb39d,\n 'skein1024-496': 0xb39e,\n 'skein1024-504': 0xb39f,\n 'skein1024-512': 0xb3a0,\n 'skein1024-520': 0xb3a1,\n 'skein1024-528': 0xb3a2,\n 'skein1024-536': 0xb3a3,\n 'skein1024-544': 0xb3a4,\n 'skein1024-552': 0xb3a5,\n 'skein1024-560': 0xb3a6,\n 'skein1024-568': 0xb3a7,\n 'skein1024-576': 0xb3a8,\n 'skein1024-584': 0xb3a9,\n 'skein1024-592': 0xb3aa,\n 'skein1024-600': 0xb3ab,\n 'skein1024-608': 0xb3ac,\n 'skein1024-616': 0xb3ad,\n 'skein1024-624': 0xb3ae,\n 'skein1024-632': 0xb3af,\n 'skein1024-640': 0xb3b0,\n 'skein1024-648': 0xb3b1,\n 'skein1024-656': 0xb3b2,\n 'skein1024-664': 0xb3b3,\n 'skein1024-672': 0xb3b4,\n 'skein1024-680': 0xb3b5,\n 'skein1024-688': 0xb3b6,\n 'skein1024-696': 0xb3b7,\n 'skein1024-704': 0xb3b8,\n 'skein1024-712': 0xb3b9,\n 'skein1024-720': 0xb3ba,\n 'skein1024-728': 0xb3bb,\n 'skein1024-736': 0xb3bc,\n 'skein1024-744': 0xb3bd,\n 'skein1024-752': 0xb3be,\n 'skein1024-760': 0xb3bf,\n 'skein1024-768': 0xb3c0,\n 'skein1024-776': 0xb3c1,\n 'skein1024-784': 0xb3c2,\n 'skein1024-792': 0xb3c3,\n 'skein1024-800': 0xb3c4,\n 'skein1024-808': 0xb3c5,\n 'skein1024-816': 0xb3c6,\n 'skein1024-824': 0xb3c7,\n 'skein1024-832': 0xb3c8,\n 'skein1024-840': 0xb3c9,\n 'skein1024-848': 0xb3ca,\n 'skein1024-856': 0xb3cb,\n 'skein1024-864': 0xb3cc,\n 'skein1024-872': 0xb3cd,\n 'skein1024-880': 0xb3ce,\n 'skein1024-888': 0xb3cf,\n 'skein1024-896': 0xb3d0,\n 'skein1024-904': 0xb3d1,\n 'skein1024-912': 0xb3d2,\n 'skein1024-920': 0xb3d3,\n 'skein1024-928': 0xb3d4,\n 'skein1024-936': 0xb3d5,\n 'skein1024-944': 0xb3d6,\n 'skein1024-952': 0xb3d7,\n 'skein1024-960': 0xb3d8,\n 'skein1024-968': 0xb3d9,\n 'skein1024-976': 0xb3da,\n 'skein1024-984': 0xb3db,\n 'skein1024-992': 0xb3dc,\n 'skein1024-1000': 0xb3dd,\n 'skein1024-1008': 0xb3de,\n 'skein1024-1016': 0xb3df,\n 'skein1024-1024': 0xb3e0,\n 'poseidon-bls12_381-a2-fc1': 0xb401,\n 'poseidon-bls12_381-a2-fc1-sc': 0xb402,\n 'zeroxcert-imprint-256': 0xce11,\n 'fil-commitment-unsealed': 0xf101,\n 'fil-commitment-sealed': 0xf102,\n 'holochain-adr-v0': 0x807124,\n 'holochain-adr-v1': 0x817124,\n 'holochain-key-v0': 0x947124,\n 'holochain-key-v1': 0x957124,\n 'holochain-sig-v0': 0xa27124,\n 'holochain-sig-v1': 0xa37124,\n 'skynet-ns': 0xb19910,\n 'arweave-ns': 0xb29910\n})\n\nmodule.exports = { baseTable }\n","'use strict'\n\n/** @typedef {import('./generated-types').ConstantCodeMap} ConstantCodeMap */\n/** @typedef {import('./generated-types').NameUint8ArrayMap} NameUint8ArrayMap */\n/** @typedef {import('./generated-types').CodeNameMap} CodeNameMap */\n/** @typedef {import('./generated-types').CodecName} CodecName */\n/** @typedef {import('./generated-types').CodecConstant} CodecConstant */\n\nconst { baseTable } = require('./generated-table')\nconst varintEncode = require('./util').varintEncode\n\nconst nameToVarint = /** @type {NameUint8ArrayMap} */ ({})\nconst constantToCode = /** @type {ConstantCodeMap} */({})\nconst codeToName = /** @type {CodeNameMap} */({})\n\n// eslint-disable-next-line guard-for-in\nfor (const name in baseTable) {\n const codecName = /** @type {CodecName} */(name)\n const code = baseTable[codecName]\n nameToVarint[codecName] = varintEncode(code)\n\n const constant = /** @type {CodecConstant} */(codecName.toUpperCase().replace(/-/g, '_'))\n constantToCode[constant] = code\n\n if (!codeToName[code]) {\n codeToName[code] = codecName\n }\n}\n\nObject.freeze(nameToVarint)\nObject.freeze(constantToCode)\nObject.freeze(codeToName)\nconst nameToCode = Object.freeze(baseTable)\nmodule.exports = {\n nameToVarint,\n constantToCode,\n nameToCode,\n codeToName\n}\n","/**\n * Implementation of the multicodec specification.\n *\n * @module multicodec\n * @example\n * const multicodec = require('multicodec')\n *\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\n * // prefixedProtobuf 0x50...\n *\n */\n'use strict'\n\n/** @typedef {import('./generated-types').CodecName} CodecName */\n/** @typedef {import('./generated-types').CodecCode} CodecCode */\n\nconst varint = require('varint')\nconst { concat: uint8ArrayConcat } = require('uint8arrays/concat')\nconst util = require('./util')\nconst { nameToVarint, constantToCode, nameToCode, codeToName } = require('./maps')\n\n/**\n * Prefix a buffer with a multicodec-packed.\n *\n * @param {CodecName|Uint8Array} multicodecStrOrCode\n * @param {Uint8Array} data\n * @returns {Uint8Array}\n */\nfunction addPrefix (multicodecStrOrCode, data) {\n let prefix\n\n if (multicodecStrOrCode instanceof Uint8Array) {\n prefix = util.varintUint8ArrayEncode(multicodecStrOrCode)\n } else {\n if (nameToVarint[multicodecStrOrCode]) {\n prefix = nameToVarint[multicodecStrOrCode]\n } else {\n throw new Error('multicodec not recognized')\n }\n }\n\n return uint8ArrayConcat([prefix, data], prefix.length + data.length)\n}\n\n/**\n * Decapsulate the multicodec-packed prefix from the data.\n *\n * @param {Uint8Array} data\n * @returns {Uint8Array}\n */\nfunction rmPrefix (data) {\n varint.decode(/** @type {Buffer} */(data))\n return data.slice(varint.decode.bytes)\n}\n\n/**\n * Get the codec name of the prefixed data.\n *\n * @param {Uint8Array} prefixedData\n * @returns {CodecName}\n */\nfunction getNameFromData (prefixedData) {\n const code = /** @type {CodecCode} */(varint.decode(/** @type {Buffer} */(prefixedData)))\n const name = codeToName[code]\n if (name === undefined) {\n throw new Error(`Code \"${code}\" not found`)\n }\n return name\n}\n\n/**\n * Get the codec name from a code.\n *\n * @param {CodecCode} codec\n * @returns {CodecName}\n */\nfunction getNameFromCode (codec) {\n return codeToName[codec]\n}\n\n/**\n * Get the code of the codec\n *\n * @param {CodecName} name\n * @returns {CodecCode}\n */\nfunction getCodeFromName (name) {\n const code = nameToCode[name]\n if (code === undefined) {\n throw new Error(`Codec \"${name}\" not found`)\n }\n return code\n}\n\n/**\n * Get the code of the prefixed data.\n *\n * @param {Uint8Array} prefixedData\n * @returns {CodecCode}\n */\nfunction getCodeFromData (prefixedData) {\n return /** @type {CodecCode} */(varint.decode(/** @type {Buffer} */(prefixedData)))\n}\n\n/**\n * Get the code as varint of a codec name.\n *\n * @param {CodecName} name\n * @returns {Uint8Array}\n */\nfunction getVarintFromName (name) {\n const code = nameToVarint[name]\n if (code === undefined) {\n throw new Error(`Codec \"${name}\" not found`)\n }\n return code\n}\n\n/**\n * Get the varint of a code.\n *\n * @param {CodecCode} code\n * @returns {Uint8Array}\n */\nfunction getVarintFromCode (code) {\n return util.varintEncode(code)\n}\n\n/**\n * Get the codec name of the prefixed data.\n *\n * @deprecated use getNameFromData instead.\n * @param {Uint8Array} prefixedData\n * @returns {CodecName}\n */\nfunction getCodec (prefixedData) {\n return getNameFromData(prefixedData)\n}\n\n/**\n * Get the codec name from a code.\n *\n * @deprecated use getNameFromCode instead.\n * @param {CodecCode} codec\n * @returns {CodecName}\n */\nfunction getName (codec) {\n return getNameFromCode(codec)\n}\n\n/**\n * Get the code of the codec\n *\n * @deprecated use getCodeFromName instead.\n * @param {CodecName} name\n * @returns {CodecCode}\n */\nfunction getNumber (name) {\n return getCodeFromName(name)\n}\n\n/**\n * Get the code of the prefixed data.\n *\n * @deprecated use getCodeFromData instead.\n * @param {Uint8Array} prefixedData\n * @returns {CodecCode}\n */\nfunction getCode (prefixedData) {\n return getCodeFromData(prefixedData)\n}\n\n/**\n * Get the code as varint of a codec name.\n *\n * @deprecated use getVarintFromName instead.\n * @param {CodecName} name\n * @returns {Uint8Array}\n */\nfunction getCodeVarint (name) {\n return getVarintFromName(name)\n}\n\n/**\n * Get the varint of a code.\n *\n * @deprecated use getVarintFromCode instead.\n * @param {CodecCode} code\n * @returns {Array.<number>}\n */\nfunction getVarint (code) {\n return Array.from(getVarintFromCode(code))\n}\n\nmodule.exports = {\n addPrefix,\n rmPrefix,\n getNameFromData,\n getNameFromCode,\n getCodeFromName,\n getCodeFromData,\n getVarintFromName,\n getVarintFromCode,\n // Deprecated\n getCodec,\n getName,\n getNumber,\n getCode,\n getCodeVarint,\n getVarint,\n // Make the constants top-level constants\n ...constantToCode,\n // Export the maps\n nameToVarint,\n nameToCode,\n codeToName\n}\n","import * as u8a from \"uint8arrays\";\nimport multicodec from \"multicodec\";\nimport { base58btc } from \"multiformats/bases/base58\";\nexport function ECPointCompress(x, y) {\n const out = new Uint8Array(x.length + 1);\n out[0] = 2 + (y[y.length - 1] & 1);\n out.set(x, 1);\n return out;\n}\nexport function compressedKeyInHexfromRaw(publicKeyHex) {\n const xHex = publicKeyHex.slice(0, publicKeyHex.length / 2);\n const yHex = publicKeyHex.slice(publicKeyHex.length / 2, publicKeyHex.length);\n const xOctet = u8a.fromString(xHex, \"base16\");\n const yOctet = u8a.fromString(yHex, \"base16\");\n const compressedPoint = ECPointCompress(xOctet, yOctet);\n const compressedPointHex = u8a.toString(compressedPoint, \"base16\");\n return compressedPointHex;\n}\nexport function uncompressedKeyInHexfromRaw(publicKeyHex) {\n return \"04\" + publicKeyHex;\n}\nexport function rawKeyInHexfromUncompressed(publicKeyHex) {\n return publicKeyHex.slice(2);\n}\nexport function pubKeyHexToUint8Array(publicKeyHex) {\n if (publicKeyHex == null) {\n throw new TypeError(\"input cannot be null or undefined.\");\n }\n if (publicKeyHex.length % 2 === 0) {\n return u8a.fromString(publicKeyHex, \"base16\");\n }\n else {\n return u8a.fromString(\"0\" + publicKeyHex, \"base16\");\n }\n}\nexport function didKeyIDtoPubKeyHex(didKeyID) {\n const buf = base58btc.decode(didKeyID);\n const bufwoPrefix = multicodec.rmPrefix(buf);\n return u8a.toString(bufwoPrefix, \"base16\");\n}\nexport function didKeyURLtoPubKeyHex(didKeyURL) {\n const didKeyID = didKeyURL.split(\":\")[2];\n return didKeyIDtoPubKeyHex(didKeyID);\n}\n//# sourceMappingURL=did_key_utils.js.map","import * as u8a from \"uint8arrays\";\nimport multicodec from \"multicodec\";\nimport { base58btc } from \"multiformats/bases/base58\";\nexport function encodeDIDfromHexString(multicodecName, publicKeyHex) {\n const publicKey = u8a.fromString(publicKeyHex, \"base16\");\n const didKey = encodeDIDfromBytes(multicodecName, publicKey);\n return didKey;\n}\nexport function encodeDIDfromBytes(multicodecName, publicKey) {\n const publicKeywPrefix = multicodec.addPrefix(multicodecName, publicKey);\n const bufAsString = base58btc.encode(publicKeywPrefix);\n return `did:key:${bufAsString}`;\n}\n//# sourceMappingURL=encodeDIDkey.js.map","import { type JsonWebKeyPairStorage, type JwkKeyPair } from './index.js';\n\nexport class BrowserKeyStorage implements JsonWebKeyPairStorage {\n static #DB_NAME = 'browserKeyDB';\n static #STORE_NAME = 'keyPairs';\n static #KEY = 'keyPair';\n\n #db: Promise<IDBDatabase>;\n constructor() {\n this.#db = new Promise((resolve, reject) => {\n const req = indexedDB.open(BrowserKeyStorage.#DB_NAME, 1);\n req.onupgradeneeded = () => {\n req.result.createObjectStore(BrowserKeyStorage.#STORE_NAME);\n };\n req.onsuccess = () => resolve(req.result);\n req.onerror = () => reject(req.error as Error);\n });\n }\n\n async #useStore(mode: IDBTransactionMode = 'readwrite') {\n const database = await this.#db;\n const transaction = database.transaction(\n BrowserKeyStorage.#STORE_NAME,\n mode,\n );\n const store = transaction.objectStore(BrowserKeyStorage.#STORE_NAME);\n return store;\n }\n\n async saveKeyPair(keyPair: JwkKeyPair) {\n const store = await this.#useStore();\n const request = store.put(keyPair, BrowserKeyStorage.#KEY);\n return new Promise<void>((resolve, reject) => {\n request.onsuccess = () => {\n resolve();\n };\n request.onerror = () => {\n reject(new Error('Failed to save key pair'));\n };\n });\n }\n\n async loadKeyPair(): Promise<JwkKeyPair | undefined> {\n const store = await this.#useStore('readonly');\n const request = store.getAll();\n\n return new Promise<JwkKeyPair | undefined>((resolve, reject) => {\n request.onsuccess = () => {\n const keyPair = request.result.length\n ? (request.result[0] as JwkKeyPair)\n : undefined;\n resolve(keyPair);\n };\n request.onerror = () => {\n reject(new Error('Failed to load key pair'));\n };\n });\n }\n}\n","/* eslint-disable no-unused-private-class-members */\nimport {\n RENOWN_CHAIN_ID,\n RENOWN_NETWORK_ID,\n} from '@powerhousedao/reactor-browser/renown/constants';\nimport { createAuthBearerToken } from '@renown/sdk';\nimport { bytesToBase64url } from 'did-jwt';\nimport type { Issuer } from 'did-jwt-vc';\nimport {\n compressedKeyInHexfromRaw,\n encodeDIDfromHexString,\n rawKeyInHexfromUncompressed,\n} from 'did-key-creator';\nimport { fromString } from 'uint8arrays';\n\nimport { childLogger } from 'document-drive';\n\nconst logger = childLogger(['connect', 'crypto']);\nexport type JwkKeyPair = {\n publicKey: JsonWebKey;\n privateKey: JsonWebKey;\n};\n\nexport interface JsonWebKeyPairStorage {\n loadKeyPair(): Promise<JwkKeyPair | undefined>;\n saveKeyPair(keyPair: JwkKeyPair): Promise<void>;\n}\n\nfunction ab2hex(ab: ArrayBuffer) {\n return Array.prototype.map\n .call(new Uint8Array(ab), (x: number) =>\n ('00' + x.toString(16)).slice(-2),\n )\n .join('');\n}\n\nexport interface IConnectCrypto {\n did: () => Promise<DID>;\n regenerateDid(): Promise<void>;\n sign: (data: Uint8Array) => Promise<Uint8Array>;\n getIssuer: () => Promise<Issuer>;\n getBearerToken: (\n driveUrl: string,\n address: string | undefined,\n refresh?: boolean,\n ) => Promise<string>;\n}\n\nexport type DID = `did:key:${string}`;\n\nexport class ConnectCrypto implements IConnectCrypto {\n #subtleCrypto: Promise<SubtleCrypto>;\n #keyPair: CryptoKeyPair | undefined;\n #keyPairStorage: JsonWebKeyPairStorage;\n\n #did: Promise<DID>;\n #bearerToken: string | undefined;\n\n static algorithm: EcKeyAlgorithm = {\n name: 'ECDSA',\n namedCurve: 'P-256',\n };\n\n static signAlgorithm = {\n name: 'ECDSA',\n namedCurve: 'P-256',\n hash: 'SHA-256',\n };\n\n constructor(keyPairStorage: JsonWebKeyPairStorage) {\n this.#keyPairStorage = keyPairStorage;\n\n // Initializes the subtleCrypto module according to the host environment\n this.#subtleCrypto = this.#initCrypto();\n\n this.#did = this.#initialize();\n }\n\n #initCrypto() {\n return new Promise<SubtleCrypto>((resolve, reject) => {\n if (typeof window === 'undefined') {\n import('node:crypto')\n .then(module => {\n resolve(module.webcrypto.subtle as SubtleCrypto);\n })\n .catch(reject);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!window.crypto?.subtle) {\n reject(new Error('Crypto module not available'));\n }\n resolve(window.crypto.subtle);\n }\n });\n }\n\n // loads the key pair from storage or generates a new one if none is stored\n async #initialize() {\n const loadedKeyPair = await this.#keyPairStorage.loadKeyPair();\n if (loadedKeyPair) {\n this.#keyPair = await this.#importKeyPair(loadedKeyPair);\n logger.debug('Found key pair');\n } else {\n this.#keyPair = await this.#generateECDSAKeyPair();\n logger.debug('Created key pair');\n await this.#keyPairStorage.saveKeyPair(await this.#exportKeyPair());\n }\n const did = await this.#parseDid();\n logger.debug('Connect DID:', did);\n return did;\n }\n\n async getBearerToken(\n driveUrl: string,\n address: string | undefined,\n refresh = false,\n ) {\n const issuer = await this.getIssuer();\n if (refresh || !this.#bearerToken) {\n this.#bearerToken = await createAuthBearerToken(\n Number(RENOWN_CHAIN_ID),\n RENOWN_NETWORK_ID,\n address || (await this.#did),\n issuer,\n );\n }\n\n return this.#bearerToken;\n }\n\n did() {\n return this.#did;\n }\n\n async regenerateDid() {\n this.#keyPair = await this.#generateECDSAKeyPair();\n await this.#keyPairStorage.saveKeyPair(await this.#exportKeyPair());\n }\n\n async #parseDid(): Promise<DID> {\n if (!this.#keyPair) {\n throw new Error('No key pair available');\n }\n\n const subtleCrypto = await this.#subtleCrypto;\n const publicKeyRaw = await subtleCrypto.exportKey(\n 'raw',\n this.#keyPair.publicKey,\n );\n\n const multicodecName = 'p256-pub';\n const rawKey = rawKeyInHexfromUncompressed(ab2hex(publicKeyRaw));\n const compressedKey = compressedKeyInHexfromRaw(rawKey);\n const did = encodeDIDfromHexString(multicodecName, compressedKey);\n return did as DID;\n }\n\n async #generateECDSAKeyPair() {\n const subtleCrypto = await this.#subtleCrypto;\n const keyPair = await subtleCrypto.generateKey(\n ConnectCrypto.algorithm,\n true,\n ['sign', 'verify'],\n );\n return keyPair;\n }\n\n async #exportKeyPair(): Promise<JwkKeyPair> {\n if (!this.#keyPair) {\n throw new Error('No key pair available');\n }\n const subtleCrypto = await this.#subtleCrypto;\n const jwkKeyPair = {\n publicKey: await subtleCrypto.exportKey(\n 'jwk',\n this.#keyPair.publicKey,\n ),\n privateKey: await subtleCrypto.exportKey(\n 'jwk',\n this.#keyPair.privateKey,\n ),\n };\n return jwkKeyPair;\n }\n\n async #importKeyPair(jwkKeyPair: JwkKeyPair): Promise<CryptoKeyPair> {\n const subtleCrypto = await this.#subtleCrypto;\n return {\n publicKey: await subtleCrypto.importKey(\n 'jwk',\n jwkKeyPair.publicKey,\n ConnectCrypto.algorithm,\n true,\n ['verify'],\n ),\n privateKey: await subtleCrypto.importKey(\n 'jwk',\n jwkKeyPair.privateKey,\n ConnectCrypto.algorithm,\n true,\n ['sign'],\n ),\n };\n }\n\n #sign = async (\n ...args: Parameters<SubtleCrypto['sign']>\n ): Promise<ArrayBuffer> => {\n return (await this.#subtleCrypto).sign(...args);\n };\n\n #verify = async (\n ...args: Parameters<SubtleCrypto['verify']>\n ): Promise<boolean> => {\n return (await this.#subtleCrypto).verify(...args);\n };\n\n #stringToBytes(s: string): Uint8Array {\n return fromString(s, 'utf-8');\n }\n\n async sign(data: Uint8Array | string): Promise<Uint8Array> {\n if (this.#keyPair?.privateKey) {\n const dataBytes: Uint8Array =\n typeof data === 'string' ? this.#stringToBytes(data) : data;\n\n const subtleCrypto = await this.#subtleCrypto;\n\n const arrayBuffer = await subtleCrypto.sign(\n ConnectCrypto.signAlgorithm,\n this.#keyPair.privateKey,\n dataBytes.buffer as ArrayBuffer,\n );\n\n return new Uint8Array(arrayBuffer);\n } else {\n throw new Error('No private key available');\n }\n }\n\n async getIssuer(): Promise<Issuer> {\n if (!this.#keyPair?.privateKey) {\n throw new Error('No private key available');\n }\n\n return {\n did: await this.#did,\n signer: async (data: string | Uint8Array) => {\n const signature = await this.sign(\n typeof data === 'string'\n ? new TextEncoder().encode(data)\n : data,\n );\n return bytesToBase64url(signature);\n },\n alg: 'ES256',\n };\n }\n}\nexport * from './browser.js';\n// export * from './electron.js';\n"],"file":"assets/index.C9DqZU_M.js"}
|