wowok 2.1.10 → 2.1.13

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 (896) hide show
  1. package/dist/cjs/bcs/bcs.d.ts +199 -199
  2. package/dist/cjs/bcs/bcs.js +273 -318
  3. package/dist/cjs/bcs/bcs.js.map +1 -0
  4. package/dist/cjs/bcs/effects.d.ts +109 -109
  5. package/dist/cjs/bcs/effects.js +205 -230
  6. package/dist/cjs/bcs/effects.js.map +1 -0
  7. package/dist/cjs/bcs/index.d.ts +1 -2584
  8. package/dist/cjs/bcs/index.js +61 -76
  9. package/dist/cjs/bcs/index.js.map +1 -0
  10. package/dist/cjs/bcs/pure.js +38 -58
  11. package/dist/cjs/bcs/pure.js.map +1 -0
  12. package/dist/cjs/bcs/type-tag-serializer.js +102 -114
  13. package/dist/cjs/bcs/type-tag-serializer.js.map +1 -0
  14. package/dist/cjs/bcs/types.js +6 -23
  15. package/dist/cjs/bcs/types.js.map +1 -0
  16. package/dist/cjs/client/index.js +17 -33
  17. package/dist/cjs/client/index.js.map +1 -0
  18. package/dist/cjs/client/network.js +25 -40
  19. package/dist/cjs/client/network.js.map +1 -0
  20. package/dist/cjs/cryptography/index.js +29 -45
  21. package/dist/cjs/cryptography/index.js.map +1 -0
  22. package/dist/cjs/cryptography/intent.d.ts +1 -1
  23. package/dist/cjs/cryptography/intent.js +20 -31
  24. package/dist/cjs/cryptography/intent.js.map +1 -0
  25. package/dist/cjs/cryptography/keypair.js +102 -116
  26. package/dist/cjs/cryptography/keypair.js.map +1 -0
  27. package/dist/cjs/cryptography/mnemonics.js +43 -41
  28. package/dist/cjs/cryptography/mnemonics.js.map +1 -0
  29. package/dist/cjs/cryptography/publickey.js +112 -134
  30. package/dist/cjs/cryptography/publickey.js.map +1 -0
  31. package/dist/cjs/cryptography/signature-scheme.js +24 -43
  32. package/dist/cjs/cryptography/signature-scheme.js.map +1 -0
  33. package/dist/cjs/cryptography/signature.d.ts +2 -24
  34. package/dist/cjs/cryptography/signature.js +50 -67
  35. package/dist/cjs/cryptography/signature.js.map +1 -0
  36. package/dist/cjs/experimental/cache.js +65 -0
  37. package/dist/cjs/experimental/cache.js.map +1 -0
  38. package/dist/cjs/experimental/client.js +27 -0
  39. package/dist/cjs/experimental/client.js.map +1 -0
  40. package/dist/cjs/experimental/core.js +89 -0
  41. package/dist/cjs/experimental/core.js.map +1 -0
  42. package/dist/cjs/experimental/errors.js +32 -0
  43. package/dist/cjs/experimental/errors.js.map +1 -0
  44. package/dist/cjs/experimental/index.js +15 -0
  45. package/dist/cjs/experimental/index.js.map +1 -0
  46. package/dist/cjs/experimental/persistent-storage.js +343 -0
  47. package/dist/cjs/experimental/persistent-storage.js.map +1 -0
  48. package/dist/cjs/experimental/persistent-storage.test.js +200 -0
  49. package/dist/cjs/experimental/persistent-storage.test.js.map +1 -0
  50. package/dist/cjs/experimental/transports/utils.js +104 -0
  51. package/dist/cjs/experimental/transports/utils.js.map +1 -0
  52. package/dist/cjs/experimental/types.js +6 -0
  53. package/dist/cjs/experimental/types.js.map +1 -0
  54. package/dist/cjs/faucet/faucet.js +106 -124
  55. package/dist/cjs/faucet/faucet.js.map +1 -0
  56. package/dist/cjs/faucet/index.js +12 -28
  57. package/dist/cjs/faucet/index.js.map +1 -0
  58. package/dist/cjs/grpc/client.js +47 -62
  59. package/dist/cjs/grpc/client.js.map +1 -0
  60. package/dist/cjs/grpc/core.js +580 -617
  61. package/dist/cjs/grpc/core.js.map +1 -0
  62. package/dist/cjs/grpc/index.js +9 -25
  63. package/dist/cjs/grpc/index.js.map +1 -0
  64. package/dist/cjs/grpc/proto/google/protobuf/any.js +168 -135
  65. package/dist/cjs/grpc/proto/google/protobuf/any.js.map +1 -0
  66. package/dist/cjs/grpc/proto/google/protobuf/duration.js +105 -90
  67. package/dist/cjs/grpc/proto/google/protobuf/duration.js.map +1 -0
  68. package/dist/cjs/grpc/proto/google/protobuf/empty.js +50 -28
  69. package/dist/cjs/grpc/proto/google/protobuf/empty.js.map +1 -0
  70. package/dist/cjs/grpc/proto/google/protobuf/field_mask.js +96 -75
  71. package/dist/cjs/grpc/proto/google/protobuf/field_mask.js.map +1 -0
  72. package/dist/cjs/grpc/proto/google/protobuf/struct.js +266 -215
  73. package/dist/cjs/grpc/proto/google/protobuf/struct.js.map +1 -0
  74. package/dist/cjs/grpc/proto/google/protobuf/timestamp.js +150 -131
  75. package/dist/cjs/grpc/proto/google/protobuf/timestamp.js.map +1 -0
  76. package/dist/cjs/grpc/proto/google/rpc/error_details.js +331 -302
  77. package/dist/cjs/grpc/proto/google/rpc/error_details.js.map +1 -0
  78. package/dist/cjs/grpc/proto/google/rpc/status.js +50 -50
  79. package/dist/cjs/grpc/proto/google/rpc/status.js.map +1 -0
  80. package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js +84 -68
  81. package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js.map +1 -0
  82. package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js +45 -50
  83. package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js.map +1 -0
  84. package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js +38 -43
  85. package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js.map +1 -0
  86. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js +70 -75
  87. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js.map +1 -0
  88. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js +79 -81
  89. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +1 -0
  90. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js +183 -166
  91. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +1 -0
  92. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js +369 -296
  93. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js.map +1 -0
  94. package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js +80 -85
  95. package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js.map +1 -0
  96. package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js +31 -28
  97. package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js.map +1 -0
  98. package/dist/cjs/grpc/proto/sui/rpc/v2/event.js +81 -83
  99. package/dist/cjs/grpc/proto/sui/rpc/v2/event.js.map +1 -0
  100. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js +80 -85
  101. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js.map +1 -0
  102. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js +876 -506
  103. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js.map +1 -0
  104. package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js +56 -61
  105. package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +1 -0
  106. package/dist/cjs/grpc/proto/sui/rpc/v2/input.js +103 -83
  107. package/dist/cjs/grpc/proto/sui/rpc/v2/input.js.map +1 -0
  108. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js +76 -78
  109. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js.map +1 -0
  110. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js +69 -119
  111. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +1 -0
  112. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js +392 -350
  113. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js.map +1 -0
  114. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js +599 -473
  115. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js.map +1 -0
  116. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js +46 -78
  117. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +1 -0
  118. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js +242 -224
  119. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js.map +1 -0
  120. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js +32 -52
  121. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js.map +1 -0
  122. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js +139 -134
  123. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js.map +1 -0
  124. package/dist/cjs/grpc/proto/sui/rpc/v2/object.js +109 -111
  125. package/dist/cjs/grpc/proto/sui/rpc/v2/object.js.map +1 -0
  126. package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js +46 -51
  127. package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js.map +1 -0
  128. package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js +76 -61
  129. package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js.map +1 -0
  130. package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js +46 -59
  131. package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js.map +1 -0
  132. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js +568 -522
  133. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js.map +1 -0
  134. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js +54 -32
  135. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js.map +1 -0
  136. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +27 -47
  137. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +1 -0
  138. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js +83 -86
  139. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +1 -0
  140. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js +53 -85
  141. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js.map +1 -0
  142. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js +645 -529
  143. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js.map +1 -0
  144. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js +37 -51
  145. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +1 -0
  146. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js +58 -61
  147. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js.map +1 -0
  148. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js +749 -730
  149. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js.map +1 -0
  150. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js +1218 -975
  151. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js.map +1 -0
  152. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +32 -46
  153. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +1 -0
  154. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js +186 -167
  155. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +1 -0
  156. package/dist/cjs/index.js +96 -91
  157. package/dist/cjs/index.js.map +1 -0
  158. package/dist/cjs/jsonRpc/client.js +654 -743
  159. package/dist/cjs/jsonRpc/client.js.map +1 -0
  160. package/dist/cjs/jsonRpc/core.d.ts +7 -7
  161. package/dist/cjs/jsonRpc/core.js +562 -606
  162. package/dist/cjs/jsonRpc/core.js.map +1 -0
  163. package/dist/cjs/jsonRpc/errors.js +38 -56
  164. package/dist/cjs/jsonRpc/errors.js.map +1 -0
  165. package/dist/cjs/jsonRpc/http-transport.js +70 -114
  166. package/dist/cjs/jsonRpc/http-transport.js.map +1 -0
  167. package/dist/cjs/jsonRpc/index.js +14 -30
  168. package/dist/cjs/jsonRpc/index.js.map +1 -0
  169. package/dist/cjs/jsonRpc/json-rpc-resolver.js +286 -290
  170. package/dist/cjs/jsonRpc/json-rpc-resolver.js.map +1 -0
  171. package/dist/cjs/jsonRpc/rpc-websocket-client.js +150 -207
  172. package/dist/cjs/jsonRpc/rpc-websocket-client.js.map +1 -0
  173. package/dist/cjs/jsonRpc/types/chain.js +4 -15
  174. package/dist/cjs/jsonRpc/types/chain.js.map +1 -0
  175. package/dist/cjs/jsonRpc/types/changes.js +4 -15
  176. package/dist/cjs/jsonRpc/types/changes.js.map +1 -0
  177. package/dist/cjs/jsonRpc/types/coins.js +4 -15
  178. package/dist/cjs/jsonRpc/types/coins.js.map +1 -0
  179. package/dist/cjs/jsonRpc/types/common.js +4 -15
  180. package/dist/cjs/jsonRpc/types/common.js.map +1 -0
  181. package/dist/cjs/jsonRpc/types/generated.d.ts +1 -1
  182. package/dist/cjs/jsonRpc/types/generated.js +4 -15
  183. package/dist/cjs/jsonRpc/types/generated.js.map +1 -0
  184. package/dist/cjs/jsonRpc/types/index.js +4 -15
  185. package/dist/cjs/jsonRpc/types/index.js.map +1 -0
  186. package/dist/cjs/jsonRpc/types/params.js +4 -15
  187. package/dist/cjs/jsonRpc/types/params.js.map +1 -0
  188. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +54 -69
  189. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js.map +1 -0
  190. package/dist/cjs/keypairs/ed25519/index.js +10 -26
  191. package/dist/cjs/keypairs/ed25519/index.js.map +1 -0
  192. package/dist/cjs/keypairs/ed25519/keypair.js +134 -159
  193. package/dist/cjs/keypairs/ed25519/keypair.js.map +1 -0
  194. package/dist/cjs/keypairs/ed25519/publickey.js +70 -84
  195. package/dist/cjs/keypairs/ed25519/publickey.js.map +1 -0
  196. package/dist/cjs/keypairs/index.js +21 -19
  197. package/dist/cjs/keypairs/index.js.map +1 -0
  198. package/dist/cjs/keypairs/passkey/index.js +11 -27
  199. package/dist/cjs/keypairs/passkey/index.js.map +1 -0
  200. package/dist/cjs/keypairs/passkey/keypair.js +245 -256
  201. package/dist/cjs/keypairs/passkey/keypair.js.map +1 -0
  202. package/dist/cjs/keypairs/passkey/publickey.js +163 -162
  203. package/dist/cjs/keypairs/passkey/publickey.js.map +1 -0
  204. package/dist/cjs/keypairs/passkey/types.js +4 -15
  205. package/dist/cjs/keypairs/passkey/types.js.map +1 -0
  206. package/dist/cjs/keypairs/secp256k1/index.js +10 -26
  207. package/dist/cjs/keypairs/secp256k1/index.js.map +1 -0
  208. package/dist/cjs/keypairs/secp256k1/keypair.js +129 -151
  209. package/dist/cjs/keypairs/secp256k1/keypair.js.map +1 -0
  210. package/dist/cjs/keypairs/secp256k1/publickey.js +71 -89
  211. package/dist/cjs/keypairs/secp256k1/publickey.js.map +1 -0
  212. package/dist/cjs/keypairs/secp256r1/index.js +10 -26
  213. package/dist/cjs/keypairs/secp256r1/index.js.map +1 -0
  214. package/dist/cjs/keypairs/secp256r1/keypair.js +127 -148
  215. package/dist/cjs/keypairs/secp256r1/keypair.js.map +1 -0
  216. package/dist/cjs/keypairs/secp256r1/publickey.js +72 -90
  217. package/dist/cjs/keypairs/secp256r1/publickey.js.map +1 -0
  218. package/dist/cjs/multisig/index.js +10 -26
  219. package/dist/cjs/multisig/index.js.map +1 -0
  220. package/dist/cjs/multisig/publickey.d.ts +1 -1
  221. package/dist/cjs/multisig/publickey.js +228 -276
  222. package/dist/cjs/multisig/publickey.js.map +1 -0
  223. package/dist/cjs/multisig/signer.js +62 -110
  224. package/dist/cjs/multisig/signer.js.map +1 -0
  225. package/dist/cjs/transactions/Arguments.d.ts +4 -4
  226. package/dist/cjs/transactions/Arguments.js +13 -34
  227. package/dist/cjs/transactions/Arguments.js.map +1 -0
  228. package/dist/cjs/transactions/Commands.js +111 -141
  229. package/dist/cjs/transactions/Commands.js.map +1 -0
  230. package/dist/cjs/transactions/Inputs.js +53 -82
  231. package/dist/cjs/transactions/Inputs.js.map +1 -0
  232. package/dist/cjs/transactions/ObjectCache.d.ts +8 -8
  233. package/dist/cjs/transactions/ObjectCache.js +204 -241
  234. package/dist/cjs/transactions/ObjectCache.js.map +1 -0
  235. package/dist/cjs/transactions/Transaction.d.ts +31 -31
  236. package/dist/cjs/transactions/Transaction.js +628 -719
  237. package/dist/cjs/transactions/Transaction.js.map +1 -0
  238. package/dist/cjs/transactions/TransactionData.d.ts +9 -9
  239. package/dist/cjs/transactions/TransactionData.js +396 -440
  240. package/dist/cjs/transactions/TransactionData.js.map +1 -0
  241. package/dist/cjs/transactions/__tests__/Transaction.test.js +169 -0
  242. package/dist/cjs/transactions/__tests__/Transaction.test.js.map +1 -0
  243. package/dist/cjs/transactions/__tests__/bcs.test.js +202 -0
  244. package/dist/cjs/transactions/__tests__/bcs.test.js.map +1 -0
  245. package/dist/cjs/transactions/data/internal.js +166 -207
  246. package/dist/cjs/transactions/data/internal.js.map +1 -0
  247. package/dist/cjs/transactions/data/v1.js +436 -495
  248. package/dist/cjs/transactions/data/v1.js.map +1 -0
  249. package/dist/cjs/transactions/data/v2.d.ts +5 -5
  250. package/dist/cjs/transactions/data/v2.js +94 -107
  251. package/dist/cjs/transactions/data/v2.js.map +1 -0
  252. package/dist/cjs/transactions/executor/caching.js +71 -113
  253. package/dist/cjs/transactions/executor/caching.js.map +1 -0
  254. package/dist/cjs/transactions/executor/parallel.js +339 -378
  255. package/dist/cjs/transactions/executor/parallel.js.map +1 -0
  256. package/dist/cjs/transactions/executor/queue.js +60 -80
  257. package/dist/cjs/transactions/executor/queue.js.map +1 -0
  258. package/dist/cjs/transactions/executor/serial.d.ts +4 -4
  259. package/dist/cjs/transactions/executor/serial.js +102 -131
  260. package/dist/cjs/transactions/executor/serial.js.map +1 -0
  261. package/dist/cjs/transactions/hash.js +17 -28
  262. package/dist/cjs/transactions/hash.js.map +1 -0
  263. package/dist/cjs/transactions/index.js +33 -49
  264. package/dist/cjs/transactions/index.js.map +1 -0
  265. package/dist/cjs/transactions/intents/CoinWithBalance.js +137 -191
  266. package/dist/cjs/transactions/intents/CoinWithBalance.js.map +1 -0
  267. package/dist/cjs/transactions/object.js +88 -111
  268. package/dist/cjs/transactions/object.js.map +1 -0
  269. package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js +20 -32
  270. package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js.map +1 -0
  271. package/dist/cjs/transactions/pure.js +38 -60
  272. package/dist/cjs/transactions/pure.js.map +1 -0
  273. package/dist/cjs/transactions/resolve.js +62 -88
  274. package/dist/cjs/transactions/resolve.js.map +1 -0
  275. package/dist/cjs/transactions/serializer.js +150 -163
  276. package/dist/cjs/transactions/serializer.js.map +1 -0
  277. package/dist/cjs/transactions/utils.d.ts +1 -1
  278. package/dist/cjs/transactions/utils.js +114 -125
  279. package/dist/cjs/transactions/utils.js.map +1 -0
  280. package/dist/cjs/utils/constants.js +29 -56
  281. package/dist/cjs/utils/constants.js.map +1 -0
  282. package/dist/cjs/utils/derived-objects.js +14 -30
  283. package/dist/cjs/utils/derived-objects.js.map +1 -0
  284. package/dist/cjs/utils/dynamic-fields.js +20 -37
  285. package/dist/cjs/utils/dynamic-fields.js.map +1 -0
  286. package/dist/cjs/utils/format.js +14 -30
  287. package/dist/cjs/utils/format.js.map +1 -0
  288. package/dist/cjs/utils/index.js +50 -64
  289. package/dist/cjs/utils/index.js.map +1 -0
  290. package/dist/cjs/utils/move-registry.js +37 -35
  291. package/dist/cjs/utils/move-registry.js.map +1 -0
  292. package/dist/cjs/utils/sui-types.js +74 -68
  293. package/dist/cjs/utils/sui-types.js.map +1 -0
  294. package/dist/cjs/utils/suins.js +30 -46
  295. package/dist/cjs/utils/suins.js.map +1 -0
  296. package/dist/cjs/verify/index.js +12 -27
  297. package/dist/cjs/verify/index.js.map +1 -0
  298. package/dist/cjs/verify/verify.js +83 -110
  299. package/dist/cjs/verify/verify.js.map +1 -0
  300. package/dist/cjs/version.js +8 -25
  301. package/dist/cjs/version.js.map +1 -0
  302. package/dist/cjs/w/call/allocation.js +323 -413
  303. package/dist/cjs/w/call/allocation.js.map +1 -0
  304. package/dist/cjs/w/call/arb.js +105 -136
  305. package/dist/cjs/w/call/arb.js.map +1 -0
  306. package/dist/cjs/w/call/arbitration.js +1206 -1581
  307. package/dist/cjs/w/call/arbitration.js.map +1 -0
  308. package/dist/cjs/w/call/base.js +303 -333
  309. package/dist/cjs/w/call/base.js.map +1 -0
  310. package/dist/cjs/w/call/contact.js +335 -452
  311. package/dist/cjs/w/call/contact.js.map +1 -0
  312. package/dist/cjs/w/call/demand.js +690 -844
  313. package/dist/cjs/w/call/demand.js.map +1 -0
  314. package/dist/cjs/w/call/entity.js +167 -201
  315. package/dist/cjs/w/call/entity.js.map +1 -0
  316. package/dist/cjs/w/call/guard-ins.js +4376 -4389
  317. package/dist/cjs/w/call/guard-ins.js.map +1 -0
  318. package/dist/cjs/w/call/guard.js +1078 -1112
  319. package/dist/cjs/w/call/guard.js.map +1 -0
  320. package/dist/cjs/w/call/index.js +69 -70
  321. package/dist/cjs/w/call/index.js.map +1 -0
  322. package/dist/cjs/w/call/machine.js +1105 -1419
  323. package/dist/cjs/w/call/machine.js.map +1 -0
  324. package/dist/cjs/w/call/order.js +314 -454
  325. package/dist/cjs/w/call/order.js.map +1 -0
  326. package/dist/cjs/w/call/passport.js +214 -253
  327. package/dist/cjs/w/call/passport.js.map +1 -0
  328. package/dist/cjs/w/call/payment.js +187 -224
  329. package/dist/cjs/w/call/payment.js.map +1 -0
  330. package/dist/cjs/w/call/permission.js +1183 -1294
  331. package/dist/cjs/w/call/permission.js.map +1 -0
  332. package/dist/cjs/w/call/personal.js +132 -170
  333. package/dist/cjs/w/call/personal.js.map +1 -0
  334. package/dist/cjs/w/call/progress.js +634 -794
  335. package/dist/cjs/w/call/progress.js.map +1 -0
  336. package/dist/cjs/w/call/proof.js +67 -116
  337. package/dist/cjs/w/call/proof.js.map +1 -0
  338. package/dist/cjs/w/call/repository.js +1037 -1251
  339. package/dist/cjs/w/call/repository.js.map +1 -0
  340. package/dist/cjs/w/call/resource.js +111 -131
  341. package/dist/cjs/w/call/resource.js.map +1 -0
  342. package/dist/cjs/w/call/reward.js +675 -853
  343. package/dist/cjs/w/call/reward.js.map +1 -0
  344. package/dist/cjs/w/call/service.js +1879 -2385
  345. package/dist/cjs/w/call/service.js.map +1 -0
  346. package/dist/cjs/w/call/treasury.js +841 -1138
  347. package/dist/cjs/w/call/treasury.js.map +1 -0
  348. package/dist/cjs/w/call/util.js +593 -624
  349. package/dist/cjs/w/call/util.js.map +1 -0
  350. package/dist/cjs/w/common.d.ts +1 -1
  351. package/dist/cjs/w/common.js +548 -518
  352. package/dist/cjs/w/common.js.map +1 -0
  353. package/dist/cjs/w/exception.js +574 -584
  354. package/dist/cjs/w/exception.js.map +1 -0
  355. package/dist/cjs/w/index.js +26 -23
  356. package/dist/cjs/w/index.js.map +1 -0
  357. package/dist/cjs/w/local/account.js +664 -741
  358. package/dist/cjs/w/local/account.js.map +1 -0
  359. package/dist/cjs/w/local/cache.js +180 -166
  360. package/dist/cjs/w/local/cache.js.map +1 -0
  361. package/dist/cjs/w/local/config.js +51 -80
  362. package/dist/cjs/w/local/config.js.map +1 -0
  363. package/dist/cjs/w/local/index.js +225 -290
  364. package/dist/cjs/w/local/index.js.map +1 -0
  365. package/dist/cjs/w/local/local.d.ts +2 -2
  366. package/dist/cjs/w/local/local.js +638 -646
  367. package/dist/cjs/w/local/local.js.map +1 -0
  368. package/dist/cjs/w/local/storage.js +210 -164
  369. package/dist/cjs/w/local/storage.js.map +1 -0
  370. package/dist/cjs/w/local/token.js +158 -175
  371. package/dist/cjs/w/local/token.js.map +1 -0
  372. package/dist/cjs/w/local/util.js +80 -51
  373. package/dist/cjs/w/local/util.js.map +1 -0
  374. package/dist/cjs/w/local/wip.js +1078 -802
  375. package/dist/cjs/w/local/wip.js.map +1 -0
  376. package/dist/cjs/w/messenger/crypto.js +496 -389
  377. package/dist/cjs/w/messenger/crypto.js.map +1 -0
  378. package/dist/cjs/w/messenger/index.js +53 -35
  379. package/dist/cjs/w/messenger/index.js.map +1 -0
  380. package/dist/cjs/w/messenger/messenger-api.js +1159 -1035
  381. package/dist/cjs/w/messenger/messenger-api.js.map +1 -0
  382. package/dist/cjs/w/messenger/messenger-manager.js +954 -1083
  383. package/dist/cjs/w/messenger/messenger-manager.js.map +1 -0
  384. package/dist/cjs/w/messenger/messenger.d.ts +1 -1
  385. package/dist/cjs/w/messenger/messenger.js +1304 -1450
  386. package/dist/cjs/w/messenger/messenger.js.map +1 -0
  387. package/dist/cjs/w/messenger/server.js +390 -512
  388. package/dist/cjs/w/messenger/server.js.map +1 -0
  389. package/dist/cjs/w/messenger/session.js +399 -403
  390. package/dist/cjs/w/messenger/session.js.map +1 -0
  391. package/dist/cjs/w/messenger/storage.js +881 -777
  392. package/dist/cjs/w/messenger/storage.js.map +1 -0
  393. package/dist/cjs/w/messenger/types.d.ts +2 -2
  394. package/dist/cjs/w/messenger/types.js +83 -103
  395. package/dist/cjs/w/messenger/types.js.map +1 -0
  396. package/dist/cjs/w/messenger/utils.js +29 -34
  397. package/dist/cjs/w/messenger/utils.js.map +1 -0
  398. package/dist/cjs/w/query/bult-in.js +101 -110
  399. package/dist/cjs/w/query/bult-in.js.map +1 -0
  400. package/dist/cjs/w/query/event.js +134 -146
  401. package/dist/cjs/w/query/event.js.map +1 -0
  402. package/dist/cjs/w/query/index.js +22 -20
  403. package/dist/cjs/w/query/index.js.map +1 -0
  404. package/dist/cjs/w/query/object.js +1576 -1576
  405. package/dist/cjs/w/query/object.js.map +1 -0
  406. package/dist/cjs/w/query/received.js +66 -88
  407. package/dist/cjs/w/query/received.js.map +1 -0
  408. package/dist/cjs/w/query/util.js +53 -77
  409. package/dist/cjs/w/query/util.js.map +1 -0
  410. package/dist/cjs/w/util.js +589 -675
  411. package/dist/cjs/w/util.js.map +1 -0
  412. package/dist/esm/bcs/bcs.d.ts +199 -199
  413. package/dist/esm/bcs/bcs.js +269 -310
  414. package/dist/esm/bcs/bcs.js.map +1 -0
  415. package/dist/esm/bcs/effects.d.ts +109 -109
  416. package/dist/esm/bcs/effects.js +171 -179
  417. package/dist/esm/bcs/effects.js.map +1 -0
  418. package/dist/esm/bcs/index.d.ts +1 -2584
  419. package/dist/esm/bcs/index.js +51 -94
  420. package/dist/esm/bcs/index.js.map +1 -0
  421. package/dist/esm/bcs/pure.js +35 -38
  422. package/dist/esm/bcs/pure.js.map +1 -0
  423. package/dist/esm/bcs/type-tag-serializer.js +98 -95
  424. package/dist/esm/bcs/type-tag-serializer.js.map +1 -0
  425. package/dist/esm/bcs/types.js +5 -5
  426. package/dist/esm/bcs/types.js.map +1 -0
  427. package/dist/esm/client/index.js +7 -23
  428. package/dist/esm/client/index.js.map +1 -0
  429. package/dist/esm/client/network.js +23 -22
  430. package/dist/esm/client/network.js.map +1 -0
  431. package/dist/esm/cryptography/index.js +9 -46
  432. package/dist/esm/cryptography/index.js.map +1 -0
  433. package/dist/esm/cryptography/intent.d.ts +1 -1
  434. package/dist/esm/cryptography/intent.js +18 -12
  435. package/dist/esm/cryptography/intent.js.map +1 -0
  436. package/dist/esm/cryptography/keypair.js +95 -99
  437. package/dist/esm/cryptography/keypair.js.map +1 -0
  438. package/dist/esm/cryptography/mnemonics.js +40 -24
  439. package/dist/esm/cryptography/mnemonics.js.map +1 -0
  440. package/dist/esm/cryptography/publickey.js +104 -115
  441. package/dist/esm/cryptography/publickey.js.map +1 -0
  442. package/dist/esm/cryptography/signature-scheme.js +22 -24
  443. package/dist/esm/cryptography/signature-scheme.js.map +1 -0
  444. package/dist/esm/cryptography/signature.d.ts +2 -24
  445. package/dist/esm/cryptography/signature.js +44 -48
  446. package/dist/esm/cryptography/signature.js.map +1 -0
  447. package/dist/esm/experimental/cache.js +61 -0
  448. package/dist/esm/experimental/cache.js.map +1 -0
  449. package/dist/esm/experimental/client.js +23 -0
  450. package/dist/esm/experimental/client.js.map +1 -0
  451. package/dist/esm/experimental/core.js +85 -0
  452. package/dist/esm/experimental/core.js.map +1 -0
  453. package/dist/esm/experimental/errors.js +27 -0
  454. package/dist/esm/experimental/errors.js.map +1 -0
  455. package/dist/esm/experimental/index.js +8 -0
  456. package/dist/esm/experimental/index.js.map +1 -0
  457. package/dist/esm/experimental/persistent-storage.js +337 -0
  458. package/dist/esm/experimental/persistent-storage.js.map +1 -0
  459. package/dist/esm/experimental/persistent-storage.test.js +198 -0
  460. package/dist/esm/experimental/persistent-storage.test.js.map +1 -0
  461. package/dist/esm/experimental/transports/utils.js +100 -0
  462. package/dist/esm/experimental/transports/utils.js.map +1 -0
  463. package/dist/esm/experimental/types.js +5 -0
  464. package/dist/esm/experimental/types.js.map +1 -0
  465. package/dist/esm/faucet/faucet.js +104 -111
  466. package/dist/esm/faucet/faucet.js.map +1 -0
  467. package/dist/esm/faucet/index.js +4 -16
  468. package/dist/esm/faucet/index.js.map +1 -0
  469. package/dist/esm/grpc/client.js +34 -34
  470. package/dist/esm/grpc/client.js.map +1 -0
  471. package/dist/esm/grpc/core.js +570 -601
  472. package/dist/esm/grpc/core.js.map +1 -0
  473. package/dist/esm/grpc/index.js +5 -6
  474. package/dist/esm/grpc/index.js.map +1 -0
  475. package/dist/esm/grpc/proto/google/protobuf/any.js +161 -111
  476. package/dist/esm/grpc/proto/google/protobuf/any.js.map +1 -0
  477. package/dist/esm/grpc/proto/google/protobuf/duration.js +99 -67
  478. package/dist/esm/grpc/proto/google/protobuf/duration.js.map +1 -0
  479. package/dist/esm/grpc/proto/google/protobuf/empty.js +46 -7
  480. package/dist/esm/grpc/proto/google/protobuf/empty.js.map +1 -0
  481. package/dist/esm/grpc/proto/google/protobuf/field_mask.js +90 -52
  482. package/dist/esm/grpc/proto/google/protobuf/field_mask.js.map +1 -0
  483. package/dist/esm/grpc/proto/google/protobuf/struct.js +258 -190
  484. package/dist/esm/grpc/proto/google/protobuf/struct.js.map +1 -0
  485. package/dist/esm/grpc/proto/google/protobuf/timestamp.js +144 -108
  486. package/dist/esm/grpc/proto/google/protobuf/timestamp.js.map +1 -0
  487. package/dist/esm/grpc/proto/google/rpc/error_details.js +313 -267
  488. package/dist/esm/grpc/proto/google/rpc/error_details.js.map +1 -0
  489. package/dist/esm/grpc/proto/google/rpc/status.js +45 -28
  490. package/dist/esm/grpc/proto/google/rpc/status.js.map +1 -0
  491. package/dist/esm/grpc/proto/sui/rpc/v2/argument.js +80 -47
  492. package/dist/esm/grpc/proto/sui/rpc/v2/argument.js.map +1 -0
  493. package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js +41 -29
  494. package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js.map +1 -0
  495. package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js +34 -22
  496. package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js.map +1 -0
  497. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js +61 -49
  498. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js.map +1 -0
  499. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js +72 -57
  500. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +1 -0
  501. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js +173 -139
  502. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +1 -0
  503. package/dist/esm/grpc/proto/sui/rpc/v2/effects.js +358 -268
  504. package/dist/esm/grpc/proto/sui/rpc/v2/effects.js.map +1 -0
  505. package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js +72 -60
  506. package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js.map +1 -0
  507. package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js +29 -9
  508. package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js.map +1 -0
  509. package/dist/esm/grpc/proto/sui/rpc/v2/event.js +74 -59
  510. package/dist/esm/grpc/proto/sui/rpc/v2/event.js.map +1 -0
  511. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js +69 -57
  512. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js.map +1 -0
  513. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js +861 -474
  514. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js.map +1 -0
  515. package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js +52 -40
  516. package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +1 -0
  517. package/dist/esm/grpc/proto/sui/rpc/v2/input.js +98 -61
  518. package/dist/esm/grpc/proto/sui/rpc/v2/input.js.map +1 -0
  519. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js +71 -56
  520. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js.map +1 -0
  521. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js +65 -100
  522. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +1 -0
  523. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js +365 -306
  524. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js.map +1 -0
  525. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js +585 -442
  526. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js.map +1 -0
  527. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js +42 -59
  528. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +1 -0
  529. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js +226 -191
  530. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js.map +1 -0
  531. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js +28 -33
  532. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js.map +1 -0
  533. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js +129 -107
  534. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js.map +1 -0
  535. package/dist/esm/grpc/proto/sui/rpc/v2/object.js +100 -85
  536. package/dist/esm/grpc/proto/sui/rpc/v2/object.js.map +1 -0
  537. package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js +42 -30
  538. package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js.map +1 -0
  539. package/dist/esm/grpc/proto/sui/rpc/v2/owner.js +72 -40
  540. package/dist/esm/grpc/proto/sui/rpc/v2/owner.js.map +1 -0
  541. package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js +42 -38
  542. package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js.map +1 -0
  543. package/dist/esm/grpc/proto/sui/rpc/v2/signature.js +544 -481
  544. package/dist/esm/grpc/proto/sui/rpc/v2/signature.js.map +1 -0
  545. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js +52 -13
  546. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js.map +1 -0
  547. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +23 -28
  548. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +1 -0
  549. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js +74 -60
  550. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +1 -0
  551. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js +49 -66
  552. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js.map +1 -0
  553. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js +623 -490
  554. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js.map +1 -0
  555. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js +33 -32
  556. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +1 -0
  557. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js +50 -36
  558. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js.map +1 -0
  559. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js +737 -701
  560. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js.map +1 -0
  561. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js +1177 -917
  562. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js.map +1 -0
  563. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +28 -27
  564. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +1 -0
  565. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js +169 -133
  566. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +1 -0
  567. package/dist/esm/index.js +21 -107
  568. package/dist/esm/index.js.map +1 -0
  569. package/dist/esm/jsonRpc/client.js +646 -727
  570. package/dist/esm/jsonRpc/client.js.map +1 -0
  571. package/dist/esm/jsonRpc/core.d.ts +7 -7
  572. package/dist/esm/jsonRpc/core.js +550 -581
  573. package/dist/esm/jsonRpc/core.js.map +1 -0
  574. package/dist/esm/jsonRpc/errors.js +36 -41
  575. package/dist/esm/jsonRpc/errors.js.map +1 -0
  576. package/dist/esm/jsonRpc/http-transport.js +65 -93
  577. package/dist/esm/jsonRpc/http-transport.js.map +1 -0
  578. package/dist/esm/jsonRpc/index.js +6 -20
  579. package/dist/esm/jsonRpc/index.js.map +1 -0
  580. package/dist/esm/jsonRpc/json-rpc-resolver.js +281 -276
  581. package/dist/esm/jsonRpc/json-rpc-resolver.js.map +1 -0
  582. package/dist/esm/jsonRpc/rpc-websocket-client.js +147 -189
  583. package/dist/esm/jsonRpc/rpc-websocket-client.js.map +1 -0
  584. package/dist/esm/jsonRpc/types/chain.js +4 -0
  585. package/dist/esm/jsonRpc/types/chain.js.map +1 -0
  586. package/dist/esm/jsonRpc/types/changes.js +4 -0
  587. package/dist/esm/jsonRpc/types/changes.js.map +1 -0
  588. package/dist/esm/jsonRpc/types/coins.js +4 -0
  589. package/dist/esm/jsonRpc/types/coins.js.map +1 -0
  590. package/dist/esm/jsonRpc/types/common.js +4 -0
  591. package/dist/esm/jsonRpc/types/common.js.map +1 -0
  592. package/dist/esm/jsonRpc/types/generated.d.ts +1 -1
  593. package/dist/esm/jsonRpc/types/generated.js +4 -0
  594. package/dist/esm/jsonRpc/types/generated.js.map +1 -0
  595. package/dist/esm/jsonRpc/types/index.js +4 -0
  596. package/dist/esm/jsonRpc/types/index.js.map +1 -0
  597. package/dist/esm/jsonRpc/types/params.js +4 -0
  598. package/dist/esm/jsonRpc/types/params.js.map +1 -0
  599. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +49 -48
  600. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js.map +1 -0
  601. package/dist/esm/keypairs/ed25519/index.js +5 -10
  602. package/dist/esm/keypairs/ed25519/index.js.map +1 -0
  603. package/dist/esm/keypairs/ed25519/keypair.js +128 -146
  604. package/dist/esm/keypairs/ed25519/keypair.js.map +1 -0
  605. package/dist/esm/keypairs/ed25519/publickey.js +64 -67
  606. package/dist/esm/keypairs/ed25519/publickey.js.map +1 -0
  607. package/dist/esm/keypairs/index.js +3 -0
  608. package/dist/esm/keypairs/index.js.map +1 -0
  609. package/dist/esm/keypairs/passkey/index.js +5 -12
  610. package/dist/esm/keypairs/passkey/index.js.map +1 -0
  611. package/dist/esm/keypairs/passkey/keypair.js +236 -243
  612. package/dist/esm/keypairs/passkey/keypair.js.map +1 -0
  613. package/dist/esm/keypairs/passkey/publickey.js +154 -140
  614. package/dist/esm/keypairs/passkey/publickey.js.map +1 -0
  615. package/dist/esm/keypairs/passkey/types.js +4 -0
  616. package/dist/esm/keypairs/passkey/types.js.map +1 -0
  617. package/dist/esm/keypairs/secp256k1/index.js +5 -10
  618. package/dist/esm/keypairs/secp256k1/index.js.map +1 -0
  619. package/dist/esm/keypairs/secp256k1/keypair.js +120 -134
  620. package/dist/esm/keypairs/secp256k1/keypair.js.map +1 -0
  621. package/dist/esm/keypairs/secp256k1/publickey.js +64 -71
  622. package/dist/esm/keypairs/secp256k1/publickey.js.map +1 -0
  623. package/dist/esm/keypairs/secp256r1/index.js +5 -10
  624. package/dist/esm/keypairs/secp256r1/index.js.map +1 -0
  625. package/dist/esm/keypairs/secp256r1/keypair.js +118 -131
  626. package/dist/esm/keypairs/secp256r1/keypair.js.map +1 -0
  627. package/dist/esm/keypairs/secp256r1/publickey.js +63 -66
  628. package/dist/esm/keypairs/secp256r1/publickey.js.map +1 -0
  629. package/dist/esm/multisig/index.js +5 -10
  630. package/dist/esm/multisig/index.js.map +1 -0
  631. package/dist/esm/multisig/publickey.d.ts +1 -1
  632. package/dist/esm/multisig/publickey.js +216 -253
  633. package/dist/esm/multisig/publickey.js.map +1 -0
  634. package/dist/esm/multisig/signer.js +57 -89
  635. package/dist/esm/multisig/signer.js.map +1 -0
  636. package/dist/esm/transactions/Arguments.d.ts +4 -4
  637. package/dist/esm/transactions/Arguments.js +9 -13
  638. package/dist/esm/transactions/Arguments.js.map +1 -0
  639. package/dist/esm/transactions/Commands.js +105 -118
  640. package/dist/esm/transactions/Commands.js.map +1 -0
  641. package/dist/esm/transactions/Inputs.js +49 -61
  642. package/dist/esm/transactions/Inputs.js.map +1 -0
  643. package/dist/esm/transactions/ObjectCache.d.ts +8 -8
  644. package/dist/esm/transactions/ObjectCache.js +200 -223
  645. package/dist/esm/transactions/ObjectCache.js.map +1 -0
  646. package/dist/esm/transactions/Transaction.d.ts +32 -32
  647. package/dist/esm/transactions/Transaction.js +611 -696
  648. package/dist/esm/transactions/Transaction.js.map +1 -0
  649. package/dist/esm/transactions/TransactionData.d.ts +9 -9
  650. package/dist/esm/transactions/TransactionData.js +386 -415
  651. package/dist/esm/transactions/TransactionData.js.map +1 -0
  652. package/dist/esm/transactions/__tests__/Transaction.test.js +167 -0
  653. package/dist/esm/transactions/__tests__/Transaction.test.js.map +1 -0
  654. package/dist/esm/transactions/__tests__/bcs.test.js +200 -0
  655. package/dist/esm/transactions/__tests__/bcs.test.js.map +1 -0
  656. package/dist/esm/transactions/data/internal.js +158 -205
  657. package/dist/esm/transactions/data/internal.js.map +1 -0
  658. package/dist/esm/transactions/data/v1.js +419 -487
  659. package/dist/esm/transactions/data/v1.js.map +1 -0
  660. package/dist/esm/transactions/data/v2.d.ts +5 -5
  661. package/dist/esm/transactions/data/v2.js +89 -107
  662. package/dist/esm/transactions/data/v2.js.map +1 -0
  663. package/dist/esm/transactions/executor/caching.d.ts +2 -2
  664. package/dist/esm/transactions/executor/caching.js +66 -93
  665. package/dist/esm/transactions/executor/caching.js.map +1 -0
  666. package/dist/esm/transactions/executor/parallel.js +329 -352
  667. package/dist/esm/transactions/executor/parallel.js.map +1 -0
  668. package/dist/esm/transactions/executor/queue.js +58 -64
  669. package/dist/esm/transactions/executor/queue.js.map +1 -0
  670. package/dist/esm/transactions/executor/serial.d.ts +5 -5
  671. package/dist/esm/transactions/executor/serial.js +96 -110
  672. package/dist/esm/transactions/executor/serial.js.map +1 -0
  673. package/dist/esm/transactions/hash.js +15 -9
  674. package/dist/esm/transactions/hash.js.map +1 -0
  675. package/dist/esm/transactions/index.js +15 -41
  676. package/dist/esm/transactions/index.js.map +1 -0
  677. package/dist/esm/transactions/intents/CoinWithBalance.js +127 -165
  678. package/dist/esm/transactions/intents/CoinWithBalance.js.map +1 -0
  679. package/dist/esm/transactions/object.js +86 -92
  680. package/dist/esm/transactions/object.js.map +1 -0
  681. package/dist/esm/transactions/plugins/NamedPackagesPlugin.js +18 -15
  682. package/dist/esm/transactions/plugins/NamedPackagesPlugin.js.map +1 -0
  683. package/dist/esm/transactions/pure.js +34 -39
  684. package/dist/esm/transactions/pure.js.map +1 -0
  685. package/dist/esm/transactions/resolve.js +58 -69
  686. package/dist/esm/transactions/resolve.js.map +1 -0
  687. package/dist/esm/transactions/serializer.js +145 -144
  688. package/dist/esm/transactions/serializer.js.map +1 -0
  689. package/dist/esm/transactions/utils.d.ts +1 -1
  690. package/dist/esm/transactions/utils.js +110 -109
  691. package/dist/esm/transactions/utils.js.map +1 -0
  692. package/dist/esm/utils/constants.js +26 -36
  693. package/dist/esm/utils/constants.js.map +1 -0
  694. package/dist/esm/utils/derived-objects.js +11 -10
  695. package/dist/esm/utils/derived-objects.js.map +1 -0
  696. package/dist/esm/utils/dynamic-fields.js +16 -16
  697. package/dist/esm/utils/dynamic-fields.js.map +1 -0
  698. package/dist/esm/utils/format.js +13 -13
  699. package/dist/esm/utils/format.js.map +1 -0
  700. package/dist/esm/utils/index.js +15 -76
  701. package/dist/esm/utils/index.js.map +1 -0
  702. package/dist/esm/utils/move-registry.js +34 -17
  703. package/dist/esm/utils/move-registry.js.map +1 -0
  704. package/dist/esm/utils/sui-types.js +70 -54
  705. package/dist/esm/utils/sui-types.js.map +1 -0
  706. package/dist/esm/utils/suins.js +29 -29
  707. package/dist/esm/utils/suins.js.map +1 -0
  708. package/dist/esm/verify/index.js +5 -14
  709. package/dist/esm/verify/index.js.map +1 -0
  710. package/dist/esm/verify/verify.js +76 -93
  711. package/dist/esm/verify/verify.js.map +1 -0
  712. package/dist/esm/version.js +6 -6
  713. package/dist/esm/version.js.map +1 -0
  714. package/dist/esm/w/call/allocation.js +307 -402
  715. package/dist/esm/w/call/allocation.js.map +1 -0
  716. package/dist/esm/w/call/arb.js +100 -129
  717. package/dist/esm/w/call/arb.js.map +1 -0
  718. package/dist/esm/w/call/arbitration.js +1170 -1568
  719. package/dist/esm/w/call/arbitration.js.map +1 -0
  720. package/dist/esm/w/call/base.js +288 -315
  721. package/dist/esm/w/call/base.js.map +1 -0
  722. package/dist/esm/w/call/contact.js +318 -442
  723. package/dist/esm/w/call/contact.js.map +1 -0
  724. package/dist/esm/w/call/demand.js +673 -841
  725. package/dist/esm/w/call/demand.js.map +1 -0
  726. package/dist/esm/w/call/entity.js +162 -203
  727. package/dist/esm/w/call/entity.js.map +1 -0
  728. package/dist/esm/w/call/guard-ins.js +4373 -4371
  729. package/dist/esm/w/call/guard-ins.js.map +1 -0
  730. package/dist/esm/w/call/guard.js +1061 -1108
  731. package/dist/esm/w/call/guard.js.map +1 -0
  732. package/dist/esm/w/call/index.js +24 -56
  733. package/dist/esm/w/call/index.js.map +1 -0
  734. package/dist/esm/w/call/machine.js +1086 -1433
  735. package/dist/esm/w/call/machine.js.map +1 -0
  736. package/dist/esm/w/call/order.js +301 -448
  737. package/dist/esm/w/call/order.js.map +1 -0
  738. package/dist/esm/w/call/passport.js +204 -240
  739. package/dist/esm/w/call/passport.js.map +1 -0
  740. package/dist/esm/w/call/payment.js +177 -215
  741. package/dist/esm/w/call/payment.js.map +1 -0
  742. package/dist/esm/w/call/permission.js +1172 -1320
  743. package/dist/esm/w/call/permission.js.map +1 -0
  744. package/dist/esm/w/call/personal.js +121 -156
  745. package/dist/esm/w/call/personal.js.map +1 -0
  746. package/dist/esm/w/call/progress.js +625 -797
  747. package/dist/esm/w/call/progress.js.map +1 -0
  748. package/dist/esm/w/call/proof.js +61 -103
  749. package/dist/esm/w/call/proof.js.map +1 -0
  750. package/dist/esm/w/call/repository.js +1017 -1251
  751. package/dist/esm/w/call/repository.js.map +1 -0
  752. package/dist/esm/w/call/resource.js +108 -124
  753. package/dist/esm/w/call/resource.js.map +1 -0
  754. package/dist/esm/w/call/reward.js +660 -847
  755. package/dist/esm/w/call/reward.js.map +1 -0
  756. package/dist/esm/w/call/service.js +1849 -2400
  757. package/dist/esm/w/call/service.js.map +1 -0
  758. package/dist/esm/w/call/treasury.js +815 -1125
  759. package/dist/esm/w/call/treasury.js.map +1 -0
  760. package/dist/esm/w/call/util.js +553 -576
  761. package/dist/esm/w/call/util.js.map +1 -0
  762. package/dist/esm/w/common.d.ts +1 -1
  763. package/dist/esm/w/common.js +579 -580
  764. package/dist/esm/w/common.js.map +1 -0
  765. package/dist/esm/w/exception.js +570 -573
  766. package/dist/esm/w/exception.js.map +1 -0
  767. package/dist/esm/w/index.js +4 -0
  768. package/dist/esm/w/index.js.map +1 -0
  769. package/dist/esm/w/local/account.js +652 -709
  770. package/dist/esm/w/local/account.js.map +1 -0
  771. package/dist/esm/w/local/cache.js +176 -147
  772. package/dist/esm/w/local/cache.js.map +1 -0
  773. package/dist/esm/w/local/config.js +46 -60
  774. package/dist/esm/w/local/config.js.map +1 -0
  775. package/dist/esm/w/local/index.js +196 -273
  776. package/dist/esm/w/local/index.js.map +1 -0
  777. package/dist/esm/w/local/local.d.ts +2 -2
  778. package/dist/esm/w/local/local.js +631 -626
  779. package/dist/esm/w/local/local.js.map +1 -0
  780. package/dist/esm/w/local/storage.js +168 -136
  781. package/dist/esm/w/local/storage.js.map +1 -0
  782. package/dist/esm/w/local/token.js +149 -151
  783. package/dist/esm/w/local/token.js.map +1 -0
  784. package/dist/esm/w/local/util.js +45 -22
  785. package/dist/esm/w/local/util.js.map +1 -0
  786. package/dist/esm/w/local/wip.js +1038 -781
  787. package/dist/esm/w/local/wip.js.map +1 -0
  788. package/dist/esm/w/messenger/crypto.js +491 -387
  789. package/dist/esm/w/messenger/crypto.js.map +1 -0
  790. package/dist/esm/w/messenger/index.js +27 -24
  791. package/dist/esm/w/messenger/index.js.map +1 -0
  792. package/dist/esm/w/messenger/messenger-api.js +1111 -1017
  793. package/dist/esm/w/messenger/messenger-api.js.map +1 -0
  794. package/dist/esm/w/messenger/messenger-manager.js +944 -1052
  795. package/dist/esm/w/messenger/messenger-manager.js.map +1 -0
  796. package/dist/esm/w/messenger/messenger.d.ts +1 -1
  797. package/dist/esm/w/messenger/messenger.js +1258 -1421
  798. package/dist/esm/w/messenger/messenger.js.map +1 -0
  799. package/dist/esm/w/messenger/server.js +388 -499
  800. package/dist/esm/w/messenger/server.js.map +1 -0
  801. package/dist/esm/w/messenger/session.js +394 -399
  802. package/dist/esm/w/messenger/session.js.map +1 -0
  803. package/dist/esm/w/messenger/storage.js +840 -751
  804. package/dist/esm/w/messenger/storage.js.map +1 -0
  805. package/dist/esm/w/messenger/types.d.ts +2 -2
  806. package/dist/esm/w/messenger/types.js +80 -85
  807. package/dist/esm/w/messenger/types.js.map +1 -0
  808. package/dist/esm/w/messenger/utils.js +28 -16
  809. package/dist/esm/w/messenger/utils.js.map +1 -0
  810. package/dist/esm/w/query/bult-in.js +95 -100
  811. package/dist/esm/w/query/bult-in.js.map +1 -0
  812. package/dist/esm/w/query/event.js +128 -125
  813. package/dist/esm/w/query/event.js.map +1 -0
  814. package/dist/esm/w/query/index.js +3 -0
  815. package/dist/esm/w/query/index.js.map +1 -0
  816. package/dist/esm/w/query/object.js +1560 -1574
  817. package/dist/esm/w/query/object.js.map +1 -0
  818. package/dist/esm/w/query/received.js +57 -63
  819. package/dist/esm/w/query/received.js.map +1 -0
  820. package/dist/esm/w/query/util.js +48 -56
  821. package/dist/esm/w/query/util.js.map +1 -0
  822. package/dist/esm/w/util.js +578 -673
  823. package/dist/esm/w/util.js.map +1 -0
  824. package/package.json +13 -7
  825. package/prebuilds/better-sqlite3-v12.9.0-node-v115-darwin-arm64.node +0 -0
  826. package/prebuilds/better-sqlite3-v12.9.0-node-v115-darwin-x64.node +0 -0
  827. package/prebuilds/better-sqlite3-v12.9.0-node-v115-linux-arm.node +0 -0
  828. package/prebuilds/better-sqlite3-v12.9.0-node-v115-linux-arm64.node +0 -0
  829. package/prebuilds/better-sqlite3-v12.9.0-node-v115-linux-x64.node +0 -0
  830. package/prebuilds/better-sqlite3-v12.9.0-node-v115-win32-arm64.node +0 -0
  831. package/prebuilds/better-sqlite3-v12.9.0-node-v115-win32-x64.node +0 -0
  832. package/prebuilds/better-sqlite3-v12.9.0-node-v127-darwin-arm64.node +0 -0
  833. package/prebuilds/better-sqlite3-v12.9.0-node-v127-darwin-x64.node +0 -0
  834. package/prebuilds/better-sqlite3-v12.9.0-node-v127-linux-arm.node +0 -0
  835. package/prebuilds/better-sqlite3-v12.9.0-node-v127-linux-arm64.node +0 -0
  836. package/prebuilds/better-sqlite3-v12.9.0-node-v127-linux-x64.node +0 -0
  837. package/prebuilds/better-sqlite3-v12.9.0-node-v127-win32-arm64.node +0 -0
  838. package/prebuilds/better-sqlite3-v12.9.0-node-v127-win32-x64.node +0 -0
  839. package/scripts/download-prebuilds.js +234 -0
  840. package/scripts/install-better-sqlite3.js +377 -0
  841. package/dist/cjs/graphql/client.js +0 -98
  842. package/dist/cjs/graphql/core.js +0 -506
  843. package/dist/cjs/graphql/generated/2024.1/tada-env.js +0 -13141
  844. package/dist/cjs/graphql/generated/2024.1/tsconfig.tada.js +0 -11
  845. package/dist/cjs/graphql/generated/2024.4/tada-env.js +0 -13287
  846. package/dist/cjs/graphql/generated/2024.4/tsconfig.tada.js +0 -11
  847. package/dist/cjs/graphql/generated/latest/tada-env.js +0 -12925
  848. package/dist/cjs/graphql/generated/latest/tsconfig.tada.js +0 -11
  849. package/dist/cjs/graphql/generated/queries.js +0 -807
  850. package/dist/cjs/graphql/index.js +0 -25
  851. package/dist/cjs/graphql/schemas/2024.1/index.js +0 -28
  852. package/dist/cjs/graphql/schemas/2024.4/index.js +0 -28
  853. package/dist/cjs/graphql/schemas/latest/index.js +0 -28
  854. package/dist/cjs/graphql/types.js +0 -16
  855. package/dist/cjs/package.json +0 -5
  856. package/dist/cjs/w/local/.eslintrc.js +0 -15
  857. package/dist/cjs/w/messenger/.eslintrc.js +0 -15
  858. package/dist/cjs/zklogin/address.js +0 -93
  859. package/dist/cjs/zklogin/bcs.js +0 -41
  860. package/dist/cjs/zklogin/index.js +0 -45
  861. package/dist/cjs/zklogin/jwt-decode.js +0 -88
  862. package/dist/cjs/zklogin/jwt-utils.js +0 -128
  863. package/dist/cjs/zklogin/nonce.js +0 -60
  864. package/dist/cjs/zklogin/poseidon.js +0 -64
  865. package/dist/cjs/zklogin/publickey.js +0 -281
  866. package/dist/cjs/zklogin/signature.js +0 -57
  867. package/dist/cjs/zklogin/utils.js +0 -98
  868. package/dist/esm/graphql/client.js +0 -79
  869. package/dist/esm/graphql/core.js +0 -505
  870. package/dist/esm/graphql/generated/2024.1/tada-env.js +0 -13121
  871. package/dist/esm/graphql/generated/2024.1/tsconfig.tada.js +0 -16
  872. package/dist/esm/graphql/generated/2024.4/tada-env.js +0 -13267
  873. package/dist/esm/graphql/generated/2024.4/tsconfig.tada.js +0 -16
  874. package/dist/esm/graphql/generated/latest/tada-env.js +0 -12905
  875. package/dist/esm/graphql/generated/latest/tsconfig.tada.js +0 -16
  876. package/dist/esm/graphql/generated/queries.js +0 -788
  877. package/dist/esm/graphql/index.js +0 -8
  878. package/dist/esm/graphql/schemas/2024.1/index.js +0 -8
  879. package/dist/esm/graphql/schemas/2024.4/index.js +0 -8
  880. package/dist/esm/graphql/schemas/latest/index.js +0 -8
  881. package/dist/esm/graphql/types.js +0 -0
  882. package/dist/esm/package.json +0 -5
  883. package/dist/esm/w/local/.eslintrc.js +0 -23
  884. package/dist/esm/w/messenger/.eslintrc.js +0 -23
  885. package/dist/esm/zklogin/address.js +0 -78
  886. package/dist/esm/zklogin/bcs.js +0 -21
  887. package/dist/esm/zklogin/index.js +0 -38
  888. package/dist/esm/zklogin/jwt-decode.js +0 -68
  889. package/dist/esm/zklogin/jwt-utils.js +0 -108
  890. package/dist/esm/zklogin/nonce.js +0 -40
  891. package/dist/esm/zklogin/poseidon.js +0 -61
  892. package/dist/esm/zklogin/publickey.js +0 -265
  893. package/dist/esm/zklogin/signature.js +0 -37
  894. package/dist/esm/zklogin/utils.js +0 -78
  895. package/dist/tsconfig.esm.tsbuildinfo +0 -1
  896. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,85 +1,114 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __export = (target, all) => {
10
- for (var name in all)
11
- __defProp(target, name, { get: all[name], enumerable: true });
12
- };
13
- var __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from === "object" || typeof from === "function") {
15
- for (let key of __getOwnPropNames(from))
16
- if (!__hasOwnProp.call(to, key) && key !== except)
17
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
- }
19
- return to;
20
- };
21
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
- // If the importer is in node compatibility mode or this is not an ESM
23
- // file that has been converted to a CommonJS file using a Babel-
24
- // compatible transform (i.e. "__esModule" has not been set), then set
25
- // "default" to the CommonJS "module.exports" for node compatibility.
26
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
- mod
28
- ));
29
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
31
- var storage_exports = {};
32
- __export(storage_exports, {
33
- MessageStorage: () => MessageStorage,
34
- MessengerPersistStorage: () => MessengerPersistStorage,
35
- SessionStateStorage: () => SessionStateStorage,
36
- SignalProtocolStorage: () => SignalProtocolStorage,
37
- defaultPersistStorage: () => defaultPersistStorage,
38
- resetDbConnection: () => resetDbConnection
2
+ // Copyright (c) Wowok.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
39
19
  });
