ns-auth-sdk 1.14.0 → 1.14.2

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.
Files changed (153) hide show
  1. package/dist/{cjs-CSUAVztq.cjs → browser-index.cjs} +5476 -296
  2. package/dist/browser-index.cjs.map +1 -0
  3. package/dist/browser-index.d.cts +1998 -0
  4. package/dist/browser-index.d.cts.map +1 -0
  5. package/dist/browser-index.d.mts +1998 -0
  6. package/dist/browser-index.d.mts.map +1 -0
  7. package/dist/{cjs-sm5h7qxv.mjs → browser-index.mjs} +5169 -69
  8. package/dist/browser-index.mjs.map +1 -0
  9. package/dist/{group-coordination-BlFpBVpn.mjs → group-coordination-BV6PKlKp.mjs} +1 -1
  10. package/dist/{group-coordination-BlFpBVpn.mjs.map → group-coordination-BV6PKlKp.mjs.map} +1 -1
  11. package/dist/{group-coordination-ImuoJEoy.mjs → group-coordination-BytkmY9j.mjs} +1 -1
  12. package/dist/{group-coordination-LGIyipaX.cjs → group-coordination-DL39hJ3R.cjs} +1 -1
  13. package/dist/{group-coordination-LGIyipaX.cjs.map → group-coordination-DL39hJ3R.cjs.map} +1 -1
  14. package/dist/{group-coordination-Cf18OjZt.cjs → group-coordination-DLban6a7.cjs} +1 -1
  15. package/dist/index.cjs +8899 -41
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts.map +1 -1
  18. package/dist/index.mjs +9072 -213
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/{prf-handler-D3EqUNWe.cjs → prf-handler-BNd7gmXJ.cjs} +1 -1
  21. package/dist/{prf-handler-D3EqUNWe.cjs.map → prf-handler-BNd7gmXJ.cjs.map} +1 -1
  22. package/dist/prf-handler-CRMgzJG2.cjs +3 -0
  23. package/dist/{prf-handler-Dly_WZGn.mjs → prf-handler-DG99ZkS2.mjs} +1 -1
  24. package/dist/{prf-handler-Db8CsoIP.mjs → prf-handler-Dj2WTO9i.mjs} +1 -1
  25. package/dist/{prf-handler-Db8CsoIP.mjs.map → prf-handler-Dj2WTO9i.mjs.map} +1 -1
  26. package/dist/zkm.service-Bv88tVS5.mjs +3 -0
  27. package/dist/zkm.service-D2BZ_aqA.cjs +3 -0
  28. package/dist/{zkm.service-DfSPbuOl.cjs → zkm.service-DX06sSfB.cjs} +1 -1
  29. package/dist/{zkm.service-DfSPbuOl.cjs.map → zkm.service-DX06sSfB.cjs.map} +1 -1
  30. package/dist/{zkm.service-B24N_0FB.mjs → zkm.service-j0HlN7Oq.mjs} +1 -1
  31. package/dist/{zkm.service-B24N_0FB.mjs.map → zkm.service-j0HlN7Oq.mjs.map} +1 -1
  32. package/package.json +19 -6
  33. package/dist/_esm-C7FRLTj2.cjs +0 -9030
  34. package/dist/_esm-C7FRLTj2.cjs.map +0 -1
  35. package/dist/_esm-D_oMW5T5.mjs +0 -9028
  36. package/dist/_esm-D_oMW5T5.mjs.map +0 -1
  37. package/dist/base64-js-B8y7dH5k.mjs +0 -93
  38. package/dist/base64-js-B8y7dH5k.mjs.map +0 -1
  39. package/dist/base64-js-Tm-kCeud.cjs +0 -98
  40. package/dist/base64-js-Tm-kCeud.cjs.map +0 -1
  41. package/dist/ccip-157tdxqP.cjs +0 -7947
  42. package/dist/ccip-157tdxqP.cjs.map +0 -1
  43. package/dist/ccip-BEMMdVyd.cjs +0 -4
  44. package/dist/ccip-BSmCdJ3K.mjs +0 -3
  45. package/dist/ccip-okqXkslP.mjs +0 -6567
  46. package/dist/ccip-okqXkslP.mjs.map +0 -1
  47. package/dist/chains-CTeD2UcS.mjs +0 -33
  48. package/dist/chains-CTeD2UcS.mjs.map +0 -1
  49. package/dist/chains-Du-lv_5i.cjs +0 -33
  50. package/dist/chains-Du-lv_5i.cjs.map +0 -1
  51. package/dist/chunk-Bnu9O96Y.cjs +0 -60
  52. package/dist/chunk-CVYhg9ik.mjs +0 -45
  53. package/dist/cjs-CSUAVztq.cjs.map +0 -1
  54. package/dist/cjs-sm5h7qxv.mjs.map +0 -1
  55. package/dist/defineChain-7QG67hYU.cjs +0 -30
  56. package/dist/defineChain-7QG67hYU.cjs.map +0 -1
  57. package/dist/defineChain-DBem8ZQY.mjs +0 -24
  58. package/dist/defineChain-DBem8ZQY.mjs.map +0 -1
  59. package/dist/dist-BPmSxkxc.cjs +0 -10676
  60. package/dist/dist-BPmSxkxc.cjs.map +0 -1
  61. package/dist/dist-BSjH4t6s.cjs +0 -12932
  62. package/dist/dist-BSjH4t6s.cjs.map +0 -1
  63. package/dist/dist-C-KjTK4Q.cjs +0 -447
  64. package/dist/dist-C-KjTK4Q.cjs.map +0 -1
  65. package/dist/dist-C2h97xM-.mjs +0 -355
  66. package/dist/dist-C2h97xM-.mjs.map +0 -1
  67. package/dist/dist-CT7grDWb.mjs +0 -12920
  68. package/dist/dist-CT7grDWb.mjs.map +0 -1
  69. package/dist/dist-D7fRmK6G.mjs +0 -10632
  70. package/dist/dist-D7fRmK6G.mjs.map +0 -1
  71. package/dist/dist-DlmcyFmM.mjs +0 -16951
  72. package/dist/dist-DlmcyFmM.mjs.map +0 -1
  73. package/dist/dist-O0uZr5OF.cjs +0 -17122
  74. package/dist/dist-O0uZr5OF.cjs.map +0 -1
  75. package/dist/echo-BB-JgAYZ.cjs +0 -339
  76. package/dist/echo-BB-JgAYZ.cjs.map +0 -1
  77. package/dist/echo-Bwy4_Cvh.mjs +0 -316
  78. package/dist/echo-Bwy4_Cvh.mjs.map +0 -1
  79. package/dist/echo-D6X2IuNW.cjs +0 -9
  80. package/dist/echo-DvfG_heb.mjs +0 -8
  81. package/dist/esm-BcHKCX5i.mjs +0 -569
  82. package/dist/esm-BcHKCX5i.mjs.map +0 -1
  83. package/dist/esm-Bh_YwFIz.cjs +0 -599
  84. package/dist/esm-Bh_YwFIz.cjs.map +0 -1
  85. package/dist/esm-C0XO9TQm.cjs +0 -30449
  86. package/dist/esm-C0XO9TQm.cjs.map +0 -1
  87. package/dist/esm-vMUVj9k4.mjs +0 -30440
  88. package/dist/esm-vMUVj9k4.mjs.map +0 -1
  89. package/dist/keyset-CKMQXvsb.mjs +0 -172
  90. package/dist/keyset-CKMQXvsb.mjs.map +0 -1
  91. package/dist/keyset-Cxdgu110.cjs +0 -237
  92. package/dist/keyset-Cxdgu110.cjs.map +0 -1
  93. package/dist/keyset-DLxpGhdu.cjs +0 -6
  94. package/dist/keyset-IKjlhvqF.mjs +0 -4
  95. package/dist/node-3EUJ4ga9.cjs +0 -9
  96. package/dist/node-C2UpE11T.cjs +0 -444
  97. package/dist/node-C2UpE11T.cjs.map +0 -1
  98. package/dist/node-CHdpTQdN.mjs +0 -8679
  99. package/dist/node-CHdpTQdN.mjs.map +0 -1
  100. package/dist/node-DQt1CVGl.mjs +0 -6
  101. package/dist/node-Dy8ww1LG.cjs +0 -8680
  102. package/dist/node-Dy8ww1LG.cjs.map +0 -1
  103. package/dist/node-IX55IH6z.mjs +0 -397
  104. package/dist/node-IX55IH6z.mjs.map +0 -1
  105. package/dist/nostr-BTOpBN_5.cjs +0 -11
  106. package/dist/nostr-D4E52XRU.mjs +0 -224
  107. package/dist/nostr-D4E52XRU.mjs.map +0 -1
  108. package/dist/nostr-Hv2tsnuI.cjs +0 -272
  109. package/dist/nostr-Hv2tsnuI.cjs.map +0 -1
  110. package/dist/nostr-ZwJe_DlZ.mjs +0 -4
  111. package/dist/pako.esm-DTVnlCJh.cjs +0 -3856
  112. package/dist/pako.esm-DTVnlCJh.cjs.map +0 -1
  113. package/dist/pako.esm-ORhkEHM2.mjs +0 -3838
  114. package/dist/pako.esm-ORhkEHM2.mjs.map +0 -1
  115. package/dist/peer-B9g3OQ5D.cjs +0 -18
  116. package/dist/peer-CptDj7zu.mjs +0 -745
  117. package/dist/peer-CptDj7zu.mjs.map +0 -1
  118. package/dist/peer-CtqL0yiE.mjs +0 -9
  119. package/dist/peer-XrPL0O6z.cjs +0 -822
  120. package/dist/peer-XrPL0O6z.cjs.map +0 -1
  121. package/dist/ping-BXKREIdI.mjs +0 -7
  122. package/dist/ping-BtVhKocl.cjs +0 -379
  123. package/dist/ping-BtVhKocl.cjs.map +0 -1
  124. package/dist/ping-D5fpMhGC.cjs +0 -11
  125. package/dist/ping-DOD50kW_.mjs +0 -332
  126. package/dist/ping-DOD50kW_.mjs.map +0 -1
  127. package/dist/policy-8HcjulLD.cjs +0 -293
  128. package/dist/policy-8HcjulLD.cjs.map +0 -1
  129. package/dist/policy-BA6MEOBY.mjs +0 -5
  130. package/dist/policy-BFNdXvmM.cjs +0 -11
  131. package/dist/policy-D_nFHHjo.mjs +0 -228
  132. package/dist/policy-D_nFHHjo.mjs.map +0 -1
  133. package/dist/prf-handler-BNiyCQMt.cjs +0 -3
  134. package/dist/src-CVfTUJQl.mjs +0 -822
  135. package/dist/src-CVfTUJQl.mjs.map +0 -1
  136. package/dist/src-D5S86Xpf.cjs +0 -827
  137. package/dist/src-D5S86Xpf.cjs.map +0 -1
  138. package/dist/types-B-TLIS13.cjs +0 -212
  139. package/dist/types-B-TLIS13.cjs.map +0 -1
  140. package/dist/types-CTm_FHYD.mjs +0 -111
  141. package/dist/types-CTm_FHYD.mjs.map +0 -1
  142. package/dist/validation-1xwWVXqE.mjs +0 -3
  143. package/dist/validation-DnpurN79.cjs +0 -405
  144. package/dist/validation-DnpurN79.cjs.map +0 -1
  145. package/dist/validation-IsAUvsvy.mjs +0 -334
  146. package/dist/validation-IsAUvsvy.mjs.map +0 -1
  147. package/dist/validation-yCvZCqIs.cjs +0 -6
  148. package/dist/wrapper-C5NpyacC.cjs +0 -3552
  149. package/dist/wrapper-C5NpyacC.cjs.map +0 -1
  150. package/dist/wrapper-CHq_CV4J.mjs +0 -3552
  151. package/dist/wrapper-CHq_CV4J.mjs.map +0 -1
  152. package/dist/zkm.service-BrXyI4BS.mjs +0 -3
  153. package/dist/zkm.service-BvQ01wSH.cjs +0 -3