40
- module.exports = __toCommonJS(storage_exports);
41
- var import_better_sqlite3 = __toESM(require("better-sqlite3"));
42
- var path = __toESM(require("path"));
43
- var fs = __toESM(require("fs"));
44
- var import_util = require("../local/util.js");
20
+ var __importStar = (this && this.__importStar) || (function () {
21
+ var ownKeys = function(o) {
22
+ ownKeys = Object.getOwnPropertyNames || function (o) {
23
+ var ar = [];
24
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
25
+ return ar;
26
+ };
27
+ return ownKeys(o);
28
+ };
29
+ return function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ })();
37
+ var __importDefault = (this && this.__importDefault) || function (mod) {
38
+ return (mod && mod.__esModule) ? mod : { "default": mod };
39
+ };
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.defaultPersistStorage = exports.MessengerPersistStorage = exports.SessionStateStorage = exports.MessageStorage = exports.SignalProtocolStorage = void 0;
42
+ exports.resetDbConnection = resetDbConnection;
43
+ /**
44
+ * Messenger 存储模块
45
+ *
46
+ * 使用与 wowok SDK 相同的 SQLite 存储方案
47
+ * 数据库文件:messenger.db(位于 ~/.wow/ 目录)
48
+ *
49
+ * 存储内容:
50
+ * 1. Signal Protocol 状态(身份密钥、预密钥、会话)
51
+ * 2. 消息记录
52
+ * 3. 会话状态(Merkle Tree 根哈希等)
53
+ */
54
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
55
+ const path = __importStar(require("path"));
56
+ const fs = __importStar(require("fs"));
57
+ const util_js_1 = require("../local/util.js");
58
+ // 动态获取数据目录(支持测试时通过环境变量覆盖)
45
59
  function getWowDirDynamic() {
46
- return (0, import_util.getWowDir)();
60
+ return (0, util_js_1.getWowDir)();
47
61
  }
62
+ // 按用户分库的数据库目录(动态计算)
48
63
  function getMessengerDbDir() {
49
- return path.join(getWowDirDynamic(), "messenger");
64
+ return path.join(getWowDirDynamic(), "messenger");
50
65
  }
51
66
  function ensureDirExists(dir) {
52
- if (!fs.existsSync(dir)) {
53
- fs.mkdirSync(dir, { recursive: true });
54
- }
67
+ if (!fs.existsSync(dir)) {
68
+ fs.mkdirSync(dir, { recursive: true });
69
+ }
55
70
  }
71
+ // 获取用户特定的数据库路径
56
72
  function getUserDbPath(userAddress) {
57
- const shortAddress = userAddress.toLowerCase().replace(/^0x/, "").slice(0, 16);
58
- const messengerDbDir = getMessengerDbDir();
59
- ensureDirExists(messengerDbDir);
60
- return path.join(messengerDbDir, `${shortAddress}.db`);
73
+ // 使用用户地址的前16位作为数据库文件名
74
+ const shortAddress = userAddress
75
+ .toLowerCase()
76
+ .replace(/^0x/, "")
77
+ .slice(0, 16);
78
+ const messengerDbDir = getMessengerDbDir();
79
+ ensureDirExists(messengerDbDir);
80
+ return path.join(messengerDbDir, `${shortAddress}.db`);
61
81
  }