@@ -1 +0,0 @@
1
- {"version":3,"file":"dist-D7fRmK6G.mjs","names":["data","size","is_hex","hex","num","ec","dc","str","size","hexToBytes","buffer","i","num","bytesToHex","data","base64","base64urlnopad","bech32","bech32m","_0n","_255n","_256n","big","size","buffer","num","i","i","num","num","size","buffer","i","size","data","buffer","i","arr","bigint_replacer","bigint_reviver","parse_data","data","util.set_buffer","size","util.join_array","hexToBytes","Buff","buffer","fmt.strToBytes","fmt.bytesToStr","util.is_bytes","util.is_hex","size","data","fmt.buffer_data","fmt.bytesToNum","fmt.bytesToBig","fmt.bytesToBin","util.bigint_reviver","str","encoder.Bech32","encoder.Bech32m","fmt.bytesToHex","util.join_array","hex","num","fmt.binToBytes","util.bigint_replacer","decode","util.parse_data","get_pubkey","Buff","pubkey","sign_msg","Buff","template","pubkey","util","data","i","defaultErrorMap","defaultErrorMap","isValid","isValid","errorMap","data","regex","base64","ctx","i","result","issues","elements","size","defaultErrorMap","processed","r","z","big","z.bigint","bool","z.boolean","date","z.date","num","z.number","uint","str","z.string","stamp","any","z.any","hex","literal","z.union","z.null","hex20","hex32","hex64","base58","base64","bech32","base","template","z.object","base","z.tuple","Assert","exists","size","Buff","now","parse_error","config","Util.now","pubkey","get_pubkey","payload","template","sign_msg","Schema","get_pubkey","template","data","Schema","envelope","CONST.DEBUG","Schema","is_hex","is_bytes","Assert","within_size","data","size","is_hex","hex","is_bytes","str","num","_0n","big","size","buffer","num","i","num","size","buffer","i","size","buffer","i","num","size","data","buffer","i","arr","i","num","str_to_bytes","str","size","Lib.bin_to_bytes","data","Lib.str_to_bytes","Lib.bigint_replacer","str","Lib.buffer","payload","Lib.split_bytes","i","Lib.get_random_bytes","Lib.bytes_to_big","Lib.bytes_to_hex","Lib.bigint_reviver","Lib.bytes_to_str","Lib.bytes_to_num","Lib.bytes_to_bin","Lib.join_bytes","hex","num","_P","_N","Field","POINT","secp256k1","CONST","_N","str","pubkey","POINT","_N","sha256","size","sha256","data","CONST","secp256k1","hex","H.H3","get_pubkey","G.ScalarBaseMulti","G.SerializeElement","convert_pubkey","pubkey","G.SerializeScalar","H.H4","H.H5","H.H1","G.DeserializeElement","G.ScalarMulti","G.ElementAdd","G.SerializeElement","_N","G.ScalarBaseMulti","G.ElementAdd","pubkey","share","idx","i","pubkey","G.SerializeElement","G.ElementAdd","i","G.ScalarBaseMulti","i","share","share","_N","get_pubkey","G.ScalarMulti","G.ElementAdd","G.ScalarBaseMulti","z.bigint","z.boolean","z.date","z.number","z.string","z.any","z.union","z.null","z.lazy","z.array","z.record","hex","base64","base64url","bech32","z.object","z.boolean","config","base","z.enum","z.object","z.map","base","z.function","z.boolean","peer","commit","z.object","base","z.array","pkg","base","z","Schema","json","now","exists","size","Buff","schema","is_hex","Buff","pubkey","data","group","share","middleware","envelope","envelope","envelope","now","pubkey","policy","json","Schema","commit","share","Buff","group","Buff","commit","pubkey","share","now","Schema","group","template","session","Buff","commit","share","pubkey","share","psig_entry","middleware","envelope","template","session","pubkey","share","Buff","EventEmitter","payload","group","share","Buff","session","pubkey","payload","i","data","padding","alphabet","decode","str","url","mid","schnorr","bytesToHex2","hexToBytes2","sha256","json","pubkey","data","payload","bytesToHex3","hexToBytes3","hex","hexToBytes4","secp256k1","randomBytes","unsigned","sha2562","bytesToHex4","hkdf_extract","sha2563","secp256k12","hexToBytes5","hkdf_expand","num","concatBytes2","base642","randomBytes2","tags","bech322","buffer","sha2564","hexToBytes6","bytesToHex5","base643","bytesToHex6","sha2565","Util.now","Util.parse_error","cache","options","signed","Buff","get_pubkey","get_node_config","sub","pub","pubkey","config","envelope","EventEmitter","group","share","parse_error","pubkey","API.ecdh_request_api","API.echo_request_api","API.ping_request_api","API.sign_queue_api","API.sign_request_api","data","config","Schema","now","policy","Buff","str","CONST.GROUP_THOLD_SIZE","CONST.GROUP_PUBKEY_SIZE","data","CONST.COMMIT_PUBKEY_SIZE","CONST.COMMIT_DATA_SIZE","i","CONST.COMMIT_INDEX_SIZE","CONST.COMMIT_PNONCE_SIZE","pubkey","data","CONST.SHARE_DATA_SIZE","Buff","CONST.SHARE_INDEX_SIZE","CONST.SHARE_SECKEY_SIZE","CONST.SHARE_SNONCE_SIZE","GroupEncoder.encode_group_pkg","GroupEncoder.decode_group_pkg","GroupEncoder.serialize_group_data","GroupEncoder.deserialize_group_data","ShareEncoder.encode_share_pkg","ShareEncoder.decode_share_pkg","ShareEncoder.serialize_share_data","ShareEncoder.deserialize_share_data"],"sources":["../node_modules/@cmdcode/buff/dist/assert.js","../node_modules/@cmdcode/buff/dist/format/str.js","../node_modules/@cmdcode/buff/dist/encode.js","../node_modules/@cmdcode/buff/dist/format/big.js","../node_modules/@cmdcode/buff/dist/format/bin.js","../node_modules/@cmdcode/buff/dist/format/num.js","../node_modules/@cmdcode/buff/dist/utils.js","../node_modules/@cmdcode/buff/dist/format/buffer.js","../node_modules/@cmdcode/buff/dist/buff.js","../node_modules/@cmdcode/nostr-p2p/dist/lib/crypto.js","../node_modules/@cmdcode/nostr-p2p/dist/lib/util.js","../node_modules/zod/v3/helpers/util.js","../node_modules/zod/v3/ZodError.js","../node_modules/zod/v3/locales/en.js","../node_modules/zod/v3/errors.js","../node_modules/zod/v3/helpers/parseUtil.js","../node_modules/zod/v3/helpers/errorUtil.js","../node_modules/zod/v3/types.js","../node_modules/zod/v3/external.js","../node_modules/zod/index.js","../node_modules/@cmdcode/nostr-p2p/dist/schema/base.js","../node_modules/@cmdcode/nostr-p2p/dist/schema/event.js","../node_modules/@cmdcode/nostr-p2p/dist/schema/msg.js","../node_modules/@cmdcode/nostr-p2p/dist/schema/index.js","../node_modules/@cmdcode/nostr-p2p/dist/util/assert.js","../node_modules/@cmdcode/nostr-p2p/dist/util/helpers.js","../node_modules/@cmdcode/nostr-p2p/dist/lib/event.js","../node_modules/@cmdcode/nostr-p2p/dist/const.js","../node_modules/@cmdcode/nostr-p2p/dist/lib/message.js","../node_modules/@cmdcode/nostr-p2p/dist/lib/validate.js","../node_modules/@vbyte/buff/dist/util/validate.js","../node_modules/@vbyte/buff/dist/util/error.js","../node_modules/@vbyte/buff/dist/util/assert.js","../node_modules/@vbyte/buff/dist/lib/big.js","../node_modules/@vbyte/buff/dist/lib/num.js","../node_modules/@vbyte/buff/dist/lib/hex.js","../node_modules/@vbyte/buff/dist/lib/bytes.js","../node_modules/@vbyte/buff/dist/lib/bin.js","../node_modules/@vbyte/buff/dist/lib/str.js","../node_modules/@vbyte/buff/dist/lib/rand.js","../node_modules/@vbyte/buff/dist/class/buff.js","../node_modules/@cmdcode/frost/dist/const.js","../node_modules/@cmdcode/frost/dist/ecc/util.js","../node_modules/@cmdcode/frost/dist/ecc/hash.js","../node_modules/@cmdcode/frost/dist/util/assert.js","../node_modules/@cmdcode/frost/dist/util/helpers.js","../node_modules/@cmdcode/frost/dist/ecc/group.js","../node_modules/@cmdcode/frost/dist/lib/helpers.js","../node_modules/@cmdcode/frost/dist/lib/commit.js","../node_modules/@cmdcode/frost/dist/types/ecc.js","../node_modules/@cmdcode/frost/dist/ecc/state.js","../node_modules/@cmdcode/frost/dist/lib/context.js","../node_modules/@cmdcode/frost/dist/lib/poly.js","../node_modules/@cmdcode/frost/dist/lib/ecdh.js","../node_modules/@cmdcode/frost/dist/lib/vss.js","../node_modules/@cmdcode/frost/dist/lib/shares.js","../node_modules/@cmdcode/frost/dist/lib/group.js","../node_modules/@cmdcode/frost/dist/lib/sign.js","../node_modules/@frostr/bifrost/dist/lib/ecdh.js","../node_modules/@frostr/bifrost/dist/schema/base.js","../node_modules/@frostr/bifrost/dist/schema/peer.js","../node_modules/@frostr/bifrost/dist/schema/node.js","../node_modules/@frostr/bifrost/dist/schema/pkg.js","../node_modules/@frostr/bifrost/dist/schema/sign.js","../node_modules/@frostr/bifrost/dist/schema/index.js","../node_modules/@frostr/bifrost/dist/lib/parse.js","../node_modules/@frostr/bifrost/dist/util/helpers.js","../node_modules/@frostr/bifrost/dist/util/assert.js","../node_modules/@frostr/bifrost/dist/util/crypto.js","../node_modules/@frostr/bifrost/dist/util/parse.js","../node_modules/@frostr/bifrost/dist/lib/util.js","../node_modules/@frostr/bifrost/dist/const.js","../node_modules/@frostr/bifrost/dist/lib/peer.js","../node_modules/@frostr/bifrost/dist/api/ecdh.js","../node_modules/@frostr/bifrost/dist/api/echo.js","../node_modules/@frostr/bifrost/dist/api/ping.js","../node_modules/@frostr/bifrost/dist/lib/sighash.js","../node_modules/@frostr/bifrost/dist/lib/group.js","../node_modules/@frostr/bifrost/dist/lib/session.js","../node_modules/@frostr/bifrost/dist/lib/sign.js","../node_modules/@frostr/bifrost/dist/api/sign.js","../node_modules/@frostr/bifrost/dist/api/index.js","../node_modules/@frostr/bifrost/dist/lib/pkg.js","../node_modules/@frostr/bifrost/dist/lib/index.js","../node_modules/@frostr/bifrost/dist/class/emitter.js","../node_modules/@frostr/bifrost/dist/class/signer.js","../node_modules/@frostr/bifrost/dist/class/queue.js","../node_modules/@cmdcode/nostr-p2p/dist/class/emitter.js","../node_modules/nostr-tools/node_modules/@scure/base/index.js","../node_modules/nostr-tools/lib/esm/index.js","../node_modules/@cmdcode/nostr-p2p/dist/class/client.js","../node_modules/@frostr/bifrost/dist/class/client.js","../node_modules/@frostr/bifrost/dist/encoder/group.js","../node_modules/@frostr/bifrost/dist/encoder/share.js","../node_modules/@frostr/bifrost/dist/encoder/index.js"],"sourcesContent":["export function within_size(data, size) {\n if (data.length > size) {\n throw new TypeError(`Data is larger than array size: ${data.length} > ${size}`);\n }\n}\nexport function is_hex(hex) {\n if (hex.match(/[^a-fA-f0-9]/) !== null) {\n throw new TypeError('Invalid characters in hex string: ' + hex);\n }\n if (hex.length % 2 !== 0) {\n throw new Error(`Length of hex string is invalid: ${hex.length}`);\n }\n}\nexport function is_json(str) {\n try {\n JSON.parse(str);\n }\n catch {\n throw new TypeError('JSON string is invalid!');\n }\n}\nexport function is_safe_num(num) {\n if (num > Number.MAX_SAFE_INTEGER) {\n throw new TypeError('Number exceeds safe bounds!');\n }\n}\nexport function is_prefix(actual, target) {\n if (actual !== target) {\n throw new TypeError(`Bech32 prefix does not match: ${actual} !== ${target}`);\n }\n}\n//# sourceMappingURL=assert.js.map","import { is_hex } from '../assert.js';\nconst ec = new TextEncoder();\nconst dc = new TextDecoder();\nexport function strToBytes(str) {\n return ec.encode(str);\n}\nexport function bytesToStr(bytes) {\n return dc.decode(bytes);\n}\nfunction hex_size(hexstr, size) {\n is_hex(hexstr);\n const len = hexstr.length / 2;\n if (size === undefined)\n size = len;\n if (len > size) {\n throw new TypeError(`Hex string is larger than array size: ${len} > ${size}`);\n }\n return size;\n}\nexport function hexToBytes(hexstr, size, endian = 'le') {\n size = hex_size(hexstr, size);\n const use_le = (endian === 'le');\n const buffer = new ArrayBuffer(size);\n const dataView = new DataView(buffer);\n let offset = (use_le) ? 0 : size - 1;\n for (let i = 0; i < hexstr.length; i += 2) {\n const char = hexstr.substring(i, i + 2);\n const num = parseInt(char, 16);\n if (use_le) {\n dataView.setUint8(offset++, num);\n }\n else {\n dataView.setUint8(offset--, num);\n }\n }\n return new Uint8Array(buffer);\n}\nexport function bytesToHex(bytes) {\n let chars = '';\n for (let i = 0; i < bytes.length; i++) {\n chars += bytes[i].toString(16).padStart(2, '0');\n }\n return chars;\n}\n//# sourceMappingURL=str.js.map","import { sha256 } from '@noble/hashes/sha256';\nimport { bytesToStr, bytesToHex, hexToBytes, strToBytes } from './format/str.js';\nimport { base58check, base64, base64urlnopad, bech32, bech32m } from '@scure/base';\nexport const Hex = {\n encode: bytesToHex,\n decode: hexToBytes\n};\nexport const Txt = {\n encode: strToBytes,\n decode: bytesToStr\n};\nexport const B58chk = {\n encode: (data) => base58check(sha256).encode(data),\n decode: (data) => base58check(sha256).decode(data)\n};\nexport const Base64 = {\n encode: (data) => base64.encode(data),\n decode: (data) => base64.decode(data)\n};\nexport const B64url = {\n encode: (data) => base64urlnopad.encode(data),\n decode: (data) => base64urlnopad.decode(data)\n};\nexport const Bech32 = {\n to_words: bech32.toWords,\n to_bytes: bech32.fromWords,\n encode: (prefix, words, limit = false) => {\n return bech32.encode(prefix, words, limit);\n },\n decode: (data, limit = false) => {\n const { prefix, words } = bech32.decode(data, limit);\n return { prefix, words };\n }\n};\nexport const Bech32m = {\n to_words: bech32m.toWords,\n to_bytes: bech32m.fromWords,\n encode: (prefix, words, limit = false) => {\n return bech32m.encode(prefix, words, limit);\n },\n decode: (data, limit = false) => {\n const { prefix, words } = bech32m.decode(data, limit);\n return { prefix, words };\n }\n};\n//# sourceMappingURL=encode.js.map","const _0n = BigInt(0);\nconst _255n = BigInt(255);\nconst _256n = BigInt(256);\nfunction big_size(big) {\n if (big <= 0xffn)\n return 1;\n if (big <= 0xffffn)\n return 2;\n if (big <= 0xffffffffn)\n return 4;\n if (big <= 0xffffffffffffffffn)\n return 8;\n if (big <= 0xffffffffffffffffffffffffffffffffn)\n return 16;\n if (big <= 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn) {\n return 32;\n }\n throw new TypeError('Must specify a fixed buffer size for bigints greater than 32 bytes.');\n}\nexport function bigToBytes(big, size, endian = 'be') {\n if (size === undefined)\n size = big_size(big);\n const use_le = (endian === 'le');\n const buffer = new ArrayBuffer(size);\n const dataView = new DataView(buffer);\n let offset = (use_le) ? 0 : size - 1;\n while (big > _0n) {\n const byte = big & _255n;\n const num = Number(byte);\n if (use_le) {\n dataView.setUint8(offset++, num);\n }\n else {\n dataView.setUint8(offset--, num);\n }\n big = (big - byte) / _256n;\n }\n return new Uint8Array(buffer);\n}\nexport function bytesToBig(bytes) {\n let num = BigInt(0);\n for (let i = bytes.length - 1; i >= 0; i--) {\n num = (num * _256n) + BigInt(bytes[i]);\n }\n return BigInt(num);\n}\n//# sourceMappingURL=big.js.map","export function binToBytes(binary) {\n const bins = binary.split('').map(Number);\n if (bins.length % 8 !== 0) {\n throw new Error(`Binary array is invalid length: ${binary.length}`);\n }\n const bytes = new Uint8Array(bins.length / 8);\n for (let i = 0, ct = 0; i < bins.length; i += 8, ct++) {\n let byte = 0;\n for (let j = 0; j < 8; j++) {\n byte |= (bins[i + j] << (7 - j));\n }\n bytes[ct] = byte;\n }\n return bytes;\n}\nexport function bytesToBin(bytes) {\n const bin = new Array(bytes.length * 8);\n let count = 0;\n for (const num of bytes) {\n if (num > 255) {\n throw new Error(`Invalid byte value: ${num}. Byte values must be between 0 and 255.`);\n }\n for (let i = 7; i >= 0; i--, count++) {\n bin[count] = (num >> i) & 1;\n }\n }\n return bin.join('');\n}\n//# sourceMappingURL=bin.js.map","import { is_safe_num } from '../assert.js';\nfunction num_size(num) {\n if (num <= 0xFF)\n return 1;\n if (num <= 0xFFFF)\n return 2;\n if (num <= 0xFFFFFFFF)\n return 4;\n throw new TypeError('Numbers larger than 4 bytes must specify a fixed size!');\n}\nexport function numToBytes(num, size, endian = 'be') {\n if (size === undefined)\n size = num_size(num);\n const use_le = (endian === 'le');\n const buffer = new ArrayBuffer(size);\n const dataView = new DataView(buffer);\n let offset = (use_le) ? 0 : size - 1;\n while (num > 0) {\n const byte = num & 255;\n if (use_le) {\n dataView.setUint8(offset++, num);\n }\n else {\n dataView.setUint8(offset--, num);\n }\n num = (num - byte) / 256;\n }\n return new Uint8Array(buffer);\n}\nexport function bytesToNum(bytes) {\n let num = 0;\n for (let i = bytes.length - 1; i >= 0; i--) {\n num = (num * 256) + bytes[i];\n is_safe_num(num);\n }\n return num;\n}\n//# sourceMappingURL=num.js.map","import { within_size } from './assert.js';\nexport function is_hex(input) {\n if (input.match(/[^a-fA-F0-9]/) === null &&\n input.length % 2 === 0) {\n return true;\n }\n return false;\n}\nexport function is_bytes(input) {\n if (typeof input === 'string' && is_hex(input)) {\n return true;\n }\n else if (typeof input === 'number' ||\n typeof input === 'bigint' ||\n input instanceof Uint8Array) {\n return true;\n }\n else if (Array.isArray(input) &&\n input.every(e => typeof e === 'number')) {\n return true;\n }\n else {\n return false;\n }\n}\nexport function set_buffer(data, size, endian = 'be') {\n if (size === undefined)\n size = data.length;\n within_size(data, size);\n const buffer = new Uint8Array(size).fill(0);\n const offset = (endian === 'be') ? 0 : size - data.length;\n buffer.set(data, offset);\n return buffer;\n}\nexport function join_array(arr) {\n let i, offset = 0;\n const size = arr.reduce((len, arr) => len + arr.length, 0);\n const buff = new Uint8Array(size);\n for (i = 0; i < arr.length; i++) {\n const a = arr[i];\n buff.set(a, offset);\n offset += a.length;\n }\n return buff;\n}\nexport function bigint_replacer(_, v) {\n return typeof v === 'bigint'\n ? `${v}n`\n : v;\n}\nexport function bigint_reviver(_, v) {\n return typeof v === 'string' && /^[0-9]+n$/.test(v)\n ? BigInt(v.slice(0, -1))\n : v;\n}\nexport function parse_data(data_blob, chunk_size, total_size) {\n const len = data_blob.length, count = total_size / chunk_size;\n if (total_size % chunk_size !== 0) {\n throw new TypeError(`Invalid parameters: ${total_size} % ${chunk_size} !== 0`);\n }\n if (len !== total_size) {\n throw new TypeError(`Invalid data stream: ${len} !== ${total_size}`);\n }\n if (len % chunk_size !== 0) {\n throw new TypeError(`Invalid data stream: ${len} % ${chunk_size} !== 0`);\n }\n const chunks = new Array(count);\n for (let i = 0; i < count; i++) {\n const idx = i * chunk_size;\n chunks[i] = data_blob.subarray(idx, idx + chunk_size);\n }\n return chunks;\n}\n//# sourceMappingURL=utils.js.map","import { bigToBytes } from './big.js';\nimport { numToBytes } from './num.js';\nimport { hexToBytes } from './str.js';\nimport * as util from '../utils.js';\nexport function buffer_data(data, size, endian) {\n if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else if (data instanceof Uint8Array) {\n return util.set_buffer(data, size, endian);\n }\n else if (Array.isArray(data)) {\n const bytes = data.map(e => buffer_data(e, size, endian));\n return util.join_array(bytes);\n }\n else if (typeof data === 'string') {\n return hexToBytes(data, size, endian);\n }\n else if (typeof data === 'bigint') {\n return bigToBytes(data, size, endian);\n }\n else if (typeof data === 'number') {\n return numToBytes(data, size, endian);\n }\n else if (typeof data === 'boolean') {\n return Uint8Array.of(data ? 1 : 0);\n }\n throw new TypeError('Unsupported format:' + String(typeof data));\n}\n//# sourceMappingURL=buffer.js.map","import { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport * as assert from './assert.js';\nimport * as encoder from './encode.js';\nimport * as fmt from './format/index.js';\nimport * as util from './utils.js';\nexport class Buff extends Uint8Array {\n static { this.num = numToBuff; }\n static { this.big = bigToBuff; }\n static { this.bin = binToBuff; }\n static { this.raw = rawToBuff; }\n static { this.str = strToBuff; }\n static { this.hex = hexToBuff; }\n static { this.bytes = buffer; }\n static { this.json = jsonToBuff; }\n static { this.base64 = base64ToBuff; }\n static { this.b64url = b64urlToBuff; }\n static { this.bech32 = bech32ToBuff; }\n static { this.bech32m = bech32mToBuff; }\n static { this.b58chk = b58chkToBuff; }\n static { this.encode = fmt.strToBytes; }\n static { this.decode = fmt.bytesToStr; }\n static { this.parse = parse_data; }\n static { this.is_bytes = util.is_bytes; }\n static { this.is_hex = util.is_hex; }\n static { this.is_equal = is_equal; }\n static random(size = 32) {\n const rand = randomBytes(size);\n return new Buff(rand, size);\n }\n static now(size = 4) {\n const stamp = Math.floor(Date.now() / 1000);\n return new Buff(stamp, size);\n }\n constructor(data, size, endian) {\n if (data instanceof Buff &&\n size === undefined) {\n return data;\n }\n const buffer = fmt.buffer_data(data, size, endian);\n super(buffer);\n }\n get arr() {\n return [...this];\n }\n get num() {\n return this.to_num();\n }\n get big() {\n return this.to_big();\n }\n get str() {\n return this.to_str();\n }\n get hex() {\n return this.to_hex();\n }\n get raw() {\n return new Uint8Array(this);\n }\n get bin() {\n return this.to_bin();\n }\n get b58chk() {\n return this.to_b58chk();\n }\n get base64() {\n return this.to_base64();\n }\n get b64url() {\n return this.to_b64url();\n }\n get digest() {\n return this.to_hash();\n }\n get id() {\n return this.to_hash().hex;\n }\n get stream() {\n return new Stream(this);\n }\n to_num(endian = 'be') {\n const bytes = (endian === 'be')\n ? this.reverse()\n : this;\n return fmt.bytesToNum(bytes);\n }\n to_big(endian = 'be') {\n const bytes = (endian === 'be')\n ? this.reverse()\n : this;\n return fmt.bytesToBig(bytes);\n }\n to_bin() {\n return fmt.bytesToBin(this);\n }\n to_hash() {\n const digest = sha256(this);\n return new Buff(digest);\n }\n to_json(reviver) {\n if (reviver === undefined) {\n reviver = util.bigint_reviver;\n }\n const str = fmt.bytesToStr(this);\n return JSON.parse(str, reviver);\n }\n to_bech32(prefix, limit) {\n const { encode, to_words } = encoder.Bech32;\n const words = to_words(this);\n return encode(prefix, words, limit);\n }\n to_bech32m(prefix, limit) {\n const { encode, to_words } = encoder.Bech32m;\n const words = to_words(this);\n return encode(prefix, words, limit);\n }\n to_str() { return fmt.bytesToStr(this); }\n to_hex() { return fmt.bytesToHex(this); }\n to_bytes() { return new Uint8Array(this); }\n to_b58chk() { return encoder.B58chk.encode(this); }\n to_base64() { return encoder.Base64.encode(this); }\n to_b64url() { return encoder.B64url.encode(this); }\n append(data) {\n return Buff.join([this, Buff.bytes(data)]);\n }\n equals(data) {\n return buffer(data).hex === this.hex;\n }\n prepend(data) {\n return Buff.join([Buff.bytes(data), this]);\n }\n reverse() {\n const arr = new Uint8Array(this).reverse();\n return new Buff(arr);\n }\n slice(start, end) {\n const arr = new Uint8Array(this).slice(start, end);\n return new Buff(arr);\n }\n set(array, offset) {\n this.set(array, offset);\n }\n subarray(begin, end) {\n const arr = new Uint8Array(this).subarray(begin, end);\n return new Buff(arr);\n }\n write(bytes, offset) {\n const b = Buff.bytes(bytes);\n this.set(b, offset);\n }\n add_varint(endian) {\n const size = Buff.calc_varint(this.length, endian);\n return Buff.join([size, this]);\n }\n toJSON() {\n return this.hex;\n }\n toString() {\n return this.hex;\n }\n static from(data) {\n return new Buff(Uint8Array.from(data));\n }\n static of(...args) {\n return new Buff(Uint8Array.of(...args));\n }\n static join(arr) {\n const bytes = arr.map(e => Buff.bytes(e));\n const joined = util.join_array(bytes);\n return new Buff(joined);\n }\n static sort(arr, size) {\n const hex = arr.map(e => buffer(e, size).hex);\n hex.sort();\n return hex.map(e => Buff.hex(e, size));\n }\n static calc_varint(num, endian) {\n if (num < 0xFD) {\n return Buff.num(num, 1);\n }\n else if (num < 0x10000) {\n return Buff.of(0xFD, ...Buff.num(num, 2, endian));\n }\n else if (num < 0x100000000) {\n return Buff.of(0xFE, ...Buff.num(num, 4, endian));\n }\n else if (BigInt(num) < 0x10000000000000000n) {\n return Buff.of(0xFF, ...Buff.num(num, 8, endian));\n }\n else {\n throw new Error(`Value is too large: ${num}`);\n }\n }\n}\nfunction numToBuff(number, size, endian) {\n return new Buff(number, size, endian);\n}\nfunction binToBuff(data, size, endian) {\n return new Buff(fmt.binToBytes(data), size, endian);\n}\nfunction bigToBuff(bigint, size, endian) {\n return new Buff(bigint, size, endian);\n}\nfunction rawToBuff(data, size, endian) {\n return new Buff(data, size, endian);\n}\nfunction strToBuff(data, size, endian) {\n return new Buff(fmt.strToBytes(data), size, endian);\n}\nfunction hexToBuff(data, size, endian) {\n return new Buff(data, size, endian);\n}\nfunction jsonToBuff(data, replacer) {\n if (replacer === undefined) {\n replacer = util.bigint_replacer;\n }\n const str = JSON.stringify(data, replacer);\n return new Buff(fmt.strToBytes(str));\n}\nfunction base64ToBuff(data) {\n return new Buff(encoder.Base64.decode(data));\n}\nfunction b64urlToBuff(data) {\n return new Buff(encoder.B64url.decode(data));\n}\nfunction bech32ToBuff(data, limit, chk_prefix) {\n const { decode, to_bytes } = encoder.Bech32;\n const { prefix, words } = decode(data, limit);\n const bytes = to_bytes(words);\n if (typeof chk_prefix === 'string') {\n assert.is_prefix(prefix, chk_prefix);\n }\n return new Buff(bytes);\n}\nfunction bech32mToBuff(data, limit, chk_prefix) {\n const { decode, to_bytes } = encoder.Bech32m;\n const { prefix, words } = decode(data, limit);\n const bytes = to_bytes(words);\n if (typeof chk_prefix === 'string') {\n assert.is_prefix(prefix, chk_prefix);\n }\n return new Buff(bytes);\n}\nfunction b58chkToBuff(data) {\n return new Buff(encoder.B58chk.decode(data));\n}\nfunction parse_data(data_blob, chunk_size, total_size) {\n const bytes = fmt.buffer_data(data_blob);\n const chunks = util.parse_data(bytes, chunk_size, total_size);\n return chunks.map(e => Buff.bytes(e));\n}\nfunction is_equal(a, b) {\n return new Buff(a).hex === new Buff(b).hex;\n}\nexport function buffer(bytes, size, end) {\n return new Buff(bytes, size, end);\n}\nexport class Stream {\n constructor(data) {\n this.data = Buff.bytes(data);\n this.size = this.data.length;\n }\n peek(size) {\n if (size > this.size) {\n throw new Error(`Size greater than stream: ${size} > ${this.size}`);\n }\n return new Buff(this.data.slice(0, size));\n }\n read(size) {\n const chunk = this.peek(size);\n this.data = this.data.slice(size);\n this.size = this.data.length;\n return chunk;\n }\n read_varint(endian) {\n const num = this.read(1).num;\n switch (true) {\n case (num >= 0 && num < 0xFD):\n return num;\n case (num === 0xFD):\n return this.read(2).to_num(endian);\n case (num === 0xFE):\n return this.read(4).to_num(endian);\n case (num === 0xFF):\n return this.read(8).to_num(endian);\n default:\n throw new Error(`Varint is out of range: ${num}`);\n }\n }\n}\n//# sourceMappingURL=buff.js.map","import { Buff } from '@cmdcode/buff';\nimport { secp256k1, schnorr } from '@noble/curves/secp256k1';\nimport { gcm } from '@noble/ciphers/aes';\nimport { mod } from '@noble/curves/abstract/modular';\nexport function gen_seckey(secret) {\n let sbig = (secret !== undefined)\n ? Buff.hex(secret).big\n : Buff.random(32).big;\n sbig = mod(sbig, secp256k1.CURVE.n);\n return Buff.big(sbig).hex;\n}\nexport function get_pubkey(seckey) {\n const pbytes = schnorr.getPublicKey(seckey);\n return new Buff(pbytes).hex;\n}\nexport function get_shared_secret(seckey, peer_pk) {\n const pubkey = (peer_pk.length === 66)\n ? peer_pk\n : '02' + peer_pk;\n const sbytes = secp256k1.getSharedSecret(seckey, pubkey, true);\n return new Buff(sbytes).slice(1).hex;\n}\nexport function sign_msg(seckey, message) {\n const sig = schnorr.sign(message, seckey);\n return new Buff(sig).hex;\n}\nexport function verify_sig(message, pubkey, signature) {\n return schnorr.verify(signature, message, pubkey);\n}\nexport function encrypt_content(secret, content, iv) {\n const cbytes = Buff.str(content);\n const sbytes = Buff.hex(secret);\n const vector = (iv !== undefined)\n ? Buff.hex(iv, 24)\n : Buff.random(24);\n const encrypted = gcm(sbytes, vector).encrypt(cbytes);\n return new Buff(encrypted).b64url + '?iv=' + vector.b64url;\n}\nexport function decrypt_content(secret, content) {\n const [encryped, iv] = content.split('?iv=');\n const cbytes = Buff.b64url(encryped);\n const sbytes = Buff.hex(secret);\n const vector = Buff.b64url(iv);\n const decrypted = gcm(sbytes, vector).decrypt(cbytes);\n return new Buff(decrypted).str;\n}\n","import { Buff } from '@cmdcode/buff';\nexport function gen_message_id() {\n return Buff.random(16).hex;\n}\nexport function get_event_id(template) {\n const preimg = JSON.stringify([\n 0,\n template.pubkey,\n template.created_at,\n template.kind,\n template.tags,\n template.content,\n ]);\n return Buff.str(preimg).digest.hex;\n}\nexport function get_tags(event, tag) {\n return event.tags.filter(e => e.at(0) === tag);\n}\nexport function is_recipient(event, pubkey) {\n const peers = get_tags(event, 'p');\n return peers.some(e => e[1] === pubkey);\n}\nexport function get_unique_items(arr) {\n const ret = new Set();\n for (const row of arr) {\n for (const item of row) {\n ret.add(item);\n }\n }\n return [...ret];\n}\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","import * as z from \"./v3/external.js\";\nexport * from \"./v3/external.js\";\nexport { z };\nexport default z;\n","import { z } from 'zod';\nconst big = z.bigint(), bool = z.boolean(), date = z.date(), num = z.number(), uint = z.number().max(Number.MAX_SAFE_INTEGER), str = z.string(), stamp = z.number().min(500_000_000).max(Number.MAX_SAFE_INTEGER), url = z.string().url(), any = z.any();\nconst hex = z.string()\n .regex(/^[0-9a-fA-F]*$/)\n .refine(e => e.length % 2 === 0);\nconst literal = z.union([z.string(), z.number(), z.boolean(), z.null()]);\nconst hex16 = hex.refine((e) => e.length === 32);\nconst hex20 = hex.refine((e) => e.length === 40);\nconst hex32 = hex.refine((e) => e.length === 64);\nconst hex64 = hex.refine((e) => e.length === 128);\nconst pubkey = hex.refine((e) => e.length === 66);\nconst base58 = z.string().regex(/^[1-9A-HJ-NP-Za-km-z]+$/);\nconst base64 = z.string().regex(/^[a-zA-Z0-9+/]+={0,2}$/);\nconst b64url = z.string().regex(/^[a-zA-Z0-9\\-_]+={0,2}$/);\nconst bech32 = z.string().regex(/^[a-z]+1[023456789acdefghjklmnpqrstuvwxyz]+$/);\nexport default {\n any,\n base58,\n base64,\n b64url,\n bech32,\n big,\n bool,\n date,\n hex32,\n hex16,\n hex20,\n hex64,\n hex,\n literal,\n num,\n pubkey,\n str,\n stamp,\n uint,\n url\n};\n","import { z } from 'zod';\nimport base from './base.js';\nconst tags = base.str.array();\nconst template = z.object({\n content: base.str,\n created_at: base.stamp,\n kind: base.num,\n pubkey: base.hex32,\n tags: tags.array()\n});\nconst unsigned = template.extend({\n id: base.hex32\n});\nconst signed = unsigned.extend({\n sig: base.hex64,\n});\nexport default { signed, tags, template, unsigned };\n","import { z } from 'zod';\nimport base from './base.js';\nconst mid = base.hex16;\nconst payload = base.str;\nconst topic = base.str.min(3).max(256);\nconst envelope = z.tuple([topic, mid, payload]);\nexport default { envelope };\n","import base from './base.js';\nimport event from './event.js';\nimport msg from './msg.js';\nexport default { base, event, msg };\n","import { Buff } from '@cmdcode/buff';\nexport var Assert;\n(function (Assert) {\n function ok(value, message) {\n if (value === false)\n throw new Error(message ?? 'Assertion failed!');\n }\n Assert.ok = ok;\n function exists(input, err_msg) {\n if (typeof input === 'undefined') {\n throw new TypeError(err_msg ?? 'Input is undefined!');\n }\n if (input === null) {\n throw new TypeError(err_msg ?? 'Input is null!');\n }\n }\n Assert.exists = exists;\n function size(input, size, err_msg) {\n const bytes = Buff.bytes(input);\n if (bytes.length !== size) {\n throw new Error(err_msg ?? `Invalid byte size: ${bytes.hex} !== ${size}`);\n }\n return true;\n }\n Assert.size = size;\n})(Assert || (Assert = {}));\n","export const now = () => Math.floor(Date.now() / 1000);\nexport const sleep = (ms = 1000) => new Promise(res => setTimeout(res, ms));\nexport function parse_error(err) {\n if (err instanceof Error)\n return err.message;\n if (typeof err === 'string')\n return err;\n return String(err);\n}\n","import { get_event_id } from './util.js';\nimport { encrypt_content, get_pubkey, get_shared_secret, sign_msg, verify_sig } from './crypto.js';\nimport Schema from '../schema/index.js';\nimport * as Util from '../util/index.js';\nexport function create_event(config, payload, peer_pk, seckey) {\n const created_at = config.created_at ?? Util.now();\n const pubkey = get_pubkey(seckey);\n const secret = get_shared_secret(seckey, peer_pk);\n const content = encrypt_content(secret, payload);\n const event = { ...config, pubkey, content, created_at };\n event.tags.push(['p', peer_pk]);\n return sign_event(seckey, event);\n}\nexport function sign_event(seckey, template) {\n const id = get_event_id(template);\n const sig = sign_msg(seckey, id);\n return { ...template, id, sig };\n}\nexport function verify_event(event) {\n const { id, sig, ...template } = event;\n const schema = Schema.event.signed;\n const parsed = schema.safeParse(event);\n const vid = get_event_id(template);\n if (!parsed.success) {\n return 'event failed schema validation';\n }\n else if (id !== vid) {\n return 'event id mismatch';\n }\n else if (!verify_sig(id, event.pubkey, sig)) {\n return 'invalid event signature';\n }\n else {\n return null;\n }\n}\n","export const DEBUG = false;\nexport const REQ_TIMEOUT = 5000;\n","import { verify_event } from './event.js';\nimport { gen_message_id, is_recipient } from './util.js';\nimport { decrypt_content, get_pubkey, get_shared_secret } from './crypto.js';\nimport * as CONST from '../const.js';\nimport Schema from '../schema/index.js';\nexport function decrypt_payload(event, seckey) {\n const error = verify_event(event);\n if (error !== null) {\n throw new Error(error);\n }\n const pubkey = get_pubkey(seckey);\n if (!is_recipient(event, pubkey)) {\n throw new Error('pubkey not in peers list');\n }\n const secret = get_shared_secret(seckey, event.pubkey);\n const content = decrypt_content(secret, event.content);\n const payload = JSON.parse(content);\n return payload;\n}\nexport function finalize_message(template) {\n const id = template.id ?? gen_message_id();\n return { ...template, id };\n}\nexport function create_payload(tag, data, id) {\n try {\n return JSON.stringify([tag, id, data]);\n }\n catch (err) {\n throw new Error('failed to create message payload');\n }\n}\nexport function parse_envelope(envelope, event) {\n const schema = Schema.msg.envelope;\n const parsed = schema.safeParse(envelope);\n if (!parsed.success) {\n if (CONST.DEBUG)\n console.log(parsed.error);\n throw new Error('envelope failed schema validation');\n }\n const [tag, id, data] = parsed.data;\n return { env: event, data, id, tag };\n}\n","import Schema from '../schema/index.js';\nexport function verify_relays(relays) {\n const schema = Schema.base.url.array();\n const parsed = schema.safeParse(relays);\n if (!parsed.success) {\n throw new Error('invalid relay set: ' + relays);\n }\n}\nexport function verify_seckey(seckey) {\n const schema = Schema.base.hex32;\n const parsed = schema.safeParse(seckey);\n if (!parsed.success) {\n throw new Error('invalid secret key: ' + seckey);\n }\n else {\n }\n}\n","export var Check;\n(function (Check) {\n function is_hex(input) {\n return (input.match(/[^a-fA-F0-9]/) === null &&\n input.length % 2 === 0);\n }\n Check.is_hex = is_hex;\n function is_bytes(input) {\n if (typeof input === 'string' && is_hex(input)) {\n return true;\n }\n else if (input instanceof Uint8Array) {\n return true;\n }\n else if (Array.isArray(input) &&\n input.every(e => typeof e === 'number' &&\n Number.isInteger(e) &&\n e >= 0 &&\n e <= 255)) {\n return true;\n }\n else {\n return false;\n }\n }\n Check.is_bytes = is_bytes;\n})(Check || (Check = {}));\n","export class ValidationError extends Error {\n constructor(message) {\n super(message);\n this.name = 'ValidationError';\n }\n}\nexport class HexValidationError extends ValidationError {\n constructor(message) {\n super(message);\n this.name = 'HexValidationError';\n }\n}\nexport class ByteRangeError extends ValidationError {\n constructor(message) {\n super(message);\n this.name = 'ByteRangeError';\n }\n}\nexport class IntegerBoundsError extends ValidationError {\n constructor(message) {\n super(message);\n this.name = 'IntegerBoundsError';\n }\n}\nexport class SizeError extends ValidationError {\n constructor(message) {\n super(message);\n this.name = 'SizeError';\n }\n}\n","import { Check } from '../util/validate.js';\nimport { ByteRangeError, HexValidationError, IntegerBoundsError, SizeError, ValidationError } from '../util/error.js';\nexport var Assert;\n(function (Assert) {\n function within_size(data, size) {\n if (data.length > size) {\n throw new SizeError(`Data is larger than array size: ${data.length} > ${size}`);\n }\n }\n Assert.within_size = within_size;\n function is_hex(hex) {\n if (hex.match(/[^a-fA-F0-9]/) !== null) {\n throw new HexValidationError(`Invalid characters in hex string: ${hex}`);\n }\n if (hex.length % 2 !== 0) {\n throw new HexValidationError(`Length of hex string is invalid: ${hex.length}`);\n }\n }\n Assert.is_hex = is_hex;\n function is_bytes(bytes) {\n if (!Check.is_bytes(bytes)) {\n throw new ByteRangeError(`Bytes contains invalid elements: ${String(bytes)}`);\n }\n }\n Assert.is_bytes = is_bytes;\n function is_json(str) {\n try {\n JSON.parse(str);\n }\n catch {\n throw new ValidationError('JSON string is invalid!');\n }\n }\n Assert.is_json = is_json;\n function is_safe_int(num) {\n if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) {\n throw new IntegerBoundsError('Number exceeds safe bounds!');\n }\n }\n Assert.is_safe_int = is_safe_int;\n})(Assert || (Assert = {}));\n","const _0n = BigInt(0);\nconst _255n = BigInt(255);\nconst _256n = BigInt(256);\nexport function get_big_size(big) {\n if (big <= 0xffn)\n return 1;\n if (big <= 0xffffn)\n return 2;\n if (big <= 0xffffffffn)\n return 4;\n if (big <= 0xffffffffffffffffn)\n return 8;\n if (big <= 0xffffffffffffffffffffffffffffffffn)\n return 16;\n if (big <= 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn) {\n return 32;\n }\n throw new TypeError('Must specify a fixed buffer size for bigints greater than 32 bytes.');\n}\nexport function big_to_bytes(big, size, endian = 'be') {\n if (size === undefined)\n size = get_big_size(big);\n const use_le = (endian === 'le');\n const buffer = new ArrayBuffer(size);\n const dataView = new DataView(buffer);\n let offset = (use_le) ? 0 : size - 1;\n while (big > _0n) {\n const byte = big & _255n;\n const num = Number(byte);\n if (use_le) {\n dataView.setUint8(offset++, num);\n }\n else {\n dataView.setUint8(offset--, num);\n }\n big = (big - byte) / _256n;\n }\n return new Uint8Array(buffer);\n}\nexport function bytes_to_big(bytes) {\n let num = BigInt(0);\n for (let i = bytes.length - 1; i >= 0; i--) {\n num = (num * _256n) + BigInt(bytes[i]);\n }\n return BigInt(num);\n}\nexport function bigint_replacer(_, v) {\n return typeof v === 'bigint'\n ? `${v}n`\n : v;\n}\nexport function bigint_reviver(_, v) {\n return typeof v === 'string' && /^[0-9]+n$/.test(v)\n ? BigInt(v.slice(0, -1))\n : v;\n}\n","import { Assert } from '../util/assert.js';\nexport function get_num_size(num) {\n if (num < 0) {\n throw new TypeError('Number must be non-negative');\n }\n if (num <= 0xFF)\n return 1;\n if (num <= 0xFFFF)\n return 2;\n if (num <= 0xFFFFFFFF)\n return 4;\n throw new TypeError('Numbers larger than 4 bytes must specify a fixed size!');\n}\nexport function num_to_bytes(num, size, endian = 'be') {\n if (size === undefined)\n size = get_num_size(num);\n const use_le = (endian === 'le');\n const buffer = new ArrayBuffer(size);\n const dataView = new DataView(buffer);\n let offset = (use_le) ? 0 : size - 1;\n while (num > 0) {\n const byte = num & 255;\n if (use_le) {\n dataView.setUint8(offset++, byte);\n }\n else {\n dataView.setUint8(offset--, byte);\n }\n num = (num - byte) / 256;\n }\n return new Uint8Array(buffer);\n}\nexport function bytes_to_num(bytes) {\n let num = 0;\n for (let i = bytes.length - 1; i >= 0; i--) {\n num = (num * 256) + bytes[i];\n Assert.is_safe_int(num);\n }\n return num;\n}\n","import { Assert } from '../util/assert.js';\nexport function hex_to_bytes(hexstr, size, endian = 'be') {\n size = get_hex_size(hexstr, size);\n const use_be = (endian === 'be');\n const buffer = new ArrayBuffer(size);\n const dataView = new DataView(buffer);\n let offset = (use_be) ? 0 : size - 1;\n for (let i = 0; i < hexstr.length; i += 2) {\n const char = hexstr.substring(i, i + 2);\n const num = parseInt(char, 16);\n if (use_be) {\n dataView.setUint8(offset++, num);\n }\n else {\n dataView.setUint8(offset--, num);\n }\n }\n return new Uint8Array(buffer);\n}\nexport function bytes_to_hex(bytes) {\n let chars = '';\n for (let i = 0; i < bytes.length; i++) {\n chars += bytes[i].toString(16).padStart(2, '0');\n }\n return chars;\n}\nfunction get_hex_size(hexstr, size) {\n Assert.is_hex(hexstr);\n const len = hexstr.length / 2;\n if (size === undefined)\n size = len;\n if (len > size) {\n throw new TypeError(`Hex string is larger than array size: ${len} > ${size}`);\n }\n return size;\n}\n","import { Assert } from '../util/assert.js';\nimport { big_to_bytes } from './big.js';\nimport { num_to_bytes } from './num.js';\nimport { hex_to_bytes } from './hex.js';\nexport function buffer(bytes, size, endian) {\n if (bytes instanceof ArrayBuffer) {\n return new Uint8Array(bytes);\n }\n else if (bytes instanceof Uint8Array) {\n return create_bytes(bytes, size, endian);\n }\n else if (typeof bytes === 'string') {\n Assert.is_hex(bytes);\n return hex_to_bytes(bytes, size, endian);\n }\n else if (typeof bytes === 'bigint') {\n return big_to_bytes(bytes, size, endian);\n }\n else if (typeof bytes === 'number') {\n return num_to_bytes(bytes, size, endian);\n }\n throw new TypeError(`Input type not supported: ${typeof bytes}`);\n}\nexport function create_bytes(data, size, endian = 'le') {\n if (size === undefined)\n size = data.length;\n Assert.within_size(data, size);\n const buffer = new Uint8Array(size).fill(0);\n const offset = (endian === 'be') ? 0 : size - data.length;\n buffer.set(data, offset);\n return buffer;\n}\nexport function join_bytes(arr) {\n let i, offset = 0;\n const size = arr.reduce((len, arr) => len + arr.length, 0);\n const buff = new Uint8Array(size);\n for (i = 0; i < arr.length; i++) {\n const a = arr[i];\n buff.set(a, offset);\n offset += a.length;\n }\n return buff;\n}\nexport function split_bytes(data_blob, chunk_size, total_size) {\n const len = data_blob.length, count = total_size / chunk_size;\n if (total_size % chunk_size !== 0) {\n throw new TypeError(`Invalid parameters: ${total_size} % ${chunk_size} !== 0`);\n }\n if (len !== total_size) {\n throw new TypeError(`Invalid data stream: ${len} !== ${total_size}`);\n }\n if (len % chunk_size !== 0) {\n throw new TypeError(`Invalid data stream: ${len} % ${chunk_size} !== 0`);\n }\n const chunks = new Array(count);\n for (let i = 0; i < count; i++) {\n const idx = i * chunk_size;\n chunks[i] = data_blob.subarray(idx, idx + chunk_size);\n }\n return chunks;\n}\n","export function bin_to_bytes(binary) {\n if (!/^[01]*$/.test(binary)) {\n throw new TypeError('Binary string must contain only 0 and 1 characters');\n }\n const bins = binary.split('').map(Number);\n if (bins.length % 8 !== 0) {\n throw new Error(`Binary array is invalid length: ${binary.length}`);\n }\n const bytes = new Uint8Array(bins.length / 8);\n for (let i = 0, ct = 0; i < bins.length; i += 8, ct++) {\n let byte = 0;\n for (let j = 0; j < 8; j++) {\n byte |= (bins[i + j] << (7 - j));\n }\n bytes[ct] = byte;\n }\n return bytes;\n}\nexport function bytes_to_bin(bytes) {\n const bin = new Array(bytes.length * 8);\n let count = 0;\n for (const num of bytes) {\n if (num > 255) {\n throw new Error(`Invalid byte value: ${num}. Byte values must be between 0 and 255.`);\n }\n for (let i = 7; i >= 0; i--, count++) {\n bin[count] = (num >> i) & 1;\n }\n }\n return bin.join('');\n}\n","const ec = new TextEncoder();\nconst dc = new TextDecoder();\nexport function str_to_bytes(str) {\n return ec.encode(str);\n}\nexport function bytes_to_str(bytes) {\n return dc.decode(bytes);\n}\n","const MAX_RANDOM_LENGTH = 1024 * 1024;\nexport function get_random_bytes(length = 32) {\n if (!Number.isInteger(length) || length < 0) {\n throw new TypeError('Length must be a non-negative integer');\n }\n if (length > MAX_RANDOM_LENGTH) {\n throw new RangeError(`Length exceeds maximum allowed: ${length} > ${MAX_RANDOM_LENGTH}`);\n }\n if (crypto &&\n typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(length));\n }\n const pcrypto = crypto;\n if (pcrypto &&\n pcrypto.randomBytes !== undefined &&\n typeof pcrypto.randomBytes === 'function') {\n return pcrypto.randomBytes(length);\n }\n throw new Error('getRandomValues from crypto library is undefined');\n}\n","import * as Lib from '../lib/index.js';\nimport { Assert, Check } from '../util/index.js';\nexport class Buff extends Uint8Array {\n static { this.num = (number, size, endian) => {\n return new Buff(number, size, endian);\n }; }\n static { this.big = (bigint, size, endian) => {\n return new Buff(bigint, size, endian);\n }; }\n static { this.bin = (data, size, endian) => {\n const uint = Lib.bin_to_bytes(data);\n return new Buff(uint, size, endian);\n }; }\n static { this.u8a = (data, size, endian) => {\n return new Buff(data, size, endian);\n }; }\n static { this.str = (data, size, endian) => {\n const uint = Lib.str_to_bytes(data);\n return new Buff(uint, size, endian);\n }; }\n static { this.hex = (data, size, endian) => {\n Assert.is_hex(data);\n return new Buff(data, size, endian);\n }; }\n static { this.bytes = (bytes, size, endian) => {\n Assert.is_bytes(bytes);\n return new Buff(bytes, size, endian);\n }; }\n static { this.json = (data, replacer) => {\n replacer = replacer ?? Lib.bigint_replacer;\n const str = JSON.stringify(data, replacer);\n const uint = Lib.str_to_bytes(str);\n return new Buff(uint);\n }; }\n static { this.chunk = (payload, chunk_size, total_size) => {\n const bytes = Lib.buffer(payload);\n const chunks = Lib.split_bytes(bytes, chunk_size, total_size);\n return chunks.map(e => new Buff(e));\n }; }\n static { this.is_equal = (a, b) => {\n const buf_a = new Buff(a);\n const buf_b = new Buff(b);\n if (buf_a.length !== buf_b.length)\n return false;\n for (let i = 0; i < buf_a.length; i++) {\n if (buf_a[i] !== buf_b[i])\n return false;\n }\n return true;\n }; }\n static { this.is_bytes = Check.is_bytes; }\n static { this.is_hex = Check.is_hex; }\n static random(size = 32) {\n const uint = Lib.get_random_bytes(size);\n return new Buff(uint, size);\n }\n static now() {\n const stamp = Math.floor(Date.now() / 1000);\n return new Buff(stamp, 4);\n }\n constructor(data, size, endian) {\n super(Lib.buffer(data, size, endian));\n }\n get arr() {\n return this.to_arr();\n }\n get big() {\n return this.to_big();\n }\n get bin() {\n return this.to_bin();\n }\n get hex() {\n return this.to_hex();\n }\n get num() {\n return this.to_num();\n }\n get str() {\n return this.to_str();\n }\n get u8a() {\n return this.to_u8a();\n }\n to_big(endian = 'be') {\n const bytes = (endian === 'be')\n ? this.u8a.reverse()\n : this.u8a;\n return Lib.bytes_to_big(bytes);\n }\n to_hex(endian = 'be') {\n const bytes = (endian === 'be')\n ? this.u8a\n : this.u8a.reverse();\n return Lib.bytes_to_hex(bytes);\n }\n to_json(reviver) {\n if (reviver === undefined) {\n reviver = Lib.bigint_reviver;\n }\n const str = Lib.bytes_to_str(this);\n return JSON.parse(str, reviver);\n }\n to_num(endian = 'be') {\n const bytes = (endian === 'be')\n ? this.u8a.reverse()\n : this.u8a;\n return Lib.bytes_to_num(bytes);\n }\n to_arr() { return [...this]; }\n to_bin() { return Lib.bytes_to_bin(this); }\n to_str() { return Lib.bytes_to_str(this); }\n to_u8a() { return new Uint8Array(this); }\n append(data) {\n return Buff.join([this, new Buff(data)]);\n }\n equals(data) {\n const other = new Buff(data);\n if (this.length !== other.length)\n return false;\n for (let i = 0; i < this.length; i++) {\n if (this[i] !== other[i])\n return false;\n }\n return true;\n }\n prepend(data) {\n return Buff.join([new Buff(data), this]);\n }\n prefix_varint(endian) {\n if (this.length === 0)\n throw new Error('buffer is empty');\n const varint = Buff.create_varint(this.length, endian);\n return this.prepend(varint);\n }\n reverse() {\n super.reverse();\n return this;\n }\n set(array, offset) {\n super.set(array, offset);\n }\n slice(start, end) {\n const arr = new Uint8Array(this).slice(start, end);\n return new Buff(arr);\n }\n subarray(begin, end) {\n const arr = new Uint8Array(this).subarray(begin, end);\n return new Buff(arr);\n }\n toJSON() {\n return this.hex;\n }\n toString() {\n return this.hex;\n }\n static from(data) {\n return new Buff(Uint8Array.from(data));\n }\n static of(...args) {\n return new Buff(Uint8Array.of(...args));\n }\n static join(arr) {\n const bytes = arr.map(e => new Buff(e));\n const joined = Lib.join_bytes(bytes);\n return new Buff(joined);\n }\n static sort(arr, size) {\n const hex = arr.map(e => new Buff(e, size).hex);\n hex.sort();\n return hex.map(e => Buff.hex(e, size));\n }\n static create_varint(num, endian) {\n if (num < 0) {\n throw new Error(`Varint cannot be negative: ${num}`);\n }\n if (num < 0xFD) {\n return Buff.num(num, 1);\n }\n else if (num < 0x10000) {\n return Buff.of(0xFD, ...Buff.num(num, 2, endian));\n }\n else if (num < 0x100000000) {\n return Buff.of(0xFE, ...Buff.num(num, 4, endian));\n }\n else if (BigInt(num) < 0x10000000000000000n) {\n return Buff.of(0xFF, ...Buff.num(num, 8, endian));\n }\n else {\n throw new Error(`Value is too large: ${num}`);\n }\n }\n}\n","import { secp256k1 } from '@noble/curves/secp256k1.js';\nimport { Field } from '@noble/curves/abstract/modular.js';\nexport const _0n = BigInt(0);\nexport const _1n = BigInt(1);\nexport const _P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nexport const _N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nexport const FIELD = Field(_N);\nexport const POINT = secp256k1.Point;\nexport const DOMAIN = 'FROST-secp256k1-SHA256-v1';\nexport const DST = {\n RHO: 'rho',\n CHAL: 'chal',\n NONCE: 'nonce',\n MSG: 'msg',\n COM: 'com'\n};\nexport default { _0n, _1n, _N, _P, DOMAIN, DST, FIELD, POINT };\n","import { Buff } from '@vbyte/buff';\nimport { mod, pow } from '@noble/curves/abstract/modular.js';\nimport CONST from '../const.js';\nconst { POINT, _N, _P } = CONST;\nexport function mod_n(x) {\n return mod(x, _N);\n}\nexport function mod_p(x) {\n return mod(x, _P);\n}\nexport function pow_n(x, p) {\n if (typeof x === 'number')\n x = BigInt(x);\n if (typeof p === 'number')\n p = BigInt(p);\n return pow(x, p, _N);\n}\nexport function str_to_bytes(str) {\n return new TextEncoder().encode(str);\n}\nexport function lift_x(pubkey) {\n let bytes = Buff.bytes(pubkey);\n if (bytes.length < 32 || bytes.length > 33) {\n throw new Error(`invalid pubkey length: expected 32 or 33 bytes, got ${bytes.length}`);\n }\n else if (bytes.length === 32) {\n bytes = bytes.prepend(2);\n }\n return POINT.fromHex(bytes.hex);\n}\n","import { Buff } from '@vbyte/buff';\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { DOMAIN, DST, _N } from '../const.js';\nimport { str_to_bytes } from './util.js';\nimport { hash_to_field } from '@noble/curves/abstract/hash-to-curve.js';\nconst OPT = { m: 1, p: _N, k: 128, expand: 'xmd', hash: sha256 };\nfunction get_opts(DST) {\n return { ...OPT, DST };\n}\nexport function H1(msg) {\n const tag = DOMAIN + DST.RHO;\n const nums = hash_to_field(msg, 1, get_opts(tag));\n return Buff.big(nums[0][0], 32);\n}\nexport function H2(msg) {\n const tag = DOMAIN + DST.CHAL;\n const nums = hash_to_field(msg, 1, get_opts(tag));\n return Buff.big(nums[0][0], 32);\n}\nexport function H3(msg) {\n const tag = DOMAIN + DST.NONCE;\n const nums = hash_to_field(msg, 1, get_opts(tag));\n return Buff.big(nums[0][0], 32);\n}\nexport function H4(msg) {\n const tag = str_to_bytes(DOMAIN + DST.MSG);\n const hash = sha256(new Uint8Array([...tag, ...msg]));\n return new Buff(hash);\n}\nexport function H5(msg) {\n const tag = str_to_bytes(DOMAIN + DST.COM);\n const hash = sha256(new Uint8Array([...tag, ...msg]));\n return new Buff(hash);\n}\n","import { Buff } from '@vbyte/buff';\nexport function ok(value, message) {\n if (value === false)\n throw new Error(message ?? 'assertion failed');\n}\nexport function exists(input) {\n if (typeof input === 'undefined') {\n throw new Error('input is undefined');\n }\n if (input === null) {\n throw new Error('input is null');\n }\n}\nexport function size(input, size) {\n const bytes = Buff.bytes(input);\n if (bytes.length !== size) {\n throw new Error(`Invalid byte size: ${bytes.hex} !== ${size}`);\n }\n return true;\n}\nexport function is_included(array, item) {\n if (!array.includes(item)) {\n throw new Error('item is not included in array');\n }\n}\nexport function is_unique_set(array) {\n const seen = new Set();\n for (const x of array) {\n if (seen.has(x)) {\n throw new Error(`item in set is not unique: ${String(x)}`);\n }\n seen.add(x);\n }\n}\nexport function is_equal_set(array) {\n if (!array.every(e => e === array[0])) {\n throw new Error('set does not have equal items');\n }\n}\nexport function equal_arr_size(array_a, array_b) {\n if (array_a.length !== array_b.length) {\n throw new Error(`array lengths are unequal: ${array_a.length} !== ${array_b.length}`);\n }\n}\n","import { Buff } from '@vbyte/buff';\nimport { sha256 } from '@noble/hashes/sha2.js';\nexport function random_bytes(size = 32) {\n return Buff.random(size);\n}\nexport function get_record(records, idx) {\n const record = records.find(e => e.idx === idx);\n if (record === undefined) {\n throw new Error(`record not found for index: ${idx}`);\n }\n return record;\n}\nexport function taghash(tag) {\n const hash = new Buff(sha256(Buff.str(tag)));\n return Buff.join([hash, hash]);\n}\nexport function hash340(tag, ...data) {\n const hash = taghash(tag);\n const bytes = data.map(e => Buff.bytes(e));\n return new Buff(sha256(Buff.join([hash, ...bytes])));\n}\n","import { Buff } from '@vbyte/buff';\nimport { secp256k1 } from '@noble/curves/secp256k1.js';\nimport { assert } from '../util/index.js';\nimport CONST from '../const.js';\nconst { POINT } = CONST;\nexport function ElementAdd(A, B) {\n if (A === null && B === null) {\n throw new Error('both points are null!');\n }\n else if (A === null) {\n assert.exists(B);\n return B;\n }\n else if (B === null) {\n return A;\n }\n else {\n const C = A.add(B);\n C.assertValidity();\n return C;\n }\n}\nexport function ScalarMulti(A, k) {\n const pt = A.multiply(k);\n pt.assertValidity();\n return pt;\n}\nexport function ScalarBaseMulti(k) {\n const base = secp256k1.Point.BASE;\n const pt = base.multiply(k);\n pt.assertValidity();\n return pt;\n}\nexport function SerializeElement(A) {\n return Buff.bytes(A.toBytes(true));\n}\nexport function DeserializeElement(bytes) {\n const hex = Buff.bytes(bytes).hex;\n return POINT.fromHex(hex);\n}\nexport function SerializeScalar(scalar) {\n return new Buff(scalar, 32);\n}\n","import { Buff } from '@vbyte/buff';\nimport { G, H } from '../ecc/index.js';\nimport { lift_x, mod_n } from '../ecc/util.js';\nimport { assert, hash340 } from '../util/index.js';\nconst BIP340_CHALLENGE_TAG = 'BIP0340/challenge';\nexport function generate_seckey(aux) {\n const aux_bytes = (aux !== undefined)\n ? Buff.bytes(aux, 32)\n : Buff.random(32);\n return H.H3(aux_bytes);\n}\nexport function generate_nonce(secret, aux_seed) {\n const aux = (aux_seed !== undefined)\n ? Buff.bytes(aux_seed, 32)\n : Buff.random(32);\n const secret_seed = Buff.join([aux, secret]);\n return H.H3(secret_seed);\n}\nexport function tweak_seckey(seckey, tweak) {\n const coeff = Buff.bytes(tweak).big;\n const secret = Buff.bytes(seckey).big;\n const tweaked = mod_n(secret * coeff);\n return Buff.big(tweaked).hex;\n}\nexport function get_pubkey(secret) {\n const scalar = Buff.bytes(secret).big;\n const point = G.ScalarBaseMulti(scalar);\n return G.SerializeElement(point).hex;\n}\nexport function tweak_pubkey(pubkey, tweak) {\n const coeff = Buff.bytes(tweak).big;\n let point = lift_x(pubkey);\n point = point.multiply(coeff);\n return G.SerializeElement(point).hex;\n}\nexport function get_challenge(pnonce, pubkey, message) {\n const grp_pk = convert_pubkey(pubkey, 'bip340');\n const grp_pn = convert_pubkey(pnonce, 'bip340');\n assert.size(grp_pk, 32);\n assert.size(grp_pn, 32);\n const digest = hash340(BIP340_CHALLENGE_TAG, grp_pn, grp_pk, message);\n return digest.big;\n}\nexport function convert_pubkey(pubkey, type) {\n const pub = Buff.bytes(pubkey);\n if (type === 'ecdsa') {\n return pub.length === 32\n ? pub.prepend(2).hex\n : pub.hex;\n }\n else if (type === 'bip340') {\n return (pub.length === 33)\n ? pub.slice(1).hex\n : pub.hex;\n }\n else {\n throw new Error('invalid pubkey type');\n }\n}\n","import { Buff } from '@vbyte/buff';\nimport { H, G } from '../ecc/index.js';\nimport { assert, get_record } from '../util/index.js';\nimport { generate_nonce, get_pubkey } from './helpers.js';\nexport function get_nonce_ids(pnonces) {\n return pnonces.map(pn => BigInt(pn.idx));\n}\nexport function get_commits_prefix(pnonces) {\n const enc_group_commit = [];\n const sorted_pnonces = pnonces.sort((a, b) => a.idx - b.idx);\n for (const { idx, hidden_pn, binder_pn } of sorted_pnonces) {\n const enc_commit = [G.SerializeScalar(idx), hidden_pn, binder_pn];\n enc_group_commit.push(...enc_commit);\n }\n return Buff.join(enc_group_commit);\n}\nexport function get_group_prefix(pnonces, group_pk, message) {\n const msg_bytes = Buff.hex(message);\n const msg_hash = H.H4(msg_bytes);\n const commit_list = get_commits_prefix(pnonces);\n const commit_hash = H.H5(commit_list);\n return Buff.join([group_pk, msg_hash, commit_hash]);\n}\nexport function get_bind_factor(binders, idx) {\n for (const bind of binders) {\n if (idx === bind.idx) {\n return Buff.bytes(bind.factor).big;\n }\n }\n throw new Error('invalid participant');\n}\nexport function get_group_binders(nonces, prefix) {\n return nonces.map(({ idx }) => {\n const scalar = G.SerializeScalar(idx);\n const rho_input = Buff.join([prefix, scalar]);\n return { idx, factor: H.H1(rho_input).hex };\n });\n}\nexport function get_group_pubnonce(pnonces, binders) {\n let group_commit = null;\n for (const { idx, binder_pn, hidden_pn } of pnonces) {\n const hidden_elem = G.DeserializeElement(hidden_pn);\n const binding_elem = G.DeserializeElement(binder_pn);\n const bind_factor = get_bind_factor(binders, idx);\n const factored_elem = G.ScalarMulti(binding_elem, bind_factor);\n group_commit = G.ElementAdd(group_commit, hidden_elem);\n group_commit = G.ElementAdd(group_commit, factored_elem);\n }\n assert.exists(group_commit);\n return G.SerializeElement(group_commit).hex;\n}\nexport function create_commit_pkg(secret_share, hidden_seed, binder_seed) {\n const { idx, seckey } = secret_share;\n const binder_sn = generate_nonce(seckey, binder_seed).hex;\n const hidden_sn = generate_nonce(seckey, hidden_seed).hex;\n const binder_pn = get_pubkey(binder_sn);\n const hidden_pn = get_pubkey(hidden_sn);\n return { idx, binder_pn, binder_sn, hidden_pn, hidden_sn };\n}\nexport function get_commit_pkg(commits, share) {\n const idx = share.idx;\n return get_record(commits, idx);\n}\n","export function hasEvenY(point) {\n return point.hasEvenY();\n}\n","import { Buff } from '@vbyte/buff';\nimport { _0n, _1n, _N } from '../const.js';\nimport { mod_n } from './util.js';\nimport * as G from './group.js';\nimport { hasEvenY } from '../types/index.js';\nexport function get_point_state(element, tweaks = []) {\n const ints = tweaks.map(e => Buff.bytes(e).big);\n const pos = _1n;\n const neg = _N - pos;\n let point = element, parity = pos, state = pos, tweak = _0n;\n for (const t of ints) {\n const tG = G.ScalarBaseMulti(t);\n parity = hasEvenY(point) ? pos : neg;\n point = (parity === neg) ? point.negate() : point;\n point = G.ElementAdd(point, tG);\n point.assertValidity();\n state = mod_n(parity * state);\n tweak = mod_n(t + (parity * tweak));\n }\n parity = hasEvenY(point) ? pos : neg;\n return { parity, point, state, tweak };\n}\n","import { Buff } from '@vbyte/buff';\nimport { get_point_state } from '../ecc/state.js';\nimport { lift_x } from '../ecc/util.js';\nimport { get_challenge } from '../lib/helpers.js';\nimport { get_group_binders, get_group_prefix, get_group_pubnonce, get_nonce_ids } from './commit.js';\nexport function get_group_key_context(pubkey, tweaks) {\n const int_pk = Buff.bytes(pubkey).hex;\n const int_pt = lift_x(int_pk);\n const group_pt = get_point_state(int_pt, tweaks);\n const group_pk = group_pt.point.toHex(true);\n return { int_pk, int_pt, group_pk, group_pt };\n}\nexport function get_group_commit_context(key_ctx, pnonces, message) {\n const group_pubkey = key_ctx.group_pk;\n const bind_prefix = get_group_prefix(pnonces, group_pubkey, message).hex;\n const bind_factors = get_group_binders(pnonces, bind_prefix);\n const group_pn = get_group_pubnonce(pnonces, bind_factors);\n const indexes = get_nonce_ids(pnonces);\n const challenge = get_challenge(group_pn, group_pubkey, message);\n message = Buff.bytes(message).hex;\n return { bind_prefix, bind_factors, challenge, pnonces, group_pn, indexes, message };\n}\nexport function get_group_signing_ctx(group_pk, pnonces, message, tweaks) {\n const key_ctx = get_group_key_context(group_pk, tweaks);\n const com_ctx = get_group_commit_context(key_ctx, pnonces, message);\n return { ...key_ctx, ...com_ctx };\n}\n","import { _0n, _1n, FIELD } from '../const.js';\nimport { mod_n } from '../ecc/util.js';\nimport { assert } from '../util/index.js';\nexport function evaluate_x(L, x) {\n if (x === _0n) {\n throw new Error('x is zero');\n }\n let value = _0n;\n for (const coeff of [...L].reverse()) {\n value *= x;\n value += coeff;\n value = mod_n(value);\n }\n return value;\n}\nexport function interpolate_root(points) {\n const coeffs = points.map(e => e[0]);\n let p = _0n;\n for (const [x, y] of points) {\n const delta = interpolate_x(coeffs, x);\n p += delta * y;\n p = mod_n(p);\n }\n return p;\n}\nexport function interpolate_x(L, x) {\n assert.is_included(L, x);\n assert.is_unique_set(L);\n let numerator = _1n, denominator = _1n;\n for (const x_j of L) {\n if (x_j === x)\n continue;\n numerator = mod_n(FIELD.mul(numerator, x_j));\n denominator = mod_n(FIELD.mul(denominator, x_j - x));\n }\n return mod_n(FIELD.div(numerator, denominator));\n}\nexport function calc_lagrange_coeff(L, P, x) {\n assert.is_unique_set(L);\n let numerator = _1n, denominator = _1n;\n for (const x_j of L) {\n if (x_j === P)\n continue;\n numerator = mod_n(FIELD.mul(numerator, x - x_j));\n denominator = mod_n(FIELD.mul(denominator, P - x_j));\n }\n return mod_n(FIELD.div(numerator, denominator));\n}\n","import { Buff } from '@vbyte/buff';\nimport { lift_x, mod_n } from '../ecc/util.js';\nimport { G } from '../ecc/index.js';\nimport { assert } from '../util/index.js';\nimport { _0n } from '../const.js';\nimport { calc_lagrange_coeff } from './poly.js';\nexport function create_ecdh_share(members, share, pubkey) {\n if (!members.includes(share.idx)) {\n throw new Error('share index must be in members array');\n }\n const mbrs = members\n .filter(idx => idx !== share.idx)\n .map(i => BigInt(i));\n const idx = BigInt(share.idx);\n const secret = Buff.hex(share.seckey).big;\n const point = lift_x(pubkey);\n const L_coeff = calc_lagrange_coeff(mbrs, idx, _0n);\n const P_coeff = mod_n(L_coeff * secret);\n const ecdh_pt = point.multiply(P_coeff);\n const ecdh_pk = G.SerializeElement(ecdh_pt).hex;\n return { idx: share.idx, pubkey: ecdh_pk };\n}\nexport function derive_ecdh_secret(shares) {\n let point = null;\n for (const share of shares) {\n const pt = lift_x(share.pubkey);\n point = G.ElementAdd(point, pt);\n }\n assert.exists(point);\n return G.SerializeElement(point).hex;\n}\n","import { Buff } from '@vbyte/buff';\nimport { G } from '../ecc/index.js';\nimport { assert } from '../util/index.js';\nimport { mod_n, lift_x } from '../ecc/util.js';\nexport function create_share_coeffs(secrets, threshold) {\n if (threshold < 1) {\n throw new Error('threshold must be at least 1');\n }\n const coeffs = [];\n for (let i = 0; i < threshold; i++) {\n const secret = secrets.at(i);\n const coeff = (secret !== undefined)\n ? Buff.bytes(secret).big\n : Buff.random(32).big;\n coeffs.push(mod_n(coeff));\n }\n return coeffs;\n}\nexport function get_share_commits(share_coeffs) {\n return share_coeffs.map(e => {\n return G.ScalarBaseMulti(e).toHex(true);\n });\n}\nexport function merge_share_commits(commits_a, commits_b) {\n assert.equal_arr_size(commits_a, commits_b);\n const commits = [];\n for (let i = 0; i < commits_a.length; i++) {\n const point_a = lift_x(commits_a[i]);\n const point_b = lift_x(commits_b[i]);\n const point_c = G.ElementAdd(point_a, point_b);\n const commit = G.SerializeElement(point_c);\n commits.push(commit.hex);\n }\n return commits;\n}\n","import { Buff } from '@vbyte/buff';\nimport { G } from '../ecc/index.js';\nimport { _0n } from '../const.js';\nimport { assert, get_record } from '../util/index.js';\nimport { mod_n, pow_n, lift_x } from '../ecc/util.js';\nimport { interpolate_root, evaluate_x } from './poly.js';\nexport function create_shares(coeffs, count) {\n if (coeffs.length === 0) {\n throw new Error('coeffs array cannot be empty');\n }\n if (count < 1) {\n throw new Error('count must be at least 1');\n }\n const shares = [];\n for (let i = 1; i < count + 1; i++) {\n const scalar = evaluate_x(coeffs, BigInt(i));\n const seckey = Buff.big(scalar, 32).hex;\n shares.push({ idx: i, seckey });\n }\n return shares;\n}\nexport function get_share(shares, index) {\n return get_record(shares, index);\n}\nexport function combine_shares(shares) {\n const secret = shares\n .map(e => Buff.bytes(e.seckey).big)\n .reduce((acc, cur) => mod_n(acc + cur), _0n);\n return Buff.big(secret, 32).hex;\n}\nexport function combine_set(shares) {\n if (shares.length === 0) {\n throw new Error('shares array cannot be empty');\n }\n assert.is_equal_set(shares.map(e => e.idx));\n const idx = shares[0].idx;\n const seckey = combine_shares(shares);\n return { idx, seckey };\n}\nexport function merge_shares(shares_a, shares_b) {\n assert.equal_arr_size(shares_a, shares_b);\n const shares = [];\n for (let i = 0; i < shares_a.length; i++) {\n const curr_share = shares_a[i];\n const aux_share = get_record(shares_b, curr_share.idx);\n const agg_share = combine_set([curr_share, aux_share]);\n shares.push(agg_share);\n }\n return shares;\n}\nexport function verify_share(commits, share, thold) {\n const scalar = Buff.bytes(share.seckey).big;\n const S_i = G.ScalarBaseMulti(scalar);\n let S_ip = null;\n for (let j = 0; j < thold; j++) {\n const point = lift_x(commits[j]);\n const scalar = pow_n(share.idx, j);\n const prod = G.ScalarMulti(point, scalar);\n S_ip = G.ElementAdd(S_ip, prod);\n }\n assert.exists(S_ip);\n return S_i.x === S_ip.x;\n}\nexport function derive_shares_secret(shares) {\n const coords = shares.map(share => [\n BigInt(share.idx),\n Buff.bytes(share.seckey).big\n ]);\n const secret = interpolate_root(coords);\n return Buff.big(secret).hex;\n}\n","import { create_shares } from './shares.js';\nimport { create_share_coeffs, get_share_commits } from './vss.js';\nexport function create_share_set(threshold, share_max, secrets = []) {\n if (threshold < 1) {\n throw new Error('threshold must be at least 1');\n }\n if (share_max < 1) {\n throw new Error('share_max must be at least 1');\n }\n if (threshold > share_max) {\n throw new Error('threshold cannot exceed share_max');\n }\n const coeffs = create_share_coeffs(secrets, threshold);\n const shares = create_shares(coeffs, share_max);\n const vss_commits = get_share_commits(coeffs);\n return { shares, vss_commits };\n}\nexport function create_dealer_set(threshold, share_max, secrets = []) {\n const share_set = create_share_set(threshold, share_max, secrets);\n const group_pk = share_set.vss_commits[0];\n return { ...share_set, group_pk };\n}\n","import { Buff } from '@vbyte/buff';\nimport { schnorr } from '@noble/curves/secp256k1.js';\nimport { G } from '../ecc/index.js';\nimport { lift_x, mod_n } from '../ecc/util.js';\nimport { _0n, _1n, _N } from '../const.js';\nimport { get_pubkey } from './helpers.js';\nimport { interpolate_x } from './poly.js';\nimport { get_group_binders, get_group_prefix, get_group_pubnonce, get_bind_factor } from './commit.js';\nimport { hasEvenY } from '../types/index.js';\nexport function sign_msg(ctx, share, snonce) {\n const { bind_factors, challenge, indexes, group_pt } = ctx;\n const bind_factor = get_bind_factor(bind_factors, share.idx);\n const coefficient = interpolate_x(indexes, BigInt(share.idx));\n if (snonce.idx !== share.idx) {\n throw new Error(`commit index does not match share index: ${snonce.idx} !== ${share.idx}`);\n }\n let hidden_nonce = Buff.bytes(snonce.hidden_sn).big, binder_nonce = Buff.bytes(snonce.binder_sn).big, seckey = Buff.bytes(share.seckey).big;\n const R_elem = lift_x(ctx.group_pn);\n if (!hasEvenY(R_elem)) {\n hidden_nonce = _N - hidden_nonce;\n binder_nonce = _N - binder_nonce;\n }\n const adjusted_secret = mod_n(group_pt.parity * group_pt.state * seckey);\n const combined_nonce = mod_n(hidden_nonce + (binder_nonce * bind_factor));\n const partial_sig = mod_n((challenge * coefficient * adjusted_secret) + combined_nonce);\n return {\n idx: share.idx,\n psig: Buff.big(partial_sig, 32).hex,\n pubkey: get_pubkey(share.seckey)\n };\n}\nexport function combine_partial_sigs(context, psigs) {\n const { challenge, pnonces, group_pt, group_pk, message } = context;\n const commit_prefix = get_group_prefix(pnonces, group_pk, message);\n const group_binders = get_group_binders(pnonces, commit_prefix);\n const group_pnonce = get_group_pubnonce(pnonces, group_binders);\n const ps = psigs\n .map(e => Buff.hex(e.psig).big)\n .reduce((acc, nxt) => mod_n(acc + nxt), _0n);\n const twk = mod_n(challenge * group_pt.parity * group_pt.tweak);\n const s = mod_n(ps + twk);\n return Buff.join([group_pnonce.slice(2), Buff.big(s, 32)]).hex;\n}\nexport function verify_partial_sig(ctx, pnonce, share_pk, share_psig) {\n const { bind_factors, challenge, indexes, group_pn, group_pt } = ctx;\n const binder = get_bind_factor(bind_factors, pnonce.idx);\n let hidden_elem = lift_x(pnonce.hidden_pn), binder_elem = lift_x(pnonce.binder_pn), public_elem = lift_x(share_pk);\n const R_elem = lift_x(group_pn);\n if (!hasEvenY(R_elem)) {\n hidden_elem = G.ScalarMulti(hidden_elem, _N - _1n);\n binder_elem = G.ScalarMulti(binder_elem, _N - _1n);\n }\n const commit_elem = G.ScalarMulti(binder_elem, binder);\n const nonce_elem = G.ElementAdd(hidden_elem, commit_elem);\n const lambda_i = interpolate_x(indexes, BigInt(pnonce.idx));\n const state = mod_n(group_pt.parity * group_pt.state);\n const chal = mod_n(challenge * lambda_i * state);\n const sig = Buff.hex(share_psig).big;\n const sG = G.ScalarBaseMulti(sig);\n const pki = G.ScalarMulti(public_elem, chal);\n const R = G.ElementAdd(nonce_elem, pki);\n return sG.x === R.x;\n}\nexport function verify_final_sig(context, message, signature) {\n const sig = Buff.bytes(signature);\n const msg = Buff.bytes(message);\n const pk = Buff.hex(context.group_pk.slice(2));\n return schnorr.verify(sig, msg, pk);\n}\n","import { create_ecdh_share, derive_ecdh_secret } from '@cmdcode/frost/lib';\nexport function create_ecdh_pkg(members, ecdh_pk, secshare) {\n const ecdh_share = create_ecdh_share(members, secshare, ecdh_pk);\n return { idx: ecdh_share.idx, keyshare: ecdh_share.pubkey, members, ecdh_pk };\n}\nexport function combine_ecdh_pkgs(pkgs) {\n const keyshares = pkgs.map(e => {\n return { idx: e.idx, pubkey: e.keyshare };\n });\n return derive_ecdh_secret(keyshares);\n}\n","import { z } from 'zod';\nconst big = z.bigint(), bool = z.boolean(), date = z.date(), num = z.number(), uint = z.number().max(Number.MAX_SAFE_INTEGER), str = z.string(), stamp = z.number().min(500_000_000).max(Number.MAX_SAFE_INTEGER), any = z.any();\nconst sats = z.bigint().max(100000000n * 21000000n);\nconst literal = z.union([\n z.string(), z.number(), z.boolean(), z.null()\n]);\nconst json = z.lazy(() => z.union([literal, z.array(json), z.record(json)]));\nconst hex = z.string().regex(/^[0-9a-fA-F]*$/).refine(e => e.length % 2 === 0);\nconst hex20 = hex.refine((e) => e.length === 40);\nconst hex32 = hex.refine((e) => e.length === 64);\nconst hex33 = hex.refine((e) => e.length === 66);\nconst hex64 = hex.refine((e) => e.length === 128);\nconst base58 = z.string().regex(/^[1-9A-HJ-NP-Za-km-z]+$/);\nconst base64 = z.string().regex(/^[a-zA-Z0-9+/]+={0,2}$/);\nconst base64url = z.string().regex(/^[a-zA-Z0-9\\-_]+={0,2}$/);\nconst bech32 = z.string().regex(/^[a-z]+1[023456789acdefghjklmnpqrstuvwxyz]+$/);\nexport default {\n any,\n base58,\n base64,\n base64url,\n bech32,\n big,\n bool,\n date,\n hex20,\n hex32,\n hex33,\n hex64,\n hex,\n json,\n literal,\n num,\n sats,\n str,\n stamp,\n uint\n};\n","import { z } from 'zod';\nimport base from './base.js';\nconst policy = z.object({\n send: z.boolean(),\n recv: z.boolean()\n});\nconst config = z.object({\n pubkey: base.hex32,\n policy: policy\n});\nconst data = config.extend({\n status: z.enum(['online', 'offline']),\n updated: base.stamp\n});\nexport default { config, data, policy };\n","import { z } from 'zod';\nimport base from './base.js';\nimport peer from './peer.js';\nconst cache = z.object({\n ecdh: z.map(base.hex33, base.hex33).optional()\n});\nconst middleware = z.object({\n ecdh: z.function().optional(),\n sign: z.function().optional()\n});\nconst config = z.object({\n debug: z.boolean(),\n middleware: middleware,\n policies: peer.config.array(),\n sign_ival: base.num\n});\nexport default { cache, config, middleware };\n","import { z } from 'zod';\nimport base from './base.js';\nconst commit = z.object({\n idx: base.num,\n pubkey: base.hex33,\n hidden_pn: base.hex33,\n binder_pn: base.hex33\n});\nconst group = z.object({\n commits: z.array(commit),\n group_pk: base.hex33,\n threshold: base.num\n});\nconst share = z.object({\n idx: base.num,\n binder_sn: base.hex32,\n hidden_sn: base.hex32,\n seckey: base.hex32\n});\nconst ecdh = z.object({\n idx: base.num,\n keyshare: base.hex,\n members: base.num.array(),\n ecdh_pk: base.hex\n});\nexport default {\n commit,\n ecdh,\n group,\n share\n};\n","import z from 'zod';\nimport base from './base.js';\nimport pkg from './pkg.js';\nconst commit = pkg.commit.extend({\n bind_hash: base.hex32,\n sid: base.hex32,\n sighash: base.hex32\n});\nconst member = pkg.share.extend({\n bind_hash: base.hex32,\n sid: base.hex32,\n sighash: base.hex32\n});\nconst psig_entry = z.tuple([base.hex32, base.hex32]);\nconst sighash_vec = z.tuple([base.hex32]).rest(base.hex32);\nconst template = z.object({\n content: base.str.nullable(),\n hashes: sighash_vec.array(),\n members: base.num.array(),\n stamp: base.num,\n type: base.str,\n});\nconst session = template.extend({\n gid: base.hex32,\n sid: base.hex32,\n});\nconst psig_pkg = z.object({\n idx: base.num,\n psigs: psig_entry.array(),\n pubkey: base.hex33,\n sid: base.hex32\n});\nexport default { commit, member, psig_entry, psig_pkg, session, sighash_vec, template };\n","import base from './base.js';\nimport node from './node.js';\nimport peer from './peer.js';\nimport pkg from './pkg.js';\nimport sign from './sign.js';\nexport default { base, node, peer, pkg, sign };\n","import Schema from '../schema/index.js';\nexport function parse_ecdh_message(msg) {\n try {\n const schema = Schema.pkg.ecdh;\n const json = JSON.parse(msg.data);\n const parsed = schema.parse(json);\n return { ...msg, data: parsed };\n }\n catch {\n throw new Error('ecdh message failed validation');\n }\n}\nexport function parse_session_message(msg) {\n try {\n const schema = Schema.sign.session;\n const json = JSON.parse(msg.data);\n const parsed = schema.parse(json);\n return { ...msg, data: parsed };\n }\n catch {\n throw new Error('session message failed validation');\n }\n}\nexport function parse_psig_message(msg) {\n try {\n const schema = Schema.sign.psig_pkg;\n const json = JSON.parse(msg.data);\n const parsed = schema.parse(json);\n return { ...msg, data: parsed };\n }\n catch (err) {\n throw new Error('signature message failed validation');\n }\n}\nexport function parse_group_pkg(group_pkg) {\n try {\n const schema = Schema.pkg.group;\n return schema.parse(group_pkg);\n }\n catch (err) {\n console.log('error:', err);\n throw new Error('group package failed validation');\n }\n}\nexport function parse_share_pkg(share_pkg) {\n try {\n const schema = Schema.pkg.share;\n return schema.parse(share_pkg);\n }\n catch (err) {\n console.log('error:', err);\n throw new Error('share package failed validation');\n }\n}\n","export const now = () => Math.floor(Date.now() / 1000);\nexport const sleep = (ms = 1000) => new Promise(res => setTimeout(res, ms));\nexport function copy_obj(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport function normalize_obj(obj) {\n if (obj instanceof Map || Array.isArray(obj) || typeof obj !== 'object') {\n return obj;\n }\n else {\n return Object.keys(obj)\n .sort()\n .filter(([_, value]) => value !== undefined)\n .reduce((sorted, key) => {\n sorted[key] = obj[key];\n return sorted;\n }, {});\n }\n}\nexport function parse_error(err) {\n if (err instanceof Error)\n return err.message;\n if (typeof err === 'string')\n return err;\n return String(err);\n}\nexport function validate_schema(obj, schema, err_msg) {\n const parsed = schema.safeParse(obj);\n if (parsed.success)\n return true;\n if (err_msg === undefined)\n return false;\n throw new Error(err_msg ?? 'object failed schema validation');\n}\n","import { Buff } from '@cmdcode/buff';\nimport { validate_schema } from './helpers.js';\nexport var Assert;\n(function (Assert) {\n function ok(value, message) {\n if (value === false)\n throw new Error(message ?? 'Assertion failed!');\n }\n Assert.ok = ok;\n function equal(actual, expected, err_msg) {\n if (actual !== expected)\n throw new Error(err_msg ?? `${actual} !== ${expected}`);\n }\n Assert.equal = equal;\n function exists(input, err_msg) {\n if (typeof input === 'undefined') {\n throw new TypeError(err_msg ?? 'Input is undefined!');\n }\n if (input === null) {\n throw new TypeError(err_msg ?? 'Input is null!');\n }\n }\n Assert.exists = exists;\n function size(input, size, err_msg) {\n const bytes = Buff.bytes(input);\n if (bytes.length !== size) {\n throw new Error(err_msg ?? `Invalid byte size: ${bytes.hex} !== ${size}`);\n }\n return true;\n }\n Assert.size = size;\n function schema(schema, input, err_msg) {\n exists(input);\n validate_schema(input, schema, err_msg ?? null);\n }\n Assert.schema = schema;\n function is_hex(input) {\n if (typeof input !== 'string' ||\n input.match(/[^a-fA-F0-9]/) !== null ||\n input.length % 2 !== 0) {\n throw new Error('invalid hex:' + input);\n }\n }\n Assert.is_hex = is_hex;\n})(Assert || (Assert = {}));\n","import { Buff } from '@cmdcode/buff';\nimport { Assert } from './assert.js';\nimport { secp256k1, schnorr } from '@noble/curves/secp256k1';\nimport { Field } from '@noble/curves/abstract/modular';\nconst _N = secp256k1.CURVE.n;\nconst FD = Field(_N, 32, true);\nconst GP = secp256k1.ProjectivePoint.BASE;\nexport function get_seckey(secret, even_y = false) {\n let sk = serialize_bytes(secret).big % _N;\n if (even_y) {\n const pt = GP.multiply(sk);\n return (pt.hasEvenY())\n ? Buff.big(sk).hex\n : Buff.big(_N - sk).hex;\n }\n else {\n return Buff.big(sk).hex;\n }\n}\nexport function get_pubkey(seckey, format) {\n const sk = serialize_bytes(seckey).big;\n const pt = GP.multiply(sk);\n const pk = pt.toHex(true);\n return convert_pubkey(pk, format);\n}\nexport function tweak_seckey(seckey, tweak, even_y = false) {\n const sk = serialize_bytes(seckey).big;\n const twk = serialize_bytes(tweak).big;\n const tweaked_sk = FD.add(sk, twk);\n const new_secret = Buff.big(tweaked_sk);\n return get_seckey(new_secret, even_y);\n}\nexport function tweak_pubkey(pubkey, tweak, even_y = false) {\n const format = get_pubkey_format(pubkey);\n const twk_big = serialize_bytes(tweak).big;\n const pub_pt = lift_pubkey(pubkey);\n const tweak_pt = GP.multiply(twk_big);\n let tweaked_pt = pub_pt.add(tweak_pt);\n if (even_y && !tweaked_pt.hasEvenY()) {\n tweaked_pt = tweaked_pt.negate();\n }\n const pk = tweaked_pt.toHex(true);\n return convert_pubkey(pk, format);\n}\nexport function verify_seckey(seckey) {\n const sk = serialize_bytes(seckey);\n Assert.size(sk, 32, 'ecdsa secret keys must be 32 bytes long');\n Assert.ok(sk.big < _N, 'ecdsa secret keys must be less than the curve order');\n Assert.ok(sk.big > 0, 'ecdsa secret keys must be greater than zero');\n}\nexport function verify_pubkey(pubkey, format) {\n const pk = serialize_bytes(pubkey);\n if (format === 'bip340') {\n Assert.size(pk, 32, 'bip340 public keys must be 32 bytes long');\n }\n else if (format === 'ecdsa') {\n Assert.size(pk, 33, 'ecdsa public keys must be 33 bytes long');\n }\n else {\n throw new Error('invalid format: ' + format);\n }\n verify_point(pk);\n}\nexport function verify_signature(signature, message, pubkey, format) {\n const sig = serialize_bytes(signature);\n const msg = serialize_bytes(message);\n const pk = serialize_pubkey(pubkey, format);\n return (format === 'bip340')\n ? schnorr.verify(sig, msg, pk)\n : secp256k1.verify(sig, msg, pk);\n}\nexport function verify_point(pubkey) {\n try {\n const pt = lift_pubkey(pubkey);\n pt.assertValidity();\n }\n catch (err) {\n throw new Error('invalid secp256k1 point: ' + pubkey);\n }\n}\nexport function verify_even_y(pubkey) {\n const pt = lift_pubkey(pubkey);\n Assert.ok(pt.hasEvenY(), 'pubkey must have an even y-coordinate');\n}\nexport function lift_pubkey(pubkey) {\n try {\n const pk = convert_pubkey(pubkey, 'ecdsa');\n return secp256k1.ProjectivePoint.fromHex(pk);\n }\n catch (err) {\n throw new Error('invalid pubkey: ' + pubkey);\n }\n}\nexport function serialize_pubkey(pubkey, format) {\n try {\n const pk = serialize_bytes(pubkey);\n if (pk.length === 33 && format === 'bip340') {\n return pk.slice(1);\n }\n else if (pk.length === 32 && format === 'ecdsa') {\n return pk.prepend(0x02);\n }\n else {\n return pk;\n }\n }\n catch (err) {\n throw new Error('invalid pubkey: ' + String(pubkey));\n }\n}\nexport function convert_pubkey(pubkey, format) {\n const pk = serialize_pubkey(pubkey, format);\n return pk.hex;\n}\nexport function get_pubkey_format(pubkey) {\n const pk = serialize_bytes(pubkey);\n if (pk.length === 33)\n return 'ecdsa';\n if (pk.length === 32)\n return 'bip340';\n throw new Error('invalid pubkey: ' + String(pubkey));\n}\nexport function serialize_bytes(bytes) {\n try {\n return Buff.bytes(bytes);\n }\n catch (err) {\n throw new Error('invalid bytes: ' + String(bytes));\n }\n}\n","export var Parse;\n(function (Parse) {\n function error(err) {\n if (err instanceof Error)\n return err.message;\n if (typeof err === 'string')\n return err;\n return String(err);\n }\n Parse.error = error;\n function data(data, schema) {\n return schema.safeParse(data);\n }\n Parse.data = data;\n function array(data, schema) {\n const parsed = data.map(e => schema.safeParse(e));\n const errors = parsed\n .filter(e => !e.success)\n .map(e => e.error.errors.map(x => `${x.message}: ${x.path}`));\n return (errors.length !== 0)\n ? { ok: false, errors }\n : { ok: true, data: parsed.map(e => e.data) };\n }\n Parse.array = array;\n})(Parse || (Parse = {}));\n","import { derive_shares_secret } from '@cmdcode/frost/lib';\nimport { Assert } from '../util/index.js';\nimport { convert_pubkey, get_pubkey } from '../util/crypto.js';\nexport function get_group_indexes(group) {\n return group.commits.map(e => e.idx);\n}\nexport function select_random_peers(peers, thold) {\n const rnd = () => Math.random() > 0.5 ? 1 : -1;\n const idx = Math.min(peers.length, thold - 1);\n return peers.sort(rnd).slice(0, idx);\n}\nexport function get_member_indexes(group, pubkeys) {\n const indexes = group.commits\n .filter(e => pubkeys.includes(convert_pubkey(e.pubkey, 'bip340')))\n .map(e => e.idx);\n Assert.ok(indexes.length === pubkeys.length, 'index count does not match pubkey count');\n return indexes;\n}\nexport function recover_secret_key(group, shares) {\n Assert.ok(shares.length >= group.threshold, 'not enough shares provided');\n const pubkeys = group.commits.map(e => e.pubkey);\n for (const share of shares) {\n const pk = get_pubkey(share.seckey, 'ecdsa');\n Assert.ok(pubkeys.includes(pk), 'share not found in group: ' + share.idx);\n }\n return derive_shares_secret(shares);\n}\n","export const COMMIT_INDEX_SIZE = 4;\nexport const COMMIT_PUBKEY_SIZE = 33;\nexport const COMMIT_PNONCE_SIZE = 33;\nexport const COMMIT_DATA_SIZE = 103;\nexport const GROUP_DATA_SIZE = 37;\nexport const GROUP_PUBKEY_SIZE = 33;\nexport const GROUP_THOLD_SIZE = 4;\nexport const PEER_STATE_EXPIRY = 30;\nexport const SHARE_DATA_SIZE = 100;\nexport const SHARE_INDEX_SIZE = 4;\nexport const SHARE_SECKEY_SIZE = 32;\nexport const SHARE_SNONCE_SIZE = 32;\nexport const KIND_MAP = {\n MSG_EVENT: 20004\n};\n","import { now } from '../util/helpers.js';\nimport { PEER_STATE_EXPIRY } from '../const.js';\nexport function get_peer_by_pubkey(peers, pubkey) {\n return peers.find(e => e.pubkey === pubkey);\n}\nexport function get_peer_pubkeys(peers) {\n return peers.map(e => e.pubkey);\n}\nexport function get_recv_pubkeys(peers) {\n return peers\n .filter(e => e.policy.recv)\n .map(e => e.pubkey);\n}\nexport function get_send_pubkeys(peers) {\n return peers\n .filter(e => e.policy.send)\n .map(e => e.pubkey);\n}\nexport function get_expired_pubkeys(peers) {\n return peers.filter(e => {\n return e.status === 'offline' || e.updated < now() - PEER_STATE_EXPIRY;\n }).map(e => e.pubkey);\n}\n","import { finalize_message } from '@cmdcode/nostr-p2p/lib';\nimport { combine_ecdh_pkgs } from '../lib/ecdh.js';\nimport { parse_ecdh_message } from '../lib/parse.js';\nimport { Assert, copy_obj, parse_error } from '../util/index.js';\nimport { get_member_indexes, select_random_peers } from '../lib/util.js';\nimport { get_send_pubkeys } from '../lib/peer.js';\nexport async function ecdh_handler_api(node, msg) {\n const middleware = node.config.middleware.ecdh;\n try {\n node.emit('/ecdh/handler/req', copy_obj(msg));\n if (typeof middleware === 'function') {\n msg = middleware(node, msg);\n }\n const { members, ecdh_pk } = msg.data;\n const pkg = node.signer.gen_ecdh_share(members, ecdh_pk);\n const envelope = finalize_message({\n data: JSON.stringify(pkg),\n id: msg.id,\n tag: '/ecdh/res'\n });\n const res = await node.client.publish(envelope, msg.env.pubkey);\n if (!res.ok)\n throw new Error('failed to publish response');\n node.emit('/ecdh/handler/res', copy_obj(res.data));\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n node.emit('/ecdh/handler/rej', [parse_error(err), copy_obj(msg)]);\n }\n}\nexport function ecdh_request_api(node) {\n return async (ecdh_pk, peers) => {\n const thold = node.group.threshold;\n const send_pks = get_send_pubkeys(node.peers);\n const selected = select_random_peers(peers ??= send_pks, thold);\n const encrypted = node.cache.ecdh.get(ecdh_pk);\n if (encrypted !== undefined) {\n return { ok: true, data: node.signer.unwrap(encrypted, ecdh_pk) };\n }\n const members = get_member_indexes(node.group, [node.pubkey, ...selected]);\n const self_pkg = node.signer.gen_ecdh_share(members, ecdh_pk);\n let msgs = null;\n try {\n msgs = await create_ecdh_request(node, selected, self_pkg);\n node.emit('/ecdh/sender/res', copy_obj(msgs));\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n const reason = parse_error(err);\n node.emit('/ecdh/sender/rej', [reason, copy_obj(self_pkg)]);\n return { ok: false, err: reason };\n }\n try {\n Assert.ok(msgs !== null, 'no responses from peers');\n const pkgs = [self_pkg, ...msgs.map(e => e.data)];\n const secret = finalize_ecdh_response(pkgs);\n const content = node.signer.wrap(secret, ecdh_pk);\n node.cache.ecdh.set(ecdh_pk, content);\n node.emit('/ecdh/sender/ret', [ecdh_pk, secret]);\n return { ok: true, data: secret };\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n const reason = parse_error(err);\n node.emit('/ecdh/sender/err', [reason, copy_obj(msgs ?? [])]);\n return { ok: false, err: reason };\n }\n };\n}\nasync function create_ecdh_request(node, peers, pkg) {\n const msg = { data: JSON.stringify(pkg), tag: '/ecdh/req' };\n const res = await node.client.multicast(msg, peers);\n if (!res.sub.ok)\n throw new Error(res.sub.reason);\n return res.sub.inbox.map(e => {\n const parsed = parse_ecdh_message(e);\n Assert.ok(parsed !== null, 'invalid ecdh response from pubkey: ' + e.env.pubkey);\n return parsed;\n });\n}\nfunction finalize_ecdh_response(pkgs) {\n return combine_ecdh_pkgs(pkgs);\n}\n","import { finalize_message } from '@cmdcode/nostr-p2p/lib';\nimport { Assert, parse_error } from '../util/index.js';\nexport async function echo_handler_api(node, msg) {\n try {\n node.emit('/echo/handler/req', msg);\n const peer_data = node.peers.find(e => e.pubkey === msg.env.pubkey);\n if (peer_data === undefined)\n throw new Error('peer data not found');\n const envelope = finalize_message({\n data: JSON.stringify(peer_data.policy),\n id: msg.id,\n tag: '/echo/res'\n });\n const res = await node.client.publish(envelope, msg.env.pubkey);\n if (!res.ok)\n throw new Error('failed to publish response');\n node.emit('/echo/handler/res', res.data);\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n node.emit('/echo/handler/rej', [parse_error(err), msg]);\n }\n}\nexport function echo_request_api(node) {\n return async (challenge) => {\n let msg = null;\n try {\n msg = await create_echo_request(node, challenge);\n node.emit('/echo/sender/res', msg);\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n const reason = parse_error(err);\n node.emit('/echo/sender/rej', [reason, msg]);\n return { ok: false, err: reason };\n }\n try {\n Assert.ok(msg !== null, 'no response from self');\n node.emit('/echo/sender/ret', [msg.data]);\n return { ok: true, data: msg.data };\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n const reason = parse_error(err);\n node.emit('/echo/sender/err', [reason, msg]);\n return { ok: false, err: reason };\n }\n };\n}\nasync function create_echo_request(node, challenge) {\n const res = await node.client.request({\n data: challenge,\n tag: '/echo/req'\n }, node.pubkey, {});\n if (!res.ok)\n throw new Error(res.reason);\n return res.inbox[0];\n}\n","import { finalize_message } from '@cmdcode/nostr-p2p/lib';\nimport Schema from '../schema/index.js';\nimport { Assert, now, parse_error } from '../util/index.js';\nexport async function ping_handler_api(node, msg) {\n try {\n node.emit('/ping/handler/req', msg);\n const peer_data = node.peers.find(e => e.pubkey === msg.env.pubkey);\n if (peer_data === undefined)\n throw new Error('peer data not found');\n const envelope = finalize_message({\n data: JSON.stringify(peer_data.policy),\n id: msg.id,\n tag: '/ping/res'\n });\n const res = await node.client.publish(envelope, msg.env.pubkey);\n if (!res.ok)\n throw new Error('failed to publish response');\n node.update_peer({\n ...peer_data,\n status: 'online',\n updated: now()\n });\n node.emit('/ping/handler/res', res.data);\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n node.emit('/ping/handler/rej', [parse_error(err), msg]);\n }\n}\nexport function ping_request_api(node) {\n return async (pubkey) => {\n const peer_data = node.peers.find(e => e.pubkey === pubkey);\n Assert.exists(peer_data, 'peer data not found');\n let msg = null;\n try {\n msg = await create_ping_request(node, pubkey);\n node.emit('/ping/sender/res', msg);\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n const reason = parse_error(err);\n node.emit('/ping/sender/rej', [reason, msg]);\n return { ok: false, err: reason };\n }\n try {\n Assert.ok(msg !== null, 'no response from peer');\n const policy = parse_ping_response(msg);\n if (policy === null)\n throw new Error('invalid ping response');\n const new_data = {\n ...peer_data,\n status: 'online',\n updated: now()\n };\n node.update_peer(new_data);\n node.emit('/ping/sender/ret', new_data);\n return { ok: true, data: policy };\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n const reason = parse_error(err);\n node.emit('/ping/sender/err', [reason, msg]);\n node.update_peer({\n ...peer_data,\n status: 'offline',\n updated: now()\n });\n return { ok: false, err: reason };\n }\n };\n}\nasync function create_ping_request(node, pubkey) {\n const res = await node.client.request({\n data: 'ping',\n tag: '/ping/req'\n }, pubkey, {});\n if (!res.ok)\n throw new Error(res.reason);\n return res.inbox[0];\n}\nfunction parse_ping_response(msg) {\n try {\n const json = JSON.parse(msg.data);\n const parsed = Schema.peer.policy.safeParse(json);\n if (!parsed.success)\n return null;\n return parsed.data;\n }\n catch {\n return null;\n }\n}\n","import { Buff } from '@cmdcode/buff';\nimport { tweak_pubkey, tweak_seckey } from '../util/crypto.js';\nexport function format_sigvector(message) {\n if (Array.isArray(message)) {\n return message;\n }\n else if (typeof message === 'string') {\n return [message];\n }\n else {\n throw new Error('invalid message payload');\n }\n}\nexport function create_sighash_commit(session_id, commit, sigvec) {\n const bind_hash = get_sighash_binder(session_id, commit.idx, sigvec);\n const hidden_pn = tweak_pubkey(commit.hidden_pn, bind_hash);\n const binder_pn = tweak_pubkey(commit.binder_pn, bind_hash);\n const [sighash] = sigvec;\n return { ...commit, binder_pn, hidden_pn, bind_hash, sighash, sid: session_id };\n}\nexport function create_sighash_share(session_id, share, sigvec) {\n const bind_hash = get_sighash_binder(session_id, share.idx, sigvec);\n const hidden_sn = tweak_seckey(share.hidden_sn, bind_hash);\n const binder_sn = tweak_seckey(share.binder_sn, bind_hash);\n const [sighash] = sigvec;\n return { ...share, binder_sn, hidden_sn, bind_hash, sighash, sid: session_id };\n}\nexport function get_sighash_binder(session_id, member_idx, sighash) {\n const sid = Buff.bytes(session_id);\n const idx = Buff.num(member_idx, 4);\n const msg = Buff.join(sighash);\n const pre = Buff.join([sid, idx, msg]);\n return pre.digest.hex;\n}\n","import { Buff } from '@cmdcode/buff';\nimport { get_commits_prefix } from '@cmdcode/frost/lib';\nimport { get_pubkey } from '../util/crypto.js';\nimport { Assert } from '../util/assert.js';\nexport function get_group_id(group) {\n const prefix = get_commits_prefix(group.commits);\n const preimg = Buff.join([prefix, group.group_pk]);\n return preimg.digest.hex;\n}\nexport function get_commit_by_pubkey(commits, pubkey) {\n const commit = commits.find(e => e.pubkey === pubkey);\n Assert.exists(commit, 'commit package not found for pubkey: ' + pubkey);\n return commit;\n}\nexport function get_commit_by_idx(commits, idx) {\n const commit = commits.find(e => e.idx === idx);\n Assert.exists(commit, 'commit package not found for idx: ' + idx);\n return commit;\n}\nexport function is_group_member(group, share) {\n const idx = share.idx;\n const pubkey = get_pubkey(share.seckey, 'ecdsa');\n return group.commits.some(e => e.idx === idx && e.pubkey === pubkey);\n}\n","import { Buff } from '@cmdcode/buff';\nimport { get_group_signing_ctx } from '@cmdcode/frost/lib';\nimport { now } from '../util/index.js';\nimport { get_commit_by_idx, get_group_id } from './group.js';\nimport { create_sighash_commit, create_sighash_share } from './sighash.js';\nimport Schema from '../schema/index.js';\nexport const GET_DEFAULT_SESSION_CONFIG = () => {\n return {\n content: null,\n stamp: now(),\n type: 'message',\n };\n};\nexport function create_session_template(members, messages, options = {}) {\n const hashes = typeof messages === 'string'\n ? [[messages]]\n : messages;\n const schema = Schema.sign.template;\n const parsed = schema.safeParse({\n ...GET_DEFAULT_SESSION_CONFIG(),\n ...options,\n hashes: hashes,\n members: members.sort()\n });\n return parsed.success ? parsed.data : null;\n}\nexport function create_session_pkg(group, template) {\n const gid = get_group_id(group);\n const sid = get_session_id(gid, template);\n return { ...template, gid, sid };\n}\nexport function verify_session_pkg(group, session) {\n const gid = get_group_id(group);\n const sid = get_session_id(gid, session);\n return session.gid === gid && session.sid === sid;\n}\nexport function get_session_id(group_id, template) {\n const mbrs = template.members.map(e => Buff.bytes(e));\n const msgs = template.hashes.map(e => Buff.join(e));\n const cont = Buff.bytes(template.content ?? '00');\n const type = Buff.str(template.type);\n const ts = Buff.num(template.stamp, 4);\n const pimg = Buff.join([group_id, ...mbrs, ...msgs, cont, type, ts]);\n return pimg.digest.hex;\n}\nexport function create_member_commits(group, session, idx) {\n const commit = get_commit_by_idx(group.commits, idx);\n return session.hashes.map(vec => create_sighash_commit(session.sid, commit, vec));\n}\nexport function create_member_shares(session, share) {\n return session.hashes.map(vec => create_sighash_share(session.sid, share, vec));\n}\nexport function create_session_commits(group, session) {\n return session.members\n .map(idx => create_member_commits(group, session, idx))\n .flat();\n}\nexport function get_session_ctx(group, session) {\n const pubkeys = group.commits.map(e => e.pubkey);\n const session_commits = create_session_commits(group, session);\n const sigmap = new Map();\n for (const vec of session.hashes) {\n const [sighash, ...tweaks] = vec;\n const sighash_commits = session_commits.filter(e => e.sighash === sighash);\n const context = get_group_signing_ctx(group.group_pk, sighash_commits, sighash, tweaks);\n sigmap.set(sighash, context);\n }\n return { pubkeys, session, sigmap };\n}\n","import { get_pubkey } from '../util/crypto.js';\nimport { create_member_shares } from './session.js';\nimport { Assert } from '../util/assert.js';\nimport { combine_partial_sigs, sign_msg, verify_partial_sig } from '@cmdcode/frost/lib';\nexport function create_psig_pkg(ctx, share) {\n const sid = ctx.session.sid;\n const pubkey = get_pubkey(share.seckey, 'ecdsa');\n const sighashes = ctx.session.hashes.map(e => e[0]);\n const sig_shares = create_member_shares(ctx.session, share);\n const psigs = sighashes.map(sighash => {\n const sig_share = sig_shares.find(e => e.sighash === sighash);\n const sig_ctx = ctx.sigmap.get(sighash);\n Assert.exists(sig_share, 'share not found for sighash: ' + sighash);\n Assert.exists(sig_ctx, 'context not found for sighash: ' + sighash);\n const psig = create_partial_sig(sig_ctx, sig_share);\n return [sighash, psig];\n });\n return { idx: share.idx, psigs, pubkey, sid };\n}\nexport function verify_psig_pkg(ctx, pkg) {\n const { idx, psigs, pubkey, sid } = pkg;\n if (sid !== ctx.session.sid)\n return 'session id mismatch';\n if (!ctx.pubkeys.includes(pubkey))\n return 'pubkey not found in group';\n for (const [sighash, sigctx] of ctx.sigmap.entries()) {\n const psig_entry = psigs.find(e => e[0] === sighash);\n if (psig_entry === undefined)\n return 'partial signature entry not found for sighash: ' + sighash;\n const pnonce = sigctx.pnonces.find(e => e.idx === idx);\n if (pnonce === undefined)\n return 'commit package not found for psig idx: ' + idx;\n if (!verify_partial_sig(sigctx, pnonce, pubkey, psig_entry[1]))\n return 'partial signature invalid';\n }\n return null;\n}\nexport function create_psig_records(pkgs) {\n return pkgs.map(({ idx, psigs, pubkey, sid }) => {\n return psigs.map(([sighash, psig]) => ({ sighash, idx, pubkey, psig, sid }));\n }).flat();\n}\nexport function combine_signature_pkgs(ctx, pkgs) {\n const count = ctx.session.members.length;\n const records = create_psig_records(pkgs);\n const sigs = [];\n for (const [sighash, sigctx] of ctx.sigmap.entries()) {\n const psigs = records.filter(e => e.sighash === sighash);\n Assert.ok(psigs.length === count, 'missing partial signatures for sighash: ' + sighash);\n const pubkey = sigctx.group_pk;\n const sig = combine_partial_sigs(sigctx, psigs);\n sigs.push([sighash, pubkey, sig]);\n }\n return sigs;\n}\nexport function create_partial_sig(ctx, share) {\n const { idx, binder_sn, hidden_sn, seckey } = share;\n const secshare = { idx, seckey };\n const secnonce = { idx, binder_sn, hidden_sn };\n const psig_pkg = sign_msg(ctx, secshare, secnonce);\n return psig_pkg.psig;\n}\n","import { finalize_message } from '@cmdcode/nostr-p2p/lib';\nimport { parse_psig_message } from '../lib/parse.js';\nimport { get_send_pubkeys } from '../lib/peer.js';\nimport { format_sigvector } from '../lib/sighash.js';\nimport { get_member_indexes, select_random_peers } from '../lib/util.js';\nimport { Assert, copy_obj, parse_error } from '../util/index.js';\nimport { create_session_pkg, create_session_template, get_session_ctx } from '../lib/session.js';\nimport { combine_signature_pkgs, verify_psig_pkg } from '../lib/sign.js';\nexport async function sign_handler_api(node, msg) {\n const middleware = node.config.middleware.sign;\n try {\n node.emit('/sign/handler/req', copy_obj(msg));\n if (typeof middleware === 'function') {\n msg = middleware(node, msg);\n }\n const pkg = node.signer.sign_session(msg.data);\n const envelope = finalize_message({\n data: JSON.stringify(pkg),\n id: msg.id,\n tag: '/sign/res'\n });\n const res = await node.client.publish(envelope, msg.env.pubkey);\n if (!res.ok)\n throw new Error('failed to publish response');\n node.emit('/sign/handler/res', copy_obj(res.data));\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n node.emit('/sign/handler/rej', [parse_error(err), copy_obj(msg)]);\n }\n}\nexport function sign_queue_api(node) {\n return async (message) => {\n const sigvec = format_sigvector(message);\n return node.queue.push(sigvec);\n };\n}\nexport function sign_request_api(node) {\n return async (message, options = {}) => {\n const sigvecs = typeof message === 'string' ? [[message]] : message;\n const send_pks = get_send_pubkeys(node.peers);\n const peers = options.peers ??= send_pks;\n const thold = node.group.threshold;\n const selected = select_random_peers(peers, thold);\n const members = get_member_indexes(node.group, [node.pubkey, ...selected]);\n const template = create_session_template(members, sigvecs, options);\n Assert.ok(template !== null, 'invalid session template');\n const session = create_session_pkg(node.group, template);\n let msgs = null;\n try {\n msgs = await create_sign_request(node, selected, session);\n node.emit('/sign/sender/res', copy_obj(msgs));\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n const reason = parse_error(err);\n node.emit('/sign/sender/rej', [reason, session]);\n return { ok: false, err: reason };\n }\n try {\n Assert.ok(msgs !== null, 'no responses from peers');\n const sigs = finalize_sign_response(node, msgs, session);\n node.emit('/sign/sender/ret', [session.sid, sigs]);\n return { ok: true, data: sigs };\n }\n catch (err) {\n if (node.debug)\n console.log(err);\n const reason = parse_error(err);\n node.emit('/sign/sender/err', [reason, msgs ?? []]);\n return { ok: false, err: reason };\n }\n };\n}\nasync function create_sign_request(node, peers, session) {\n const res = await node.client.multicast({\n data: JSON.stringify(session),\n tag: '/sign/req'\n }, peers);\n if (!res.sub.ok)\n throw new Error(res.sub.reason);\n return res.sub.inbox;\n}\nfunction finalize_sign_response(node, responses, session) {\n const ctx = get_session_ctx(node.group, session);\n const pkgs = [node.signer.sign_session(session)];\n responses.forEach(e => {\n const parsed = parse_psig_message(e);\n const error = verify_psig_pkg(ctx, parsed.data);\n Assert.ok(error === null, error + ' : ' + e.env.pubkey);\n pkgs.push(parsed.data);\n });\n return combine_signature_pkgs(ctx, pkgs);\n}\n","export * from './ecdh.js';\nexport * from './echo.js';\nexport * from './ping.js';\nexport * from './sign.js';\n","import { Buff } from '@cmdcode/buff';\nimport { get_pubkey } from '../util/crypto.js';\nimport { Assert } from '../util/assert.js';\nimport { create_dealer_set, generate_nonce } from '@cmdcode/frost/lib';\nexport function generate_dealer_pkg(threshold, share_count, secrets = [], aux_seeds = []) {\n const dealer_set = create_dealer_set(threshold, share_count, secrets);\n return create_dealer_pkg(dealer_set, aux_seeds);\n}\nexport function create_dealer_pkg(share_set, aux_seeds = []) {\n const shares = share_set.shares.map((e, idx) => create_share_pkg(e, aux_seeds.at(idx)));\n const commits = shares.map(e => {\n const binder_pn = get_pubkey(e.binder_sn, 'ecdsa');\n const hidden_pn = get_pubkey(e.hidden_sn, 'ecdsa');\n const pubkey = get_pubkey(e.seckey, 'ecdsa');\n return { idx: e.idx, binder_pn, hidden_pn, pubkey };\n });\n const group_pk = share_set.group_pk;\n const threshold = share_set.vss_commits.length;\n const group = { commits, group_pk, threshold };\n return { group, shares };\n}\nexport function create_share_pkg(share, aux) {\n const { idx, seckey } = share;\n const aux_seed = aux ?? Buff.random(64).hex;\n Assert.size(aux_seed, 64, 'auxiliary seed must be 64 bytes');\n const hidden_sn = generate_nonce(seckey, aux_seed.slice(0, 32)).hex;\n const binder_sn = generate_nonce(seckey, aux_seed.slice(32, 64)).hex;\n return { idx, binder_sn, hidden_sn, seckey };\n}\n","export * from './ecdh.js';\nexport * from './group.js';\nexport * from './pkg.js';\nexport * from './session.js';\nexport * from './sign.js';\nexport * from './util.js';\n","export class EventEmitter {\n constructor() {\n this.eventMap = new Map();\n }\n _get_event_handlers(eventName) {\n const handlers = this.eventMap.get(eventName);\n if (!handlers) {\n const newHandlers = new Set();\n this.eventMap.set(eventName, newHandlers);\n return newHandlers;\n }\n return handlers;\n }\n has(eventName) {\n const handlers = this.eventMap.get(eventName);\n return handlers !== undefined && handlers.size > 0;\n }\n on(eventName, handler) {\n this._get_event_handlers(eventName).add(handler);\n }\n once(eventName, handler) {\n const once_handler = ((payload) => {\n this.off(eventName, once_handler);\n void invoke_handler(handler, payload);\n });\n this.on(eventName, once_handler);\n }\n within(eventName, handler, timeoutMs) {\n const timeout_handler = ((payload) => {\n void invoke_handler(handler, payload);\n });\n setTimeout(() => {\n this.off(eventName, timeout_handler);\n }, timeoutMs);\n this.on(eventName, timeout_handler);\n }\n emit(eventName, payload) {\n const promises = [];\n this._get_event_handlers(eventName).forEach(handler => {\n const result = invoke_handler(handler, payload);\n if (result instanceof Promise) {\n promises.push(result);\n }\n });\n this._get_event_handlers('*').forEach(handler => {\n const result = invoke_handler(handler, [eventName, payload]);\n if (result instanceof Promise) {\n promises.push(result);\n }\n });\n void Promise.allSettled(promises);\n }\n off(eventName, handler) {\n this._get_event_handlers(eventName).delete(handler);\n }\n clear(eventName) {\n this.eventMap.delete(eventName);\n }\n}\nfunction invoke_handler(handler, payload) {\n if (Array.isArray(payload) && payload.length > 0) {\n return handler.apply(null, payload);\n }\n return handler(payload);\n}\n","import { Buff } from '@cmdcode/buff';\nimport { schnorr } from '@noble/curves/secp256k1';\nimport { get_pubkey } from '../util/crypto.js';\nimport { create_ecdh_pkg } from '../lib/ecdh.js';\nimport { get_session_ctx } from '../lib/session.js';\nimport { create_psig_pkg } from '../lib/sign.js';\nimport { decrypt_content, encrypt_content, get_shared_secret } from '@cmdcode/nostr-p2p/lib';\nimport { parse_share_pkg, parse_group_pkg } from '../lib/parse.js';\nconst SIGNER_CONFIG = () => {\n return {};\n};\nexport class BifrostSigner {\n constructor(group, share, options) {\n this._config = { ...SIGNER_CONFIG(), ...options };\n this._group = parse_group_pkg(group);\n this._share = parse_share_pkg(share);\n this._pubkey = get_pubkey(this._share.seckey, 'bip340');\n }\n get config() {\n return this._config;\n }\n get group() {\n return this._group;\n }\n get pubkey() {\n return this._pubkey;\n }\n gen_ecdh_share(members, ecdh_pk) {\n return create_ecdh_pkg(members, ecdh_pk, this._share);\n }\n sign_message(message, auxrand) {\n const sig = schnorr.sign(message, this._share.seckey, auxrand);\n return new Buff(sig).hex;\n }\n sign_session(session) {\n const ctx = get_session_ctx(this._group, session);\n return create_psig_pkg(ctx, this._share);\n }\n unwrap(content, pubkey) {\n const seckey = this._share.seckey;\n const secret = get_shared_secret(seckey, pubkey);\n return decrypt_content(secret, content);\n }\n wrap(content, pubkey) {\n const seckey = this._share.seckey;\n const secret = get_shared_secret(seckey, pubkey);\n return encrypt_content(secret, content);\n }\n}\n","export class SignerQueue {\n constructor(node) {\n this._node = node;\n this._ival = node.config.sign_ival;\n this._queue = [];\n this._timer = null;\n }\n get node() {\n return this._node;\n }\n get timer() {\n return this._timer;\n }\n async push(sigvec) {\n return new Promise((resolve, reject) => {\n this._queue.push({ sigvec, resolve, reject });\n this.schedule();\n });\n }\n async process() {\n const batch = [...this._queue];\n this._queue = [];\n this._timer = null;\n if (batch.length === 0)\n return;\n this.node.emit('info', 'batch signing event ids: ' + String(batch.map(req => req.sigvec[0])));\n try {\n const vec = batch.map(req => req.sigvec);\n const res = await this.node.req.sign(vec);\n if (!res.ok) {\n batch.forEach(req => req.reject(res.err));\n return;\n }\n batch.forEach(req => {\n const sig_entry = res.data.find(e => e[0] === req.sigvec[0]);\n if (sig_entry !== undefined) {\n req.resolve(sig_entry);\n }\n else {\n req.reject('signature missing from response');\n }\n });\n }\n catch (err) {\n batch.forEach(req => req.reject(err.message));\n }\n }\n schedule() {\n if (this.timer === null) {\n this._timer = setTimeout(() => this.process(), this._ival);\n }\n }\n}\n","export default class EventEmitter {\n constructor() {\n this.eventMap = new Map();\n }\n getEventHandlers(eventName) {\n const handlers = this.eventMap.get(eventName);\n if (!handlers) {\n const newHandlers = new Set();\n this.eventMap.set(eventName, newHandlers);\n return newHandlers;\n }\n return handlers;\n }\n has(eventName) {\n const handlers = this.eventMap.get(eventName);\n return handlers !== undefined && handlers.size > 0;\n }\n on(eventName, handler) {\n this.getEventHandlers(eventName).add(handler);\n }\n once(eventName, handler) {\n const oneTimeHandler = (payload) => {\n this.off(eventName, oneTimeHandler);\n void handler(payload);\n };\n this.on(eventName, oneTimeHandler);\n }\n within(eventName, handler, timeoutMs) {\n const timeoutHandler = (payload) => {\n void handler(payload);\n };\n setTimeout(() => {\n this.off(eventName, timeoutHandler);\n }, timeoutMs);\n this.on(eventName, timeoutHandler);\n }\n emit(eventName, payload) {\n const promises = [];\n this.getEventHandlers(eventName).forEach(handler => {\n const result = handler(payload);\n if (result instanceof Promise) {\n promises.push(result);\n }\n });\n this.getEventHandlers('*').forEach(handler => {\n const result = handler(eventName, payload);\n if (result instanceof Promise) {\n promises.push(result);\n }\n });\n void Promise.allSettled(promises);\n }\n off(eventName, handler) {\n this.getEventHandlers(eventName).delete(handler);\n }\n clear(eventName) {\n this.eventMap.delete(eventName);\n }\n}\n","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n}\nfunction isArrayOf(isString, arr) {\n if (!Array.isArray(arr))\n return false;\n if (arr.length === 0)\n return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n }\n else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\nfunction afn(input) {\n if (typeof input !== 'function')\n throw new Error('function expected');\n return true;\n}\nfunction astr(label, input) {\n if (typeof input !== 'string')\n throw new Error(`${label}: string expected`);\n return true;\n}\nfunction anumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`invalid integer: ${n}`);\n}\nfunction aArr(input) {\n if (!Array.isArray(input))\n throw new Error('array expected');\n}\nfunction astrArr(label, input) {\n if (!isArrayOf(true, input))\n throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label, input) {\n if (!isArrayOf(false, input))\n throw new Error(`${label}: array of numbers expected`);\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n const id = (a) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a, b) => (c) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters) {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(`alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`);\n return lettersA[i];\n });\n },\n decode: (input) => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data) {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0)\n throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n afn(fn);\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data, from, to) {\n // base 1 is impossible\n if (from < 2)\n throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from)\n throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i];\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!rounded)\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\nconst powers = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++)\n res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data, from, to, padding) {\n aArr(data);\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from];\n const mask = powers[to] - 1;\n const res = [];\n for (const n of data) {\n anumber(n);\n if (n >= max)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined)\n throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry > 0)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n anumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n afn(fn);\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n anumber(len);\n afn(fn);\n return {\n encode(data) {\n if (!isBytes(data))\n throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data) {\n if (!isBytes(data))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), join(''));\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), join(''));\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toBase64 === 'function' &&\n typeof Uint8Array.fromBase64 === 'function')();\nconst decodeBase64Builtin = (s, isUrl) => {\n astr('base64', s);\n const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n const alphabet = isUrl ? 'base64url' : 'base64';\n if (s.length > 0 && !re.test(s))\n throw new Error('invalid base64');\n return Uint8Array.fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64 = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64(); },\n decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64({ alphabet: 'base64url' }); },\n decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc) => chain(radix(58), alphabet(abc), join(''));\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words))\n words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0)\n throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n }\n function decode(str, limit = 90) {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n function encodeFromBytes(prefix, bytes) {\n return encode(prefix, toWords(bytes));\n }\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32 = genBech32('bech32');\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m = genBech32('bech32m');\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex === 'function' &&\n typeof Uint8Array.fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin = {\n encode(data) { abytes(data); return data.toHex(); },\n decode(s) { astr('hex', s); return Uint8Array.fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex = hasHexBuiltin\n ? hexBuiltin\n : chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n }));\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n/** @deprecated */\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!isBytes(bytes))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\n/** @deprecated */\nexport const str = bytesToString; // as in python, but for bytes only\n/** @deprecated */\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes = stringToBytes;\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// pure.ts\nimport { schnorr } from \"@noble/curves/secp256k1.js\";\nimport { bytesToHex as bytesToHex2, hexToBytes as hexToBytes2 } from \"@noble/hashes/utils.js\";\n\n// core.ts\nvar verifiedSymbol = Symbol(\"verified\");\nvar isRecord = (obj) => obj instanceof Object;\nfunction validateEvent(event) {\n if (!isRecord(event))\n return false;\n if (typeof event.kind !== \"number\")\n return false;\n if (typeof event.content !== \"string\")\n return false;\n if (typeof event.created_at !== \"number\")\n return false;\n if (typeof event.pubkey !== \"string\")\n return false;\n if (!event.pubkey.match(/^[a-f0-9]{64}$/))\n return false;\n if (!Array.isArray(event.tags))\n return false;\n for (let i2 = 0; i2 < event.tags.length; i2++) {\n let tag = event.tags[i2];\n if (!Array.isArray(tag))\n return false;\n for (let j = 0; j < tag.length; j++) {\n if (typeof tag[j] !== \"string\")\n return false;\n }\n }\n return true;\n}\nfunction sortEvents(events) {\n return events.sort((a, b) => {\n if (a.created_at !== b.created_at) {\n return b.created_at - a.created_at;\n }\n return a.id.localeCompare(b.id);\n });\n}\n\n// pure.ts\nimport { sha256 } from \"@noble/hashes/sha2.js\";\n\n// utils.ts\nvar utils_exports = {};\n__export(utils_exports, {\n binarySearch: () => binarySearch,\n bytesToHex: () => bytesToHex,\n hexToBytes: () => hexToBytes,\n insertEventIntoAscendingList: () => insertEventIntoAscendingList,\n insertEventIntoDescendingList: () => insertEventIntoDescendingList,\n mergeReverseSortedLists: () => mergeReverseSortedLists,\n normalizeURL: () => normalizeURL,\n utf8Decoder: () => utf8Decoder,\n utf8Encoder: () => utf8Encoder\n});\nimport { bytesToHex, hexToBytes } from \"@noble/hashes/utils.js\";\nvar utf8Decoder = new TextDecoder(\"utf-8\");\nvar utf8Encoder = new TextEncoder();\nfunction normalizeURL(url) {\n try {\n if (url.indexOf(\"://\") === -1)\n url = \"wss://\" + url;\n let p = new URL(url);\n if (p.protocol === \"http:\")\n p.protocol = \"ws:\";\n else if (p.protocol === \"https:\")\n p.protocol = \"wss:\";\n p.pathname = p.pathname.replace(/\\/+/g, \"/\");\n if (p.pathname.endsWith(\"/\"))\n p.pathname = p.pathname.slice(0, -1);\n if (p.port === \"80\" && p.protocol === \"ws:\" || p.port === \"443\" && p.protocol === \"wss:\")\n p.port = \"\";\n p.searchParams.sort();\n p.hash = \"\";\n return p.toString();\n } catch (e) {\n throw new Error(`Invalid URL: ${url}`);\n }\n}\nfunction insertEventIntoDescendingList(sortedArray, event) {\n const [idx, found] = binarySearch(sortedArray, (b) => {\n if (event.id === b.id)\n return 0;\n if (event.created_at === b.created_at)\n return -1;\n return b.created_at - event.created_at;\n });\n if (!found) {\n sortedArray.splice(idx, 0, event);\n }\n return sortedArray;\n}\nfunction insertEventIntoAscendingList(sortedArray, event) {\n const [idx, found] = binarySearch(sortedArray, (b) => {\n if (event.id === b.id)\n return 0;\n if (event.created_at === b.created_at)\n return -1;\n return event.created_at - b.created_at;\n });\n if (!found) {\n sortedArray.splice(idx, 0, event);\n }\n return sortedArray;\n}\nfunction binarySearch(arr, compare) {\n let start = 0;\n let end = arr.length - 1;\n while (start <= end) {\n const mid = Math.floor((start + end) / 2);\n const cmp = compare(arr[mid]);\n if (cmp === 0) {\n return [mid, true];\n }\n if (cmp < 0) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n return [start, false];\n}\nfunction mergeReverseSortedLists(list1, list2) {\n const result = new Array(list1.length + list2.length);\n result.length = 0;\n let i1 = 0;\n let i2 = 0;\n let sameTimestampIds = [];\n while (i1 < list1.length && i2 < list2.length) {\n let next;\n if (list1[i1]?.created_at > list2[i2]?.created_at) {\n next = list1[i1];\n i1++;\n } else {\n next = list2[i2];\n i2++;\n }\n if (result.length > 0 && result[result.length - 1].created_at === next.created_at) {\n if (sameTimestampIds.includes(next.id))\n continue;\n } else {\n sameTimestampIds.length = 0;\n }\n result.push(next);\n sameTimestampIds.push(next.id);\n }\n while (i1 < list1.length) {\n const next = list1[i1];\n i1++;\n if (result.length > 0 && result[result.length - 1].created_at === next.created_at) {\n if (sameTimestampIds.includes(next.id))\n continue;\n } else {\n sameTimestampIds.length = 0;\n }\n result.push(next);\n sameTimestampIds.push(next.id);\n }\n while (i2 < list2.length) {\n const next = list2[i2];\n i2++;\n if (result.length > 0 && result[result.length - 1].created_at === next.created_at) {\n if (sameTimestampIds.includes(next.id))\n continue;\n } else {\n sameTimestampIds.length = 0;\n }\n result.push(next);\n sameTimestampIds.push(next.id);\n }\n return result;\n}\n\n// pure.ts\nvar JS = class {\n generateSecretKey() {\n return schnorr.utils.randomSecretKey();\n }\n getPublicKey(secretKey) {\n return bytesToHex2(schnorr.getPublicKey(secretKey));\n }\n finalizeEvent(t, secretKey) {\n const event = t;\n event.pubkey = bytesToHex2(schnorr.getPublicKey(secretKey));\n event.id = getEventHash(event);\n event.sig = bytesToHex2(schnorr.sign(hexToBytes2(getEventHash(event)), secretKey));\n event[verifiedSymbol] = true;\n return event;\n }\n verifyEvent(event) {\n if (typeof event[verifiedSymbol] === \"boolean\")\n return event[verifiedSymbol];\n try {\n const hash = getEventHash(event);\n if (hash !== event.id) {\n event[verifiedSymbol] = false;\n return false;\n }\n const valid = schnorr.verify(hexToBytes2(event.sig), hexToBytes2(hash), hexToBytes2(event.pubkey));\n event[verifiedSymbol] = valid;\n return valid;\n } catch (err) {\n event[verifiedSymbol] = false;\n return false;\n }\n }\n};\nfunction serializeEvent(evt) {\n if (!validateEvent(evt))\n throw new Error(\"can't serialize event with wrong or missing properties\");\n return JSON.stringify([0, evt.pubkey, evt.created_at, evt.kind, evt.tags, evt.content]);\n}\nfunction getEventHash(event) {\n let eventHash = sha256(utf8Encoder.encode(serializeEvent(event)));\n return bytesToHex2(eventHash);\n}\nvar i = new JS();\nvar generateSecretKey = i.generateSecretKey;\nvar getPublicKey = i.getPublicKey;\nvar finalizeEvent = i.finalizeEvent;\nvar verifyEvent = i.verifyEvent;\n\n// kinds.ts\nvar kinds_exports = {};\n__export(kinds_exports, {\n Application: () => Application,\n BadgeAward: () => BadgeAward,\n BadgeDefinition: () => BadgeDefinition,\n BlockedRelaysList: () => BlockedRelaysList,\n BlossomServerList: () => BlossomServerList,\n BookmarkList: () => BookmarkList,\n Bookmarksets: () => Bookmarksets,\n Calendar: () => Calendar,\n CalendarEventRSVP: () => CalendarEventRSVP,\n ChannelCreation: () => ChannelCreation,\n ChannelHideMessage: () => ChannelHideMessage,\n ChannelMessage: () => ChannelMessage,\n ChannelMetadata: () => ChannelMetadata,\n ChannelMuteUser: () => ChannelMuteUser,\n ChatMessage: () => ChatMessage,\n ClassifiedListing: () => ClassifiedListing,\n ClientAuth: () => ClientAuth,\n Comment: () => Comment,\n CommunitiesList: () => CommunitiesList,\n CommunityDefinition: () => CommunityDefinition,\n CommunityPostApproval: () => CommunityPostApproval,\n Contacts: () => Contacts,\n CreateOrUpdateProduct: () => CreateOrUpdateProduct,\n CreateOrUpdateStall: () => CreateOrUpdateStall,\n Curationsets: () => Curationsets,\n Date: () => Date2,\n DirectMessageRelaysList: () => DirectMessageRelaysList,\n DraftClassifiedListing: () => DraftClassifiedListing,\n DraftLong: () => DraftLong,\n Emojisets: () => Emojisets,\n EncryptedDirectMessage: () => EncryptedDirectMessage,\n EventDeletion: () => EventDeletion,\n FavoriteRelays: () => FavoriteRelays,\n FileMessage: () => FileMessage,\n FileMetadata: () => FileMetadata,\n FileServerPreference: () => FileServerPreference,\n Followsets: () => Followsets,\n ForumThread: () => ForumThread,\n GenericRepost: () => GenericRepost,\n Genericlists: () => Genericlists,\n GiftWrap: () => GiftWrap,\n GroupMetadata: () => GroupMetadata,\n HTTPAuth: () => HTTPAuth,\n Handlerinformation: () => Handlerinformation,\n Handlerrecommendation: () => Handlerrecommendation,\n Highlights: () => Highlights,\n InterestsList: () => InterestsList,\n Interestsets: () => Interestsets,\n JobFeedback: () => JobFeedback,\n JobRequest: () => JobRequest,\n JobResult: () => JobResult,\n Label: () => Label,\n LightningPubRPC: () => LightningPubRPC,\n LiveChatMessage: () => LiveChatMessage,\n LiveEvent: () => LiveEvent,\n LongFormArticle: () => LongFormArticle,\n Metadata: () => Metadata,\n Mutelist: () => Mutelist,\n NWCWalletInfo: () => NWCWalletInfo,\n NWCWalletRequest: () => NWCWalletRequest,\n NWCWalletResponse: () => NWCWalletResponse,\n NormalVideo: () => NormalVideo,\n NostrConnect: () => NostrConnect,\n OpenTimestamps: () => OpenTimestamps,\n Photo: () => Photo,\n Pinlist: () => Pinlist,\n Poll: () => Poll,\n PollResponse: () => PollResponse,\n PrivateDirectMessage: () => PrivateDirectMessage,\n ProblemTracker: () => ProblemTracker,\n ProfileBadges: () => ProfileBadges,\n PublicChatsList: () => PublicChatsList,\n Reaction: () => Reaction,\n RecommendRelay: () => RecommendRelay,\n RelayList: () => RelayList,\n RelayReview: () => RelayReview,\n Relaysets: () => Relaysets,\n Report: () => Report,\n Reporting: () => Reporting,\n Repost: () => Repost,\n Seal: () => Seal,\n SearchRelaysList: () => SearchRelaysList,\n ShortTextNote: () => ShortTextNote,\n ShortVideo: () => ShortVideo,\n Time: () => Time,\n UserEmojiList: () => UserEmojiList,\n UserStatuses: () => UserStatuses,\n Voice: () => Voice,\n VoiceComment: () => VoiceComment,\n Zap: () => Zap,\n ZapGoal: () => ZapGoal,\n ZapRequest: () => ZapRequest,\n classifyKind: () => classifyKind,\n isAddressableKind: () => isAddressableKind,\n isEphemeralKind: () => isEphemeralKind,\n isKind: () => isKind,\n isRegularKind: () => isRegularKind,\n isReplaceableKind: () => isReplaceableKind\n});\nfunction isRegularKind(kind) {\n return kind < 1e4 && kind !== 0 && kind !== 3;\n}\nfunction isReplaceableKind(kind) {\n return kind === 0 || kind === 3 || 1e4 <= kind && kind < 2e4;\n}\nfunction isEphemeralKind(kind) {\n return 2e4 <= kind && kind < 3e4;\n}\nfunction isAddressableKind(kind) {\n return 3e4 <= kind && kind < 4e4;\n}\nfunction classifyKind(kind) {\n if (isRegularKind(kind))\n return \"regular\";\n if (isReplaceableKind(kind))\n return \"replaceable\";\n if (isEphemeralKind(kind))\n return \"ephemeral\";\n if (isAddressableKind(kind))\n return \"parameterized\";\n return \"unknown\";\n}\nfunction isKind(event, kind) {\n const kindAsArray = kind instanceof Array ? kind : [kind];\n return validateEvent(event) && kindAsArray.includes(event.kind) || false;\n}\nvar Metadata = 0;\nvar ShortTextNote = 1;\nvar RecommendRelay = 2;\nvar Contacts = 3;\nvar EncryptedDirectMessage = 4;\nvar EventDeletion = 5;\nvar Repost = 6;\nvar Reaction = 7;\nvar BadgeAward = 8;\nvar ChatMessage = 9;\nvar ForumThread = 11;\nvar Seal = 13;\nvar PrivateDirectMessage = 14;\nvar FileMessage = 15;\nvar GenericRepost = 16;\nvar Photo = 20;\nvar NormalVideo = 21;\nvar ShortVideo = 22;\nvar ChannelCreation = 40;\nvar ChannelMetadata = 41;\nvar ChannelMessage = 42;\nvar ChannelHideMessage = 43;\nvar ChannelMuteUser = 44;\nvar OpenTimestamps = 1040;\nvar GiftWrap = 1059;\nvar Poll = 1068;\nvar FileMetadata = 1063;\nvar Comment = 1111;\nvar LiveChatMessage = 1311;\nvar Voice = 1222;\nvar VoiceComment = 1244;\nvar ProblemTracker = 1971;\nvar Report = 1984;\nvar Reporting = 1984;\nvar Label = 1985;\nvar CommunityPostApproval = 4550;\nvar JobRequest = 5999;\nvar JobResult = 6999;\nvar JobFeedback = 7e3;\nvar ZapGoal = 9041;\nvar ZapRequest = 9734;\nvar Zap = 9735;\nvar Highlights = 9802;\nvar PollResponse = 1018;\nvar Mutelist = 1e4;\nvar Pinlist = 10001;\nvar RelayList = 10002;\nvar BookmarkList = 10003;\nvar CommunitiesList = 10004;\nvar PublicChatsList = 10005;\nvar BlockedRelaysList = 10006;\nvar SearchRelaysList = 10007;\nvar FavoriteRelays = 10012;\nvar InterestsList = 10015;\nvar UserEmojiList = 10030;\nvar DirectMessageRelaysList = 10050;\nvar FileServerPreference = 10096;\nvar BlossomServerList = 10063;\nvar NWCWalletInfo = 13194;\nvar LightningPubRPC = 21e3;\nvar ClientAuth = 22242;\nvar NWCWalletRequest = 23194;\nvar NWCWalletResponse = 23195;\nvar NostrConnect = 24133;\nvar HTTPAuth = 27235;\nvar Followsets = 3e4;\nvar Genericlists = 30001;\nvar Relaysets = 30002;\nvar Bookmarksets = 30003;\nvar Curationsets = 30004;\nvar ProfileBadges = 30008;\nvar BadgeDefinition = 30009;\nvar Interestsets = 30015;\nvar CreateOrUpdateStall = 30017;\nvar CreateOrUpdateProduct = 30018;\nvar LongFormArticle = 30023;\nvar DraftLong = 30024;\nvar Emojisets = 30030;\nvar Application = 30078;\nvar LiveEvent = 30311;\nvar UserStatuses = 30315;\nvar ClassifiedListing = 30402;\nvar DraftClassifiedListing = 30403;\nvar Date2 = 31922;\nvar Time = 31923;\nvar Calendar = 31924;\nvar CalendarEventRSVP = 31925;\nvar RelayReview = 31987;\nvar Handlerrecommendation = 31989;\nvar Handlerinformation = 31990;\nvar CommunityDefinition = 34550;\nvar GroupMetadata = 39e3;\n\n// filter.ts\nfunction matchFilter(filter, event) {\n if (filter.ids && filter.ids.indexOf(event.id) === -1) {\n return false;\n }\n if (filter.kinds && filter.kinds.indexOf(event.kind) === -1) {\n return false;\n }\n if (filter.authors && filter.authors.indexOf(event.pubkey) === -1) {\n return false;\n }\n for (let f in filter) {\n if (f[0] === \"#\") {\n let tagName = f.slice(1);\n let values = filter[`#${tagName}`];\n if (values && !event.tags.find(([t, v]) => t === f.slice(1) && values.indexOf(v) !== -1))\n return false;\n }\n }\n if (filter.since && event.created_at < filter.since)\n return false;\n if (filter.until && event.created_at > filter.until)\n return false;\n return true;\n}\nfunction matchFilters(filters, event) {\n for (let i2 = 0; i2 < filters.length; i2++) {\n if (matchFilter(filters[i2], event)) {\n return true;\n }\n }\n return false;\n}\nfunction mergeFilters(...filters) {\n let result = {};\n for (let i2 = 0; i2 < filters.length; i2++) {\n let filter = filters[i2];\n Object.entries(filter).forEach(([property, values]) => {\n if (property === \"kinds\" || property === \"ids\" || property === \"authors\" || property[0] === \"#\") {\n result[property] = result[property] || [];\n for (let v = 0; v < values.length; v++) {\n let value = values[v];\n if (!result[property].includes(value))\n result[property].push(value);\n }\n }\n });\n if (filter.limit && (!result.limit || filter.limit > result.limit))\n result.limit = filter.limit;\n if (filter.until && (!result.until || filter.until > result.until))\n result.until = filter.until;\n if (filter.since && (!result.since || filter.since < result.since))\n result.since = filter.since;\n }\n return result;\n}\nfunction getFilterLimit(filter) {\n if (filter.ids && !filter.ids.length)\n return 0;\n if (filter.kinds && !filter.kinds.length)\n return 0;\n if (filter.authors && !filter.authors.length)\n return 0;\n for (const [key, value] of Object.entries(filter)) {\n if (key[0] === \"#\" && Array.isArray(value) && !value.length)\n return 0;\n }\n return Math.min(\n Math.max(0, filter.limit ?? Infinity),\n filter.ids?.length ?? Infinity,\n filter.authors?.length && filter.kinds?.every((kind) => isReplaceableKind(kind)) ? filter.authors.length * filter.kinds.length : Infinity,\n filter.authors?.length && filter.kinds?.every((kind) => isAddressableKind(kind)) && filter[\"#d\"]?.length ? filter.authors.length * filter.kinds.length * filter[\"#d\"].length : Infinity\n );\n}\n\n// fakejson.ts\nvar fakejson_exports = {};\n__export(fakejson_exports, {\n getHex64: () => getHex64,\n getInt: () => getInt,\n getSubscriptionId: () => getSubscriptionId,\n matchEventId: () => matchEventId,\n matchEventKind: () => matchEventKind,\n matchEventPubkey: () => matchEventPubkey\n});\nfunction getHex64(json, field) {\n let len = field.length + 3;\n let idx = json.indexOf(`\"${field}\":`) + len;\n let s = json.slice(idx).indexOf(`\"`) + idx + 1;\n return json.slice(s, s + 64);\n}\nfunction getInt(json, field) {\n let len = field.length;\n let idx = json.indexOf(`\"${field}\":`) + len + 3;\n let sliced = json.slice(idx);\n let end = Math.min(sliced.indexOf(\",\"), sliced.indexOf(\"}\"));\n return parseInt(sliced.slice(0, end), 10);\n}\nfunction getSubscriptionId(json) {\n let idx = json.slice(0, 22).indexOf(`\"EVENT\"`);\n if (idx === -1)\n return null;\n let pstart = json.slice(idx + 7 + 1).indexOf(`\"`);\n if (pstart === -1)\n return null;\n let start = idx + 7 + 1 + pstart;\n let pend = json.slice(start + 1, 80).indexOf(`\"`);\n if (pend === -1)\n return null;\n let end = start + 1 + pend;\n return json.slice(start + 1, end);\n}\nfunction matchEventId(json, id) {\n return id === getHex64(json, \"id\");\n}\nfunction matchEventPubkey(json, pubkey) {\n return pubkey === getHex64(json, \"pubkey\");\n}\nfunction matchEventKind(json, kind) {\n return kind === getInt(json, \"kind\");\n}\n\n// nip42.ts\nvar nip42_exports = {};\n__export(nip42_exports, {\n makeAuthEvent: () => makeAuthEvent\n});\nfunction makeAuthEvent(relayURL, challenge) {\n return {\n kind: ClientAuth,\n created_at: Math.floor(Date.now() / 1e3),\n tags: [\n [\"relay\", relayURL],\n [\"challenge\", challenge]\n ],\n content: \"\"\n };\n}\n\n// abstract-relay.ts\nvar SendingOnClosedConnection = class extends Error {\n constructor(message, relay) {\n super(`Tried to send message '${message} on a closed connection to ${relay}.`);\n this.name = \"SendingOnClosedConnection\";\n }\n};\nvar AbstractRelay = class {\n url;\n _connected = false;\n onclose = null;\n onnotice = (msg) => console.debug(`NOTICE from ${this.url}: ${msg}`);\n onauth;\n baseEoseTimeout = 4400;\n publishTimeout = 4400;\n pingFrequency = 29e3;\n pingTimeout = 2e4;\n resubscribeBackoff = [1e4, 1e4, 1e4, 2e4, 2e4, 3e4, 6e4];\n openSubs = /* @__PURE__ */ new Map();\n enablePing;\n enableReconnect;\n idleSince = Date.now();\n ongoingOperations = 0;\n reconnectTimeoutHandle;\n pingIntervalHandle;\n reconnectAttempts = 0;\n skipReconnection = false;\n connectionPromise;\n openCountRequests = /* @__PURE__ */ new Map();\n openEventPublishes = /* @__PURE__ */ new Map();\n ws;\n challenge;\n authPromise;\n serial = 0;\n verifyEvent;\n _WebSocket;\n constructor(url, opts) {\n this.url = normalizeURL(url);\n this.verifyEvent = opts.verifyEvent;\n this._WebSocket = opts.websocketImplementation || WebSocket;\n this.enablePing = opts.enablePing;\n this.enableReconnect = opts.enableReconnect || false;\n }\n static async connect(url, opts) {\n const relay = new AbstractRelay(url, opts);\n await relay.connect(opts);\n return relay;\n }\n closeAllSubscriptions(reason) {\n for (let [_, sub] of this.openSubs) {\n sub.close(reason);\n }\n this.openSubs.clear();\n for (let [_, ep] of this.openEventPublishes) {\n ep.reject(new Error(reason));\n }\n this.openEventPublishes.clear();\n for (let [_, cr] of this.openCountRequests) {\n cr.reject(new Error(reason));\n }\n this.openCountRequests.clear();\n }\n get connected() {\n return this._connected;\n }\n async reconnect() {\n const backoff = this.resubscribeBackoff[Math.min(this.reconnectAttempts, this.resubscribeBackoff.length - 1)];\n this.reconnectAttempts++;\n this.reconnectTimeoutHandle = setTimeout(async () => {\n try {\n await this.connect();\n } catch (err) {\n }\n }, backoff);\n }\n handleHardClose(reason) {\n if (this.pingIntervalHandle) {\n clearInterval(this.pingIntervalHandle);\n this.pingIntervalHandle = void 0;\n }\n this._connected = false;\n this.connectionPromise = void 0;\n this.idleSince = void 0;\n if (this.enableReconnect && !this.skipReconnection) {\n this.reconnect();\n } else {\n this.onclose?.();\n this.closeAllSubscriptions(reason);\n }\n }\n async connect(opts) {\n let connectionTimeoutHandle;\n if (this.connectionPromise)\n return this.connectionPromise;\n this.challenge = void 0;\n this.authPromise = void 0;\n this.skipReconnection = false;\n this.connectionPromise = new Promise((resolve, reject) => {\n if (opts?.timeout) {\n connectionTimeoutHandle = setTimeout(() => {\n reject(\"connection timed out\");\n this.connectionPromise = void 0;\n this.skipReconnection = true;\n this.onclose?.();\n this.handleHardClose(\"relay connection timed out\");\n }, opts.timeout);\n }\n if (opts?.abort) {\n opts.abort.onabort = reject;\n }\n try {\n this.ws = new this._WebSocket(this.url);\n } catch (err) {\n clearTimeout(connectionTimeoutHandle);\n reject(err);\n return;\n }\n this.ws.onopen = () => {\n if (this.reconnectTimeoutHandle) {\n clearTimeout(this.reconnectTimeoutHandle);\n this.reconnectTimeoutHandle = void 0;\n }\n clearTimeout(connectionTimeoutHandle);\n this._connected = true;\n const isReconnection = this.reconnectAttempts > 0;\n this.reconnectAttempts = 0;\n for (const sub of this.openSubs.values()) {\n sub.eosed = false;\n if (isReconnection) {\n for (let f = 0; f < sub.filters.length; f++) {\n if (sub.lastEmitted) {\n sub.filters[f].since = sub.lastEmitted + 1;\n }\n }\n }\n sub.fire();\n }\n if (this.enablePing) {\n this.pingIntervalHandle = setInterval(() => this.pingpong(), this.pingFrequency);\n }\n resolve();\n };\n this.ws.onerror = () => {\n clearTimeout(connectionTimeoutHandle);\n reject(\"connection failed\");\n this.connectionPromise = void 0;\n this.skipReconnection = true;\n this.onclose?.();\n this.handleHardClose(\"relay connection failed\");\n };\n this.ws.onclose = (ev) => {\n clearTimeout(connectionTimeoutHandle);\n reject(ev.message || \"websocket closed\");\n this.handleHardClose(\"relay connection closed\");\n };\n this.ws.onmessage = this._onmessage.bind(this);\n });\n return this.connectionPromise;\n }\n waitForPingPong() {\n return new Promise((resolve) => {\n ;\n this.ws.once(\"pong\", () => resolve(true));\n this.ws.ping();\n });\n }\n waitForDummyReq() {\n return new Promise((resolve, reject) => {\n if (!this.connectionPromise)\n return reject(new Error(`no connection to ${this.url}, can't ping`));\n try {\n const sub = this.subscribe(\n [{ ids: [\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"], limit: 0 }],\n {\n label: \"<forced-ping>\",\n oneose: () => {\n resolve(true);\n sub.close();\n },\n onclose() {\n resolve(true);\n },\n eoseTimeout: this.pingTimeout + 1e3\n }\n );\n } catch (err) {\n reject(err);\n }\n });\n }\n async pingpong() {\n if (this.ws?.readyState === 1) {\n const result = await Promise.any([\n this.ws && this.ws.ping && this.ws.once ? this.waitForPingPong() : this.waitForDummyReq(),\n new Promise((res) => setTimeout(() => res(false), this.pingTimeout))\n ]);\n if (!result) {\n if (this.ws?.readyState === this._WebSocket.OPEN) {\n this.ws?.close();\n }\n }\n }\n }\n async send(message) {\n if (!this.connectionPromise)\n throw new SendingOnClosedConnection(message, this.url);\n this.connectionPromise.then(() => {\n this.ws?.send(message);\n });\n }\n async auth(signAuthEvent) {\n const challenge = this.challenge;\n if (!challenge)\n throw new Error(\"can't perform auth, no challenge was received\");\n if (this.authPromise)\n return this.authPromise;\n this.authPromise = new Promise(async (resolve, reject) => {\n try {\n let evt = await signAuthEvent(makeAuthEvent(this.url, challenge));\n let timeout = setTimeout(() => {\n let ep = this.openEventPublishes.get(evt.id);\n if (ep) {\n ep.reject(new Error(\"auth timed out\"));\n this.openEventPublishes.delete(evt.id);\n }\n }, this.publishTimeout);\n this.openEventPublishes.set(evt.id, { resolve, reject, timeout });\n this.send('[\"AUTH\",' + JSON.stringify(evt) + \"]\");\n } catch (err) {\n console.warn(\"subscribe auth function failed:\", err);\n }\n });\n return this.authPromise;\n }\n async publish(event) {\n this.idleSince = void 0;\n this.ongoingOperations++;\n const ret = new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n const ep = this.openEventPublishes.get(event.id);\n if (ep) {\n ep.reject(new Error(\"publish timed out\"));\n this.openEventPublishes.delete(event.id);\n }\n }, this.publishTimeout);\n this.openEventPublishes.set(event.id, { resolve, reject, timeout });\n });\n this.send('[\"EVENT\",' + JSON.stringify(event) + \"]\");\n this.ongoingOperations--;\n if (this.ongoingOperations === 0)\n this.idleSince = Date.now();\n return ret;\n }\n async count(filters, params) {\n this.serial++;\n const id = params?.id || \"count:\" + this.serial;\n const ret = new Promise((resolve, reject) => {\n this.openCountRequests.set(id, { resolve, reject });\n });\n this.send('[\"COUNT\",\"' + id + '\",' + JSON.stringify(filters).substring(1));\n return ret;\n }\n subscribe(filters, params) {\n if (params.label !== \"<forced-ping>\") {\n this.idleSince = void 0;\n this.ongoingOperations++;\n }\n const sub = this.prepareSubscription(filters, params);\n sub.fire();\n if (params.abort) {\n params.abort.onabort = () => sub.close(String(params.abort.reason || \"<aborted>\"));\n }\n return sub;\n }\n prepareSubscription(filters, params) {\n this.serial++;\n const id = params.id || (params.label ? params.label + \":\" : \"sub:\") + this.serial;\n const sub = new Subscription(this, id, filters, params);\n this.openSubs.set(id, sub);\n return sub;\n }\n close() {\n this.skipReconnection = true;\n if (this.reconnectTimeoutHandle) {\n clearTimeout(this.reconnectTimeoutHandle);\n this.reconnectTimeoutHandle = void 0;\n }\n if (this.pingIntervalHandle) {\n clearInterval(this.pingIntervalHandle);\n this.pingIntervalHandle = void 0;\n }\n this.closeAllSubscriptions(\"relay connection closed by us\");\n this._connected = false;\n this.idleSince = void 0;\n this.onclose?.();\n if (this.ws?.readyState === this._WebSocket.OPEN) {\n this.ws?.close();\n }\n }\n _onmessage(ev) {\n const json = ev.data;\n if (!json) {\n return;\n }\n const subid = getSubscriptionId(json);\n if (subid) {\n const so = this.openSubs.get(subid);\n if (!so) {\n return;\n }\n const id = getHex64(json, \"id\");\n const alreadyHave = so.alreadyHaveEvent?.(id);\n so.receivedEvent?.(this, id);\n if (alreadyHave) {\n return;\n }\n }\n try {\n let data = JSON.parse(json);\n switch (data[0]) {\n case \"EVENT\": {\n const so = this.openSubs.get(data[1]);\n const event = data[2];\n if (this.verifyEvent(event) && matchFilters(so.filters, event)) {\n so.onevent(event);\n } else {\n so.oninvalidevent?.(event);\n }\n if (!so.lastEmitted || so.lastEmitted < event.created_at)\n so.lastEmitted = event.created_at;\n return;\n }\n case \"COUNT\": {\n const id = data[1];\n const payload = data[2];\n const cr = this.openCountRequests.get(id);\n if (cr) {\n cr.resolve(payload.count);\n this.openCountRequests.delete(id);\n }\n return;\n }\n case \"EOSE\": {\n const so = this.openSubs.get(data[1]);\n if (!so)\n return;\n so.receivedEose();\n return;\n }\n case \"OK\": {\n const id = data[1];\n const ok = data[2];\n const reason = data[3];\n const ep = this.openEventPublishes.get(id);\n if (ep) {\n clearTimeout(ep.timeout);\n if (ok)\n ep.resolve(reason);\n else\n ep.reject(new Error(reason));\n this.openEventPublishes.delete(id);\n }\n return;\n }\n case \"CLOSED\": {\n const id = data[1];\n const so = this.openSubs.get(id);\n if (!so)\n return;\n so.closed = true;\n so.close(data[2]);\n return;\n }\n case \"NOTICE\": {\n this.onnotice(data[1]);\n return;\n }\n case \"AUTH\": {\n this.challenge = data[1];\n if (this.onauth) {\n this.auth(this.onauth);\n }\n return;\n }\n default: {\n const so = this.openSubs.get(data[1]);\n so?.oncustom?.(data);\n return;\n }\n }\n } catch (err) {\n try {\n const [_, __, event] = JSON.parse(json);\n console.warn(`[nostr] relay ${this.url} error processing message:`, err, event);\n } catch (_) {\n console.warn(`[nostr] relay ${this.url} error processing message:`, err);\n }\n return;\n }\n }\n};\nvar Subscription = class {\n relay;\n id;\n lastEmitted;\n closed = false;\n eosed = false;\n filters;\n alreadyHaveEvent;\n receivedEvent;\n onevent;\n oninvalidevent;\n oneose;\n onclose;\n oncustom;\n eoseTimeout;\n eoseTimeoutHandle;\n constructor(relay, id, filters, params) {\n if (filters.length === 0)\n throw new Error(\"subscription can't be created with zero filters\");\n this.relay = relay;\n this.filters = filters;\n this.id = id;\n this.alreadyHaveEvent = params.alreadyHaveEvent;\n this.receivedEvent = params.receivedEvent;\n this.eoseTimeout = params.eoseTimeout || relay.baseEoseTimeout;\n this.oneose = params.oneose;\n this.onclose = params.onclose;\n this.oninvalidevent = params.oninvalidevent;\n this.onevent = params.onevent || ((event) => {\n console.warn(\n `onevent() callback not defined for subscription '${this.id}' in relay ${this.relay.url}. event received:`,\n event\n );\n });\n }\n fire() {\n this.relay.send('[\"REQ\",\"' + this.id + '\",' + JSON.stringify(this.filters).substring(1));\n this.eoseTimeoutHandle = setTimeout(this.receivedEose.bind(this), this.eoseTimeout);\n }\n receivedEose() {\n if (this.eosed)\n return;\n clearTimeout(this.eoseTimeoutHandle);\n this.eosed = true;\n this.oneose?.();\n }\n close(reason = \"closed by caller\") {\n if (!this.closed && this.relay.connected) {\n try {\n this.relay.send('[\"CLOSE\",' + JSON.stringify(this.id) + \"]\");\n } catch (err) {\n if (err instanceof SendingOnClosedConnection) {\n } else {\n throw err;\n }\n }\n this.closed = true;\n }\n this.relay.openSubs.delete(this.id);\n this.relay.ongoingOperations--;\n if (this.relay.ongoingOperations === 0)\n this.relay.idleSince = Date.now();\n this.onclose?.(reason);\n }\n};\n\n// relay.ts\nvar _WebSocket;\ntry {\n _WebSocket = WebSocket;\n} catch {\n}\nvar Relay = class extends AbstractRelay {\n constructor(url, options) {\n super(url, { verifyEvent, websocketImplementation: _WebSocket, ...options });\n }\n static async connect(url, options) {\n const relay = new Relay(url, options);\n await relay.connect();\n return relay;\n }\n};\n\n// helpers.ts\nvar alwaysTrue = (t) => {\n t[verifiedSymbol] = true;\n return true;\n};\n\n// abstract-pool.ts\nvar AbstractSimplePool = class {\n relays = /* @__PURE__ */ new Map();\n seenOn = /* @__PURE__ */ new Map();\n trackRelays = false;\n verifyEvent;\n enablePing;\n enableReconnect;\n automaticallyAuth;\n trustedRelayURLs = /* @__PURE__ */ new Set();\n onRelayConnectionFailure;\n onRelayConnectionSuccess;\n allowConnectingToRelay;\n maxWaitForConnection;\n _WebSocket;\n constructor(opts) {\n this.verifyEvent = opts.verifyEvent;\n this._WebSocket = opts.websocketImplementation;\n this.enablePing = opts.enablePing;\n this.enableReconnect = opts.enableReconnect || false;\n this.automaticallyAuth = opts.automaticallyAuth;\n this.onRelayConnectionFailure = opts.onRelayConnectionFailure;\n this.onRelayConnectionSuccess = opts.onRelayConnectionSuccess;\n this.allowConnectingToRelay = opts.allowConnectingToRelay;\n this.maxWaitForConnection = opts.maxWaitForConnection || 3e3;\n }\n async ensureRelay(url, params) {\n url = normalizeURL(url);\n let relay = this.relays.get(url);\n if (!relay) {\n relay = new AbstractRelay(url, {\n verifyEvent: this.trustedRelayURLs.has(url) ? alwaysTrue : this.verifyEvent,\n websocketImplementation: this._WebSocket,\n enablePing: this.enablePing,\n enableReconnect: this.enableReconnect\n });\n relay.onclose = () => {\n this.relays.delete(url);\n };\n this.relays.set(url, relay);\n }\n if (this.automaticallyAuth) {\n const authSignerFn = this.automaticallyAuth(url);\n if (authSignerFn) {\n relay.onauth = authSignerFn;\n }\n }\n try {\n await relay.connect({\n timeout: params?.connectionTimeout,\n abort: params?.abort\n });\n } catch (err) {\n this.relays.delete(url);\n throw err;\n }\n return relay;\n }\n close(relays) {\n relays.map(normalizeURL).forEach((url) => {\n this.relays.get(url)?.close();\n this.relays.delete(url);\n });\n }\n subscribe(relays, filter, params) {\n const request = [];\n const uniqUrls = [];\n for (let i2 = 0; i2 < relays.length; i2++) {\n const url = normalizeURL(relays[i2]);\n if (!request.find((r) => r.url === url)) {\n if (uniqUrls.indexOf(url) === -1) {\n uniqUrls.push(url);\n request.push({ url, filter });\n }\n }\n }\n return this.subscribeMap(request, params);\n }\n subscribeMany(relays, filter, params) {\n return this.subscribe(relays, filter, params);\n }\n subscribeMap(requests, params) {\n const grouped = /* @__PURE__ */ new Map();\n for (const req of requests) {\n const { url, filter } = req;\n if (!grouped.has(url))\n grouped.set(url, []);\n grouped.get(url).push(filter);\n }\n const groupedRequests = Array.from(grouped.entries()).map(([url, filters]) => ({ url, filters }));\n if (this.trackRelays) {\n params.receivedEvent = (relay, id) => {\n let set = this.seenOn.get(id);\n if (!set) {\n set = /* @__PURE__ */ new Set();\n this.seenOn.set(id, set);\n }\n set.add(relay);\n };\n }\n const _knownIds = /* @__PURE__ */ new Set();\n const subs = [];\n const eosesReceived = [];\n let handleEose = (i2) => {\n if (eosesReceived[i2])\n return;\n eosesReceived[i2] = true;\n if (eosesReceived.filter((a) => a).length === groupedRequests.length) {\n params.oneose?.();\n handleEose = () => {\n };\n }\n };\n const closesReceived = [];\n let handleClose = (i2, reason) => {\n if (closesReceived[i2])\n return;\n handleEose(i2);\n closesReceived[i2] = reason;\n if (closesReceived.filter((a) => a).length === groupedRequests.length) {\n params.onclose?.(closesReceived);\n handleClose = () => {\n };\n }\n };\n const localAlreadyHaveEventHandler = (id) => {\n if (params.alreadyHaveEvent?.(id)) {\n return true;\n }\n const have = _knownIds.has(id);\n _knownIds.add(id);\n return have;\n };\n const allOpened = Promise.all(\n groupedRequests.map(async ({ url, filters }, i2) => {\n if (this.allowConnectingToRelay?.(url, [\"read\", filters]) === false) {\n handleClose(i2, \"connection skipped by allowConnectingToRelay\");\n return;\n }\n let relay;\n try {\n relay = await this.ensureRelay(url, {\n connectionTimeout: this.maxWaitForConnection < (params.maxWait || 0) ? Math.max(params.maxWait * 0.8, params.maxWait - 1e3) : this.maxWaitForConnection,\n abort: params.abort\n });\n } catch (err) {\n this.onRelayConnectionFailure?.(url);\n handleClose(i2, err?.message || String(err));\n return;\n }\n this.onRelayConnectionSuccess?.(url);\n let subscription = relay.subscribe(filters, {\n ...params,\n oneose: () => handleEose(i2),\n onclose: (reason) => {\n if (reason.startsWith(\"auth-required: \") && params.onauth) {\n relay.auth(params.onauth).then(() => {\n relay.subscribe(filters, {\n ...params,\n oneose: () => handleEose(i2),\n onclose: (reason2) => {\n handleClose(i2, reason2);\n },\n alreadyHaveEvent: localAlreadyHaveEventHandler,\n eoseTimeout: params.maxWait,\n abort: params.abort\n });\n }).catch((err) => {\n handleClose(i2, `auth was required and attempted, but failed with: ${err}`);\n });\n } else {\n handleClose(i2, reason);\n }\n },\n alreadyHaveEvent: localAlreadyHaveEventHandler,\n eoseTimeout: params.maxWait,\n abort: params.abort\n });\n subs.push(subscription);\n })\n );\n return {\n async close(reason) {\n await allOpened;\n subs.forEach((sub) => {\n sub.close(reason);\n });\n }\n };\n }\n subscribeEose(relays, filter, params) {\n let subcloser;\n subcloser = this.subscribe(relays, filter, {\n ...params,\n oneose() {\n const reason = \"closed automatically on eose\";\n if (subcloser)\n subcloser.close(reason);\n else\n params.onclose?.(relays.map((_) => reason));\n }\n });\n return subcloser;\n }\n subscribeManyEose(relays, filter, params) {\n return this.subscribeEose(relays, filter, params);\n }\n async querySync(relays, filter, params) {\n return new Promise(async (resolve) => {\n const events = [];\n this.subscribeEose(relays, filter, {\n ...params,\n onevent(event) {\n events.push(event);\n },\n onclose(_) {\n resolve(events);\n }\n });\n });\n }\n async get(relays, filter, params) {\n filter.limit = 1;\n const events = await this.querySync(relays, filter, params);\n events.sort((a, b) => b.created_at - a.created_at);\n return events[0] || null;\n }\n publish(relays, event, params) {\n return relays.map(normalizeURL).map(async (url, i2, arr) => {\n if (arr.indexOf(url) !== i2) {\n return Promise.reject(\"duplicate url\");\n }\n if (this.allowConnectingToRelay?.(url, [\"write\", event]) === false) {\n return Promise.reject(\"connection skipped by allowConnectingToRelay\");\n }\n let r;\n try {\n r = await this.ensureRelay(url, {\n connectionTimeout: this.maxWaitForConnection < (params?.maxWait || 0) ? Math.max(params.maxWait * 0.8, params.maxWait - 1e3) : this.maxWaitForConnection,\n abort: params?.abort\n });\n } catch (err) {\n this.onRelayConnectionFailure?.(url);\n return String(\"connection failure: \" + String(err));\n }\n return r.publish(event).catch(async (err) => {\n if (err instanceof Error && err.message.startsWith(\"auth-required: \") && params?.onauth) {\n await r.auth(params.onauth);\n return r.publish(event);\n }\n throw err;\n }).then((reason) => {\n if (this.trackRelays) {\n let set = this.seenOn.get(event.id);\n if (!set) {\n set = /* @__PURE__ */ new Set();\n this.seenOn.set(event.id, set);\n }\n set.add(r);\n }\n return reason;\n });\n });\n }\n listConnectionStatus() {\n const map = /* @__PURE__ */ new Map();\n this.relays.forEach((relay, url) => map.set(url, relay.connected));\n return map;\n }\n destroy() {\n this.relays.forEach((conn) => conn.close());\n this.relays = /* @__PURE__ */ new Map();\n }\n pruneIdleRelays(idleThresholdMs = 1e4) {\n const prunedUrls = [];\n for (const [url, relay] of this.relays) {\n if (relay.idleSince && Date.now() - relay.idleSince >= idleThresholdMs) {\n this.relays.delete(url);\n prunedUrls.push(url);\n relay.close();\n }\n }\n return prunedUrls;\n }\n};\n\n// pool.ts\nvar _WebSocket2;\ntry {\n _WebSocket2 = WebSocket;\n} catch {\n}\nvar SimplePool = class extends AbstractSimplePool {\n constructor(options) {\n super({ verifyEvent, websocketImplementation: _WebSocket2, maxWaitForConnection: 3e3, ...options });\n }\n};\n\n// nip19.ts\nvar nip19_exports = {};\n__export(nip19_exports, {\n BECH32_REGEX: () => BECH32_REGEX,\n Bech32MaxSize: () => Bech32MaxSize,\n NostrTypeGuard: () => NostrTypeGuard,\n decode: () => decode,\n decodeNostrURI: () => decodeNostrURI,\n encodeBytes: () => encodeBytes,\n naddrEncode: () => naddrEncode,\n neventEncode: () => neventEncode,\n noteEncode: () => noteEncode,\n nprofileEncode: () => nprofileEncode,\n npubEncode: () => npubEncode,\n nsecEncode: () => nsecEncode\n});\nimport { bytesToHex as bytesToHex3, concatBytes, hexToBytes as hexToBytes3 } from \"@noble/hashes/utils.js\";\nimport { bech32 } from \"@scure/base\";\nvar NostrTypeGuard = {\n isNProfile: (value) => /^nprofile1[a-z\\d]+$/.test(value || \"\"),\n isNEvent: (value) => /^nevent1[a-z\\d]+$/.test(value || \"\"),\n isNAddr: (value) => /^naddr1[a-z\\d]+$/.test(value || \"\"),\n isNSec: (value) => /^nsec1[a-z\\d]{58}$/.test(value || \"\"),\n isNPub: (value) => /^npub1[a-z\\d]{58}$/.test(value || \"\"),\n isNote: (value) => /^note1[a-z\\d]+$/.test(value || \"\"),\n isNcryptsec: (value) => /^ncryptsec1[a-z\\d]+$/.test(value || \"\")\n};\nvar Bech32MaxSize = 5e3;\nvar BECH32_REGEX = /[\\x21-\\x7E]{1,83}1[023456789acdefghjklmnpqrstuvwxyz]{6,}/;\nfunction integerToUint8Array(number) {\n const uint8Array = new Uint8Array(4);\n uint8Array[0] = number >> 24 & 255;\n uint8Array[1] = number >> 16 & 255;\n uint8Array[2] = number >> 8 & 255;\n uint8Array[3] = number & 255;\n return uint8Array;\n}\nfunction decodeNostrURI(nip19code) {\n try {\n if (nip19code.startsWith(\"nostr:\"))\n nip19code = nip19code.substring(6);\n return decode(nip19code);\n } catch (_err) {\n return { type: \"invalid\", data: null };\n }\n}\nfunction decode(code) {\n let { prefix, words } = bech32.decode(code, Bech32MaxSize);\n let data = new Uint8Array(bech32.fromWords(words));\n switch (prefix) {\n case \"nprofile\": {\n let tlv = parseTLV(data);\n if (!tlv[0]?.[0])\n throw new Error(\"missing TLV 0 for nprofile\");\n if (tlv[0][0].length !== 32)\n throw new Error(\"TLV 0 should be 32 bytes\");\n return {\n type: \"nprofile\",\n data: {\n pubkey: bytesToHex3(tlv[0][0]),\n relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : []\n }\n };\n }\n case \"nevent\": {\n let tlv = parseTLV(data);\n if (!tlv[0]?.[0])\n throw new Error(\"missing TLV 0 for nevent\");\n if (tlv[0][0].length !== 32)\n throw new Error(\"TLV 0 should be 32 bytes\");\n if (tlv[2] && tlv[2][0].length !== 32)\n throw new Error(\"TLV 2 should be 32 bytes\");\n if (tlv[3] && tlv[3][0].length !== 4)\n throw new Error(\"TLV 3 should be 4 bytes\");\n return {\n type: \"nevent\",\n data: {\n id: bytesToHex3(tlv[0][0]),\n relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : [],\n author: tlv[2]?.[0] ? bytesToHex3(tlv[2][0]) : void 0,\n kind: tlv[3]?.[0] ? parseInt(bytesToHex3(tlv[3][0]), 16) : void 0\n }\n };\n }\n case \"naddr\": {\n let tlv = parseTLV(data);\n if (!tlv[0]?.[0])\n throw new Error(\"missing TLV 0 for naddr\");\n if (!tlv[2]?.[0])\n throw new Error(\"missing TLV 2 for naddr\");\n if (tlv[2][0].length !== 32)\n throw new Error(\"TLV 2 should be 32 bytes\");\n if (!tlv[3]?.[0])\n throw new Error(\"missing TLV 3 for naddr\");\n if (tlv[3][0].length !== 4)\n throw new Error(\"TLV 3 should be 4 bytes\");\n return {\n type: \"naddr\",\n data: {\n identifier: utf8Decoder.decode(tlv[0][0]),\n pubkey: bytesToHex3(tlv[2][0]),\n kind: parseInt(bytesToHex3(tlv[3][0]), 16),\n relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : []\n }\n };\n }\n case \"nsec\":\n return { type: prefix, data };\n case \"npub\":\n case \"note\":\n return { type: prefix, data: bytesToHex3(data) };\n default:\n throw new Error(`unknown prefix ${prefix}`);\n }\n}\nfunction parseTLV(data) {\n let result = {};\n let rest = data;\n while (rest.length > 0) {\n let t = rest[0];\n let l = rest[1];\n let v = rest.slice(2, 2 + l);\n rest = rest.slice(2 + l);\n if (v.length < l)\n throw new Error(`not enough data to read on TLV ${t}`);\n result[t] = result[t] || [];\n result[t].push(v);\n }\n return result;\n}\nfunction nsecEncode(key) {\n return encodeBytes(\"nsec\", key);\n}\nfunction npubEncode(hex) {\n return encodeBytes(\"npub\", hexToBytes3(hex));\n}\nfunction noteEncode(hex) {\n return encodeBytes(\"note\", hexToBytes3(hex));\n}\nfunction encodeBech32(prefix, data) {\n let words = bech32.toWords(data);\n return bech32.encode(prefix, words, Bech32MaxSize);\n}\nfunction encodeBytes(prefix, bytes) {\n return encodeBech32(prefix, bytes);\n}\nfunction nprofileEncode(profile) {\n let data = encodeTLV({\n 0: [hexToBytes3(profile.pubkey)],\n 1: (profile.relays || []).map((url) => utf8Encoder.encode(url))\n });\n return encodeBech32(\"nprofile\", data);\n}\nfunction neventEncode(event) {\n let kindArray;\n if (event.kind !== void 0) {\n kindArray = integerToUint8Array(event.kind);\n }\n let data = encodeTLV({\n 0: [hexToBytes3(event.id)],\n 1: (event.relays || []).map((url) => utf8Encoder.encode(url)),\n 2: event.author ? [hexToBytes3(event.author)] : [],\n 3: kindArray ? [new Uint8Array(kindArray)] : []\n });\n return encodeBech32(\"nevent\", data);\n}\nfunction naddrEncode(addr) {\n let kind = new ArrayBuffer(4);\n new DataView(kind).setUint32(0, addr.kind, false);\n let data = encodeTLV({\n 0: [utf8Encoder.encode(addr.identifier)],\n 1: (addr.relays || []).map((url) => utf8Encoder.encode(url)),\n 2: [hexToBytes3(addr.pubkey)],\n 3: [new Uint8Array(kind)]\n });\n return encodeBech32(\"naddr\", data);\n}\nfunction encodeTLV(tlv) {\n let entries = [];\n Object.entries(tlv).reverse().forEach(([t, vs]) => {\n vs.forEach((v) => {\n let entry = new Uint8Array(v.length + 2);\n entry.set([parseInt(t)], 0);\n entry.set([v.length], 1);\n entry.set(v, 2);\n entries.push(entry);\n });\n });\n return concatBytes(...entries);\n}\n\n// references.ts\nvar mentionRegex = /\\bnostr:((note|npub|naddr|nevent|nprofile)1\\w+)\\b|#\\[(\\d+)\\]/g;\nfunction parseReferences(evt) {\n let references = [];\n for (let ref of evt.content.matchAll(mentionRegex)) {\n if (ref[2]) {\n try {\n let { type, data } = decode(ref[1]);\n switch (type) {\n case \"npub\": {\n references.push({\n text: ref[0],\n profile: { pubkey: data, relays: [] }\n });\n break;\n }\n case \"nprofile\": {\n references.push({\n text: ref[0],\n profile: data\n });\n break;\n }\n case \"note\": {\n references.push({\n text: ref[0],\n event: { id: data, relays: [] }\n });\n break;\n }\n case \"nevent\": {\n references.push({\n text: ref[0],\n event: data\n });\n break;\n }\n case \"naddr\": {\n references.push({\n text: ref[0],\n address: data\n });\n break;\n }\n }\n } catch (err) {\n }\n } else if (ref[3]) {\n let idx = parseInt(ref[3], 10);\n let tag = evt.tags[idx];\n if (!tag)\n continue;\n switch (tag[0]) {\n case \"p\": {\n references.push({\n text: ref[0],\n profile: { pubkey: tag[1], relays: tag[2] ? [tag[2]] : [] }\n });\n break;\n }\n case \"e\": {\n references.push({\n text: ref[0],\n event: { id: tag[1], relays: tag[2] ? [tag[2]] : [] }\n });\n break;\n }\n case \"a\": {\n try {\n let [kind, pubkey, identifier] = tag[1].split(\":\");\n references.push({\n text: ref[0],\n address: {\n identifier,\n pubkey,\n kind: parseInt(kind, 10),\n relays: tag[2] ? [tag[2]] : []\n }\n });\n } catch (err) {\n }\n break;\n }\n }\n }\n }\n return references;\n}\n\n// nip04.ts\nvar nip04_exports = {};\n__export(nip04_exports, {\n decrypt: () => decrypt,\n encrypt: () => encrypt\n});\nimport { hexToBytes as hexToBytes4, randomBytes } from \"@noble/hashes/utils.js\";\nimport { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { cbc } from \"@noble/ciphers/aes.js\";\nimport { base64 } from \"@scure/base\";\nfunction encrypt(secretKey, pubkey, text) {\n const privkey = secretKey instanceof Uint8Array ? secretKey : hexToBytes4(secretKey);\n const key = secp256k1.getSharedSecret(privkey, hexToBytes4(\"02\" + pubkey));\n const normalizedKey = getNormalizedX(key);\n let iv = Uint8Array.from(randomBytes(16));\n let plaintext = utf8Encoder.encode(text);\n let ciphertext = cbc(normalizedKey, iv).encrypt(plaintext);\n let ctb64 = base64.encode(new Uint8Array(ciphertext));\n let ivb64 = base64.encode(new Uint8Array(iv.buffer));\n return `${ctb64}?iv=${ivb64}`;\n}\nfunction decrypt(secretKey, pubkey, data) {\n const privkey = secretKey instanceof Uint8Array ? secretKey : hexToBytes4(secretKey);\n let [ctb64, ivb64] = data.split(\"?iv=\");\n let key = secp256k1.getSharedSecret(privkey, hexToBytes4(\"02\" + pubkey));\n let normalizedKey = getNormalizedX(key);\n let iv = base64.decode(ivb64);\n let ciphertext = base64.decode(ctb64);\n let plaintext = cbc(normalizedKey, iv).decrypt(ciphertext);\n return utf8Decoder.decode(plaintext);\n}\nfunction getNormalizedX(key) {\n return key.slice(1, 33);\n}\n\n// nip05.ts\nvar nip05_exports = {};\n__export(nip05_exports, {\n NIP05_REGEX: () => NIP05_REGEX,\n isNip05: () => isNip05,\n isValid: () => isValid,\n queryProfile: () => queryProfile,\n searchDomain: () => searchDomain,\n useFetchImplementation: () => useFetchImplementation\n});\nvar NIP05_REGEX = /^(?:([\\w.+-]+)@)?([\\w_-]+(\\.[\\w_-]+)+)$/;\nvar isNip05 = (value) => NIP05_REGEX.test(value || \"\");\nvar _fetch;\ntry {\n _fetch = fetch;\n} catch (_) {\n null;\n}\nfunction useFetchImplementation(fetchImplementation) {\n _fetch = fetchImplementation;\n}\nasync function searchDomain(domain, query = \"\") {\n try {\n const url = `https://${domain}/.well-known/nostr.json?name=${query}`;\n const res = await _fetch(url, { redirect: \"manual\" });\n if (res.status !== 200) {\n throw Error(\"Wrong response code\");\n }\n const json = await res.json();\n return json.names;\n } catch (_) {\n return {};\n }\n}\nasync function queryProfile(fullname) {\n const match = fullname.match(NIP05_REGEX);\n if (!match)\n return null;\n const [, name = \"_\", domain] = match;\n try {\n const url = `https://${domain}/.well-known/nostr.json?name=${name}`;\n const res = await _fetch(url, { redirect: \"manual\" });\n if (res.status !== 200) {\n throw Error(\"Wrong response code\");\n }\n const json = await res.json();\n const pubkey = json.names[name];\n return pubkey ? { pubkey, relays: json.relays?.[pubkey] } : null;\n } catch (_e) {\n return null;\n }\n}\nasync function isValid(pubkey, nip05) {\n const res = await queryProfile(nip05);\n return res ? res.pubkey === pubkey : false;\n}\n\n// nip10.ts\nvar nip10_exports = {};\n__export(nip10_exports, {\n parse: () => parse\n});\nfunction parse(event) {\n const result = {\n reply: void 0,\n root: void 0,\n mentions: [],\n profiles: [],\n quotes: []\n };\n let maybeParent;\n let maybeRoot;\n for (let i2 = event.tags.length - 1; i2 >= 0; i2--) {\n const tag = event.tags[i2];\n if (tag[0] === \"e\" && tag[1]) {\n const [_, eTagEventId, eTagRelayUrl, eTagMarker, eTagAuthor] = tag;\n const eventPointer = {\n id: eTagEventId,\n relays: eTagRelayUrl ? [eTagRelayUrl] : [],\n author: eTagAuthor\n };\n if (eTagMarker === \"root\") {\n result.root = eventPointer;\n continue;\n }\n if (eTagMarker === \"reply\") {\n result.reply = eventPointer;\n continue;\n }\n if (eTagMarker === \"mention\") {\n result.mentions.push(eventPointer);\n continue;\n }\n if (!maybeParent) {\n maybeParent = eventPointer;\n } else {\n maybeRoot = eventPointer;\n }\n result.mentions.push(eventPointer);\n continue;\n }\n if (tag[0] === \"q\" && tag[1]) {\n const [_, eTagEventId, eTagRelayUrl] = tag;\n result.quotes.push({\n id: eTagEventId,\n relays: eTagRelayUrl ? [eTagRelayUrl] : []\n });\n }\n if (tag[0] === \"p\" && tag[1]) {\n result.profiles.push({\n pubkey: tag[1],\n relays: tag[2] ? [tag[2]] : []\n });\n continue;\n }\n }\n if (!result.root) {\n result.root = maybeRoot || maybeParent || result.reply;\n }\n if (!result.reply) {\n result.reply = maybeParent || result.root;\n }\n ;\n [result.reply, result.root].forEach((ref) => {\n if (!ref)\n return;\n let idx = result.mentions.indexOf(ref);\n if (idx !== -1) {\n result.mentions.splice(idx, 1);\n }\n if (ref.author) {\n let author = result.profiles.find((p) => p.pubkey === ref.author);\n if (author && author.relays) {\n if (!ref.relays) {\n ref.relays = [];\n }\n author.relays.forEach((url) => {\n if (ref.relays?.indexOf(url) === -1)\n ref.relays.push(url);\n });\n author.relays = ref.relays;\n }\n }\n });\n result.mentions.forEach((ref) => {\n if (ref.author) {\n let author = result.profiles.find((p) => p.pubkey === ref.author);\n if (author && author.relays) {\n if (!ref.relays) {\n ref.relays = [];\n }\n author.relays.forEach((url) => {\n if (ref.relays.indexOf(url) === -1)\n ref.relays.push(url);\n });\n author.relays = ref.relays;\n }\n }\n });\n return result;\n}\n\n// nip11.ts\nvar nip11_exports = {};\n__export(nip11_exports, {\n fetchRelayInformation: () => fetchRelayInformation,\n useFetchImplementation: () => useFetchImplementation2\n});\nvar _fetch2;\ntry {\n _fetch2 = fetch;\n} catch {\n}\nfunction useFetchImplementation2(fetchImplementation) {\n _fetch2 = fetchImplementation;\n}\nasync function fetchRelayInformation(url) {\n return await (await fetch(url.replace(\"ws://\", \"http://\").replace(\"wss://\", \"https://\"), {\n headers: { Accept: \"application/nostr+json\" }\n })).json();\n}\n\n// nip13.ts\nvar nip13_exports = {};\n__export(nip13_exports, {\n getPow: () => getPow,\n minePow: () => minePow\n});\nimport { bytesToHex as bytesToHex4 } from \"@noble/hashes/utils.js\";\nimport { sha256 as sha2562 } from \"@noble/hashes/sha2.js\";\nfunction getPow(hex) {\n let count = 0;\n for (let i2 = 0; i2 < 64; i2 += 8) {\n const nibble = parseInt(hex.substring(i2, i2 + 8), 16);\n if (nibble === 0) {\n count += 32;\n } else {\n count += Math.clz32(nibble);\n break;\n }\n }\n return count;\n}\nfunction getPowFromBytes(hash) {\n let count = 0;\n for (let i2 = 0; i2 < hash.length; i2++) {\n const byte = hash[i2];\n if (byte === 0) {\n count += 8;\n } else {\n count += Math.clz32(byte) - 24;\n break;\n }\n }\n return count;\n}\nfunction minePow(unsigned, difficulty) {\n let count = 0;\n const event = unsigned;\n const tag = [\"nonce\", count.toString(), difficulty.toString()];\n event.tags.push(tag);\n while (true) {\n const now2 = Math.floor(new Date().getTime() / 1e3);\n if (now2 !== event.created_at) {\n count = 0;\n event.created_at = now2;\n }\n tag[1] = (++count).toString();\n const hash = sha2562(\n utf8Encoder.encode(JSON.stringify([0, event.pubkey, event.created_at, event.kind, event.tags, event.content]))\n );\n if (getPowFromBytes(hash) >= difficulty) {\n event.id = bytesToHex4(hash);\n break;\n }\n }\n return event;\n}\n\n// nip17.ts\nvar nip17_exports = {};\n__export(nip17_exports, {\n unwrapEvent: () => unwrapEvent2,\n unwrapManyEvents: () => unwrapManyEvents2,\n wrapEvent: () => wrapEvent2,\n wrapManyEvents: () => wrapManyEvents2\n});\n\n// nip59.ts\nvar nip59_exports = {};\n__export(nip59_exports, {\n createRumor: () => createRumor,\n createSeal: () => createSeal,\n createWrap: () => createWrap,\n unwrapEvent: () => unwrapEvent,\n unwrapManyEvents: () => unwrapManyEvents,\n wrapEvent: () => wrapEvent,\n wrapManyEvents: () => wrapManyEvents\n});\n\n// nip44.ts\nvar nip44_exports = {};\n__export(nip44_exports, {\n decrypt: () => decrypt2,\n encrypt: () => encrypt2,\n getConversationKey: () => getConversationKey,\n v2: () => v2\n});\nimport { chacha20 } from \"@noble/ciphers/chacha.js\";\nimport { equalBytes } from \"@noble/ciphers/utils.js\";\nimport { secp256k1 as secp256k12 } from \"@noble/curves/secp256k1.js\";\nimport { extract as hkdf_extract, expand as hkdf_expand } from \"@noble/hashes/hkdf.js\";\nimport { hmac } from \"@noble/hashes/hmac.js\";\nimport { sha256 as sha2563 } from \"@noble/hashes/sha2.js\";\nimport { concatBytes as concatBytes2, hexToBytes as hexToBytes5, randomBytes as randomBytes2 } from \"@noble/hashes/utils.js\";\nimport { base64 as base642 } from \"@scure/base\";\nvar minPlaintextSize = 1;\nvar maxPlaintextSize = 65535;\nfunction getConversationKey(privkeyA, pubkeyB) {\n const sharedX = secp256k12.getSharedSecret(privkeyA, hexToBytes5(\"02\" + pubkeyB)).subarray(1, 33);\n return hkdf_extract(sha2563, sharedX, utf8Encoder.encode(\"nip44-v2\"));\n}\nfunction getMessageKeys(conversationKey, nonce) {\n const keys = hkdf_expand(sha2563, conversationKey, nonce, 76);\n return {\n chacha_key: keys.subarray(0, 32),\n chacha_nonce: keys.subarray(32, 44),\n hmac_key: keys.subarray(44, 76)\n };\n}\nfunction calcPaddedLen(len) {\n if (!Number.isSafeInteger(len) || len < 1)\n throw new Error(\"expected positive integer\");\n if (len <= 32)\n return 32;\n const nextPower = 1 << Math.floor(Math.log2(len - 1)) + 1;\n const chunk = nextPower <= 256 ? 32 : nextPower / 8;\n return chunk * (Math.floor((len - 1) / chunk) + 1);\n}\nfunction writeU16BE(num) {\n if (!Number.isSafeInteger(num) || num < minPlaintextSize || num > maxPlaintextSize)\n throw new Error(\"invalid plaintext size: must be between 1 and 65535 bytes\");\n const arr = new Uint8Array(2);\n new DataView(arr.buffer).setUint16(0, num, false);\n return arr;\n}\nfunction pad(plaintext) {\n const unpadded = utf8Encoder.encode(plaintext);\n const unpaddedLen = unpadded.length;\n const prefix = writeU16BE(unpaddedLen);\n const suffix = new Uint8Array(calcPaddedLen(unpaddedLen) - unpaddedLen);\n return concatBytes2(prefix, unpadded, suffix);\n}\nfunction unpad(padded) {\n const unpaddedLen = new DataView(padded.buffer).getUint16(0);\n const unpadded = padded.subarray(2, 2 + unpaddedLen);\n if (unpaddedLen < minPlaintextSize || unpaddedLen > maxPlaintextSize || unpadded.length !== unpaddedLen || padded.length !== 2 + calcPaddedLen(unpaddedLen))\n throw new Error(\"invalid padding\");\n return utf8Decoder.decode(unpadded);\n}\nfunction hmacAad(key, message, aad) {\n if (aad.length !== 32)\n throw new Error(\"AAD associated data must be 32 bytes\");\n const combined = concatBytes2(aad, message);\n return hmac(sha2563, key, combined);\n}\nfunction decodePayload(payload) {\n if (typeof payload !== \"string\")\n throw new Error(\"payload must be a valid string\");\n const plen = payload.length;\n if (plen < 132 || plen > 87472)\n throw new Error(\"invalid payload length: \" + plen);\n if (payload[0] === \"#\")\n throw new Error(\"unknown encryption version\");\n let data;\n try {\n data = base642.decode(payload);\n } catch (error) {\n throw new Error(\"invalid base64: \" + error.message);\n }\n const dlen = data.length;\n if (dlen < 99 || dlen > 65603)\n throw new Error(\"invalid data length: \" + dlen);\n const vers = data[0];\n if (vers !== 2)\n throw new Error(\"unknown encryption version \" + vers);\n return {\n nonce: data.subarray(1, 33),\n ciphertext: data.subarray(33, -32),\n mac: data.subarray(-32)\n };\n}\nfunction encrypt2(plaintext, conversationKey, nonce = randomBytes2(32)) {\n const { chacha_key, chacha_nonce, hmac_key } = getMessageKeys(conversationKey, nonce);\n const padded = pad(plaintext);\n const ciphertext = chacha20(chacha_key, chacha_nonce, padded);\n const mac = hmacAad(hmac_key, ciphertext, nonce);\n return base642.encode(concatBytes2(new Uint8Array([2]), nonce, ciphertext, mac));\n}\nfunction decrypt2(payload, conversationKey) {\n const { nonce, ciphertext, mac } = decodePayload(payload);\n const { chacha_key, chacha_nonce, hmac_key } = getMessageKeys(conversationKey, nonce);\n const calculatedMac = hmacAad(hmac_key, ciphertext, nonce);\n if (!equalBytes(calculatedMac, mac))\n throw new Error(\"invalid MAC\");\n const padded = chacha20(chacha_key, chacha_nonce, ciphertext);\n return unpad(padded);\n}\nvar v2 = {\n utils: {\n getConversationKey,\n calcPaddedLen\n },\n encrypt: encrypt2,\n decrypt: decrypt2\n};\n\n// nip59.ts\nvar TWO_DAYS = 2 * 24 * 60 * 60;\nvar now = () => Math.round(Date.now() / 1e3);\nvar randomNow = () => Math.round(now() - Math.random() * TWO_DAYS);\nvar nip44ConversationKey = (privateKey, publicKey) => getConversationKey(privateKey, publicKey);\nvar nip44Encrypt = (data, privateKey, publicKey) => encrypt2(JSON.stringify(data), nip44ConversationKey(privateKey, publicKey));\nvar nip44Decrypt = (data, privateKey) => JSON.parse(decrypt2(data.content, nip44ConversationKey(privateKey, data.pubkey)));\nfunction createRumor(event, privateKey) {\n const rumor = {\n created_at: now(),\n content: \"\",\n tags: [],\n ...event,\n pubkey: getPublicKey(privateKey)\n };\n rumor.id = getEventHash(rumor);\n return rumor;\n}\nfunction createSeal(rumor, privateKey, recipientPublicKey) {\n return finalizeEvent(\n {\n kind: Seal,\n content: nip44Encrypt(rumor, privateKey, recipientPublicKey),\n created_at: randomNow(),\n tags: []\n },\n privateKey\n );\n}\nfunction createWrap(seal, recipientPublicKey) {\n const randomKey = generateSecretKey();\n return finalizeEvent(\n {\n kind: GiftWrap,\n content: nip44Encrypt(seal, randomKey, recipientPublicKey),\n created_at: randomNow(),\n tags: [[\"p\", recipientPublicKey]]\n },\n randomKey\n );\n}\nfunction wrapEvent(event, senderPrivateKey, recipientPublicKey) {\n const rumor = createRumor(event, senderPrivateKey);\n const seal = createSeal(rumor, senderPrivateKey, recipientPublicKey);\n return createWrap(seal, recipientPublicKey);\n}\nfunction wrapManyEvents(event, senderPrivateKey, recipientsPublicKeys) {\n if (!recipientsPublicKeys || recipientsPublicKeys.length === 0) {\n throw new Error(\"At least one recipient is required.\");\n }\n const senderPublicKey = getPublicKey(senderPrivateKey);\n const wrappeds = [wrapEvent(event, senderPrivateKey, senderPublicKey)];\n recipientsPublicKeys.forEach((recipientPublicKey) => {\n wrappeds.push(wrapEvent(event, senderPrivateKey, recipientPublicKey));\n });\n return wrappeds;\n}\nfunction unwrapEvent(wrap, recipientPrivateKey) {\n const unwrappedSeal = nip44Decrypt(wrap, recipientPrivateKey);\n return nip44Decrypt(unwrappedSeal, recipientPrivateKey);\n}\nfunction unwrapManyEvents(wrappedEvents, recipientPrivateKey) {\n let unwrappedEvents = [];\n wrappedEvents.forEach((e) => {\n unwrappedEvents.push(unwrapEvent(e, recipientPrivateKey));\n });\n unwrappedEvents.sort((a, b) => a.created_at - b.created_at);\n return unwrappedEvents;\n}\n\n// nip17.ts\nfunction createEvent(recipients, message, conversationTitle, replyTo) {\n const baseEvent = {\n created_at: Math.ceil(Date.now() / 1e3),\n kind: PrivateDirectMessage,\n tags: [],\n content: message\n };\n const recipientsArray = Array.isArray(recipients) ? recipients : [recipients];\n recipientsArray.forEach(({ publicKey, relayUrl }) => {\n baseEvent.tags.push(relayUrl ? [\"p\", publicKey, relayUrl] : [\"p\", publicKey]);\n });\n if (replyTo) {\n baseEvent.tags.push([\"e\", replyTo.eventId, replyTo.relayUrl || \"\", \"reply\"]);\n }\n if (conversationTitle) {\n baseEvent.tags.push([\"subject\", conversationTitle]);\n }\n return baseEvent;\n}\nfunction wrapEvent2(senderPrivateKey, recipient, message, conversationTitle, replyTo) {\n const event = createEvent(recipient, message, conversationTitle, replyTo);\n return wrapEvent(event, senderPrivateKey, recipient.publicKey);\n}\nfunction wrapManyEvents2(senderPrivateKey, recipients, message, conversationTitle, replyTo) {\n if (!recipients || recipients.length === 0) {\n throw new Error(\"At least one recipient is required.\");\n }\n const senderPublicKey = getPublicKey(senderPrivateKey);\n return [{ publicKey: senderPublicKey }, ...recipients].map(\n (recipient) => wrapEvent2(senderPrivateKey, recipient, message, conversationTitle, replyTo)\n );\n}\nvar unwrapEvent2 = unwrapEvent;\nvar unwrapManyEvents2 = unwrapManyEvents;\n\n// nip18.ts\nvar nip18_exports = {};\n__export(nip18_exports, {\n finishRepostEvent: () => finishRepostEvent,\n getRepostedEvent: () => getRepostedEvent,\n getRepostedEventPointer: () => getRepostedEventPointer\n});\nfunction finishRepostEvent(t, reposted, relayUrl, privateKey) {\n let kind;\n const tags = [...t.tags ?? [], [\"e\", reposted.id, relayUrl], [\"p\", reposted.pubkey]];\n if (reposted.kind === ShortTextNote) {\n kind = Repost;\n } else {\n kind = GenericRepost;\n tags.push([\"k\", String(reposted.kind)]);\n }\n return finalizeEvent(\n {\n kind,\n tags,\n content: t.content === \"\" || reposted.tags?.find((tag) => tag[0] === \"-\") ? \"\" : JSON.stringify(reposted),\n created_at: t.created_at\n },\n privateKey\n );\n}\nfunction getRepostedEventPointer(event) {\n if (![Repost, GenericRepost].includes(event.kind)) {\n return void 0;\n }\n let lastETag;\n let lastPTag;\n for (let i2 = event.tags.length - 1; i2 >= 0 && (lastETag === void 0 || lastPTag === void 0); i2--) {\n const tag = event.tags[i2];\n if (tag.length >= 2) {\n if (tag[0] === \"e\" && lastETag === void 0) {\n lastETag = tag;\n } else if (tag[0] === \"p\" && lastPTag === void 0) {\n lastPTag = tag;\n }\n }\n }\n if (lastETag === void 0) {\n return void 0;\n }\n return {\n id: lastETag[1],\n relays: [lastETag[2], lastPTag?.[2]].filter((x) => typeof x === \"string\"),\n author: lastPTag?.[1]\n };\n}\nfunction getRepostedEvent(event, { skipVerification } = {}) {\n const pointer = getRepostedEventPointer(event);\n if (pointer === void 0 || event.content === \"\") {\n return void 0;\n }\n let repostedEvent;\n try {\n repostedEvent = JSON.parse(event.content);\n } catch (error) {\n return void 0;\n }\n if (repostedEvent.id !== pointer.id) {\n return void 0;\n }\n if (!skipVerification && !verifyEvent(repostedEvent)) {\n return void 0;\n }\n return repostedEvent;\n}\n\n// nip21.ts\nvar nip21_exports = {};\n__export(nip21_exports, {\n NOSTR_URI_REGEX: () => NOSTR_URI_REGEX,\n parse: () => parse2,\n test: () => test\n});\nvar NOSTR_URI_REGEX = new RegExp(`nostr:(${BECH32_REGEX.source})`);\nfunction test(value) {\n return typeof value === \"string\" && new RegExp(`^${NOSTR_URI_REGEX.source}$`).test(value);\n}\nfunction parse2(uri) {\n const match = uri.match(new RegExp(`^${NOSTR_URI_REGEX.source}$`));\n if (!match)\n throw new Error(`Invalid Nostr URI: ${uri}`);\n return {\n uri: match[0],\n value: match[1],\n decoded: decode(match[1])\n };\n}\n\n// nip25.ts\nvar nip25_exports = {};\n__export(nip25_exports, {\n finishReactionEvent: () => finishReactionEvent,\n getReactedEventPointer: () => getReactedEventPointer\n});\nfunction finishReactionEvent(t, reacted, privateKey) {\n const inheritedTags = reacted.tags.filter((tag) => tag.length >= 2 && (tag[0] === \"e\" || tag[0] === \"p\"));\n return finalizeEvent(\n {\n ...t,\n kind: Reaction,\n tags: [...t.tags ?? [], ...inheritedTags, [\"e\", reacted.id], [\"p\", reacted.pubkey]],\n content: t.content ?? \"+\"\n },\n privateKey\n );\n}\nfunction getReactedEventPointer(event) {\n if (event.kind !== Reaction) {\n return void 0;\n }\n let lastETag;\n let lastPTag;\n for (let i2 = event.tags.length - 1; i2 >= 0 && (lastETag === void 0 || lastPTag === void 0); i2--) {\n const tag = event.tags[i2];\n if (tag.length >= 2) {\n if (tag[0] === \"e\" && lastETag === void 0) {\n lastETag = tag;\n } else if (tag[0] === \"p\" && lastPTag === void 0) {\n lastPTag = tag;\n }\n }\n }\n if (lastETag === void 0 || lastPTag === void 0) {\n return void 0;\n }\n return {\n id: lastETag[1],\n relays: [lastETag[2], lastPTag[2]].filter((x) => x !== void 0),\n author: lastPTag[1]\n };\n}\n\n// nip27.ts\nvar nip27_exports = {};\n__export(nip27_exports, {\n parse: () => parse3\n});\nvar noCharacter = /\\W/m;\nvar noURLCharacter = /[^\\w\\/] |[^\\w\\/]$|$|,| /m;\nvar MAX_HASHTAG_LENGTH = 42;\nfunction* parse3(content) {\n let emojis = [];\n if (typeof content !== \"string\") {\n for (let i2 = 0; i2 < content.tags.length; i2++) {\n const tag = content.tags[i2];\n if (tag[0] === \"emoji\" && tag.length >= 3) {\n emojis.push({ type: \"emoji\", shortcode: tag[1], url: tag[2] });\n }\n }\n content = content.content;\n }\n const max = content.length;\n let prevIndex = 0;\n let index = 0;\n mainloop:\n while (index < max) {\n const u = content.indexOf(\":\", index);\n const h = content.indexOf(\"#\", index);\n if (u === -1 && h === -1) {\n break mainloop;\n }\n if (u === -1 || h >= 0 && h < u) {\n if (h === 0 || content[h - 1].match(noCharacter)) {\n const m = content.slice(h + 1, h + MAX_HASHTAG_LENGTH).match(noCharacter);\n const end = m ? h + 1 + m.index : max;\n yield { type: \"text\", text: content.slice(prevIndex, h) };\n yield { type: \"hashtag\", value: content.slice(h + 1, end) };\n index = end;\n prevIndex = index;\n continue mainloop;\n }\n index = h + 1;\n continue mainloop;\n }\n if (content.slice(u - 5, u) === \"nostr\") {\n const m = content.slice(u + 60).match(noCharacter);\n const end = m ? u + 60 + m.index : max;\n try {\n let pointer;\n let { data, type } = decode(content.slice(u + 1, end));\n switch (type) {\n case \"npub\":\n pointer = { pubkey: data };\n break;\n case \"note\":\n pointer = { id: data };\n break;\n case \"nsec\":\n index = end + 1;\n continue;\n default:\n pointer = data;\n }\n if (prevIndex !== u - 5) {\n yield { type: \"text\", text: content.slice(prevIndex, u - 5) };\n }\n yield { type: \"reference\", pointer };\n index = end;\n prevIndex = index;\n continue mainloop;\n } catch (_err) {\n index = u + 1;\n continue mainloop;\n }\n } else if (content.slice(u - 5, u) === \"https\" || content.slice(u - 4, u) === \"http\") {\n const m = content.slice(u + 4).match(noURLCharacter);\n const end = m ? u + 4 + m.index : max;\n const prefixLen = content[u - 1] === \"s\" ? 5 : 4;\n try {\n let url = new URL(content.slice(u - prefixLen, end));\n if (url.hostname.indexOf(\".\") === -1) {\n throw new Error(\"invalid url\");\n }\n if (prevIndex !== u - prefixLen) {\n yield { type: \"text\", text: content.slice(prevIndex, u - prefixLen) };\n }\n if (/\\.(png|jpe?g|gif|webp|heic|svg)$/i.test(url.pathname)) {\n yield { type: \"image\", url: url.toString() };\n index = end;\n prevIndex = index;\n continue mainloop;\n }\n if (/\\.(mp4|avi|webm|mkv|mov)$/i.test(url.pathname)) {\n yield { type: \"video\", url: url.toString() };\n index = end;\n prevIndex = index;\n continue mainloop;\n }\n if (/\\.(mp3|aac|ogg|opus|wav|flac)$/i.test(url.pathname)) {\n yield { type: \"audio\", url: url.toString() };\n index = end;\n prevIndex = index;\n continue mainloop;\n }\n yield { type: \"url\", url: url.toString() };\n index = end;\n prevIndex = index;\n continue mainloop;\n } catch (_err) {\n index = end + 1;\n continue mainloop;\n }\n } else if (content.slice(u - 3, u) === \"wss\" || content.slice(u - 2, u) === \"ws\") {\n const m = content.slice(u + 4).match(noURLCharacter);\n const end = m ? u + 4 + m.index : max;\n const prefixLen = content[u - 1] === \"s\" ? 3 : 2;\n try {\n let url = new URL(content.slice(u - prefixLen, end));\n if (url.hostname.indexOf(\".\") === -1) {\n throw new Error(\"invalid ws url\");\n }\n if (prevIndex !== u - prefixLen) {\n yield { type: \"text\", text: content.slice(prevIndex, u - prefixLen) };\n }\n yield { type: \"relay\", url: url.toString() };\n index = end;\n prevIndex = index;\n continue mainloop;\n } catch (_err) {\n index = end + 1;\n continue mainloop;\n }\n } else {\n for (let e = 0; e < emojis.length; e++) {\n const emoji = emojis[e];\n if (content[u + emoji.shortcode.length + 1] === \":\" && content.slice(u + 1, u + emoji.shortcode.length + 1) === emoji.shortcode) {\n if (prevIndex !== u) {\n yield { type: \"text\", text: content.slice(prevIndex, u) };\n }\n yield emoji;\n index = u + emoji.shortcode.length + 2;\n prevIndex = index;\n continue mainloop;\n }\n }\n index = u + 1;\n continue mainloop;\n }\n }\n if (prevIndex !== max) {\n yield { type: \"text\", text: content.slice(prevIndex) };\n }\n}\n\n// nip28.ts\nvar nip28_exports = {};\n__export(nip28_exports, {\n channelCreateEvent: () => channelCreateEvent,\n channelHideMessageEvent: () => channelHideMessageEvent,\n channelMessageEvent: () => channelMessageEvent,\n channelMetadataEvent: () => channelMetadataEvent,\n channelMuteUserEvent: () => channelMuteUserEvent\n});\nvar channelCreateEvent = (t, privateKey) => {\n let content;\n if (typeof t.content === \"object\") {\n content = JSON.stringify(t.content);\n } else if (typeof t.content === \"string\") {\n content = t.content;\n } else {\n return void 0;\n }\n return finalizeEvent(\n {\n kind: ChannelCreation,\n tags: [...t.tags ?? []],\n content,\n created_at: t.created_at\n },\n privateKey\n );\n};\nvar channelMetadataEvent = (t, privateKey) => {\n let content;\n if (typeof t.content === \"object\") {\n content = JSON.stringify(t.content);\n } else if (typeof t.content === \"string\") {\n content = t.content;\n } else {\n return void 0;\n }\n return finalizeEvent(\n {\n kind: ChannelMetadata,\n tags: [[\"e\", t.channel_create_event_id], ...t.tags ?? []],\n content,\n created_at: t.created_at\n },\n privateKey\n );\n};\nvar channelMessageEvent = (t, privateKey) => {\n const tags = [[\"e\", t.channel_create_event_id, t.relay_url, \"root\"]];\n if (t.reply_to_channel_message_event_id) {\n tags.push([\"e\", t.reply_to_channel_message_event_id, t.relay_url, \"reply\"]);\n }\n return finalizeEvent(\n {\n kind: ChannelMessage,\n tags: [...tags, ...t.tags ?? []],\n content: t.content,\n created_at: t.created_at\n },\n privateKey\n );\n};\nvar channelHideMessageEvent = (t, privateKey) => {\n let content;\n if (typeof t.content === \"object\") {\n content = JSON.stringify(t.content);\n } else if (typeof t.content === \"string\") {\n content = t.content;\n } else {\n return void 0;\n }\n return finalizeEvent(\n {\n kind: ChannelHideMessage,\n tags: [[\"e\", t.channel_message_event_id], ...t.tags ?? []],\n content,\n created_at: t.created_at\n },\n privateKey\n );\n};\nvar channelMuteUserEvent = (t, privateKey) => {\n let content;\n if (typeof t.content === \"object\") {\n content = JSON.stringify(t.content);\n } else if (typeof t.content === \"string\") {\n content = t.content;\n } else {\n return void 0;\n }\n return finalizeEvent(\n {\n kind: ChannelMuteUser,\n tags: [[\"p\", t.pubkey_to_mute], ...t.tags ?? []],\n content,\n created_at: t.created_at\n },\n privateKey\n );\n};\n\n// nip30.ts\nvar nip30_exports = {};\n__export(nip30_exports, {\n EMOJI_SHORTCODE_REGEX: () => EMOJI_SHORTCODE_REGEX,\n matchAll: () => matchAll,\n regex: () => regex,\n replaceAll: () => replaceAll\n});\nvar EMOJI_SHORTCODE_REGEX = /:(\\w+):/;\nvar regex = () => new RegExp(`\\\\B${EMOJI_SHORTCODE_REGEX.source}\\\\B`, \"g\");\nfunction* matchAll(content) {\n const matches = content.matchAll(regex());\n for (const match of matches) {\n try {\n const [shortcode, name] = match;\n yield {\n shortcode,\n name,\n start: match.index,\n end: match.index + shortcode.length\n };\n } catch (_e) {\n }\n }\n}\nfunction replaceAll(content, replacer) {\n return content.replaceAll(regex(), (shortcode, name) => {\n return replacer({\n shortcode,\n name\n });\n });\n}\n\n// nip39.ts\nvar nip39_exports = {};\n__export(nip39_exports, {\n useFetchImplementation: () => useFetchImplementation3,\n validateGithub: () => validateGithub\n});\nvar _fetch3;\ntry {\n _fetch3 = fetch;\n} catch {\n}\nfunction useFetchImplementation3(fetchImplementation) {\n _fetch3 = fetchImplementation;\n}\nasync function validateGithub(pubkey, username, proof) {\n try {\n let res = await (await _fetch3(`https://gist.github.com/${username}/${proof}/raw`)).text();\n return res === `Verifying that I control the following Nostr public key: ${pubkey}`;\n } catch (_) {\n return false;\n }\n}\n\n// nip47.ts\nvar nip47_exports = {};\n__export(nip47_exports, {\n makeNwcRequestEvent: () => makeNwcRequestEvent,\n parseConnectionString: () => parseConnectionString\n});\nfunction parseConnectionString(connectionString) {\n const { host, pathname, searchParams } = new URL(connectionString);\n const pubkey = pathname || host;\n const relay = searchParams.get(\"relay\");\n const secret = searchParams.get(\"secret\");\n if (!pubkey || !relay || !secret) {\n throw new Error(\"invalid connection string\");\n }\n return { pubkey, relay, secret };\n}\nasync function makeNwcRequestEvent(pubkey, secretKey, invoice) {\n const content = {\n method: \"pay_invoice\",\n params: {\n invoice\n }\n };\n const encryptedContent = encrypt(secretKey, pubkey, JSON.stringify(content));\n const eventTemplate = {\n kind: NWCWalletRequest,\n created_at: Math.round(Date.now() / 1e3),\n content: encryptedContent,\n tags: [[\"p\", pubkey]]\n };\n return finalizeEvent(eventTemplate, secretKey);\n}\n\n// nip54.ts\nvar nip54_exports = {};\n__export(nip54_exports, {\n normalizeIdentifier: () => normalizeIdentifier\n});\nfunction normalizeIdentifier(name) {\n name = name.trim().toLowerCase();\n name = name.normalize(\"NFKC\");\n return Array.from(name).map((char) => {\n if (/\\p{Letter}/u.test(char) || /\\p{Number}/u.test(char)) {\n return char;\n }\n return \"-\";\n }).join(\"\");\n}\n\n// nip57.ts\nvar nip57_exports = {};\n__export(nip57_exports, {\n getSatoshisAmountFromBolt11: () => getSatoshisAmountFromBolt11,\n getZapEndpoint: () => getZapEndpoint,\n makeZapReceipt: () => makeZapReceipt,\n makeZapRequest: () => makeZapRequest,\n useFetchImplementation: () => useFetchImplementation4,\n validateZapRequest: () => validateZapRequest\n});\nimport { bech32 as bech322 } from \"@scure/base\";\nvar _fetch4;\ntry {\n _fetch4 = fetch;\n} catch {\n}\nfunction useFetchImplementation4(fetchImplementation) {\n _fetch4 = fetchImplementation;\n}\nasync function getZapEndpoint(metadata) {\n try {\n let lnurl = \"\";\n let { lud06, lud16 } = JSON.parse(metadata.content);\n if (lud16) {\n let [name, domain] = lud16.split(\"@\");\n lnurl = new URL(`/.well-known/lnurlp/${name}`, `https://${domain}`).toString();\n } else if (lud06) {\n let { words } = bech322.decode(lud06, 1e3);\n let data = bech322.fromWords(words);\n lnurl = utf8Decoder.decode(data);\n } else {\n return null;\n }\n let res = await _fetch4(lnurl);\n let body = await res.json();\n if (body.allowsNostr && body.nostrPubkey) {\n return body.callback;\n }\n } catch (err) {\n }\n return null;\n}\nfunction makeZapRequest(params) {\n let zr = {\n kind: 9734,\n created_at: Math.round(Date.now() / 1e3),\n content: params.comment || \"\",\n tags: [\n [\"p\", \"pubkey\" in params ? params.pubkey : params.event.pubkey],\n [\"amount\", params.amount.toString()],\n [\"relays\", ...params.relays]\n ]\n };\n if (\"event\" in params) {\n zr.tags.push([\"e\", params.event.id]);\n if (isReplaceableKind(params.event.kind)) {\n const a = [\"a\", `${params.event.kind}:${params.event.pubkey}:`];\n zr.tags.push(a);\n } else if (isAddressableKind(params.event.kind)) {\n let d = params.event.tags.find(([t, v]) => t === \"d\" && v);\n if (!d)\n throw new Error(\"d tag not found or is empty\");\n const a = [\"a\", `${params.event.kind}:${params.event.pubkey}:${d[1]}`];\n zr.tags.push(a);\n }\n zr.tags.push([\"k\", params.event.kind.toString()]);\n }\n return zr;\n}\nfunction validateZapRequest(zapRequestString) {\n let zapRequest;\n try {\n zapRequest = JSON.parse(zapRequestString);\n } catch (err) {\n return \"Invalid zap request JSON.\";\n }\n if (!validateEvent(zapRequest))\n return \"Zap request is not a valid Nostr event.\";\n if (!verifyEvent(zapRequest))\n return \"Invalid signature on zap request.\";\n let p = zapRequest.tags.find(([t, v]) => t === \"p\" && v);\n if (!p)\n return \"Zap request doesn't have a 'p' tag.\";\n if (!p[1].match(/^[a-f0-9]{64}$/))\n return \"Zap request 'p' tag is not valid hex.\";\n let e = zapRequest.tags.find(([t, v]) => t === \"e\" && v);\n if (e && !e[1].match(/^[a-f0-9]{64}$/))\n return \"Zap request 'e' tag is not valid hex.\";\n let relays = zapRequest.tags.find(([t, v]) => t === \"relays\" && v);\n if (!relays)\n return \"Zap request doesn't have a 'relays' tag.\";\n return null;\n}\nfunction makeZapReceipt({\n zapRequest,\n preimage,\n bolt11,\n paidAt\n}) {\n let zr = JSON.parse(zapRequest);\n let tagsFromZapRequest = zr.tags.filter(([t]) => t === \"e\" || t === \"p\" || t === \"a\");\n let zap = {\n kind: 9735,\n created_at: Math.round(paidAt.getTime() / 1e3),\n content: \"\",\n tags: [...tagsFromZapRequest, [\"P\", zr.pubkey], [\"bolt11\", bolt11], [\"description\", zapRequest]]\n };\n if (preimage) {\n zap.tags.push([\"preimage\", preimage]);\n }\n return zap;\n}\nfunction getSatoshisAmountFromBolt11(bolt11) {\n if (bolt11.length < 50) {\n return 0;\n }\n bolt11 = bolt11.substring(0, 50);\n const idx = bolt11.lastIndexOf(\"1\");\n if (idx === -1) {\n return 0;\n }\n const hrp = bolt11.substring(0, idx);\n if (!hrp.startsWith(\"lnbc\")) {\n return 0;\n }\n const amount = hrp.substring(4);\n if (amount.length < 1) {\n return 0;\n }\n const char = amount[amount.length - 1];\n const digit = char.charCodeAt(0) - \"0\".charCodeAt(0);\n const isDigit = digit >= 0 && digit <= 9;\n let cutPoint = amount.length - 1;\n if (isDigit) {\n cutPoint++;\n }\n if (cutPoint < 1) {\n return 0;\n }\n const num = parseInt(amount.substring(0, cutPoint));\n switch (char) {\n case \"m\":\n return num * 1e5;\n case \"u\":\n return num * 100;\n case \"n\":\n return num / 10;\n case \"p\":\n return num / 1e4;\n default:\n return num * 1e8;\n }\n}\n\n// nip77.ts\nvar nip77_exports = {};\n__export(nip77_exports, {\n Negentropy: () => Negentropy,\n NegentropyStorageVector: () => NegentropyStorageVector,\n NegentropySync: () => NegentropySync\n});\nimport { bytesToHex as bytesToHex5, hexToBytes as hexToBytes6 } from \"@noble/hashes/utils.js\";\nimport { sha256 as sha2564 } from \"@noble/hashes/sha2.js\";\nvar PROTOCOL_VERSION = 97;\nvar ID_SIZE = 32;\nvar FINGERPRINT_SIZE = 16;\nvar Mode = {\n Skip: 0,\n Fingerprint: 1,\n IdList: 2\n};\nvar WrappedBuffer = class {\n _raw;\n length;\n constructor(buffer) {\n if (typeof buffer === \"number\") {\n this._raw = new Uint8Array(buffer);\n this.length = 0;\n } else if (buffer instanceof Uint8Array) {\n this._raw = new Uint8Array(buffer);\n this.length = buffer.length;\n } else {\n this._raw = new Uint8Array(512);\n this.length = 0;\n }\n }\n unwrap() {\n return this._raw.subarray(0, this.length);\n }\n get capacity() {\n return this._raw.byteLength;\n }\n extend(buf) {\n if (buf instanceof WrappedBuffer)\n buf = buf.unwrap();\n if (typeof buf.length !== \"number\")\n throw Error(\"bad length\");\n const targetSize = buf.length + this.length;\n if (this.capacity < targetSize) {\n const oldRaw = this._raw;\n const newCapacity = Math.max(this.capacity * 2, targetSize);\n this._raw = new Uint8Array(newCapacity);\n this._raw.set(oldRaw);\n }\n this._raw.set(buf, this.length);\n this.length += buf.length;\n }\n shift() {\n const first = this._raw[0];\n this._raw = this._raw.subarray(1);\n this.length--;\n return first;\n }\n shiftN(n = 1) {\n const firstSubarray = this._raw.subarray(0, n);\n this._raw = this._raw.subarray(n);\n this.length -= n;\n return firstSubarray;\n }\n};\nfunction decodeVarInt(buf) {\n let res = 0;\n while (1) {\n if (buf.length === 0)\n throw Error(\"parse ends prematurely\");\n let byte = buf.shift();\n res = res << 7 | byte & 127;\n if ((byte & 128) === 0)\n break;\n }\n return res;\n}\nfunction encodeVarInt(n) {\n if (n === 0)\n return new WrappedBuffer(new Uint8Array([0]));\n let o = [];\n while (n !== 0) {\n o.push(n & 127);\n n >>>= 7;\n }\n o.reverse();\n for (let i2 = 0; i2 < o.length - 1; i2++)\n o[i2] |= 128;\n return new WrappedBuffer(new Uint8Array(o));\n}\nfunction getByte(buf) {\n return getBytes(buf, 1)[0];\n}\nfunction getBytes(buf, n) {\n if (buf.length < n)\n throw Error(\"parse ends prematurely\");\n return buf.shiftN(n);\n}\nvar Accumulator = class {\n buf;\n constructor() {\n this.setToZero();\n }\n setToZero() {\n this.buf = new Uint8Array(ID_SIZE);\n }\n add(otherBuf) {\n let currCarry = 0, nextCarry = 0;\n let p = new DataView(this.buf.buffer);\n let po = new DataView(otherBuf.buffer);\n for (let i2 = 0; i2 < 8; i2++) {\n let offset = i2 * 4;\n let orig = p.getUint32(offset, true);\n let otherV = po.getUint32(offset, true);\n let next = orig;\n next += currCarry;\n next += otherV;\n if (next > 4294967295)\n nextCarry = 1;\n p.setUint32(offset, next & 4294967295, true);\n currCarry = nextCarry;\n nextCarry = 0;\n }\n }\n negate() {\n let p = new DataView(this.buf.buffer);\n for (let i2 = 0; i2 < 8; i2++) {\n let offset = i2 * 4;\n p.setUint32(offset, ~p.getUint32(offset, true));\n }\n let one = new Uint8Array(ID_SIZE);\n one[0] = 1;\n this.add(one);\n }\n getFingerprint(n) {\n let input = new WrappedBuffer();\n input.extend(this.buf);\n input.extend(encodeVarInt(n));\n let hash = sha2564(input.unwrap());\n return hash.subarray(0, FINGERPRINT_SIZE);\n }\n};\nvar NegentropyStorageVector = class {\n items;\n sealed;\n constructor() {\n this.items = [];\n this.sealed = false;\n }\n insert(timestamp, id) {\n if (this.sealed)\n throw Error(\"already sealed\");\n const idb = hexToBytes6(id);\n if (idb.byteLength !== ID_SIZE)\n throw Error(\"bad id size for added item\");\n this.items.push({ timestamp, id: idb });\n }\n seal() {\n if (this.sealed)\n throw Error(\"already sealed\");\n this.sealed = true;\n this.items.sort(itemCompare);\n for (let i2 = 1; i2 < this.items.length; i2++) {\n if (itemCompare(this.items[i2 - 1], this.items[i2]) === 0)\n throw Error(\"duplicate item inserted\");\n }\n }\n unseal() {\n this.sealed = false;\n }\n size() {\n this._checkSealed();\n return this.items.length;\n }\n getItem(i2) {\n this._checkSealed();\n if (i2 >= this.items.length)\n throw Error(\"out of range\");\n return this.items[i2];\n }\n iterate(begin, end, cb) {\n this._checkSealed();\n this._checkBounds(begin, end);\n for (let i2 = begin; i2 < end; ++i2) {\n if (!cb(this.items[i2], i2))\n break;\n }\n }\n findLowerBound(begin, end, bound) {\n this._checkSealed();\n this._checkBounds(begin, end);\n return this._binarySearch(this.items, begin, end, (a) => itemCompare(a, bound) < 0);\n }\n fingerprint(begin, end) {\n let out = new Accumulator();\n out.setToZero();\n this.iterate(begin, end, (item) => {\n out.add(item.id);\n return true;\n });\n return out.getFingerprint(end - begin);\n }\n _checkSealed() {\n if (!this.sealed)\n throw Error(\"not sealed\");\n }\n _checkBounds(begin, end) {\n if (begin > end || end > this.items.length)\n throw Error(\"bad range\");\n }\n _binarySearch(arr, first, last, cmp) {\n let count = last - first;\n while (count > 0) {\n let it = first;\n let step = Math.floor(count / 2);\n it += step;\n if (cmp(arr[it])) {\n first = ++it;\n count -= step + 1;\n } else {\n count = step;\n }\n }\n return first;\n }\n};\nvar Negentropy = class {\n storage;\n frameSizeLimit;\n lastTimestampIn;\n lastTimestampOut;\n constructor(storage, frameSizeLimit = 6e4) {\n if (frameSizeLimit < 4096)\n throw Error(\"frameSizeLimit too small\");\n this.storage = storage;\n this.frameSizeLimit = frameSizeLimit;\n this.lastTimestampIn = 0;\n this.lastTimestampOut = 0;\n }\n _bound(timestamp, id) {\n return { timestamp, id: id || new Uint8Array(0) };\n }\n initiate() {\n let output = new WrappedBuffer();\n output.extend(new Uint8Array([PROTOCOL_VERSION]));\n this.splitRange(0, this.storage.size(), this._bound(Number.MAX_VALUE), output);\n return bytesToHex5(output.unwrap());\n }\n reconcile(queryMsg, onhave, onneed) {\n const query = new WrappedBuffer(hexToBytes6(queryMsg));\n this.lastTimestampIn = this.lastTimestampOut = 0;\n let fullOutput = new WrappedBuffer();\n fullOutput.extend(new Uint8Array([PROTOCOL_VERSION]));\n let protocolVersion = getByte(query);\n if (protocolVersion < 96 || protocolVersion > 111)\n throw Error(\"invalid negentropy protocol version byte\");\n if (protocolVersion !== PROTOCOL_VERSION) {\n throw Error(\"unsupported negentropy protocol version requested: \" + (protocolVersion - 96));\n }\n let storageSize = this.storage.size();\n let prevBound = this._bound(0);\n let prevIndex = 0;\n let skip = false;\n while (query.length !== 0) {\n let o = new WrappedBuffer();\n let doSkip = () => {\n if (skip) {\n skip = false;\n o.extend(this.encodeBound(prevBound));\n o.extend(encodeVarInt(Mode.Skip));\n }\n };\n let currBound = this.decodeBound(query);\n let mode = decodeVarInt(query);\n let lower = prevIndex;\n let upper = this.storage.findLowerBound(prevIndex, storageSize, currBound);\n if (mode === Mode.Skip) {\n skip = true;\n } else if (mode === Mode.Fingerprint) {\n let theirFingerprint = getBytes(query, FINGERPRINT_SIZE);\n let ourFingerprint = this.storage.fingerprint(lower, upper);\n if (compareUint8Array(theirFingerprint, ourFingerprint) !== 0) {\n doSkip();\n this.splitRange(lower, upper, currBound, o);\n } else {\n skip = true;\n }\n } else if (mode === Mode.IdList) {\n let numIds = decodeVarInt(query);\n let theirElems = {};\n for (let i2 = 0; i2 < numIds; i2++) {\n let e = getBytes(query, ID_SIZE);\n theirElems[bytesToHex5(e)] = e;\n }\n skip = true;\n this.storage.iterate(lower, upper, (item) => {\n let k = item.id;\n const id = bytesToHex5(k);\n if (!theirElems[id]) {\n onhave?.(id);\n } else {\n delete theirElems[bytesToHex5(k)];\n }\n return true;\n });\n if (onneed) {\n for (let v of Object.values(theirElems)) {\n onneed(bytesToHex5(v));\n }\n }\n } else {\n throw Error(\"unexpected mode\");\n }\n if (this.exceededFrameSizeLimit(fullOutput.length + o.length)) {\n let remainingFingerprint = this.storage.fingerprint(upper, storageSize);\n fullOutput.extend(this.encodeBound(this._bound(Number.MAX_VALUE)));\n fullOutput.extend(encodeVarInt(Mode.Fingerprint));\n fullOutput.extend(remainingFingerprint);\n break;\n } else {\n fullOutput.extend(o);\n }\n prevIndex = upper;\n prevBound = currBound;\n }\n return fullOutput.length === 1 ? null : bytesToHex5(fullOutput.unwrap());\n }\n splitRange(lower, upper, upperBound, o) {\n let numElems = upper - lower;\n let buckets = 16;\n if (numElems < buckets * 2) {\n o.extend(this.encodeBound(upperBound));\n o.extend(encodeVarInt(Mode.IdList));\n o.extend(encodeVarInt(numElems));\n this.storage.iterate(lower, upper, (item) => {\n o.extend(item.id);\n return true;\n });\n } else {\n let itemsPerBucket = Math.floor(numElems / buckets);\n let bucketsWithExtra = numElems % buckets;\n let curr = lower;\n for (let i2 = 0; i2 < buckets; i2++) {\n let bucketSize = itemsPerBucket + (i2 < bucketsWithExtra ? 1 : 0);\n let ourFingerprint = this.storage.fingerprint(curr, curr + bucketSize);\n curr += bucketSize;\n let nextBound;\n if (curr === upper) {\n nextBound = upperBound;\n } else {\n let prevItem;\n let currItem;\n this.storage.iterate(curr - 1, curr + 1, (item, index) => {\n if (index === curr - 1)\n prevItem = item;\n else\n currItem = item;\n return true;\n });\n nextBound = this.getMinimalBound(prevItem, currItem);\n }\n o.extend(this.encodeBound(nextBound));\n o.extend(encodeVarInt(Mode.Fingerprint));\n o.extend(ourFingerprint);\n }\n }\n }\n exceededFrameSizeLimit(n) {\n return n > this.frameSizeLimit - 200;\n }\n decodeTimestampIn(encoded) {\n let timestamp = decodeVarInt(encoded);\n timestamp = timestamp === 0 ? Number.MAX_VALUE : timestamp - 1;\n if (this.lastTimestampIn === Number.MAX_VALUE || timestamp === Number.MAX_VALUE) {\n this.lastTimestampIn = Number.MAX_VALUE;\n return Number.MAX_VALUE;\n }\n timestamp += this.lastTimestampIn;\n this.lastTimestampIn = timestamp;\n return timestamp;\n }\n decodeBound(encoded) {\n let timestamp = this.decodeTimestampIn(encoded);\n let len = decodeVarInt(encoded);\n if (len > ID_SIZE)\n throw Error(\"bound key too long\");\n let id = getBytes(encoded, len);\n return { timestamp, id };\n }\n encodeTimestampOut(timestamp) {\n if (timestamp === Number.MAX_VALUE) {\n this.lastTimestampOut = Number.MAX_VALUE;\n return encodeVarInt(0);\n }\n let temp = timestamp;\n timestamp -= this.lastTimestampOut;\n this.lastTimestampOut = temp;\n return encodeVarInt(timestamp + 1);\n }\n encodeBound(key) {\n let output = new WrappedBuffer();\n output.extend(this.encodeTimestampOut(key.timestamp));\n output.extend(encodeVarInt(key.id.length));\n output.extend(key.id);\n return output;\n }\n getMinimalBound(prev, curr) {\n if (curr.timestamp !== prev.timestamp) {\n return this._bound(curr.timestamp);\n } else {\n let sharedPrefixBytes = 0;\n let currKey = curr.id;\n let prevKey = prev.id;\n for (let i2 = 0; i2 < ID_SIZE; i2++) {\n if (currKey[i2] !== prevKey[i2])\n break;\n sharedPrefixBytes++;\n }\n return this._bound(curr.timestamp, curr.id.subarray(0, sharedPrefixBytes + 1));\n }\n }\n};\nfunction compareUint8Array(a, b) {\n for (let i2 = 0; i2 < a.byteLength; i2++) {\n if (a[i2] < b[i2])\n return -1;\n if (a[i2] > b[i2])\n return 1;\n }\n if (a.byteLength > b.byteLength)\n return 1;\n if (a.byteLength < b.byteLength)\n return -1;\n return 0;\n}\nfunction itemCompare(a, b) {\n if (a.timestamp === b.timestamp) {\n return compareUint8Array(a.id, b.id);\n }\n return a.timestamp - b.timestamp;\n}\nvar NegentropySync = class {\n relay;\n storage;\n neg;\n filter;\n subscription;\n onhave;\n onneed;\n constructor(relay, storage, filter, params = {}) {\n this.relay = relay;\n this.storage = storage;\n this.neg = new Negentropy(storage);\n this.onhave = params.onhave;\n this.onneed = params.onneed;\n this.filter = filter;\n this.subscription = this.relay.prepareSubscription([{}], { label: params.label || \"negentropy\" });\n this.subscription.oncustom = (data) => {\n switch (data[0]) {\n case \"NEG-MSG\": {\n if (data.length < 3) {\n console.warn(`got invalid NEG-MSG from ${this.relay.url}: ${data}`);\n }\n try {\n const response = this.neg.reconcile(data[2], this.onhave, this.onneed);\n if (response) {\n this.relay.send(`[\"NEG-MSG\", \"${this.subscription.id}\", \"${response}\"]`);\n } else {\n this.close();\n params.onclose?.();\n }\n } catch (error) {\n console.error(\"negentropy reconcile error:\", error);\n params?.onclose?.(`reconcile error: ${error}`);\n }\n break;\n }\n case \"NEG-CLOSE\": {\n const reason = data[2];\n console.warn(\"negentropy error:\", reason);\n params.onclose?.(reason);\n break;\n }\n case \"NEG-ERR\": {\n params.onclose?.();\n }\n }\n };\n }\n async start() {\n const initMsg = this.neg.initiate();\n this.relay.send(`[\"NEG-OPEN\",\"${this.subscription.id}\",${JSON.stringify(this.filter)},\"${initMsg}\"]`);\n }\n close() {\n this.relay.send(`[\"NEG-CLOSE\",\"${this.subscription.id}\"]`);\n this.subscription.close();\n }\n};\n\n// nip98.ts\nvar nip98_exports = {};\n__export(nip98_exports, {\n getToken: () => getToken,\n hashPayload: () => hashPayload,\n unpackEventFromToken: () => unpackEventFromToken,\n validateEvent: () => validateEvent2,\n validateEventKind: () => validateEventKind,\n validateEventMethodTag: () => validateEventMethodTag,\n validateEventPayloadTag: () => validateEventPayloadTag,\n validateEventTimestamp: () => validateEventTimestamp,\n validateEventUrlTag: () => validateEventUrlTag,\n validateToken: () => validateToken\n});\nimport { sha256 as sha2565 } from \"@noble/hashes/sha2.js\";\nimport { bytesToHex as bytesToHex6 } from \"@noble/hashes/utils.js\";\nimport { base64 as base643 } from \"@scure/base\";\nvar _authorizationScheme = \"Nostr \";\nasync function getToken(loginUrl, httpMethod, sign, includeAuthorizationScheme = false, payload) {\n const event = {\n kind: HTTPAuth,\n tags: [\n [\"u\", loginUrl],\n [\"method\", httpMethod]\n ],\n created_at: Math.round(new Date().getTime() / 1e3),\n content: \"\"\n };\n if (payload) {\n event.tags.push([\"payload\", hashPayload(payload)]);\n }\n const signedEvent = await sign(event);\n const authorizationScheme = includeAuthorizationScheme ? _authorizationScheme : \"\";\n return authorizationScheme + base643.encode(utf8Encoder.encode(JSON.stringify(signedEvent)));\n}\nasync function validateToken(token, url, method) {\n const event = await unpackEventFromToken(token).catch((error) => {\n throw error;\n });\n const valid = await validateEvent2(event, url, method).catch((error) => {\n throw error;\n });\n return valid;\n}\nasync function unpackEventFromToken(token) {\n if (!token) {\n throw new Error(\"Missing token\");\n }\n token = token.replace(_authorizationScheme, \"\");\n const eventB64 = utf8Decoder.decode(base643.decode(token));\n if (!eventB64 || eventB64.length === 0 || !eventB64.startsWith(\"{\")) {\n throw new Error(\"Invalid token\");\n }\n const event = JSON.parse(eventB64);\n return event;\n}\nfunction validateEventTimestamp(event) {\n if (!event.created_at) {\n return false;\n }\n return Math.round(new Date().getTime() / 1e3) - event.created_at < 60;\n}\nfunction validateEventKind(event) {\n return event.kind === HTTPAuth;\n}\nfunction validateEventUrlTag(event, url) {\n const urlTag = event.tags.find((t) => t[0] === \"u\");\n if (!urlTag) {\n return false;\n }\n return urlTag.length > 0 && urlTag[1] === url;\n}\nfunction validateEventMethodTag(event, method) {\n const methodTag = event.tags.find((t) => t[0] === \"method\");\n if (!methodTag) {\n return false;\n }\n return methodTag.length > 0 && methodTag[1].toLowerCase() === method.toLowerCase();\n}\nfunction hashPayload(payload) {\n const hash = sha2565(utf8Encoder.encode(JSON.stringify(payload)));\n return bytesToHex6(hash);\n}\nfunction validateEventPayloadTag(event, payload) {\n const payloadTag = event.tags.find((t) => t[0] === \"payload\");\n if (!payloadTag) {\n return false;\n }\n const payloadHash = hashPayload(payload);\n return payloadTag.length > 0 && payloadTag[1] === payloadHash;\n}\nasync function validateEvent2(event, url, method, body) {\n if (!verifyEvent(event)) {\n throw new Error(\"Invalid nostr event, signature invalid\");\n }\n if (!validateEventKind(event)) {\n throw new Error(\"Invalid nostr event, kind invalid\");\n }\n if (!validateEventTimestamp(event)) {\n throw new Error(\"Invalid nostr event, created_at timestamp invalid\");\n }\n if (!validateEventUrlTag(event, url)) {\n throw new Error(\"Invalid nostr event, url tag invalid\");\n }\n if (!validateEventMethodTag(event, method)) {\n throw new Error(\"Invalid nostr event, method tag invalid\");\n }\n if (Boolean(body) && typeof body === \"object\" && Object.keys(body).length > 0) {\n if (!validateEventPayloadTag(event, body)) {\n throw new Error(\"Invalid nostr event, payload tag does not match request body hash\");\n }\n }\n return true;\n}\nexport {\n Relay,\n SimplePool,\n finalizeEvent,\n fakejson_exports as fj,\n generateSecretKey,\n getEventHash,\n getFilterLimit,\n getPublicKey,\n kinds_exports as kinds,\n matchFilter,\n matchFilters,\n mergeFilters,\n nip04_exports as nip04,\n nip05_exports as nip05,\n nip10_exports as nip10,\n nip11_exports as nip11,\n nip13_exports as nip13,\n nip17_exports as nip17,\n nip18_exports as nip18,\n nip19_exports as nip19,\n nip21_exports as nip21,\n nip25_exports as nip25,\n nip27_exports as nip27,\n nip28_exports as nip28,\n nip30_exports as nip30,\n nip39_exports as nip39,\n nip42_exports as nip42,\n nip44_exports as nip44,\n nip47_exports as nip47,\n nip54_exports as nip54,\n nip57_exports as nip57,\n nip59_exports as nip59,\n nip77_exports as nip77,\n nip98_exports as nip98,\n parseReferences,\n serializeEvent,\n sortEvents,\n utils_exports as utils,\n validateEvent,\n verifiedSymbol,\n verifyEvent\n};\n","import EventEmitter from './emitter.js';\nimport { Buff } from '@cmdcode/buff';\nimport { SimplePool } from 'nostr-tools';\nimport { get_pubkey } from '../lib/crypto.js';\nimport { create_event } from '../lib/event.js';\nimport { gen_message_id } from '../lib/util.js';\nimport { finalize_message, create_payload, decrypt_payload, parse_envelope } from '../lib/message.js';\nimport { verify_relays, verify_seckey } from '../lib/validate.js';\nimport * as Util from '../util/index.js';\nconst NODE_CONFIG = () => {\n return {\n envelope: {\n kind: 20004,\n tags: []\n },\n filter: {\n kinds: [20004],\n since: Util.now()\n },\n req_timeout: 5000,\n since_offset: 5,\n start_delay: 2000\n };\n};\nexport default class NostrNode extends EventEmitter {\n constructor(relays, seckey, options = {}) {\n super();\n this._inbox = {\n event: new EventEmitter(),\n id: new EventEmitter(),\n peer: new EventEmitter(),\n tag: new EventEmitter()\n };\n this._sub = null;\n this._handler = (event) => {\n try {\n const payload = decrypt_payload(event, this._seckey.hex);\n const msg = parse_envelope(payload, event);\n this.emit('message', msg);\n this.inbox.id.emit(msg.id, msg);\n this.inbox.peer.emit(msg.env.pubkey, msg);\n this.inbox.tag.emit(msg.tag, msg);\n }\n catch (err) {\n this.emit('bounced', [event.id, Util.parse_error(err)]);\n }\n };\n this._publish = async (message, peer_pk, options) => {\n const cache = options?.cache ?? new Map();\n const config = get_event_config(this, options);\n const payload = create_payload(message.tag, message.data, message.id);\n const event = create_event(config, payload, peer_pk, this._seckey.hex);\n const signed = { ...message, env: event };\n const receipts = this._pool.publish(this.relays, event);\n this._inbox.event.emit('published', signed);\n return Promise.all(receipts).then(acks => {\n const fails = this.relays.filter(r => !acks.includes(r));\n const msg_id = message.id;\n const ok = acks.length > 0;\n const res = { acks, fails, ok, peer_pk, data: signed };\n cache.set(peer_pk, res);\n this._inbox.event.emit('settled', { ...res, msg_id });\n return { ...res, ok, msg_id };\n });\n };\n verify_relays(relays);\n verify_seckey(seckey);\n this._seckey = new Buff(seckey);\n this._pubkey = get_pubkey(this._seckey.hex);\n this._config = get_node_config(options);\n this._filter = get_filter_config(this, options.filter);\n this._pool = new SimplePool();\n this._relays = relays;\n this.emit('info', ['filter:', JSON.stringify(this.filter, null, 2)]);\n }\n _subscribe(filter, timeout = this.config.req_timeout, sub_id = gen_message_id()) {\n this._filter = get_filter_config(this, filter);\n this.filter['#p'] = [...this.filter['#p'] ?? [], this.pubkey];\n this._sub = this._pool.subscribeMany(this.relays, [this._filter], {\n id: sub_id,\n oneose: () => this.emit('subscribed', [sub_id, this.filter]),\n onevent: this._handler\n });\n return new Promise(resolve => {\n const timer = setTimeout(() => resolve('timeout'), timeout);\n const resolver = (reason) => { clearTimeout(timer); resolve(reason); };\n this.within('subscribed', ([id]) => {\n if (id === sub_id)\n resolver(null);\n }, timeout);\n });\n }\n get config() {\n return this._config;\n }\n get filter() {\n return this._filter;\n }\n get inbox() {\n return this._inbox;\n }\n get pubkey() {\n return this._pubkey;\n }\n get relays() {\n return this._relays;\n }\n async broadcast(message, peers, options) {\n const cache = new Map();\n const msg = finalize_message(message);\n const outbox = peers.map(pk => this._publish(msg, pk, options));\n return Promise.all(outbox).then(settled => {\n const ok = settled.every(r => r.ok);\n const res = { ok, cache, msg_id: msg.id, peers };\n settled.forEach(r => cache.set(r.peer_pk, r));\n this.emit('broadcast', res);\n return { ...res };\n });\n }\n async connect(timeout = this.config.req_timeout) {\n const res = await this._subscribe(this._filter, timeout);\n if (res !== null)\n throw new Error(res);\n this.emit('ready', this);\n return this;\n }\n async close() {\n if (this._sub !== null) {\n this._sub.close();\n }\n if (this._pool.close !== undefined) {\n this._pool.close(this.relays);\n }\n this.emit('close', this);\n }\n async request(message, peer_pk, options) {\n const msg = finalize_message(message);\n const receipt = this.subscribe({ id: msg.id, peers: [peer_pk] }, options);\n this.publish(msg, peer_pk, options);\n return receipt;\n }\n async multicast(message, peers, options = {}) {\n const msg = finalize_message(message);\n const sub = this.subscribe({ id: msg.id, peers }, options);\n const pub = this.broadcast(msg, peers, options);\n return Promise.all([sub, pub]).then(([sub, pub]) => {\n return { sub, pub };\n });\n }\n async publish(message, pubkey, options) {\n const msg = finalize_message(message);\n return this._publish(msg, pubkey, options);\n }\n async subscribe(filter, options) {\n const config = get_sub_config(this, options);\n return new Promise(resolve => {\n const { timeout, threshold } = config;\n const { id, peers = [], tag } = filter;\n const authors = new Set();\n const inbox = new Set();\n const timer = setTimeout(() => resolver(false, 'timeout'), timeout);\n const resolver = (ok, reason) => {\n clearTimeout(timer);\n const res = {\n ok,\n authors: Array.from(authors),\n inbox: Array.from(inbox),\n peers,\n reason\n };\n this.emit('resolved', res);\n resolve({ ...res });\n };\n const is_bounce = (msg) => ((typeof id === 'string' && id !== msg.id) ||\n (typeof tag === 'string' && tag !== msg.tag) ||\n (peers.length > 0 && !peers.includes(msg.env.pubkey)));\n this.within('message', (msg) => {\n if (!is_bounce(msg)) {\n authors.add(msg.env.pubkey);\n inbox.add(msg);\n }\n if (typeof threshold === 'number' && authors.size >= threshold) {\n resolver(true, 'threshold');\n }\n if (Array.isArray(peers) && peers.every(e => authors.has(e))) {\n resolver(true, 'complete');\n }\n }, timeout);\n });\n }\n async update(filter) {\n if (this._sub !== null)\n this._sub.close();\n return this._subscribe(filter);\n }\n}\nfunction get_node_config(opt = {}) {\n const config = NODE_CONFIG();\n const envelope = { ...config.envelope, ...opt.envelope };\n const filter = { ...config.filter, ...opt.filter };\n return { ...config, envelope, filter };\n}\nfunction get_event_config(node, opt = {}) {\n let { created_at = Util.now(), tags = [], ...rest } = opt;\n const envelope = node.config.envelope;\n tags = [...envelope.tags ?? [], ...opt.tags ?? []];\n return { ...envelope, ...rest, created_at, tags };\n}\nfunction get_filter_config(node, filter = {}) {\n return { ...node.config.filter, ...filter };\n}\nfunction get_sub_config(node, opt = {}) {\n const timeout = opt.timeout ?? node.config.req_timeout;\n return { ...opt, timeout };\n}\n","import { EventEmitter } from './emitter.js';\nimport { BifrostSigner } from './signer.js';\nimport { SignerQueue } from './queue.js';\nimport { NostrNode } from '@cmdcode/nostr-p2p';\nimport { parse_error } from '@cmdcode/nostr-p2p/util';\nimport { convert_pubkey } from '../util/crypto.js';\nimport { now } from '../util/helpers.js';\nimport { parse_ecdh_message, parse_session_message } from '../lib/parse.js';\nimport { get_peer_pubkeys, get_recv_pubkeys } from '../lib/peer.js';\nimport * as API from '../api/index.js';\nimport Schema from '../schema/index.js';\nconst DEFAULT_CACHE = () => {\n return {\n ecdh: new Map()\n };\n};\nconst DEFAULT_CONFIG = () => {\n return {\n debug: false,\n middleware: {},\n policies: [],\n sign_ival: 100\n };\n};\nexport class BifrostNode extends EventEmitter {\n constructor(group, share, relays, options) {\n super();\n this._is_ready = false;\n this._cache = get_node_cache(options?.cache);\n this._config = get_node_config(options);\n this._queue = new SignerQueue(this);\n this._signer = new BifrostSigner(group, share, options);\n this._peers = init_peer_data(this);\n const authors = [...get_peer_pubkeys(this.peers), this.pubkey];\n this._client = new NostrNode(relays, share.seckey, { filter: { authors } });\n this._client.on('closed', () => {\n this._is_ready = false;\n this.emit('closed', this);\n });\n this._client.on('ready', () => {\n this._is_ready = true;\n this.emit('ready', this);\n });\n this._client.on('message', (msg) => {\n this.emit('message', msg);\n if (!this._filter(msg))\n return;\n try {\n switch (msg.tag) {\n case '/ping/req': {\n API.ping_handler_api(this, msg);\n break;\n }\n case '/ecdh/req': {\n const parsed = parse_ecdh_message(msg);\n API.ecdh_handler_api(this, parsed);\n break;\n }\n case '/sign/req': {\n const parsed = parse_session_message(msg);\n API.sign_handler_api(this, parsed);\n break;\n }\n }\n }\n catch (err) {\n this.emit('bounced', [parse_error(err), msg]);\n }\n });\n }\n _filter(msg) {\n const { pubkey } = msg.env;\n if (msg.tag === '/echo/req')\n return true;\n if (pubkey === this.pubkey)\n return false;\n if (msg.tag === '/ping/req')\n return true;\n const recv_pks = get_recv_pubkeys(this.peers);\n if (!recv_pks.includes(msg.env.pubkey)) {\n this.emit('bounced', ['unauthorized', msg]);\n return false;\n }\n else {\n return true;\n }\n }\n get cache() {\n return this._cache;\n }\n get client() {\n return this._client;\n }\n get config() {\n return this._config;\n }\n get debug() {\n return this._config.debug;\n }\n get group() {\n return this._signer.group;\n }\n get is_ready() {\n return this._is_ready;\n }\n get queue() {\n return this._queue;\n }\n get peers() {\n return this._peers;\n }\n get pubkey() {\n return convert_pubkey(this.signer.pubkey, 'bip340');\n }\n get req() {\n return {\n ecdh: API.ecdh_request_api(this),\n echo: API.echo_request_api(this),\n ping: API.ping_request_api(this),\n queue: API.sign_queue_api(this),\n sign: API.sign_request_api(this)\n };\n }\n get signer() {\n return this._signer;\n }\n async connect() {\n void this.client.connect();\n }\n async close() {\n void this.client.close();\n }\n update_peer(data) {\n const idx = this.peers.findIndex(e => e.pubkey === data.pubkey);\n if (idx === -1)\n return;\n this._peers[idx] = { ...this._peers[idx], ...data };\n }\n}\nfunction get_node_cache(opt = {}) {\n return { ...DEFAULT_CACHE(), ...opt };\n}\nfunction get_node_config(opt = {}) {\n const config = { ...DEFAULT_CONFIG(), ...opt };\n const parsed = Schema.node.config.safeParse(config);\n if (!parsed.success)\n throw new Error('invalid node config');\n return parsed.data;\n}\nfunction init_peer_data(node) {\n const current = now();\n const node_pk = node.pubkey;\n const peers_pks = node.group.commits\n .map(e => convert_pubkey(e.pubkey, 'bip340'))\n .filter(e => e !== node_pk);\n let peer_data = [];\n for (const peer_pk of peers_pks) {\n const config = node.config.policies.find(e => e.pubkey === peer_pk);\n const policy = config?.policy ?? { send: true, recv: true };\n peer_data.push({\n policy: policy,\n pubkey: peer_pk,\n status: 'offline',\n updated: current\n });\n }\n return peer_data;\n}\n","import { Buff } from '@cmdcode/buff';\nimport * as CONST from '../const.js';\nimport { Assert, normalize_obj } from '../util/index.js';\nexport function encode_group_pkg(pkg) {\n const data = serialize_group_data(pkg);\n return data.to_bech32m('bfgroup');\n}\nexport function decode_group_pkg(str) {\n const data = Buff.bech32m(str);\n return deserialize_group_data(data);\n}\nexport function serialize_group_data(pkg) {\n const thd = Buff.num(pkg.threshold, CONST.GROUP_THOLD_SIZE);\n const gpk = Buff.hex(pkg.group_pk, CONST.GROUP_PUBKEY_SIZE);\n const com = pkg.commits.map(e => serialize_commit_data(e));\n return Buff.join([gpk, thd, ...com]);\n}\nexport function deserialize_group_data(data) {\n const stream = new Buff(data).stream;\n const group_pk = stream.read(CONST.COMMIT_PUBKEY_SIZE).hex;\n const threshold = stream.read(CONST.GROUP_THOLD_SIZE).num;\n Assert.ok(stream.size % CONST.COMMIT_DATA_SIZE === 0, 'commit data is malformed');\n const count = stream.size / CONST.COMMIT_DATA_SIZE;\n const commits = [];\n for (let i = 0; i < count; i++) {\n const cbytes = stream.read(CONST.COMMIT_DATA_SIZE);\n commits.push(deserialize_commit_data(cbytes));\n }\n Assert.size(stream.data, 0);\n return normalize_obj({ commits, group_pk, threshold });\n}\nfunction serialize_commit_data(pkg) {\n const idx = Buff.num(pkg.idx, CONST.COMMIT_INDEX_SIZE);\n const spk = Buff.hex(pkg.pubkey, CONST.COMMIT_PUBKEY_SIZE);\n const bpn = Buff.hex(pkg.binder_pn, CONST.COMMIT_PNONCE_SIZE);\n const hpn = Buff.hex(pkg.hidden_pn, CONST.COMMIT_PNONCE_SIZE);\n return Buff.join([idx, spk, bpn, hpn]);\n}\nfunction deserialize_commit_data(data) {\n const stream = new Buff(data).stream;\n Assert.size(stream.data, CONST.COMMIT_DATA_SIZE);\n const idx = stream.read(CONST.COMMIT_INDEX_SIZE).num;\n const pubkey = stream.read(CONST.COMMIT_PUBKEY_SIZE).hex;\n const binder_pn = stream.read(CONST.COMMIT_PNONCE_SIZE).hex;\n const hidden_pn = stream.read(CONST.COMMIT_PNONCE_SIZE).hex;\n Assert.size(stream.data, 0);\n return { idx, binder_pn, hidden_pn, pubkey };\n}\n","import { Buff } from '@cmdcode/buff';\nimport * as CONST from '../const.js';\nimport { Assert, normalize_obj } from '../util/index.js';\nexport function encode_share_pkg(pkg) {\n const data = serialize_share_data(pkg);\n Assert.size(data, CONST.SHARE_DATA_SIZE);\n return data.to_bech32m('bfshare');\n}\nexport function decode_share_pkg(sharestr) {\n const data = Buff.bech32m(sharestr);\n return deserialize_share_data(data);\n}\nexport function serialize_share_data(pkg) {\n const idx = Buff.num(pkg.idx, CONST.SHARE_INDEX_SIZE);\n const ssk = Buff.hex(pkg.seckey, CONST.SHARE_SECKEY_SIZE);\n const bsn = Buff.hex(pkg.binder_sn, CONST.SHARE_SNONCE_SIZE);\n const hsn = Buff.hex(pkg.hidden_sn, CONST.SHARE_SNONCE_SIZE);\n return Buff.join([idx, ssk, bsn, hsn]);\n}\nexport function deserialize_share_data(data) {\n const stream = new Buff(data).stream;\n Assert.size(stream.data, CONST.SHARE_DATA_SIZE);\n const idx = stream.read(CONST.SHARE_INDEX_SIZE).num;\n const seckey = stream.read(CONST.SHARE_SECKEY_SIZE).hex;\n const binder_sn = stream.read(CONST.SHARE_SNONCE_SIZE).hex;\n const hidden_sn = stream.read(CONST.SHARE_SNONCE_SIZE).hex;\n Assert.size(stream.data, 0);\n return normalize_obj({ idx, binder_sn, hidden_sn, seckey });\n}\n","import * as GroupEncoder from './group.js';\nimport * as ShareEncoder from './share.js';\nexport * from './group.js';\nexport * from './share.js';\nexport var PackageEncoder;\n(function (PackageEncoder) {\n PackageEncoder.group = {\n encode: GroupEncoder.encode_group_pkg,\n decode: GroupEncoder.decode_group_pkg,\n serialize: GroupEncoder.serialize_group_data,\n deserialize: GroupEncoder.deserialize_group_data\n };\n PackageEncoder.share = {\n encode: ShareEncoder.encode_share_pkg,\n decode: ShareEncoder.decode_share_pkg,\n serialize: ShareEncoder.serialize_share_data,\n deserialize: ShareEncoder.deserialize_share_data\n };\n})(PackageEncoder || (PackageEncoder = {}));\n"],"x_google_ignoreList":[0,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,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],"mappings":"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"}