82
+ // 获取全局数据库路径(用于 MessengerManager 状态和 SSE 锁)
62
83
  function getGlobalDbPath() {
63
- const messengerDbDir = getMessengerDbDir();
64
- ensureDirExists(messengerDbDir);
65
- return path.join(messengerDbDir, "global.db");
84
+ const messengerDbDir = getMessengerDbDir();
85
+ ensureDirExists(messengerDbDir);
86
+ return path.join(messengerDbDir, "global.db");
66
87
  }
67
- const userDbInstances = /* @__PURE__ */ new Map();
88
+ // 用户数据库实例缓存
89
+ const userDbInstances = new Map();
90
+ // 全局数据库实例缓存
68
91
  let globalDbInstance = null;
69
92
  function getDatabase(userAddress) {
70
- if (!userAddress) {
71
- throw new Error("userAddress is required to get database");
72
- }
73
- const cached = userDbInstances.get(userAddress);
74
- if (cached) {
75
- return cached;
76
- }
77
- const dbPath = getUserDbPath(userAddress);
78
- const db = new import_better_sqlite3.default(dbPath);
79
- db.pragma("journal_mode = WAL");
80
- db.pragma("synchronous = NORMAL");
81
- db.pragma("cache_size = -64000");
82
- db.exec(`
93
+ if (!userAddress) {
94
+ throw new Error("userAddress is required to get database");
95
+ }
96
+ // 检查缓存
97
+ const cached = userDbInstances.get(userAddress);
98
+ if (cached) {
99
+ return cached;
100
+ }
101
+ // 创建新连接
102
+ const dbPath = getUserDbPath(userAddress);
103
+ const db = new better_sqlite3_1.default(dbPath);
104
+ // 启用 WAL 模式以支持多进程访问
105
+ db.pragma("journal_mode = WAL");
106
+ // 设置同步模式为 NORMAL 以平衡性能和安全性
107
+ db.pragma("synchronous = NORMAL");
108
+ // 启用内存共享缓存
109
+ db.pragma("cache_size = -64000");
110
+ // Signal Protocol 存储表
111
+ db.exec(`
83
112
  CREATE TABLE IF NOT EXISTS signal_store (
84
113
  store_type TEXT NOT NULL,
85
114
  key TEXT NOT NULL,
@@ -89,8 +118,9 @@ function getDatabase(userAddress) {
89
118
  );
90
119
  CREATE INDEX IF NOT EXISTS idx_signal_store_type ON signal_store(store_type);
91
120
  `);
92
- try {
93
- db.exec(`
121
+ // 消息表 - 分开创建,先不创建索引
122
+ try {
123
+ db.exec(`
94
124
  CREATE TABLE IF NOT EXISTS messages (
95
125
  message_id TEXT PRIMARY KEY,
96
126
  from_address TEXT NOT NULL,
@@ -117,59 +147,68 @@ function getDatabase(userAddress) {
117
147
  received_at INTEGER
118
148
  );
119
149
  `);
120
- } catch (e) {
121
- }
122
- try {
123
- db.exec("ALTER TABLE messages ADD COLUMN guard_address TEXT");
124
- } catch (e) {
125
- }
126
- try {
127
- db.exec("ALTER TABLE messages ADD COLUMN passport_address TEXT");
128
- } catch (e) {
129
- }
130
- try {
131
- db.exec(
132
- "ALTER TABLE messages ADD COLUMN last_received_leaf_index INTEGER"
133
- );
134
- } catch (e) {
135
- }
136
- try {
137
- db.exec(
138
- "CREATE INDEX IF NOT EXISTS idx_messages_from_to ON messages(from_address, to_address)"
139
- );
140
- } catch (e) {
141
- }
142
- try {
143
- db.exec(
144
- "CREATE INDEX IF NOT EXISTS idx_messages_status ON messages(status)"
145
- );
146
- } catch (e) {
147
- }
148
- try {
149
- db.exec(
150
- "CREATE INDEX IF NOT EXISTS idx_messages_leaf ON messages(leaf_index)"
151
- );
152
- } catch (e) {
153
- }
154
- try {
155
- db.exec(
156
- "CREATE INDEX IF NOT EXISTS idx_messages_created_at ON messages(created_at)"
157
- );
158
- } catch (e) {
159
- }
160
- try {
161
- db.exec(
162
- "CREATE INDEX IF NOT EXISTS idx_messages_server_ts ON messages(server_timestamp)"
163
- );
164
- } catch (e) {
165
- }
166
- try {
167
- db.exec(
168
- "CREATE INDEX IF NOT EXISTS idx_messages_received_at ON messages(received_at)"
169
- );
170
- } catch (e) {
171
- }
172
- db.exec(`
150
+ }
151
+ catch (e) {
152
+ // 表可能已存在,忽略错误
153
+ }
154
+ // 安全地添加新列(如果还不存在)
155
+ try {
156
+ db.exec("ALTER TABLE messages ADD COLUMN guard_address TEXT");
157
+ }
158
+ catch (e) {
159
+ // 列可能已存在,忽略错误
160
+ }
161
+ try {
162
+ db.exec("ALTER TABLE messages ADD COLUMN passport_address TEXT");
163
+ }
164
+ catch (e) {
165
+ // 列可能已存在,忽略错误
166
+ }
167
+ try {
168
+ db.exec("ALTER TABLE messages ADD COLUMN last_received_leaf_index INTEGER");
169
+ }
170
+ catch (e) {
171
+ // 列可能已存在,忽略错误
172
+ }
173
+ // 安全地创建索引
174
+ try {
175
+ db.exec("CREATE INDEX IF NOT EXISTS idx_messages_from_to ON messages(from_address, to_address)");
176
+ }
177
+ catch (e) {
178
+ // 索引可能已存在,忽略错误
179
+ }
180
+ try {
181
+ db.exec("CREATE INDEX IF NOT EXISTS idx_messages_status ON messages(status)");
182
+ }
183
+ catch (e) {
184
+ // 索引可能已存在,忽略错误
185
+ }
186
+ try {
187
+ db.exec("CREATE INDEX IF NOT EXISTS idx_messages_leaf ON messages(leaf_index)");
188
+ }
189
+ catch (e) {
190
+ // 索引可能已存在,忽略错误
191
+ }
192
+ try {
193
+ db.exec("CREATE INDEX IF NOT EXISTS idx_messages_created_at ON messages(created_at)");
194
+ }
195
+ catch (e) {
196
+ // 索引可能已存在,忽略错误
197
+ }
198
+ try {
199
+ db.exec("CREATE INDEX IF NOT EXISTS idx_messages_server_ts ON messages(server_timestamp)");
200
+ }
201
+ catch (e) {
202
+ // 索引可能已存在,忽略错误
203
+ }
204
+ try {
205
+ db.exec("CREATE INDEX IF NOT EXISTS idx_messages_received_at ON messages(received_at)");
206
+ }
207
+ catch (e) {
208
+ // 索引可能已存在,忽略错误
209
+ }
210
+ // 会话状态表
211
+ db.exec(`
173
212
  CREATE TABLE IF NOT EXISTS session_states (
174
213
  session_id TEXT PRIMARY KEY,
175
214
  my_address TEXT NOT NULL,
@@ -185,249 +224,294 @@ function getDatabase(userAddress) {
185
224
  );
186
225
  CREATE INDEX IF NOT EXISTS idx_session_my_peer ON session_states(my_address, peer_address);
187
226
  `);
188
- userDbInstances.set(userAddress, db);
189
- return db;
227
+ // 缓存实例
228
+ userDbInstances.set(userAddress, db);
229
+ return db;
190
230
  }
231
+ // 获取全局数据库实例(用于 MessengerManager 状态和 SSE 锁)
191
232
  function getGlobalDatabase() {
192
- if (globalDbInstance) {
193
- return globalDbInstance;
194
- }
195
- const dbPath = getGlobalDbPath();
196
- const db = new import_better_sqlite3.default(dbPath);
197
- db.pragma("journal_mode = WAL");
198
- db.pragma("synchronous = NORMAL");
199
- db.pragma("cache_size = -10000");
200
- db.pragma("busy_timeout = 5000");
201
- globalDbInstance = db;
202
- return db;
233
+ if (globalDbInstance) {
234
+ return globalDbInstance;
235
+ }
236
+ // 创建新连接
237
+ const dbPath = getGlobalDbPath();
238
+ const db = new better_sqlite3_1.default(dbPath);
239
+ // 启用 WAL 模式以支持多进程访问
240
+ db.pragma("journal_mode = WAL");
241
+ // 设置同步模式为 NORMAL 以平衡性能和安全性
242
+ db.pragma("synchronous = NORMAL");
243
+ // 设置缓存大小
244
+ db.pragma("cache_size = -10000");
245
+ // 设置忙等待超时(5秒)
246
+ db.pragma("busy_timeout = 5000");
247
+ // 缓存实例
248
+ globalDbInstance = db;
249
+ return db;
203
250
  }
251
+ /**
252
+ * 重置数据库连接
253
+ * 用于测试时清理数据后重新创建连接
254
+ */
204
255
  function resetDbConnection() {
205
- for (const [_, db] of userDbInstances) {
206
- try {
207
- db.pragma("journal_mode = DELETE");
208
- } catch (e) {
209
- }
210
- }
211
- for (const [_, db] of userDbInstances) {
212
- try {
213
- db.close();
214
- } catch (e) {
256
+ // 先切换到 DELETE 模式,这样就不会有 WAL 文件
257
+ for (const [_, db] of userDbInstances) {
258
+ try {
259
+ db.pragma("journal_mode = DELETE");
260
+ }
261
+ catch (e) {
262
+ // 忽略模式切换错误
263
+ }
215
264
  }
216
- }
217
- userDbInstances.clear();
218
- if (globalDbInstance) {
219
- try {
220
- globalDbInstance.pragma("journal_mode = DELETE");
221
- } catch (e) {
265
+ // 关闭所有用户的数据库连接
266
+ for (const [_, db] of userDbInstances) {
267
+ try {
268
+ db.close();
269
+ }
270
+ catch (e) {
271
+ // 忽略关闭错误
272
+ }
222
273
  }
223
- try {
224
- globalDbInstance.close();
225
- } catch (e) {
274
+ userDbInstances.clear();
275
+ // 关闭全局数据库连接
276
+ if (globalDbInstance) {
277
+ try {
278
+ globalDbInstance.pragma("journal_mode = DELETE");
279
+ }
280
+ catch (e) {
281
+ // 忽略模式切换错误
282
+ }
283
+ try {
284
+ globalDbInstance.close();
285
+ }
286
+ catch (e) {
287
+ // 忽略关闭错误
288
+ }
289
+ globalDbInstance = null;
226
290
  }
227
- globalDbInstance = null;
228
- }
229
291
  }
292
+ // 注册进程退出时的清理函数
230
293
  process.on("exit", () => {
231
- resetDbConnection();
294
+ resetDbConnection();
232
295
  });
296
+ // 处理 SIGINT (Ctrl+C)
233
297
  process.on("SIGINT", () => {
234
- resetDbConnection();
235
- process.exit(0);
298
+ resetDbConnection();
299
+ process.exit(0);
236
300
  });
301
+ // 处理 SIGTERM
237
302
  process.on("SIGTERM", () => {
238
- resetDbConnection();
239
- process.exit(0);
303
+ resetDbConnection();
304
+ process.exit(0);
240
305
  });
306
+ // ========== Signal Protocol 存储 ==========
241
307
  const STORE_TYPES = {
242
- IDENTITY: "identity",
243
- REGISTRATION_ID: "registration_id",
244
- IDENTITIES: "identities",
245
- PREKEYS: "prekeys",
246
- SIGNED_PREKEYS: "signed_prekeys",
247
- SESSIONS: "sessions",
248
- META: "meta"
308
+ IDENTITY: "identity",
309
+ REGISTRATION_ID: "registration_id",
310
+ IDENTITIES: "identities",
311
+ PREKEYS: "prekeys",
312
+ SIGNED_PREKEYS: "signed_prekeys",
313
+ SESSIONS: "sessions",
314
+ META: "meta",
249
315
  };
250
316
  function arrayBufferToBase64(buffer) {
251
- return Buffer.from(new Uint8Array(buffer)).toString("base64");
317
+ return Buffer.from(new Uint8Array(buffer)).toString("base64");
252
318
  }
253
319
  function base64ToArrayBuffer(base64) {
254
- return Uint8Array.from(Buffer.from(base64, "base64")).buffer;
320
+ return Uint8Array.from(Buffer.from(base64, "base64")).buffer;
255
321
  }
256
322
  function bufferEqual(a, b) {
257
- if (a.byteLength !== b.byteLength) return false;
258
- const va = new Uint8Array(a);
259
- const vb = new Uint8Array(b);
260
- for (let i = 0; i < va.length; i++) {
261
- if (va[i] !== vb[i]) return false;
262
- }
263
- return true;
323
+ if (a.byteLength !== b.byteLength)
324
+ return false;
325
+ const va = new Uint8Array(a);
326
+ const vb = new Uint8Array(b);
327
+ for (let i = 0; i < va.length; i++) {
328
+ if (va[i] !== vb[i])
329
+ return false;
330
+ }
331
+ return true;
264
332
  }
333
+ /**
334
+ * Signal Protocol SQLite 存储
335
+ * 兼容 libsignal-protocol-typescript 的 StorageType 接口
336
+ */
265
337
  class SignalProtocolStorage {
266
- constructor(userAddress, storeType = "default") {
267
- __publicField(this, "storePrefix");
268
- __publicField(this, "userAddress");
269
- this.userAddress = userAddress;
270
- this.storePrefix = storeType;
271
- }
272
- get db() {
273
- return getDatabase(this.userAddress);
274
- }
275
- // Identity
276
- async setIdentity(identity, registrationId) {
277
- const persisted = {
278
- pubKey: arrayBufferToBase64(identity.pubKey),
279
- privKey: arrayBufferToBase64(identity.privKey)
280
- };
281
- this.putValue(STORE_TYPES.IDENTITY, JSON.stringify(persisted));
282
- this.putValue(STORE_TYPES.REGISTRATION_ID, registrationId.toString());
283
- }
284
- async getIdentityKeyPair() {
285
- const value = this.getValue(STORE_TYPES.IDENTITY);
286
- if (!value) return void 0;
287
- const persisted = JSON.parse(value);
288
- return {
289
- pubKey: base64ToArrayBuffer(persisted.pubKey),
290
- privKey: base64ToArrayBuffer(persisted.privKey)
291
- };
292
- }
293
- async getLocalRegistrationId() {
294
- const value = this.getValue(STORE_TYPES.REGISTRATION_ID);
295
- return value ? parseInt(value, 10) : void 0;
296
- }
297
- // Identity verification
298
- async isTrustedIdentity(identifier, identityKey) {
299
- const key = `${STORE_TYPES.IDENTITIES}:${identifier}`;
300
- const existing = this.getValue(key);
301
- if (!existing) return true;
302
- return bufferEqual(base64ToArrayBuffer(existing), identityKey);
303
- }
304
- async saveIdentity(encodedAddress, publicKey) {
305
- const key = `${STORE_TYPES.IDENTITIES}:${encodedAddress}`;
306
- const existing = this.getValue(key);
307
- const newValue = arrayBufferToBase64(publicKey);
308
- this.putValue(key, newValue);
309
- return existing ? bufferEqual(base64ToArrayBuffer(existing), publicKey) : true;
310
- }
311
- async loadIdentity(address) {
312
- const key = `${STORE_TYPES.IDENTITIES}:${address}`;
313
- const value = this.getValue(key);
314
- return value ? base64ToArrayBuffer(value) : void 0;
315
- }
316
- // PreKeys
317
- async loadPreKey(keyId) {
318
- const key = `${STORE_TYPES.PREKEYS}:${keyId}`;
319
- const value = this.getValue(key);
320
- if (!value) return void 0;
321
- const persisted = JSON.parse(value);
322
- return {
323
- pubKey: base64ToArrayBuffer(persisted.pubKey),
324
- privKey: base64ToArrayBuffer(persisted.privKey)
325
- };
326
- }
327
- async storePreKey(keyId, keyPair) {
328
- const key = `${STORE_TYPES.PREKEYS}:${keyId}`;
329
- const persisted = {
330
- pubKey: arrayBufferToBase64(keyPair.pubKey),
331
- privKey: arrayBufferToBase64(keyPair.privKey)
332
- };
333
- this.putValue(key, JSON.stringify(persisted));
334
- }
335
- async removePreKey(keyId) {
336
- const key = `${STORE_TYPES.PREKEYS}:${keyId}`;
337
- this.delValue(key);
338
- }
339
- // Signed PreKeys
340
- async loadSignedPreKey(keyId) {
341
- const key = `${STORE_TYPES.SIGNED_PREKEYS}:${keyId}`;
342
- const value = this.getValue(key);
343
- if (!value) return void 0;
344
- const persisted = JSON.parse(value);
345
- return {
346
- pubKey: base64ToArrayBuffer(persisted.pubKey),
347
- privKey: base64ToArrayBuffer(persisted.privKey)
348
- };
349
- }
350
- async storeSignedPreKey(keyId, keyPair) {
351
- const key = `${STORE_TYPES.SIGNED_PREKEYS}:${keyId}`;
352
- const persisted = {
353
- pubKey: arrayBufferToBase64(keyPair.pubKey),
354
- privKey: arrayBufferToBase64(keyPair.privKey)
355
- };
356
- this.putValue(key, JSON.stringify(persisted));
357
- }
358
- async removeSignedPreKey(keyId) {
359
- const key = `${STORE_TYPES.SIGNED_PREKEYS}:${keyId}`;
360
- this.delValue(key);
361
- }
362
- // Sessions
363
- async loadSession(encodedAddress) {
364
- const key = `${STORE_TYPES.SESSIONS}:${encodedAddress}`;
365
- return this.getValue(key);
366
- }
367
- async storeSession(encodedAddress, record) {
368
- const key = `${STORE_TYPES.SESSIONS}:${encodedAddress}`;
369
- this.putValue(key, record);
370
- }
371
- async removeSession(encodedAddress) {
372
- const key = `${STORE_TYPES.SESSIONS}:${encodedAddress}`;
373
- this.delValue(key);
374
- }
375
- // Meta
376
- async getMeta() {
377
- const value = this.getValue(STORE_TYPES.META);
378
- if (!value) return { nextPreKeyId: 1 };
379
- return JSON.parse(value);
380
- }
381
- async setMeta(meta) {
382
- const current = await this.getMeta();
383
- const updated = { ...current, ...meta };
384
- this.putValue(STORE_TYPES.META, JSON.stringify(updated));
385
- }
386
- listPreKeys() {
387
- const rows = this.db.prepare(
388
- "SELECT key FROM signal_store WHERE store_type = ? AND key LIKE ?"
389
- ).all(this.storePrefix, `${STORE_TYPES.PREKEYS}:%`);
390
- return rows.map((r) => {
391
- const id = r.key.replace(`${STORE_TYPES.PREKEYS}:`, "");
392
- return Number(id);
393
- });
394
- }
395
- // Private helpers
396
- getValue(key) {
397
- const row = this.db.prepare(
398
- "SELECT value FROM signal_store WHERE store_type = ? AND key = ?"
399
- ).get(this.storePrefix, key);
400
- return row?.value;
401
- }
402
- putValue(key, value) {
403
- this.db.prepare(
404
- `
338
+ storePrefix;
339
+ userAddress;
340
+ constructor(userAddress, storeType = "default") {
341
+ this.userAddress = userAddress;
342
+ this.storePrefix = storeType;
343
+ }
344
+ get db() {
345
+ return getDatabase(this.userAddress);
346
+ }
347
+ // Identity
348
+ async setIdentity(identity, registrationId) {
349
+ const persisted = {
350
+ pubKey: arrayBufferToBase64(identity.pubKey),
351
+ privKey: arrayBufferToBase64(identity.privKey),
352
+ };
353
+ this.putValue(STORE_TYPES.IDENTITY, JSON.stringify(persisted));
354
+ this.putValue(STORE_TYPES.REGISTRATION_ID, registrationId.toString());
355
+ }
356
+ async getIdentityKeyPair() {
357
+ const value = this.getValue(STORE_TYPES.IDENTITY);
358
+ if (!value)
359
+ return undefined;
360
+ const persisted = JSON.parse(value);
361
+ return {
362
+ pubKey: base64ToArrayBuffer(persisted.pubKey),
363
+ privKey: base64ToArrayBuffer(persisted.privKey),
364
+ };
365
+ }
366
+ async getLocalRegistrationId() {
367
+ const value = this.getValue(STORE_TYPES.REGISTRATION_ID);
368
+ return value ? parseInt(value, 10) : undefined;
369
+ }
370
+ // Identity verification
371
+ async isTrustedIdentity(identifier, identityKey) {
372
+ const key = `${STORE_TYPES.IDENTITIES}:${identifier}`;
373
+ const existing = this.getValue(key);
374
+ if (!existing)
375
+ return true;
376
+ return bufferEqual(base64ToArrayBuffer(existing), identityKey);
377
+ }
378
+ async saveIdentity(encodedAddress, publicKey) {
379
+ const key = `${STORE_TYPES.IDENTITIES}:${encodedAddress}`;
380
+ const existing = this.getValue(key);
381
+ const newValue = arrayBufferToBase64(publicKey);
382
+ this.putValue(key, newValue);
383
+ return existing
384
+ ? bufferEqual(base64ToArrayBuffer(existing), publicKey)
385
+ : true;
386
+ }
387
+ async loadIdentity(address) {
388
+ const key = `${STORE_TYPES.IDENTITIES}:${address}`;
389
+ const value = this.getValue(key);
390
+ return value ? base64ToArrayBuffer(value) : undefined;
391
+ }
392
+ // PreKeys
393
+ async loadPreKey(keyId) {
394
+ const key = `${STORE_TYPES.PREKEYS}:${keyId}`;
395
+ const value = this.getValue(key);
396
+ if (!value)
397
+ return undefined;
398
+ const persisted = JSON.parse(value);
399
+ return {
400
+ pubKey: base64ToArrayBuffer(persisted.pubKey),
401
+ privKey: base64ToArrayBuffer(persisted.privKey),
402
+ };
403
+ }
404
+ async storePreKey(keyId, keyPair) {
405
+ const key = `${STORE_TYPES.PREKEYS}:${keyId}`;
406
+ const persisted = {
407
+ pubKey: arrayBufferToBase64(keyPair.pubKey),
408
+ privKey: arrayBufferToBase64(keyPair.privKey),
409
+ };
410
+ this.putValue(key, JSON.stringify(persisted));
411
+ }
412
+ async removePreKey(keyId) {
413
+ const key = `${STORE_TYPES.PREKEYS}:${keyId}`;
414
+ this.delValue(key);
415
+ }
416
+ // Signed PreKeys
417
+ async loadSignedPreKey(keyId) {
418
+ const key = `${STORE_TYPES.SIGNED_PREKEYS}:${keyId}`;
419
+ const value = this.getValue(key);
420
+ if (!value)
421
+ return undefined;
422
+ const persisted = JSON.parse(value);
423
+ return {
424
+ pubKey: base64ToArrayBuffer(persisted.pubKey),
425
+ privKey: base64ToArrayBuffer(persisted.privKey),
426
+ };
427
+ }
428
+ async storeSignedPreKey(keyId, keyPair) {
429
+ const key = `${STORE_TYPES.SIGNED_PREKEYS}:${keyId}`;
430
+ const persisted = {
431
+ pubKey: arrayBufferToBase64(keyPair.pubKey),
432
+ privKey: arrayBufferToBase64(keyPair.privKey),
433
+ };
434
+ this.putValue(key, JSON.stringify(persisted));
435
+ }
436
+ async removeSignedPreKey(keyId) {
437
+ const key = `${STORE_TYPES.SIGNED_PREKEYS}:${keyId}`;
438
+ this.delValue(key);
439
+ }
440
+ // Sessions
441
+ async loadSession(encodedAddress) {
442
+ const key = `${STORE_TYPES.SESSIONS}:${encodedAddress}`;
443
+ return this.getValue(key);
444
+ }
445
+ async storeSession(encodedAddress, record) {
446
+ const key = `${STORE_TYPES.SESSIONS}:${encodedAddress}`;
447
+ this.putValue(key, record);
448
+ }
449
+ async removeSession(encodedAddress) {
450
+ const key = `${STORE_TYPES.SESSIONS}:${encodedAddress}`;
451
+ this.delValue(key);
452
+ }
453
+ // Meta
454
+ async getMeta() {
455
+ const value = this.getValue(STORE_TYPES.META);
456
+ if (!value)
457
+ return { nextPreKeyId: 1 };
458
+ return JSON.parse(value);
459
+ }
460
+ async setMeta(meta) {
461
+ const current = await this.getMeta();
462
+ const updated = { ...current, ...meta };
463
+ this.putValue(STORE_TYPES.META, JSON.stringify(updated));
464
+ }
465
+ listPreKeys() {
466
+ const rows = this.db
467
+ .prepare("SELECT key FROM signal_store WHERE store_type = ? AND key LIKE ?")
468
+ .all(this.storePrefix, `${STORE_TYPES.PREKEYS}:%`);
469
+ return rows.map((r) => {
470
+ const id = r.key.replace(`${STORE_TYPES.PREKEYS}:`, "");
471
+ return Number(id);
472
+ });
473
+ }
474
+ // Private helpers
475
+ getValue(key) {
476
+ const row = this.db
477
+ .prepare("SELECT value FROM signal_store WHERE store_type = ? AND key = ?")
478
+ .get(this.storePrefix, key);
479
+ return row?.value;
480
+ }
481
+ putValue(key, value) {
482
+ this.db
483
+ .prepare(`
405
484
  INSERT INTO signal_store (store_type, key, value, updated_at)
406
485
  VALUES (?, ?, ?, strftime('%s', 'now'))
407
486
  ON CONFLICT(store_type, key) DO UPDATE SET
408
487
  value = excluded.value,
409
488
  updated_at = excluded.updated_at
410
- `
411
- ).run(this.storePrefix, key, value);
412
- }
413
- delValue(key) {
414
- this.db.prepare(
415
- "DELETE FROM signal_store WHERE store_type = ? AND key = ?"
416
- ).run(this.storePrefix, key);
417
- }
489
+ `)
490
+ .run(this.storePrefix, key, value);
491
+ }
492
+ delValue(key) {
493
+ this.db
494
+ .prepare("DELETE FROM signal_store WHERE store_type = ? AND key = ?")
495
+ .run(this.storePrefix, key);
496
+ }
418
497
  }
498
+ exports.SignalProtocolStorage = SignalProtocolStorage;
499
+ // ========== 消息存储 ==========
419
500
  class MessageStorage {
420
- constructor(userAddress) {
421
- __publicField(this, "userAddress");
422
- this.userAddress = userAddress;
423
- }
424
- get db() {
425
- return getDatabase(this.userAddress);
426
- }
427
- saveMessage(message) {
428
- const receivedAt = message.direction === "received" && !message.receivedAt ? Date.now() : message.receivedAt;
429
- this.db.prepare(
430
- `
501
+ userAddress;
502
+ constructor(userAddress) {
503
+ this.userAddress = userAddress;
504
+ }
505
+ get db() {
506
+ return getDatabase(this.userAddress);
507
+ }
508
+ saveMessage(message) {
509
+ // 如果是接收消息且没有 receivedAt,设置当前时间
510
+ const receivedAt = message.direction === "received" && !message.receivedAt
511
+ ? Date.now()
512
+ : message.receivedAt;
513
+ this.db
514
+ .prepare(`
431
515
  INSERT INTO messages (
432
516
  message_id, from_address, to_address, plaintext_hash,
433
517
  plaintext, guard_address, passport_address, last_received_leaf_index, direction, status, msg_type,
@@ -453,279 +537,312 @@ class MessageStorage {
453
537
  ark_timestamp = COALESCE(excluded.ark_timestamp, ark_timestamp),
454
538
  zip_metadata = COALESCE(excluded.zip_metadata, zip_metadata),
455
539
  received_at = COALESCE(excluded.received_at, received_at)
456
- `
457
- ).run(
458
- message.messageId,
459
- message.fromAddress,
460
- message.toAddress,
461
- message.plaintextHash,
462
- message.plaintext === void 0 ? null : message.plaintext,
463
- message.guardAddress === void 0 ? null : message.guardAddress,
464
- message.passportAddress === void 0 ? null : message.passportAddress,
465
- message.lastReceivedLeafIndex === void 0 ? null : message.lastReceivedLeafIndex,
466
- message.direction,
467
- message.status,
468
- message.msgType,
469
- message.leafIndex === void 0 ? null : message.leafIndex,
470
- message.prevRoot === void 0 ? null : message.prevRoot,
471
- message.newRoot === void 0 ? null : message.newRoot,
472
- message.serverSignature === void 0 ? null : message.serverSignature,
473
- message.serverPublicKey === void 0 ? null : message.serverPublicKey,
474
- message.serverTimestamp === void 0 ? null : message.serverTimestamp,
475
- message.arkConfirmed?.recipient === void 0 ? null : message.arkConfirmed?.recipient,
476
- message.arkConfirmed?.recipientPublicKey === void 0 ? null : message.arkConfirmed?.recipientPublicKey,
477
- message.arkConfirmed?.signature === void 0 ? null : message.arkConfirmed?.signature,
478
- message.arkConfirmed?.timestamp === void 0 ? null : message.arkConfirmed?.timestamp,
479
- message.zipMetadata ? JSON.stringify(message.zipMetadata) : null,
480
- message.createdAt,
481
- receivedAt === void 0 ? null : receivedAt
482
- );
483
- }
484
- getMessage(messageId) {
485
- const row = this.db.prepare("SELECT * FROM messages WHERE message_id = ?").get(messageId);
486
- if (!row) return void 0;
487
- return this.rowToMessage(row);
488
- }
489
- getMessagesBySession(myAddress, peerAddress) {
490
- const rows = this.db.prepare(
491
- `
540
+ `)
541
+ .run(message.messageId, message.fromAddress, message.toAddress, message.plaintextHash, message.plaintext === undefined ? null : message.plaintext, message.guardAddress === undefined
542
+ ? null
543
+ : message.guardAddress, message.passportAddress === undefined
544
+ ? null
545
+ : message.passportAddress, message.lastReceivedLeafIndex === undefined
546
+ ? null
547
+ : message.lastReceivedLeafIndex, message.direction, message.status, message.msgType, message.leafIndex === undefined ? null : message.leafIndex, message.prevRoot === undefined ? null : message.prevRoot, message.newRoot === undefined ? null : message.newRoot, message.serverSignature === undefined
548
+ ? null
549
+ : message.serverSignature, message.serverPublicKey === undefined
550
+ ? null
551
+ : message.serverPublicKey, message.serverTimestamp === undefined
552
+ ? null
553
+ : message.serverTimestamp, message.arkConfirmed?.recipient === undefined
554
+ ? null
555
+ : message.arkConfirmed?.recipient, message.arkConfirmed?.recipientPublicKey === undefined
556
+ ? null
557
+ : message.arkConfirmed?.recipientPublicKey, message.arkConfirmed?.signature === undefined
558
+ ? null
559
+ : message.arkConfirmed?.signature, message.arkConfirmed?.timestamp === undefined
560
+ ? null
561
+ : message.arkConfirmed?.timestamp, message.zipMetadata
562
+ ? JSON.stringify(message.zipMetadata)
563
+ : null, message.createdAt, receivedAt === undefined ? null : receivedAt);
564
+ }
565
+ getMessage(messageId) {
566
+ const row = this.db
567
+ .prepare("SELECT * FROM messages WHERE message_id = ?")
568
+ .get(messageId);
569
+ if (!row)
570
+ return undefined;
571
+ return this.rowToMessage(row);
572
+ }
573
+ getMessagesBySession(myAddress, peerAddress) {
574
+ const rows = this.db
575
+ .prepare(`
492
576
  SELECT * FROM messages
493
577
  WHERE (from_address = ? AND to_address = ?)
494
578
  OR (from_address = ? AND to_address = ?)
495
579
  ORDER BY created_at ASC
496
- `
497
- ).all(myAddress, peerAddress, peerAddress, myAddress);
498
- return rows.map((r) => this.rowToMessage(r));
499
- }
500
- getPendingMessages(myAddress) {
501
- const rows = this.db.prepare(
502
- `
580
+ `)
581
+ .all(myAddress, peerAddress, peerAddress, myAddress);
582
+ return rows.map((r) => this.rowToMessage(r));
583
+ }
584
+ getPendingMessages(myAddress) {
585
+ const rows = this.db
586
+ .prepare(`
503
587
  SELECT * FROM messages
504
588
  WHERE (from_address = ? OR to_address = ?) AND status = ?
505
589
  ORDER BY created_at ASC
506
- `
507
- ).all(myAddress, myAddress, "pending");
508
- return rows.map((r) => this.rowToMessage(r));
509
- }
510
- updateMessageStatus(messageId, status, updates) {
511
- const fields = ["status = ?"];
512
- const values = [status];
513
- if (updates?.leafIndex !== void 0) {
514
- fields.push("leaf_index = ?");
515
- values.push(updates.leafIndex);
516
- }
517
- if (updates?.newRoot !== void 0) {
518
- fields.push("new_root = ?");
519
- values.push(updates.newRoot);
520
- }
521
- if (updates?.serverSignature !== void 0) {
522
- fields.push("server_signature = ?");
523
- values.push(updates.serverSignature);
524
- }
525
- if (updates?.serverTimestamp !== void 0) {
526
- fields.push("server_timestamp = ?");
527
- values.push(updates.serverTimestamp);
528
- }
529
- if (updates?.serverPublicKey !== void 0) {
530
- fields.push("server_public_key = ?");
531
- values.push(updates.serverPublicKey);
532
- }
533
- values.push(messageId);
534
- this.db.prepare(
535
- `
590
+ `)
591
+ .all(myAddress, myAddress, "pending");
592
+ return rows.map((r) => this.rowToMessage(r));
593
+ }
594
+ updateMessageStatus(messageId, status, updates) {
595
+ const fields = ["status = ?"];
596
+ const values = [status];
597
+ if (updates?.leafIndex !== undefined) {
598
+ fields.push("leaf_index = ?");
599
+ values.push(updates.leafIndex);
600
+ }
601
+ if (updates?.newRoot !== undefined) {
602
+ fields.push("new_root = ?");
603
+ values.push(updates.newRoot);
604
+ }
605
+ if (updates?.serverSignature !== undefined) {
606
+ fields.push("server_signature = ?");
607
+ values.push(updates.serverSignature);
608
+ }
609
+ if (updates?.serverTimestamp !== undefined) {
610
+ fields.push("server_timestamp = ?");
611
+ values.push(updates.serverTimestamp);
612
+ }
613
+ if (updates?.serverPublicKey !== undefined) {
614
+ fields.push("server_public_key = ?");
615
+ values.push(updates.serverPublicKey);
616
+ }
617
+ values.push(messageId);
618
+ this.db
619
+ .prepare(`
536
620
  UPDATE messages SET ${fields.join(", ")} WHERE message_id = ?
537
- `
538
- ).run(...values);
539
- }
540
- /**
541
- * 获取用户的所有消息
542
- *
543
- * @param userAddress 用户地址
544
- * @returns 所有相关消息(发送和接收的)
545
- */
546
- getAllMessages(userAddress) {
547
- const rows = this.db.prepare(
548
- `
621
+ `)
622
+ .run(...values);
623
+ }
624
+ /**
625
+ * 获取用户的所有消息
626
+ *
627
+ * @param userAddress 用户地址
628
+ * @returns 所有相关消息(发送和接收的)
629
+ */
630
+ getAllMessages(userAddress) {
631
+ const rows = this.db
632
+ .prepare(`
549
633
  SELECT * FROM messages
550
634
  WHERE from_address = ? OR to_address = ?
551
635
  ORDER BY created_at DESC
552
- `
553
- ).all(userAddress, userAddress);
554
- return rows.map((r) => this.rowToMessage(r));
555
- }
556
- /**
557
- * 通过消息 ID 获取消息
558
- *
559
- * @param messageId 消息 ID
560
- * @returns 消息对象或 undefined
561
- */
562
- getMessageById(messageId) {
563
- const row = this.db.prepare(
564
- `
636
+ `)
637
+ .all(userAddress, userAddress);
638
+ return rows.map((r) => this.rowToMessage(r));
639
+ }
640
+ /**
641
+ * 通过消息 ID 获取消息
642
+ *
643
+ * @param messageId 消息 ID
644
+ * @returns 消息对象或 undefined
645
+ */
646
+ getMessageById(messageId) {
647
+ const row = this.db
648
+ .prepare(`
565
649
  SELECT * FROM messages
566
650
  WHERE message_id = ?
567
- `
568
- ).get(messageId);
569
- if (!row) return void 0;
570
- return this.rowToMessage(row);
571
- }
572
- /**
573
- * 更新消息 ID(用于 Guard 消息确认后更新 messageId)
574
- *
575
- * 由于 message_id 是主键,需要通过删除旧记录并插入新记录来实现
576
- *
577
- * @param oldMessageId 旧消息 ID(internal_id)
578
- * @param newMessageId 新消息 ID(正式的 message_id
579
- * @param updates 可选的更新字段
580
- * @returns 是否成功更新
581
- */
582
- updateMessageId(oldMessageId, newMessageId, updates) {
583
- const row = this.db.prepare("SELECT * FROM messages WHERE message_id = ?").get(oldMessageId);
584
- if (!row) return false;
585
- const getUpdatedValue = (updateValue, originalValue) => {
586
- if (updateValue !== void 0) return updateValue;
587
- return originalValue === null ? void 0 : originalValue;
588
- };
589
- const message = {
590
- messageId: newMessageId,
591
- fromAddress: row.from_address,
592
- toAddress: row.to_address,
593
- plaintextHash: row.plaintext_hash,
594
- plaintext: row.plaintext === null ? void 0 : row.plaintext,
595
- guardAddress: row.guard_address === null ? void 0 : row.guard_address,
596
- passportAddress: row.passport_address === null ? void 0 : row.passport_address,
597
- direction: row.direction,
598
- status: updates?.status !== void 0 ? updates.status : row.status,
599
- msgType: row.msg_type,
600
- leafIndex: getUpdatedValue(updates?.leafIndex, row.leaf_index),
601
- prevRoot: getUpdatedValue(updates?.prevRoot, row.prev_root),
602
- newRoot: getUpdatedValue(updates?.newRoot, row.new_root),
603
- serverSignature: getUpdatedValue(
604
- updates?.serverSignature,
605
- row.server_signature
606
- ),
607
- serverPublicKey: getUpdatedValue(
608
- updates?.serverPublicKey,
609
- row.server_public_key
610
- ),
611
- serverTimestamp: getUpdatedValue(
612
- updates?.serverTimestamp,
613
- row.server_timestamp
614
- ),
615
- arkConfirmed: row.ark_recipient ? {
616
- recipient: row.ark_recipient,
617
- recipientPublicKey: row.ark_recipient_pubkey,
618
- signature: row.ark_signature,
619
- timestamp: row.ark_timestamp
620
- } : void 0,
621
- zipMetadata: row.zip_metadata ? JSON.parse(row.zip_metadata) : void 0,
622
- createdAt: row.created_at,
623
- receivedAt: row.received_at === null ? void 0 : row.received_at
624
- };
625
- const transaction = this.db.transaction(() => {
626
- this.db.prepare("DELETE FROM messages WHERE message_id = ?").run(oldMessageId);
627
- this.saveMessage(message);
628
- });
629
- try {
630
- transaction();
631
- return true;
632
- } catch (error) {
633
- return false;
634
- }
635
- }
636
- rowToMessage(row) {
637
- if (row.to_address === null) {
638
- throw new Error(`Message ${row.message_id} has null toAddress`);
639
- }
640
- return {
641
- messageId: row.message_id,
642
- fromAddress: row.from_address,
643
- toAddress: row.to_address,
644
- plaintextHash: row.plaintext_hash,
645
- plaintext: row.plaintext === null ? void 0 : row.plaintext,
646
- guardAddress: row.guard_address === null ? void 0 : row.guard_address,
647
- passportAddress: row.passport_address === null ? void 0 : row.passport_address,
648
- lastReceivedLeafIndex: row.last_received_leaf_index === null ? void 0 : row.last_received_leaf_index,
649
- direction: row.direction,
650
- status: row.status,
651
- msgType: row.msg_type,
652
- leafIndex: row.leaf_index === null ? void 0 : row.leaf_index,
653
- prevRoot: row.prev_root === null ? void 0 : row.prev_root,
654
- newRoot: row.new_root === null ? void 0 : row.new_root,
655
- serverSignature: row.server_signature === null ? void 0 : row.server_signature,
656
- serverPublicKey: row.server_public_key === null ? void 0 : row.server_public_key,
657
- serverTimestamp: row.server_timestamp === null ? void 0 : row.server_timestamp,
658
- arkConfirmed: row.ark_recipient ? {
659
- recipient: row.ark_recipient,
660
- recipientPublicKey: row.ark_recipient_pubkey,
661
- signature: row.ark_signature,
662
- timestamp: row.ark_timestamp
663
- } : void 0,
664
- zipMetadata: row.zip_metadata ? JSON.parse(row.zip_metadata) : void 0,
665
- createdAt: row.created_at,
666
- receivedAt: row.received_at === null ? void 0 : row.received_at
667
- };
668
- }
669
- /**
670
- * 获取最后收到的消息序号(用于消息同步确认)
671
- *
672
- * 查询指定会话中,用户作为接收者时,发送者最后收到的消息序号
673
- * 用于在发送新消息时,告诉对方我已经收到了哪些消息
674
- *
675
- * @param myAddress 当前用户地址
676
- * @param peerAddress 对方地址
677
- * @returns 最后收到的消息序号(leafIndex),如果没有则返回 -1
678
- */
679
- getLastReceivedLeafIndex(myAddress, peerAddress) {
680
- const row = this.db.prepare(
681
- `
651
+ `)
652
+ .get(messageId);
653
+ if (!row)
654
+ return undefined;
655
+ return this.rowToMessage(row);
656
+ }
657
+ /**
658
+ * 更新消息 ID(用于 Guard 消息确认后更新 messageId)
659
+ *
660
+ * 由于 message_id 是主键,需要通过删除旧记录并插入新记录来实现
661
+ *
662
+ * @param oldMessageId 旧消息 ID(internal_id
663
+ * @param newMessageId 新消息 ID(正式的 message_id)
664
+ * @param updates 可选的更新字段
665
+ * @returns 是否成功更新
666
+ */
667
+ updateMessageId(oldMessageId, newMessageId, updates) {
668
+ const row = this.db
669
+ .prepare("SELECT * FROM messages WHERE message_id = ?")
670
+ .get(oldMessageId);
671
+ if (!row)
672
+ return false;
673
+ // 辅助函数:获取更新值,优先使用 updates 中的值,但不使用 ?? 避免改写数据
674
+ // 如果 updates 中有定义该字段(包括 null),使用 updates 的值;否则使用原值
675
+ const getUpdatedValue = (updateValue, originalValue) => {
676
+ if (updateValue !== undefined)
677
+ return updateValue;
678
+ return originalValue === null ? undefined : originalValue;
679
+ };
680
+ // 构建更新后的消息对象
681
+ const message = {
682
+ messageId: newMessageId,
683
+ fromAddress: row.from_address,
684
+ toAddress: row.to_address,
685
+ plaintextHash: row.plaintext_hash,
686
+ plaintext: row.plaintext === null ? undefined : row.plaintext,
687
+ guardAddress: row.guard_address === null ? undefined : row.guard_address,
688
+ passportAddress: row.passport_address === null
689
+ ? undefined
690
+ : row.passport_address,
691
+ direction: row.direction,
692
+ status: updates?.status !== undefined ? updates.status : row.status,
693
+ msgType: row.msg_type,
694
+ leafIndex: getUpdatedValue(updates?.leafIndex, row.leaf_index),
695
+ prevRoot: getUpdatedValue(updates?.prevRoot, row.prev_root),
696
+ newRoot: getUpdatedValue(updates?.newRoot, row.new_root),
697
+ serverSignature: getUpdatedValue(updates?.serverSignature, row.server_signature),
698
+ serverPublicKey: getUpdatedValue(updates?.serverPublicKey, row.server_public_key),
699
+ serverTimestamp: getUpdatedValue(updates?.serverTimestamp, row.server_timestamp),
700
+ arkConfirmed: row.ark_recipient
701
+ ? {
702
+ recipient: row.ark_recipient,
703
+ recipientPublicKey: row.ark_recipient_pubkey,
704
+ signature: row.ark_signature,
705
+ timestamp: row.ark_timestamp,
706
+ }
707
+ : undefined,
708
+ zipMetadata: row.zip_metadata
709
+ ? JSON.parse(row.zip_metadata)
710
+ : undefined,
711
+ createdAt: row.created_at,
712
+ receivedAt: row.received_at === null ? undefined : row.received_at,
713
+ };
714
+ // 使用事务确保原子性
715
+ const transaction = this.db.transaction(() => {
716
+ // 删除旧记录
717
+ this.db
718
+ .prepare("DELETE FROM messages WHERE message_id = ?")
719
+ .run(oldMessageId);
720
+ // 插入新记录
721
+ this.saveMessage(message);
722
+ });
723
+ try {
724
+ transaction();
725
+ return true;
726
+ }
727
+ catch (error) {
728
+ //console.error("Failed to update message ID:", error);
729
+ return false;
730
+ }
731
+ }
732
+ rowToMessage(row) {
733
+ if (row.to_address === null) {
734
+ throw new Error(`Message ${row.message_id} has null toAddress`);
735
+ }
736
+ return {
737
+ messageId: row.message_id,
738
+ fromAddress: row.from_address,
739
+ toAddress: row.to_address,
740
+ plaintextHash: row.plaintext_hash,
741
+ plaintext: row.plaintext === null ? undefined : row.plaintext,
742
+ guardAddress: row.guard_address === null ? undefined : row.guard_address,
743
+ passportAddress: row.passport_address === null
744
+ ? undefined
745
+ : row.passport_address,
746
+ lastReceivedLeafIndex: row.last_received_leaf_index === null
747
+ ? undefined
748
+ : row.last_received_leaf_index,
749
+ direction: row.direction,
750
+ status: row.status,
751
+ msgType: row.msg_type,
752
+ leafIndex: row.leaf_index === null ? undefined : row.leaf_index,
753
+ prevRoot: row.prev_root === null ? undefined : row.prev_root,
754
+ newRoot: row.new_root === null ? undefined : row.new_root,
755
+ serverSignature: row.server_signature === null
756
+ ? undefined
757
+ : row.server_signature,
758
+ serverPublicKey: row.server_public_key === null
759
+ ? undefined
760
+ : row.server_public_key,
761
+ serverTimestamp: row.server_timestamp === null
762
+ ? undefined
763
+ : row.server_timestamp,
764
+ arkConfirmed: row.ark_recipient
765
+ ? {
766
+ recipient: row.ark_recipient,
767
+ recipientPublicKey: row.ark_recipient_pubkey,
768
+ signature: row.ark_signature,
769
+ timestamp: row.ark_timestamp,
770
+ }
771
+ : undefined,
772
+ zipMetadata: row.zip_metadata
773
+ ? JSON.parse(row.zip_metadata)
774
+ : undefined,
775
+ createdAt: row.created_at,
776
+ receivedAt: row.received_at === null ? undefined : row.received_at,
777
+ };
778
+ }
779
+ /**
780
+ * 获取最后收到的消息序号(用于消息同步确认)
781
+ *
782
+ * 查询指定会话中,用户作为接收者时,发送者最后收到的消息序号
783
+ * 用于在发送新消息时,告诉对方我已经收到了哪些消息
784
+ *
785
+ * @param myAddress 当前用户地址
786
+ * @param peerAddress 对方地址
787
+ * @returns 最后收到的消息序号(leafIndex),如果没有则返回 -1
788
+ */
789
+ getLastReceivedLeafIndex(myAddress, peerAddress) {
790
+ // 查询从 peerAddress 发送给 myAddress 的消息中,
791
+ // 最大的 last_received_leaf_index
792
+ const row = this.db
793
+ .prepare(`
682
794
  SELECT MAX(last_received_leaf_index) as max_index
683
795
  FROM messages
684
796
  WHERE from_address = ? AND to_address = ?
685
797
  AND last_received_leaf_index IS NOT NULL
686
- `
687
- ).get(peerAddress, myAddress);
688
- return row?.max_index ?? -1;
689
- }
798
+ `)
799
+ .get(peerAddress, myAddress);
800
+ return row?.max_index ?? -1;
801
+ }
690
802
  }
803
+ exports.MessageStorage = MessageStorage;
804
+ // ========== 会话状态存储 ==========
691
805
  class SessionStateStorage {
692
- constructor(userAddress) {
693
- __publicField(this, "userAddress");
694
- this.userAddress = userAddress;
695
- }
696
- get db() {
697
- return getDatabase(this.userAddress);
698
- }
699
- getSessionId(myAddress, peerAddress) {
700
- const addresses = [myAddress, peerAddress].sort();
701
- return `${addresses[0]}:${addresses[1]}`;
702
- }
703
- getSessionState(myAddress, peerAddress) {
704
- const sessionId = this.getSessionId(myAddress, peerAddress);
705
- const row = this.db.prepare("SELECT * FROM session_states WHERE session_id = ?").get(sessionId);
706
- if (!row) return void 0;
707
- return {
708
- sessionId: row.session_id,
709
- myAddress: row.my_address,
710
- peerAddress: row.peer_address,
711
- currentRoot: row.current_root,
712
- prevRoot: row.prev_root,
713
- messageCount: row.message_count,
714
- lastLeafIndex: row.last_leaf_index,
715
- lastConfirmedHash: row.last_confirmed_hash === null ? "" : row.last_confirmed_hash,
716
- lastSyncAt: row.last_sync_at === null ? 0 : row.last_sync_at,
717
- createdAt: row.created_at,
718
- updatedAt: row.updated_at
719
- };
720
- }
721
- updateSessionState(myAddress, peerAddress, updates) {
722
- const sessionId = this.getSessionId(myAddress, peerAddress);
723
- const existing = this.getSessionState(myAddress, peerAddress);
724
- const now = Date.now();
725
- if (existing) {
726
- const updated = { ...existing, ...updates, updatedAt: now };
727
- this.db.prepare(
728
- `
806
+ userAddress;
807
+ constructor(userAddress) {
808
+ this.userAddress = userAddress;
809
+ }
810
+ get db() {
811
+ return getDatabase(this.userAddress);
812
+ }
813
+ getSessionId(myAddress, peerAddress) {
814
+ const addresses = [myAddress, peerAddress].sort();
815
+ return `${addresses[0]}:${addresses[1]}`;
816
+ }
817
+ getSessionState(myAddress, peerAddress) {
818
+ const sessionId = this.getSessionId(myAddress, peerAddress);
819
+ const row = this.db
820
+ .prepare("SELECT * FROM session_states WHERE session_id = ?")
821
+ .get(sessionId);
822
+ if (!row)
823
+ return undefined;
824
+ return {
825
+ sessionId: row.session_id,
826
+ myAddress: row.my_address,
827
+ peerAddress: row.peer_address,
828
+ currentRoot: row.current_root,
829
+ prevRoot: row.prev_root,
830
+ messageCount: row.message_count,
831
+ lastLeafIndex: row.last_leaf_index,
832
+ lastConfirmedHash: row.last_confirmed_hash === null ? "" : row.last_confirmed_hash,
833
+ lastSyncAt: row.last_sync_at === null ? 0 : row.last_sync_at,
834
+ createdAt: row.created_at,
835
+ updatedAt: row.updated_at,
836
+ };
837
+ }
838
+ updateSessionState(myAddress, peerAddress, updates) {
839
+ const sessionId = this.getSessionId(myAddress, peerAddress);
840
+ const existing = this.getSessionState(myAddress, peerAddress);
841
+ const now = Date.now();
842
+ if (existing) {
843
+ const updated = { ...existing, ...updates, updatedAt: now };
844
+ this.db
845
+ .prepare(`
729
846
  UPDATE session_states SET
730
847
  current_root = ?,
731
848
  prev_root = ?,
@@ -735,64 +852,48 @@ class SessionStateStorage {
735
852
  last_sync_at = ?,
736
853
  updated_at = ?
737
854
  WHERE session_id = ?
738
- `
739
- ).run(
740
- updated.currentRoot,
741
- updated.prevRoot,
742
- updated.messageCount,
743
- updated.lastLeafIndex,
744
- updated.lastConfirmedHash,
745
- updated.lastSyncAt,
746
- updated.updatedAt,
747
- sessionId
748
- );
749
- } else {
750
- const initialRoot = "0".repeat(64);
751
- this.db.prepare(
752
- `
855
+ `)
856
+ .run(updated.currentRoot, updated.prevRoot, updated.messageCount, updated.lastLeafIndex, updated.lastConfirmedHash, updated.lastSyncAt, updated.updatedAt, sessionId);
857
+ }
858
+ else {
859
+ const initialRoot = "0".repeat(64);
860
+ this.db
861
+ .prepare(`
753
862
  INSERT INTO session_states (
754
863
  session_id, my_address, peer_address, current_root, prev_root,
755
864
  message_count, last_leaf_index, last_confirmed_hash, last_sync_at,
756
865
  created_at, updated_at
757
866
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
758
- `
759
- ).run(
760
- sessionId,
761
- myAddress,
762
- peerAddress,
763
- updates.currentRoot ?? initialRoot,
764
- updates.prevRoot ?? initialRoot,
765
- updates.messageCount ?? 0,
766
- updates.lastLeafIndex ?? 0,
767
- updates.lastConfirmedHash ?? "",
768
- updates.lastSyncAt ?? 0,
769
- now,
770
- now
771
- );
867
+ `)
868
+ .run(sessionId, myAddress, peerAddress, updates.currentRoot ?? initialRoot, updates.prevRoot ?? initialRoot, updates.messageCount ?? 0, updates.lastLeafIndex ?? 0, updates.lastConfirmedHash ?? "", updates.lastSyncAt ?? 0, now, now);
869
+ }
870
+ }
871
+ getCurrentRoot(myAddress, peerAddress) {
872
+ const state = this.getSessionState(myAddress, peerAddress);
873
+ return state?.currentRoot ?? "0".repeat(64);
772
874
  }
773
- }
774
- getCurrentRoot(myAddress, peerAddress) {
775
- const state = this.getSessionState(myAddress, peerAddress);
776
- return state?.currentRoot ?? "0".repeat(64);
777
- }
778
875
  }
876
+ exports.SessionStateStorage = SessionStateStorage;
877
+ /**
878
+ * MessengerManager 持久化存储类
879
+ *
880
+ * 使用 SQLite 存储 MessengerManager 的配置和状态
881
+ */
779
882
  class MessengerPersistStorage {
780
- constructor() {
781
- __publicField(this, "initialized", false);
782
- }
783
- get db() {
784
- const db = getGlobalDatabase();
785
- if (!this.initialized) {
786
- this.initTable(db);
787
- this.initialized = true;
883
+ initialized = false;
884
+ get db() {
885
+ const db = getGlobalDatabase();
886
+ if (!this.initialized) {
887
+ this.initTable(db);
888
+ this.initialized = true;
889
+ }
890
+ return db;
788
891
  }
789
- return db;
790
- }
791
- /**
792
- * 初始化存储表
793
- */
794
- initTable(db) {
795
- db.exec(`
892
+ /**
893
+ * 初始化存储表
894
+ */
895
+ initTable(db) {
896
+ db.exec(`
796
897
  CREATE TABLE IF NOT EXISTS messenger_manager_state (
797
898
  instance_id TEXT PRIMARY KEY,
798
899
  state_data TEXT NOT NULL,
@@ -800,7 +901,7 @@ class MessengerPersistStorage {
800
901
  );
801
902
  CREATE INDEX IF NOT EXISTS idx_messenger_state_updated ON messenger_manager_state(updated_at);
802
903
  `);
803
- db.exec(`
904
+ db.exec(`
804
905
  CREATE TABLE IF NOT EXISTS sse_connection_locks (
805
906
  account_address TEXT PRIMARY KEY,
806
907
  process_id TEXT NOT NULL,
@@ -810,91 +911,94 @@ class MessengerPersistStorage {
810
911
  );
811
912
  CREATE INDEX IF NOT EXISTS idx_sse_lock_heartbeat ON sse_connection_locks(last_heartbeat);
812
913
  `);
813
- }
814
- /**
815
- * 保存 Messenger 配置和账号信息
816
- *
817
- * @param instanceId 实例标识(用于区分不同的 MessengerManager 实例)
818
- * @param state 要保存的状态
819
- */
820
- saveState(instanceId, state) {
821
- const data = JSON.stringify(state);
822
- const now = Date.now();
823
- this.db.prepare(
824
- `
914
+ }
915
+ /**
916
+ * 保存 Messenger 配置和账号信息
917
+ *
918
+ * @param instanceId 实例标识(用于区分不同的 MessengerManager 实例)
919
+ * @param state 要保存的状态
920
+ */
921
+ saveState(instanceId, state) {
922
+ const data = JSON.stringify(state);
923
+ const now = Date.now();
924
+ this.db
925
+ .prepare(`
825
926
  INSERT INTO messenger_manager_state (instance_id, state_data, updated_at)
826
927
  VALUES (?, ?, ?)
827
928
  ON CONFLICT(instance_id) DO UPDATE SET
828
929
  state_data = excluded.state_data,
829
930
  updated_at = excluded.updated_at
830
- `
831
- ).run(instanceId, data, now);
832
- }
833
- /**
834
- * 加载 Messenger 配置和账号信息
835
- *
836
- * @param instanceId 实例标识
837
- * @returns 保存的状态,如果不存在返回 null
838
- */
839
- loadState(instanceId) {
840
- const row = this.db.prepare(
841
- "SELECT state_data FROM messenger_manager_state WHERE instance_id = ?"
842
- ).get(instanceId);
843
- if (!row?.state_data) return null;
844
- try {
845
- return JSON.parse(row.state_data);
846
- } catch (error) {
847
- return null;
848
- }
849
- }
850
- /**
851
- * 删除保存的状态
852
- *
853
- * @param instanceId 实例标识
854
- */
855
- deleteState(instanceId) {
856
- this.db.prepare(
857
- "DELETE FROM messenger_manager_state WHERE instance_id = ?"
858
- ).run(instanceId);
859
- }
860
- /**
861
- * 获取所有实例ID列表
862
- */
863
- getAllInstanceIds() {
864
- const rows = this.db.prepare(
865
- "SELECT instance_id FROM messenger_manager_state ORDER BY updated_at DESC"
866
- ).all();
867
- return rows.map((r) => r.instance_id);
868
- }
869
- get processId() {
870
- return `pid_${process.pid}_${Date.now()}`;
871
- }
872
- /**
873
- * 尝试获取指定账号的 SSE 连接锁
874
- * @param accountAddress 账号地址
875
- * @param instanceId 当前实例ID
876
- * @returns 是否成功获取锁
877
- */
878
- tryAcquireSSELock(accountAddress, instanceId) {
879
- const now = Date.now();
880
- const heartbeatTimeout = 15e3;
881
- const transaction = this.db.transaction(() => {
882
- const row = this.db.prepare(
883
- "SELECT * FROM sse_connection_locks WHERE account_address = ?"
884
- ).get(accountAddress.toLowerCase());
885
- if (row) {
886
- if (row.instance_id === instanceId) {
887
- this.db.prepare(
888
- "UPDATE sse_connection_locks SET last_heartbeat = ? WHERE account_address = ?"
889
- ).run(now, accountAddress.toLowerCase());
890
- return true;
931
+ `)
932
+ .run(instanceId, data, now);
933
+ }
934
+ /**
935
+ * 加载 Messenger 配置和账号信息
936
+ *
937
+ * @param instanceId 实例标识
938
+ * @returns 保存的状态,如果不存在返回 null
939
+ */
940
+ loadState(instanceId) {
941
+ const row = this.db
942
+ .prepare("SELECT state_data FROM messenger_manager_state WHERE instance_id = ?")
943
+ .get(instanceId);
944
+ if (!row?.state_data)
945
+ return null;
946
+ try {
947
+ return JSON.parse(row.state_data);
891
948
  }
892
- if (now - row.last_heartbeat < heartbeatTimeout) {
893
- return false;
949
+ catch (error) {
950
+ //console.error("Failed to parse persisted state:", error);
951
+ return null;
894
952
  }
895
- }
896
- this.db.prepare(
897
- `
953
+ }
954
+ /**
955
+ * 删除保存的状态
956
+ *
957
+ * @param instanceId 实例标识
958
+ */
959
+ deleteState(instanceId) {
960
+ this.db
961
+ .prepare("DELETE FROM messenger_manager_state WHERE instance_id = ?")
962
+ .run(instanceId);
963
+ }
964
+ /**
965
+ * 获取所有实例ID列表
966
+ */
967
+ getAllInstanceIds() {
968
+ const rows = this.db
969
+ .prepare("SELECT instance_id FROM messenger_manager_state ORDER BY updated_at DESC")
970
+ .all();
971
+ return rows.map((r) => r.instance_id);
972
+ }
973
+ get processId() {
974
+ return `pid_${process.pid}_${Date.now()}`;
975
+ }
976
+ /**
977
+ * 尝试获取指定账号的 SSE 连接锁
978
+ * @param accountAddress 账号地址
979
+ * @param instanceId 当前实例ID
980
+ * @returns 是否成功获取锁
981
+ */
982
+ tryAcquireSSELock(accountAddress, instanceId) {
983
+ const now = Date.now();
984
+ const heartbeatTimeout = 15000;
985
+ const transaction = this.db.transaction(() => {
986
+ const row = this.db
987
+ .prepare("SELECT * FROM sse_connection_locks WHERE account_address = ?")
988
+ .get(accountAddress.toLowerCase());
989
+ if (row) {
990
+ if (row.instance_id === instanceId) {
991
+ this.db
992
+ .prepare("UPDATE sse_connection_locks SET last_heartbeat = ? WHERE account_address = ?")
993
+ .run(now, accountAddress.toLowerCase());
994
+ return true;
995
+ }
996
+ if (now - row.last_heartbeat < heartbeatTimeout) {
997
+ return false;
998
+ }
999
+ }
1000
+ this.db
1001
+ .prepare(`
898
1002
  INSERT INTO sse_connection_locks (
899
1003
  account_address, process_id, instance_id, last_heartbeat, created_at
900
1004
  ) VALUES (?, ?, ?, ?, ?)
@@ -902,63 +1006,63 @@ class MessengerPersistStorage {
902
1006
  process_id = excluded.process_id,
903
1007
  instance_id = excluded.instance_id,
904
1008
  last_heartbeat = excluded.last_heartbeat
905
- `
906
- ).run(
907
- accountAddress.toLowerCase(),
908
- this.processId,
909
- instanceId,
910
- now,
911
- now
912
- );
913
- return true;
914
- });
915
- try {
916
- return transaction();
917
- } catch (error) {
918
- console.warn("Failed to acquire SSE lock:", error);
919
- return false;
920
- }
921
- }
922
- /**
923
- * 更新 SSE 连接锁的心跳
924
- * @param accountAddress 账号地址
925
- * @param instanceId 当前实例ID
926
- */
927
- updateSSELockHeartbeat(accountAddress, instanceId) {
928
- const now = Date.now();
929
- try {
930
- this.db.prepare(
931
- "UPDATE sse_connection_locks SET last_heartbeat = ? WHERE account_address = ? AND instance_id = ?"
932
- ).run(now, accountAddress.toLowerCase(), instanceId);
933
- } catch (error) {
934
- console.warn("Failed to update SSE lock heartbeat:", error);
935
- }
936
- }
937
- /**
938
- * 释放指定账号的 SSE 连接锁
939
- * @param accountAddress 账号地址
940
- * @param instanceId 当前实例ID
941
- */
942
- releaseSSELock(accountAddress, instanceId) {
943
- try {
944
- this.db.prepare(
945
- "DELETE FROM sse_connection_locks WHERE account_address = ? AND instance_id = ?"
946
- ).run(accountAddress.toLowerCase(), instanceId);
947
- } catch (error) {
948
- console.warn("Failed to release SSE lock:", error);
949
- }
950
- }
951
- /**
952
- * 检查是否持有指定账号的 SSE 连接锁
953
- * @param accountAddress 账号地址
954
- * @param instanceId 当前实例ID
955
- * @returns 是否持有锁
956
- */
957
- holdsSSELock(accountAddress, instanceId) {
958
- const row = this.db.prepare(
959
- "SELECT * FROM sse_connection_locks WHERE account_address = ? AND instance_id = ?"
960
- ).get(accountAddress.toLowerCase(), instanceId);
961
- return !!row;
962
- }
1009
+ `)
1010
+ .run(accountAddress.toLowerCase(), this.processId, instanceId, now, now);
1011
+ return true;
1012
+ });
1013
+ try {
1014
+ return transaction();
1015
+ }
1016
+ catch (error) {
1017
+ console.warn("Failed to acquire SSE lock:", error);
1018
+ return false;
1019
+ }
1020
+ }
1021
+ /**
1022
+ * 更新 SSE 连接锁的心跳
1023
+ * @param accountAddress 账号地址
1024
+ * @param instanceId 当前实例ID
1025
+ */
1026
+ updateSSELockHeartbeat(accountAddress, instanceId) {
1027
+ const now = Date.now();
1028
+ try {
1029
+ this.db
1030
+ .prepare("UPDATE sse_connection_locks SET last_heartbeat = ? WHERE account_address = ? AND instance_id = ?")
1031
+ .run(now, accountAddress.toLowerCase(), instanceId);
1032
+ }
1033
+ catch (error) {
1034
+ console.warn("Failed to update SSE lock heartbeat:", error);
1035
+ }
1036
+ }
1037
+ /**
1038
+ * 释放指定账号的 SSE 连接锁
1039
+ * @param accountAddress 账号地址
1040
+ * @param instanceId 当前实例ID
1041
+ */
1042
+ releaseSSELock(accountAddress, instanceId) {
1043
+ try {
1044
+ this.db
1045
+ .prepare("DELETE FROM sse_connection_locks WHERE account_address = ? AND instance_id = ?")
1046
+ .run(accountAddress.toLowerCase(), instanceId);
1047
+ }
1048
+ catch (error) {
1049
+ console.warn("Failed to release SSE lock:", error);
1050
+ }
1051
+ }
1052
+ /**
1053
+ * 检查是否持有指定账号的 SSE 连接锁
1054
+ * @param accountAddress 账号地址
1055
+ * @param instanceId 当前实例ID
1056
+ * @returns 是否持有锁
1057
+ */
1058
+ holdsSSELock(accountAddress, instanceId) {
1059
+ const row = this.db
1060
+ .prepare("SELECT * FROM sse_connection_locks WHERE account_address = ? AND instance_id = ?")
1061
+ .get(accountAddress.toLowerCase(), instanceId);
1062
+ return !!row;
1063
+ }
963
1064
  }
964
- const defaultPersistStorage = new MessengerPersistStorage();
1065
+ exports.MessengerPersistStorage = MessengerPersistStorage;
1066
+ // 默认持久化存储实例
1067
+ exports.defaultPersistStorage = new MessengerPersistStorage();
1068
+ //# sourceMappingURL=storage.js.map