wowok 2.1.9 → 2.1.12

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 (887) hide show
  1. package/NOTICE +46 -0
  2. package/dist/cjs/bcs/bcs.d.ts +199 -199
  3. package/dist/cjs/bcs/bcs.js +273 -318
  4. package/dist/cjs/bcs/bcs.js.map +1 -0
  5. package/dist/cjs/bcs/effects.d.ts +109 -109
  6. package/dist/cjs/bcs/effects.js +205 -230
  7. package/dist/cjs/bcs/effects.js.map +1 -0
  8. package/dist/cjs/bcs/index.d.ts +1 -2584
  9. package/dist/cjs/bcs/index.js +61 -76
  10. package/dist/cjs/bcs/index.js.map +1 -0
  11. package/dist/cjs/bcs/pure.js +38 -58
  12. package/dist/cjs/bcs/pure.js.map +1 -0
  13. package/dist/cjs/bcs/type-tag-serializer.js +102 -114
  14. package/dist/cjs/bcs/type-tag-serializer.js.map +1 -0
  15. package/dist/cjs/bcs/types.js +6 -23
  16. package/dist/cjs/bcs/types.js.map +1 -0
  17. package/dist/cjs/client/index.js +17 -33
  18. package/dist/cjs/client/index.js.map +1 -0
  19. package/dist/cjs/client/network.js +25 -40
  20. package/dist/cjs/client/network.js.map +1 -0
  21. package/dist/cjs/cryptography/index.js +29 -45
  22. package/dist/cjs/cryptography/index.js.map +1 -0
  23. package/dist/cjs/cryptography/intent.d.ts +1 -1
  24. package/dist/cjs/cryptography/intent.js +20 -31
  25. package/dist/cjs/cryptography/intent.js.map +1 -0
  26. package/dist/cjs/cryptography/keypair.js +102 -116
  27. package/dist/cjs/cryptography/keypair.js.map +1 -0
  28. package/dist/cjs/cryptography/mnemonics.js +43 -41
  29. package/dist/cjs/cryptography/mnemonics.js.map +1 -0
  30. package/dist/cjs/cryptography/publickey.js +112 -134
  31. package/dist/cjs/cryptography/publickey.js.map +1 -0
  32. package/dist/cjs/cryptography/signature-scheme.js +24 -43
  33. package/dist/cjs/cryptography/signature-scheme.js.map +1 -0
  34. package/dist/cjs/cryptography/signature.d.ts +2 -24
  35. package/dist/cjs/cryptography/signature.js +50 -67
  36. package/dist/cjs/cryptography/signature.js.map +1 -0
  37. package/dist/cjs/experimental/cache.js +65 -0
  38. package/dist/cjs/experimental/cache.js.map +1 -0
  39. package/dist/cjs/experimental/client.js +27 -0
  40. package/dist/cjs/experimental/client.js.map +1 -0
  41. package/dist/cjs/experimental/core.js +89 -0
  42. package/dist/cjs/experimental/core.js.map +1 -0
  43. package/dist/cjs/experimental/errors.js +32 -0
  44. package/dist/cjs/experimental/errors.js.map +1 -0
  45. package/dist/cjs/experimental/index.js +15 -0
  46. package/dist/cjs/experimental/index.js.map +1 -0
  47. package/dist/cjs/experimental/persistent-storage.js +343 -0
  48. package/dist/cjs/experimental/persistent-storage.js.map +1 -0
  49. package/dist/cjs/experimental/persistent-storage.test.js +200 -0
  50. package/dist/cjs/experimental/persistent-storage.test.js.map +1 -0
  51. package/dist/cjs/experimental/transports/utils.js +104 -0
  52. package/dist/cjs/experimental/transports/utils.js.map +1 -0
  53. package/dist/cjs/experimental/types.js +6 -0
  54. package/dist/cjs/experimental/types.js.map +1 -0
  55. package/dist/cjs/faucet/faucet.js +106 -124
  56. package/dist/cjs/faucet/faucet.js.map +1 -0
  57. package/dist/cjs/faucet/index.js +12 -28
  58. package/dist/cjs/faucet/index.js.map +1 -0
  59. package/dist/cjs/grpc/client.js +47 -62
  60. package/dist/cjs/grpc/client.js.map +1 -0
  61. package/dist/cjs/grpc/core.js +580 -617
  62. package/dist/cjs/grpc/core.js.map +1 -0
  63. package/dist/cjs/grpc/index.js +9 -25
  64. package/dist/cjs/grpc/index.js.map +1 -0
  65. package/dist/cjs/grpc/proto/google/protobuf/any.js +168 -135
  66. package/dist/cjs/grpc/proto/google/protobuf/any.js.map +1 -0
  67. package/dist/cjs/grpc/proto/google/protobuf/duration.js +105 -90
  68. package/dist/cjs/grpc/proto/google/protobuf/duration.js.map +1 -0
  69. package/dist/cjs/grpc/proto/google/protobuf/empty.js +50 -28
  70. package/dist/cjs/grpc/proto/google/protobuf/empty.js.map +1 -0
  71. package/dist/cjs/grpc/proto/google/protobuf/field_mask.js +96 -75
  72. package/dist/cjs/grpc/proto/google/protobuf/field_mask.js.map +1 -0
  73. package/dist/cjs/grpc/proto/google/protobuf/struct.js +266 -215
  74. package/dist/cjs/grpc/proto/google/protobuf/struct.js.map +1 -0
  75. package/dist/cjs/grpc/proto/google/protobuf/timestamp.js +150 -131
  76. package/dist/cjs/grpc/proto/google/protobuf/timestamp.js.map +1 -0
  77. package/dist/cjs/grpc/proto/google/rpc/error_details.js +331 -302
  78. package/dist/cjs/grpc/proto/google/rpc/error_details.js.map +1 -0
  79. package/dist/cjs/grpc/proto/google/rpc/status.js +50 -50
  80. package/dist/cjs/grpc/proto/google/rpc/status.js.map +1 -0
  81. package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js +84 -68
  82. package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js.map +1 -0
  83. package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js +45 -50
  84. package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js.map +1 -0
  85. package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js +38 -43
  86. package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js.map +1 -0
  87. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js +70 -75
  88. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js.map +1 -0
  89. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js +79 -81
  90. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +1 -0
  91. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js +183 -166
  92. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +1 -0
  93. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js +369 -296
  94. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js.map +1 -0
  95. package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js +80 -85
  96. package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js.map +1 -0
  97. package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js +31 -28
  98. package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js.map +1 -0
  99. package/dist/cjs/grpc/proto/sui/rpc/v2/event.js +81 -83
  100. package/dist/cjs/grpc/proto/sui/rpc/v2/event.js.map +1 -0
  101. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js +80 -85
  102. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js.map +1 -0
  103. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js +876 -506
  104. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js.map +1 -0
  105. package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js +56 -61
  106. package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +1 -0
  107. package/dist/cjs/grpc/proto/sui/rpc/v2/input.js +103 -83
  108. package/dist/cjs/grpc/proto/sui/rpc/v2/input.js.map +1 -0
  109. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js +76 -78
  110. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js.map +1 -0
  111. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js +69 -119
  112. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +1 -0
  113. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js +392 -350
  114. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js.map +1 -0
  115. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js +599 -473
  116. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js.map +1 -0
  117. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js +46 -78
  118. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +1 -0
  119. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js +242 -224
  120. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js.map +1 -0
  121. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js +32 -52
  122. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js.map +1 -0
  123. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js +139 -134
  124. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js.map +1 -0
  125. package/dist/cjs/grpc/proto/sui/rpc/v2/object.js +109 -111
  126. package/dist/cjs/grpc/proto/sui/rpc/v2/object.js.map +1 -0
  127. package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js +46 -51
  128. package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js.map +1 -0
  129. package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js +76 -61
  130. package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js.map +1 -0
  131. package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js +46 -59
  132. package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js.map +1 -0
  133. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js +568 -522
  134. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js.map +1 -0
  135. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js +54 -32
  136. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js.map +1 -0
  137. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +27 -47
  138. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +1 -0
  139. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js +83 -86
  140. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +1 -0
  141. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js +53 -85
  142. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js.map +1 -0
  143. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js +645 -529
  144. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js.map +1 -0
  145. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js +37 -51
  146. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +1 -0
  147. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js +58 -61
  148. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js.map +1 -0
  149. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js +749 -730
  150. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js.map +1 -0
  151. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js +1218 -975
  152. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js.map +1 -0
  153. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +32 -46
  154. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +1 -0
  155. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js +186 -167
  156. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +1 -0
  157. package/dist/cjs/index.js +96 -91
  158. package/dist/cjs/index.js.map +1 -0
  159. package/dist/cjs/jsonRpc/client.js +654 -743
  160. package/dist/cjs/jsonRpc/client.js.map +1 -0
  161. package/dist/cjs/jsonRpc/core.d.ts +7 -7
  162. package/dist/cjs/jsonRpc/core.js +562 -606
  163. package/dist/cjs/jsonRpc/core.js.map +1 -0
  164. package/dist/cjs/jsonRpc/errors.js +38 -56
  165. package/dist/cjs/jsonRpc/errors.js.map +1 -0
  166. package/dist/cjs/jsonRpc/http-transport.js +70 -114
  167. package/dist/cjs/jsonRpc/http-transport.js.map +1 -0
  168. package/dist/cjs/jsonRpc/index.js +14 -30
  169. package/dist/cjs/jsonRpc/index.js.map +1 -0
  170. package/dist/cjs/jsonRpc/json-rpc-resolver.js +286 -290
  171. package/dist/cjs/jsonRpc/json-rpc-resolver.js.map +1 -0
  172. package/dist/cjs/jsonRpc/rpc-websocket-client.js +150 -207
  173. package/dist/cjs/jsonRpc/rpc-websocket-client.js.map +1 -0
  174. package/dist/cjs/jsonRpc/types/chain.js +4 -15
  175. package/dist/cjs/jsonRpc/types/chain.js.map +1 -0
  176. package/dist/cjs/jsonRpc/types/changes.js +4 -15
  177. package/dist/cjs/jsonRpc/types/changes.js.map +1 -0
  178. package/dist/cjs/jsonRpc/types/coins.js +4 -15
  179. package/dist/cjs/jsonRpc/types/coins.js.map +1 -0
  180. package/dist/cjs/jsonRpc/types/common.js +4 -15
  181. package/dist/cjs/jsonRpc/types/common.js.map +1 -0
  182. package/dist/cjs/jsonRpc/types/generated.d.ts +1 -1
  183. package/dist/cjs/jsonRpc/types/generated.js +4 -15
  184. package/dist/cjs/jsonRpc/types/generated.js.map +1 -0
  185. package/dist/cjs/jsonRpc/types/index.js +4 -15
  186. package/dist/cjs/jsonRpc/types/index.js.map +1 -0
  187. package/dist/cjs/jsonRpc/types/params.js +4 -15
  188. package/dist/cjs/jsonRpc/types/params.js.map +1 -0
  189. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +54 -69
  190. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js.map +1 -0
  191. package/dist/cjs/keypairs/ed25519/index.js +10 -26
  192. package/dist/cjs/keypairs/ed25519/index.js.map +1 -0
  193. package/dist/cjs/keypairs/ed25519/keypair.js +134 -159
  194. package/dist/cjs/keypairs/ed25519/keypair.js.map +1 -0
  195. package/dist/cjs/keypairs/ed25519/publickey.js +70 -84
  196. package/dist/cjs/keypairs/ed25519/publickey.js.map +1 -0
  197. package/dist/cjs/keypairs/index.js +21 -19
  198. package/dist/cjs/keypairs/index.js.map +1 -0
  199. package/dist/cjs/keypairs/passkey/index.js +11 -27
  200. package/dist/cjs/keypairs/passkey/index.js.map +1 -0
  201. package/dist/cjs/keypairs/passkey/keypair.js +245 -256
  202. package/dist/cjs/keypairs/passkey/keypair.js.map +1 -0
  203. package/dist/cjs/keypairs/passkey/publickey.js +163 -162
  204. package/dist/cjs/keypairs/passkey/publickey.js.map +1 -0
  205. package/dist/cjs/keypairs/passkey/types.js +4 -15
  206. package/dist/cjs/keypairs/passkey/types.js.map +1 -0
  207. package/dist/cjs/keypairs/secp256k1/index.js +10 -26
  208. package/dist/cjs/keypairs/secp256k1/index.js.map +1 -0
  209. package/dist/cjs/keypairs/secp256k1/keypair.js +129 -151
  210. package/dist/cjs/keypairs/secp256k1/keypair.js.map +1 -0
  211. package/dist/cjs/keypairs/secp256k1/publickey.js +71 -89
  212. package/dist/cjs/keypairs/secp256k1/publickey.js.map +1 -0
  213. package/dist/cjs/keypairs/secp256r1/index.js +10 -26
  214. package/dist/cjs/keypairs/secp256r1/index.js.map +1 -0
  215. package/dist/cjs/keypairs/secp256r1/keypair.js +127 -148
  216. package/dist/cjs/keypairs/secp256r1/keypair.js.map +1 -0
  217. package/dist/cjs/keypairs/secp256r1/publickey.js +72 -90
  218. package/dist/cjs/keypairs/secp256r1/publickey.js.map +1 -0
  219. package/dist/cjs/multisig/index.js +10 -26
  220. package/dist/cjs/multisig/index.js.map +1 -0
  221. package/dist/cjs/multisig/publickey.d.ts +1 -1
  222. package/dist/cjs/multisig/publickey.js +228 -276
  223. package/dist/cjs/multisig/publickey.js.map +1 -0
  224. package/dist/cjs/multisig/signer.js +62 -110
  225. package/dist/cjs/multisig/signer.js.map +1 -0
  226. package/dist/cjs/transactions/Arguments.d.ts +4 -4
  227. package/dist/cjs/transactions/Arguments.js +13 -34
  228. package/dist/cjs/transactions/Arguments.js.map +1 -0
  229. package/dist/cjs/transactions/Commands.js +111 -141
  230. package/dist/cjs/transactions/Commands.js.map +1 -0
  231. package/dist/cjs/transactions/Inputs.js +53 -82
  232. package/dist/cjs/transactions/Inputs.js.map +1 -0
  233. package/dist/cjs/transactions/ObjectCache.d.ts +8 -8
  234. package/dist/cjs/transactions/ObjectCache.js +204 -241
  235. package/dist/cjs/transactions/ObjectCache.js.map +1 -0
  236. package/dist/cjs/transactions/Transaction.d.ts +31 -31
  237. package/dist/cjs/transactions/Transaction.js +628 -719
  238. package/dist/cjs/transactions/Transaction.js.map +1 -0
  239. package/dist/cjs/transactions/TransactionData.d.ts +9 -9
  240. package/dist/cjs/transactions/TransactionData.js +396 -440
  241. package/dist/cjs/transactions/TransactionData.js.map +1 -0
  242. package/dist/cjs/transactions/__tests__/Transaction.test.js +169 -0
  243. package/dist/cjs/transactions/__tests__/Transaction.test.js.map +1 -0
  244. package/dist/cjs/transactions/__tests__/bcs.test.js +202 -0
  245. package/dist/cjs/transactions/__tests__/bcs.test.js.map +1 -0
  246. package/dist/cjs/transactions/data/internal.js +166 -207
  247. package/dist/cjs/transactions/data/internal.js.map +1 -0
  248. package/dist/cjs/transactions/data/v1.js +436 -495
  249. package/dist/cjs/transactions/data/v1.js.map +1 -0
  250. package/dist/cjs/transactions/data/v2.d.ts +5 -5
  251. package/dist/cjs/transactions/data/v2.js +94 -107
  252. package/dist/cjs/transactions/data/v2.js.map +1 -0
  253. package/dist/cjs/transactions/executor/caching.js +71 -113
  254. package/dist/cjs/transactions/executor/caching.js.map +1 -0
  255. package/dist/cjs/transactions/executor/parallel.js +339 -378
  256. package/dist/cjs/transactions/executor/parallel.js.map +1 -0
  257. package/dist/cjs/transactions/executor/queue.js +60 -80
  258. package/dist/cjs/transactions/executor/queue.js.map +1 -0
  259. package/dist/cjs/transactions/executor/serial.d.ts +4 -4
  260. package/dist/cjs/transactions/executor/serial.js +102 -131
  261. package/dist/cjs/transactions/executor/serial.js.map +1 -0
  262. package/dist/cjs/transactions/hash.js +17 -28
  263. package/dist/cjs/transactions/hash.js.map +1 -0
  264. package/dist/cjs/transactions/index.js +33 -49
  265. package/dist/cjs/transactions/index.js.map +1 -0
  266. package/dist/cjs/transactions/intents/CoinWithBalance.js +137 -191
  267. package/dist/cjs/transactions/intents/CoinWithBalance.js.map +1 -0
  268. package/dist/cjs/transactions/object.js +88 -111
  269. package/dist/cjs/transactions/object.js.map +1 -0
  270. package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js +20 -32
  271. package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js.map +1 -0
  272. package/dist/cjs/transactions/pure.js +38 -60
  273. package/dist/cjs/transactions/pure.js.map +1 -0
  274. package/dist/cjs/transactions/resolve.js +62 -88
  275. package/dist/cjs/transactions/resolve.js.map +1 -0
  276. package/dist/cjs/transactions/serializer.js +150 -163
  277. package/dist/cjs/transactions/serializer.js.map +1 -0
  278. package/dist/cjs/transactions/utils.d.ts +1 -1
  279. package/dist/cjs/transactions/utils.js +114 -125
  280. package/dist/cjs/transactions/utils.js.map +1 -0
  281. package/dist/cjs/utils/constants.js +29 -56
  282. package/dist/cjs/utils/constants.js.map +1 -0
  283. package/dist/cjs/utils/derived-objects.js +14 -30
  284. package/dist/cjs/utils/derived-objects.js.map +1 -0
  285. package/dist/cjs/utils/dynamic-fields.js +20 -37
  286. package/dist/cjs/utils/dynamic-fields.js.map +1 -0
  287. package/dist/cjs/utils/format.js +14 -30
  288. package/dist/cjs/utils/format.js.map +1 -0
  289. package/dist/cjs/utils/index.js +50 -64
  290. package/dist/cjs/utils/index.js.map +1 -0
  291. package/dist/cjs/utils/move-registry.js +37 -35
  292. package/dist/cjs/utils/move-registry.js.map +1 -0
  293. package/dist/cjs/utils/sui-types.js +74 -68
  294. package/dist/cjs/utils/sui-types.js.map +1 -0
  295. package/dist/cjs/utils/suins.js +30 -46
  296. package/dist/cjs/utils/suins.js.map +1 -0
  297. package/dist/cjs/verify/index.js +12 -27
  298. package/dist/cjs/verify/index.js.map +1 -0
  299. package/dist/cjs/verify/verify.js +83 -110
  300. package/dist/cjs/verify/verify.js.map +1 -0
  301. package/dist/cjs/version.js +8 -25
  302. package/dist/cjs/version.js.map +1 -0
  303. package/dist/cjs/w/call/allocation.js +323 -413
  304. package/dist/cjs/w/call/allocation.js.map +1 -0
  305. package/dist/cjs/w/call/arb.js +105 -136
  306. package/dist/cjs/w/call/arb.js.map +1 -0
  307. package/dist/cjs/w/call/arbitration.js +1206 -1581
  308. package/dist/cjs/w/call/arbitration.js.map +1 -0
  309. package/dist/cjs/w/call/base.js +303 -333
  310. package/dist/cjs/w/call/base.js.map +1 -0
  311. package/dist/cjs/w/call/contact.js +335 -452
  312. package/dist/cjs/w/call/contact.js.map +1 -0
  313. package/dist/cjs/w/call/demand.js +690 -844
  314. package/dist/cjs/w/call/demand.js.map +1 -0
  315. package/dist/cjs/w/call/entity.js +167 -201
  316. package/dist/cjs/w/call/entity.js.map +1 -0
  317. package/dist/cjs/w/call/guard-ins.d.ts +1 -0
  318. package/dist/cjs/w/call/guard-ins.js +4376 -4384
  319. package/dist/cjs/w/call/guard-ins.js.map +1 -0
  320. package/dist/cjs/w/call/guard.d.ts +10 -0
  321. package/dist/cjs/w/call/guard.js +1078 -1119
  322. package/dist/cjs/w/call/guard.js.map +1 -0
  323. package/dist/cjs/w/call/index.d.ts +1 -1
  324. package/dist/cjs/w/call/index.js +69 -69
  325. package/dist/cjs/w/call/index.js.map +1 -0
  326. package/dist/cjs/w/call/machine.js +1105 -1419
  327. package/dist/cjs/w/call/machine.js.map +1 -0
  328. package/dist/cjs/w/call/order.js +314 -454
  329. package/dist/cjs/w/call/order.js.map +1 -0
  330. package/dist/cjs/w/call/passport.js +214 -253
  331. package/dist/cjs/w/call/passport.js.map +1 -0
  332. package/dist/cjs/w/call/payment.js +187 -224
  333. package/dist/cjs/w/call/payment.js.map +1 -0
  334. package/dist/cjs/w/call/permission.js +1183 -1294
  335. package/dist/cjs/w/call/permission.js.map +1 -0
  336. package/dist/cjs/w/call/personal.js +132 -170
  337. package/dist/cjs/w/call/personal.js.map +1 -0
  338. package/dist/cjs/w/call/progress.js +634 -794
  339. package/dist/cjs/w/call/progress.js.map +1 -0
  340. package/dist/cjs/w/call/proof.js +67 -116
  341. package/dist/cjs/w/call/proof.js.map +1 -0
  342. package/dist/cjs/w/call/repository.js +1037 -1251
  343. package/dist/cjs/w/call/repository.js.map +1 -0
  344. package/dist/cjs/w/call/resource.js +111 -131
  345. package/dist/cjs/w/call/resource.js.map +1 -0
  346. package/dist/cjs/w/call/reward.js +675 -853
  347. package/dist/cjs/w/call/reward.js.map +1 -0
  348. package/dist/cjs/w/call/service.js +1879 -2385
  349. package/dist/cjs/w/call/service.js.map +1 -0
  350. package/dist/cjs/w/call/treasury.js +841 -1138
  351. package/dist/cjs/w/call/treasury.js.map +1 -0
  352. package/dist/cjs/w/call/util.js +593 -624
  353. package/dist/cjs/w/call/util.js.map +1 -0
  354. package/dist/cjs/w/common.d.ts +1 -1
  355. package/dist/cjs/w/common.js +548 -518
  356. package/dist/cjs/w/common.js.map +1 -0
  357. package/dist/cjs/w/exception.js +574 -584
  358. package/dist/cjs/w/exception.js.map +1 -0
  359. package/dist/cjs/w/index.js +26 -23
  360. package/dist/cjs/w/index.js.map +1 -0
  361. package/dist/cjs/w/local/account.js +664 -741
  362. package/dist/cjs/w/local/account.js.map +1 -0
  363. package/dist/cjs/w/local/cache.js +180 -166
  364. package/dist/cjs/w/local/cache.js.map +1 -0
  365. package/dist/cjs/w/local/config.js +51 -80
  366. package/dist/cjs/w/local/config.js.map +1 -0
  367. package/dist/cjs/w/local/index.js +225 -290
  368. package/dist/cjs/w/local/index.js.map +1 -0
  369. package/dist/cjs/w/local/local.d.ts +2 -2
  370. package/dist/cjs/w/local/local.js +638 -646
  371. package/dist/cjs/w/local/local.js.map +1 -0
  372. package/dist/cjs/w/local/storage.js +210 -164
  373. package/dist/cjs/w/local/storage.js.map +1 -0
  374. package/dist/cjs/w/local/token.js +158 -175
  375. package/dist/cjs/w/local/token.js.map +1 -0
  376. package/dist/cjs/w/local/util.js +80 -51
  377. package/dist/cjs/w/local/util.js.map +1 -0
  378. package/dist/cjs/w/local/wip.js +1078 -802
  379. package/dist/cjs/w/local/wip.js.map +1 -0
  380. package/dist/cjs/w/messenger/crypto.js +496 -389
  381. package/dist/cjs/w/messenger/crypto.js.map +1 -0
  382. package/dist/cjs/w/messenger/index.js +53 -35
  383. package/dist/cjs/w/messenger/index.js.map +1 -0
  384. package/dist/cjs/w/messenger/messenger-api.js +1159 -1035
  385. package/dist/cjs/w/messenger/messenger-api.js.map +1 -0
  386. package/dist/cjs/w/messenger/messenger-manager.js +954 -1083
  387. package/dist/cjs/w/messenger/messenger-manager.js.map +1 -0
  388. package/dist/cjs/w/messenger/messenger.d.ts +1 -1
  389. package/dist/cjs/w/messenger/messenger.js +1304 -1450
  390. package/dist/cjs/w/messenger/messenger.js.map +1 -0
  391. package/dist/cjs/w/messenger/server.js +390 -512
  392. package/dist/cjs/w/messenger/server.js.map +1 -0
  393. package/dist/cjs/w/messenger/session.js +399 -403
  394. package/dist/cjs/w/messenger/session.js.map +1 -0
  395. package/dist/cjs/w/messenger/storage.js +881 -777
  396. package/dist/cjs/w/messenger/storage.js.map +1 -0
  397. package/dist/cjs/w/messenger/types.d.ts +2 -2
  398. package/dist/cjs/w/messenger/types.js +83 -103
  399. package/dist/cjs/w/messenger/types.js.map +1 -0
  400. package/dist/cjs/w/messenger/utils.js +29 -34
  401. package/dist/cjs/w/messenger/utils.js.map +1 -0
  402. package/dist/cjs/w/query/bult-in.js +101 -110
  403. package/dist/cjs/w/query/bult-in.js.map +1 -0
  404. package/dist/cjs/w/query/event.js +134 -146
  405. package/dist/cjs/w/query/event.js.map +1 -0
  406. package/dist/cjs/w/query/index.js +22 -20
  407. package/dist/cjs/w/query/index.js.map +1 -0
  408. package/dist/cjs/w/query/object.js +1576 -1576
  409. package/dist/cjs/w/query/object.js.map +1 -0
  410. package/dist/cjs/w/query/received.js +66 -88
  411. package/dist/cjs/w/query/received.js.map +1 -0
  412. package/dist/cjs/w/query/util.js +53 -77
  413. package/dist/cjs/w/query/util.js.map +1 -0
  414. package/dist/cjs/w/util.js +589 -675
  415. package/dist/cjs/w/util.js.map +1 -0
  416. package/dist/esm/bcs/bcs.d.ts +199 -199
  417. package/dist/esm/bcs/bcs.js +269 -310
  418. package/dist/esm/bcs/bcs.js.map +1 -0
  419. package/dist/esm/bcs/effects.d.ts +109 -109
  420. package/dist/esm/bcs/effects.js +171 -179
  421. package/dist/esm/bcs/effects.js.map +1 -0
  422. package/dist/esm/bcs/index.d.ts +1 -2584
  423. package/dist/esm/bcs/index.js +51 -94
  424. package/dist/esm/bcs/index.js.map +1 -0
  425. package/dist/esm/bcs/pure.js +35 -38
  426. package/dist/esm/bcs/pure.js.map +1 -0
  427. package/dist/esm/bcs/type-tag-serializer.js +98 -95
  428. package/dist/esm/bcs/type-tag-serializer.js.map +1 -0
  429. package/dist/esm/bcs/types.js +5 -5
  430. package/dist/esm/bcs/types.js.map +1 -0
  431. package/dist/esm/client/index.js +7 -23
  432. package/dist/esm/client/index.js.map +1 -0
  433. package/dist/esm/client/network.js +23 -22
  434. package/dist/esm/client/network.js.map +1 -0
  435. package/dist/esm/cryptography/index.js +9 -46
  436. package/dist/esm/cryptography/index.js.map +1 -0
  437. package/dist/esm/cryptography/intent.d.ts +1 -1
  438. package/dist/esm/cryptography/intent.js +18 -12
  439. package/dist/esm/cryptography/intent.js.map +1 -0
  440. package/dist/esm/cryptography/keypair.js +95 -99
  441. package/dist/esm/cryptography/keypair.js.map +1 -0
  442. package/dist/esm/cryptography/mnemonics.js +40 -24
  443. package/dist/esm/cryptography/mnemonics.js.map +1 -0
  444. package/dist/esm/cryptography/publickey.js +104 -115
  445. package/dist/esm/cryptography/publickey.js.map +1 -0
  446. package/dist/esm/cryptography/signature-scheme.js +22 -24
  447. package/dist/esm/cryptography/signature-scheme.js.map +1 -0
  448. package/dist/esm/cryptography/signature.d.ts +2 -24
  449. package/dist/esm/cryptography/signature.js +44 -48
  450. package/dist/esm/cryptography/signature.js.map +1 -0
  451. package/dist/esm/experimental/cache.js +61 -0
  452. package/dist/esm/experimental/cache.js.map +1 -0
  453. package/dist/esm/experimental/client.js +23 -0
  454. package/dist/esm/experimental/client.js.map +1 -0
  455. package/dist/esm/experimental/core.js +85 -0
  456. package/dist/esm/experimental/core.js.map +1 -0
  457. package/dist/esm/experimental/errors.js +27 -0
  458. package/dist/esm/experimental/errors.js.map +1 -0
  459. package/dist/esm/experimental/index.js +8 -0
  460. package/dist/esm/experimental/index.js.map +1 -0
  461. package/dist/esm/experimental/persistent-storage.js +337 -0
  462. package/dist/esm/experimental/persistent-storage.js.map +1 -0
  463. package/dist/esm/experimental/persistent-storage.test.js +198 -0
  464. package/dist/esm/experimental/persistent-storage.test.js.map +1 -0
  465. package/dist/esm/experimental/transports/utils.js +100 -0
  466. package/dist/esm/experimental/transports/utils.js.map +1 -0
  467. package/dist/esm/experimental/types.js +5 -0
  468. package/dist/esm/experimental/types.js.map +1 -0
  469. package/dist/esm/faucet/faucet.js +104 -111
  470. package/dist/esm/faucet/faucet.js.map +1 -0
  471. package/dist/esm/faucet/index.js +4 -16
  472. package/dist/esm/faucet/index.js.map +1 -0
  473. package/dist/esm/grpc/client.js +34 -34
  474. package/dist/esm/grpc/client.js.map +1 -0
  475. package/dist/esm/grpc/core.js +570 -601
  476. package/dist/esm/grpc/core.js.map +1 -0
  477. package/dist/esm/grpc/index.js +5 -6
  478. package/dist/esm/grpc/index.js.map +1 -0
  479. package/dist/esm/grpc/proto/google/protobuf/any.js +161 -111
  480. package/dist/esm/grpc/proto/google/protobuf/any.js.map +1 -0
  481. package/dist/esm/grpc/proto/google/protobuf/duration.js +99 -67
  482. package/dist/esm/grpc/proto/google/protobuf/duration.js.map +1 -0
  483. package/dist/esm/grpc/proto/google/protobuf/empty.js +46 -7
  484. package/dist/esm/grpc/proto/google/protobuf/empty.js.map +1 -0
  485. package/dist/esm/grpc/proto/google/protobuf/field_mask.js +90 -52
  486. package/dist/esm/grpc/proto/google/protobuf/field_mask.js.map +1 -0
  487. package/dist/esm/grpc/proto/google/protobuf/struct.js +258 -190
  488. package/dist/esm/grpc/proto/google/protobuf/struct.js.map +1 -0
  489. package/dist/esm/grpc/proto/google/protobuf/timestamp.js +144 -108
  490. package/dist/esm/grpc/proto/google/protobuf/timestamp.js.map +1 -0
  491. package/dist/esm/grpc/proto/google/rpc/error_details.js +313 -267
  492. package/dist/esm/grpc/proto/google/rpc/error_details.js.map +1 -0
  493. package/dist/esm/grpc/proto/google/rpc/status.js +45 -28
  494. package/dist/esm/grpc/proto/google/rpc/status.js.map +1 -0
  495. package/dist/esm/grpc/proto/sui/rpc/v2/argument.js +80 -47
  496. package/dist/esm/grpc/proto/sui/rpc/v2/argument.js.map +1 -0
  497. package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js +41 -29
  498. package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js.map +1 -0
  499. package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js +34 -22
  500. package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js.map +1 -0
  501. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js +61 -49
  502. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js.map +1 -0
  503. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js +72 -57
  504. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +1 -0
  505. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js +173 -139
  506. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +1 -0
  507. package/dist/esm/grpc/proto/sui/rpc/v2/effects.js +358 -268
  508. package/dist/esm/grpc/proto/sui/rpc/v2/effects.js.map +1 -0
  509. package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js +72 -60
  510. package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js.map +1 -0
  511. package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js +29 -9
  512. package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js.map +1 -0
  513. package/dist/esm/grpc/proto/sui/rpc/v2/event.js +74 -59
  514. package/dist/esm/grpc/proto/sui/rpc/v2/event.js.map +1 -0
  515. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js +69 -57
  516. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js.map +1 -0
  517. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js +861 -474
  518. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js.map +1 -0
  519. package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js +52 -40
  520. package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +1 -0
  521. package/dist/esm/grpc/proto/sui/rpc/v2/input.js +98 -61
  522. package/dist/esm/grpc/proto/sui/rpc/v2/input.js.map +1 -0
  523. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js +71 -56
  524. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js.map +1 -0
  525. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js +65 -100
  526. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +1 -0
  527. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js +365 -306
  528. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js.map +1 -0
  529. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js +585 -442
  530. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js.map +1 -0
  531. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js +42 -59
  532. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +1 -0
  533. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js +226 -191
  534. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js.map +1 -0
  535. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js +28 -33
  536. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js.map +1 -0
  537. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js +129 -107
  538. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js.map +1 -0
  539. package/dist/esm/grpc/proto/sui/rpc/v2/object.js +100 -85
  540. package/dist/esm/grpc/proto/sui/rpc/v2/object.js.map +1 -0
  541. package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js +42 -30
  542. package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js.map +1 -0
  543. package/dist/esm/grpc/proto/sui/rpc/v2/owner.js +72 -40
  544. package/dist/esm/grpc/proto/sui/rpc/v2/owner.js.map +1 -0
  545. package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js +42 -38
  546. package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js.map +1 -0
  547. package/dist/esm/grpc/proto/sui/rpc/v2/signature.js +544 -481
  548. package/dist/esm/grpc/proto/sui/rpc/v2/signature.js.map +1 -0
  549. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js +52 -13
  550. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js.map +1 -0
  551. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +23 -28
  552. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +1 -0
  553. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js +74 -60
  554. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +1 -0
  555. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js +49 -66
  556. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js.map +1 -0
  557. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js +623 -490
  558. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js.map +1 -0
  559. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js +33 -32
  560. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +1 -0
  561. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js +50 -36
  562. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js.map +1 -0
  563. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js +737 -701
  564. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js.map +1 -0
  565. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js +1177 -917
  566. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js.map +1 -0
  567. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +28 -27
  568. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +1 -0
  569. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js +169 -133
  570. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +1 -0
  571. package/dist/esm/index.js +21 -107
  572. package/dist/esm/index.js.map +1 -0
  573. package/dist/esm/jsonRpc/client.js +646 -727
  574. package/dist/esm/jsonRpc/client.js.map +1 -0
  575. package/dist/esm/jsonRpc/core.d.ts +7 -7
  576. package/dist/esm/jsonRpc/core.js +550 -581
  577. package/dist/esm/jsonRpc/core.js.map +1 -0
  578. package/dist/esm/jsonRpc/errors.js +36 -41
  579. package/dist/esm/jsonRpc/errors.js.map +1 -0
  580. package/dist/esm/jsonRpc/http-transport.js +65 -93
  581. package/dist/esm/jsonRpc/http-transport.js.map +1 -0
  582. package/dist/esm/jsonRpc/index.js +6 -20
  583. package/dist/esm/jsonRpc/index.js.map +1 -0
  584. package/dist/esm/jsonRpc/json-rpc-resolver.js +281 -276
  585. package/dist/esm/jsonRpc/json-rpc-resolver.js.map +1 -0
  586. package/dist/esm/jsonRpc/rpc-websocket-client.js +147 -189
  587. package/dist/esm/jsonRpc/rpc-websocket-client.js.map +1 -0
  588. package/dist/esm/jsonRpc/types/chain.js +4 -0
  589. package/dist/esm/jsonRpc/types/chain.js.map +1 -0
  590. package/dist/esm/jsonRpc/types/changes.js +4 -0
  591. package/dist/esm/jsonRpc/types/changes.js.map +1 -0
  592. package/dist/esm/jsonRpc/types/coins.js +4 -0
  593. package/dist/esm/jsonRpc/types/coins.js.map +1 -0
  594. package/dist/esm/jsonRpc/types/common.js +4 -0
  595. package/dist/esm/jsonRpc/types/common.js.map +1 -0
  596. package/dist/esm/jsonRpc/types/generated.d.ts +1 -1
  597. package/dist/esm/jsonRpc/types/generated.js +4 -0
  598. package/dist/esm/jsonRpc/types/generated.js.map +1 -0
  599. package/dist/esm/jsonRpc/types/index.js +4 -0
  600. package/dist/esm/jsonRpc/types/index.js.map +1 -0
  601. package/dist/esm/jsonRpc/types/params.js +4 -0
  602. package/dist/esm/jsonRpc/types/params.js.map +1 -0
  603. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +49 -48
  604. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js.map +1 -0
  605. package/dist/esm/keypairs/ed25519/index.js +5 -10
  606. package/dist/esm/keypairs/ed25519/index.js.map +1 -0
  607. package/dist/esm/keypairs/ed25519/keypair.js +128 -146
  608. package/dist/esm/keypairs/ed25519/keypair.js.map +1 -0
  609. package/dist/esm/keypairs/ed25519/publickey.js +64 -67
  610. package/dist/esm/keypairs/ed25519/publickey.js.map +1 -0
  611. package/dist/esm/keypairs/index.js +3 -0
  612. package/dist/esm/keypairs/index.js.map +1 -0
  613. package/dist/esm/keypairs/passkey/index.js +5 -12
  614. package/dist/esm/keypairs/passkey/index.js.map +1 -0
  615. package/dist/esm/keypairs/passkey/keypair.js +236 -243
  616. package/dist/esm/keypairs/passkey/keypair.js.map +1 -0
  617. package/dist/esm/keypairs/passkey/publickey.js +154 -140
  618. package/dist/esm/keypairs/passkey/publickey.js.map +1 -0
  619. package/dist/esm/keypairs/passkey/types.js +4 -0
  620. package/dist/esm/keypairs/passkey/types.js.map +1 -0
  621. package/dist/esm/keypairs/secp256k1/index.js +5 -10
  622. package/dist/esm/keypairs/secp256k1/index.js.map +1 -0
  623. package/dist/esm/keypairs/secp256k1/keypair.js +120 -134
  624. package/dist/esm/keypairs/secp256k1/keypair.js.map +1 -0
  625. package/dist/esm/keypairs/secp256k1/publickey.js +64 -71
  626. package/dist/esm/keypairs/secp256k1/publickey.js.map +1 -0
  627. package/dist/esm/keypairs/secp256r1/index.js +5 -10
  628. package/dist/esm/keypairs/secp256r1/index.js.map +1 -0
  629. package/dist/esm/keypairs/secp256r1/keypair.js +118 -131
  630. package/dist/esm/keypairs/secp256r1/keypair.js.map +1 -0
  631. package/dist/esm/keypairs/secp256r1/publickey.js +63 -66
  632. package/dist/esm/keypairs/secp256r1/publickey.js.map +1 -0
  633. package/dist/esm/multisig/index.js +5 -10
  634. package/dist/esm/multisig/index.js.map +1 -0
  635. package/dist/esm/multisig/publickey.d.ts +1 -1
  636. package/dist/esm/multisig/publickey.js +216 -253
  637. package/dist/esm/multisig/publickey.js.map +1 -0
  638. package/dist/esm/multisig/signer.js +57 -89
  639. package/dist/esm/multisig/signer.js.map +1 -0
  640. package/dist/esm/transactions/Arguments.d.ts +4 -4
  641. package/dist/esm/transactions/Arguments.js +9 -13
  642. package/dist/esm/transactions/Arguments.js.map +1 -0
  643. package/dist/esm/transactions/Commands.js +105 -118
  644. package/dist/esm/transactions/Commands.js.map +1 -0
  645. package/dist/esm/transactions/Inputs.js +49 -61
  646. package/dist/esm/transactions/Inputs.js.map +1 -0
  647. package/dist/esm/transactions/ObjectCache.d.ts +8 -8
  648. package/dist/esm/transactions/ObjectCache.js +200 -223
  649. package/dist/esm/transactions/ObjectCache.js.map +1 -0
  650. package/dist/esm/transactions/Transaction.d.ts +32 -32
  651. package/dist/esm/transactions/Transaction.js +611 -696
  652. package/dist/esm/transactions/Transaction.js.map +1 -0
  653. package/dist/esm/transactions/TransactionData.d.ts +9 -9
  654. package/dist/esm/transactions/TransactionData.js +386 -415
  655. package/dist/esm/transactions/TransactionData.js.map +1 -0
  656. package/dist/esm/transactions/__tests__/Transaction.test.js +167 -0
  657. package/dist/esm/transactions/__tests__/Transaction.test.js.map +1 -0
  658. package/dist/esm/transactions/__tests__/bcs.test.js +200 -0
  659. package/dist/esm/transactions/__tests__/bcs.test.js.map +1 -0
  660. package/dist/esm/transactions/data/internal.js +158 -205
  661. package/dist/esm/transactions/data/internal.js.map +1 -0
  662. package/dist/esm/transactions/data/v1.js +419 -487
  663. package/dist/esm/transactions/data/v1.js.map +1 -0
  664. package/dist/esm/transactions/data/v2.d.ts +5 -5
  665. package/dist/esm/transactions/data/v2.js +89 -107
  666. package/dist/esm/transactions/data/v2.js.map +1 -0
  667. package/dist/esm/transactions/executor/caching.d.ts +2 -2
  668. package/dist/esm/transactions/executor/caching.js +66 -93
  669. package/dist/esm/transactions/executor/caching.js.map +1 -0
  670. package/dist/esm/transactions/executor/parallel.js +329 -352
  671. package/dist/esm/transactions/executor/parallel.js.map +1 -0
  672. package/dist/esm/transactions/executor/queue.js +58 -64
  673. package/dist/esm/transactions/executor/queue.js.map +1 -0
  674. package/dist/esm/transactions/executor/serial.d.ts +5 -5
  675. package/dist/esm/transactions/executor/serial.js +96 -110
  676. package/dist/esm/transactions/executor/serial.js.map +1 -0
  677. package/dist/esm/transactions/hash.js +15 -9
  678. package/dist/esm/transactions/hash.js.map +1 -0
  679. package/dist/esm/transactions/index.js +15 -41
  680. package/dist/esm/transactions/index.js.map +1 -0
  681. package/dist/esm/transactions/intents/CoinWithBalance.js +127 -165
  682. package/dist/esm/transactions/intents/CoinWithBalance.js.map +1 -0
  683. package/dist/esm/transactions/object.js +86 -92
  684. package/dist/esm/transactions/object.js.map +1 -0
  685. package/dist/esm/transactions/plugins/NamedPackagesPlugin.js +18 -15
  686. package/dist/esm/transactions/plugins/NamedPackagesPlugin.js.map +1 -0
  687. package/dist/esm/transactions/pure.js +34 -39
  688. package/dist/esm/transactions/pure.js.map +1 -0
  689. package/dist/esm/transactions/resolve.js +58 -69
  690. package/dist/esm/transactions/resolve.js.map +1 -0
  691. package/dist/esm/transactions/serializer.js +145 -144
  692. package/dist/esm/transactions/serializer.js.map +1 -0
  693. package/dist/esm/transactions/utils.d.ts +1 -1
  694. package/dist/esm/transactions/utils.js +110 -109
  695. package/dist/esm/transactions/utils.js.map +1 -0
  696. package/dist/esm/utils/constants.js +26 -36
  697. package/dist/esm/utils/constants.js.map +1 -0
  698. package/dist/esm/utils/derived-objects.js +11 -10
  699. package/dist/esm/utils/derived-objects.js.map +1 -0
  700. package/dist/esm/utils/dynamic-fields.js +16 -16
  701. package/dist/esm/utils/dynamic-fields.js.map +1 -0
  702. package/dist/esm/utils/format.js +13 -13
  703. package/dist/esm/utils/format.js.map +1 -0
  704. package/dist/esm/utils/index.js +15 -76
  705. package/dist/esm/utils/index.js.map +1 -0
  706. package/dist/esm/utils/move-registry.js +34 -17
  707. package/dist/esm/utils/move-registry.js.map +1 -0
  708. package/dist/esm/utils/sui-types.js +70 -54
  709. package/dist/esm/utils/sui-types.js.map +1 -0
  710. package/dist/esm/utils/suins.js +29 -29
  711. package/dist/esm/utils/suins.js.map +1 -0
  712. package/dist/esm/verify/index.js +5 -14
  713. package/dist/esm/verify/index.js.map +1 -0
  714. package/dist/esm/verify/verify.js +76 -93
  715. package/dist/esm/verify/verify.js.map +1 -0
  716. package/dist/esm/version.js +6 -6
  717. package/dist/esm/version.js.map +1 -0
  718. package/dist/esm/w/call/allocation.js +307 -402
  719. package/dist/esm/w/call/allocation.js.map +1 -0
  720. package/dist/esm/w/call/arb.js +100 -129
  721. package/dist/esm/w/call/arb.js.map +1 -0
  722. package/dist/esm/w/call/arbitration.js +1170 -1568
  723. package/dist/esm/w/call/arbitration.js.map +1 -0
  724. package/dist/esm/w/call/base.js +288 -315
  725. package/dist/esm/w/call/base.js.map +1 -0
  726. package/dist/esm/w/call/contact.js +318 -442
  727. package/dist/esm/w/call/contact.js.map +1 -0
  728. package/dist/esm/w/call/demand.js +673 -841
  729. package/dist/esm/w/call/demand.js.map +1 -0
  730. package/dist/esm/w/call/entity.js +162 -203
  731. package/dist/esm/w/call/entity.js.map +1 -0
  732. package/dist/esm/w/call/guard-ins.d.ts +1 -0
  733. package/dist/esm/w/call/guard-ins.js +4373 -4366
  734. package/dist/esm/w/call/guard-ins.js.map +1 -0
  735. package/dist/esm/w/call/guard.d.ts +10 -0
  736. package/dist/esm/w/call/guard.js +1061 -1115
  737. package/dist/esm/w/call/guard.js.map +1 -0
  738. package/dist/esm/w/call/index.d.ts +1 -1
  739. package/dist/esm/w/call/index.js +24 -54
  740. package/dist/esm/w/call/index.js.map +1 -0
  741. package/dist/esm/w/call/machine.js +1086 -1433
  742. package/dist/esm/w/call/machine.js.map +1 -0
  743. package/dist/esm/w/call/order.js +301 -448
  744. package/dist/esm/w/call/order.js.map +1 -0
  745. package/dist/esm/w/call/passport.js +204 -240
  746. package/dist/esm/w/call/passport.js.map +1 -0
  747. package/dist/esm/w/call/payment.js +177 -215
  748. package/dist/esm/w/call/payment.js.map +1 -0
  749. package/dist/esm/w/call/permission.js +1172 -1320
  750. package/dist/esm/w/call/permission.js.map +1 -0
  751. package/dist/esm/w/call/personal.js +121 -156
  752. package/dist/esm/w/call/personal.js.map +1 -0
  753. package/dist/esm/w/call/progress.js +625 -797
  754. package/dist/esm/w/call/progress.js.map +1 -0
  755. package/dist/esm/w/call/proof.js +61 -103
  756. package/dist/esm/w/call/proof.js.map +1 -0
  757. package/dist/esm/w/call/repository.js +1017 -1251
  758. package/dist/esm/w/call/repository.js.map +1 -0
  759. package/dist/esm/w/call/resource.js +108 -124
  760. package/dist/esm/w/call/resource.js.map +1 -0
  761. package/dist/esm/w/call/reward.js +660 -847
  762. package/dist/esm/w/call/reward.js.map +1 -0
  763. package/dist/esm/w/call/service.js +1849 -2400
  764. package/dist/esm/w/call/service.js.map +1 -0
  765. package/dist/esm/w/call/treasury.js +815 -1125
  766. package/dist/esm/w/call/treasury.js.map +1 -0
  767. package/dist/esm/w/call/util.js +553 -576
  768. package/dist/esm/w/call/util.js.map +1 -0
  769. package/dist/esm/w/common.d.ts +1 -1
  770. package/dist/esm/w/common.js +579 -580
  771. package/dist/esm/w/common.js.map +1 -0
  772. package/dist/esm/w/exception.js +570 -573
  773. package/dist/esm/w/exception.js.map +1 -0
  774. package/dist/esm/w/index.js +4 -0
  775. package/dist/esm/w/index.js.map +1 -0
  776. package/dist/esm/w/local/account.js +652 -709
  777. package/dist/esm/w/local/account.js.map +1 -0
  778. package/dist/esm/w/local/cache.js +176 -147
  779. package/dist/esm/w/local/cache.js.map +1 -0
  780. package/dist/esm/w/local/config.js +46 -60
  781. package/dist/esm/w/local/config.js.map +1 -0
  782. package/dist/esm/w/local/index.js +196 -273
  783. package/dist/esm/w/local/index.js.map +1 -0
  784. package/dist/esm/w/local/local.d.ts +2 -2
  785. package/dist/esm/w/local/local.js +631 -626
  786. package/dist/esm/w/local/local.js.map +1 -0
  787. package/dist/esm/w/local/storage.js +168 -136
  788. package/dist/esm/w/local/storage.js.map +1 -0
  789. package/dist/esm/w/local/token.js +149 -151
  790. package/dist/esm/w/local/token.js.map +1 -0
  791. package/dist/esm/w/local/util.js +45 -22
  792. package/dist/esm/w/local/util.js.map +1 -0
  793. package/dist/esm/w/local/wip.js +1038 -781
  794. package/dist/esm/w/local/wip.js.map +1 -0
  795. package/dist/esm/w/messenger/crypto.js +491 -387
  796. package/dist/esm/w/messenger/crypto.js.map +1 -0
  797. package/dist/esm/w/messenger/index.js +27 -24
  798. package/dist/esm/w/messenger/index.js.map +1 -0
  799. package/dist/esm/w/messenger/messenger-api.js +1111 -1017
  800. package/dist/esm/w/messenger/messenger-api.js.map +1 -0
  801. package/dist/esm/w/messenger/messenger-manager.js +944 -1052
  802. package/dist/esm/w/messenger/messenger-manager.js.map +1 -0
  803. package/dist/esm/w/messenger/messenger.d.ts +1 -1
  804. package/dist/esm/w/messenger/messenger.js +1258 -1421
  805. package/dist/esm/w/messenger/messenger.js.map +1 -0
  806. package/dist/esm/w/messenger/server.js +388 -499
  807. package/dist/esm/w/messenger/server.js.map +1 -0
  808. package/dist/esm/w/messenger/session.js +394 -399
  809. package/dist/esm/w/messenger/session.js.map +1 -0
  810. package/dist/esm/w/messenger/storage.js +840 -751
  811. package/dist/esm/w/messenger/storage.js.map +1 -0
  812. package/dist/esm/w/messenger/types.d.ts +2 -2
  813. package/dist/esm/w/messenger/types.js +80 -85
  814. package/dist/esm/w/messenger/types.js.map +1 -0
  815. package/dist/esm/w/messenger/utils.js +28 -16
  816. package/dist/esm/w/messenger/utils.js.map +1 -0
  817. package/dist/esm/w/query/bult-in.js +95 -100
  818. package/dist/esm/w/query/bult-in.js.map +1 -0
  819. package/dist/esm/w/query/event.js +128 -125
  820. package/dist/esm/w/query/event.js.map +1 -0
  821. package/dist/esm/w/query/index.js +3 -0
  822. package/dist/esm/w/query/index.js.map +1 -0
  823. package/dist/esm/w/query/object.js +1560 -1574
  824. package/dist/esm/w/query/object.js.map +1 -0
  825. package/dist/esm/w/query/received.js +57 -63
  826. package/dist/esm/w/query/received.js.map +1 -0
  827. package/dist/esm/w/query/util.js +48 -56
  828. package/dist/esm/w/query/util.js.map +1 -0
  829. package/dist/esm/w/util.js +578 -673
  830. package/dist/esm/w/util.js.map +1 -0
  831. package/package.json +14 -9
  832. package/dist/cjs/graphql/client.js +0 -98
  833. package/dist/cjs/graphql/core.js +0 -506
  834. package/dist/cjs/graphql/generated/2024.1/tada-env.js +0 -13141
  835. package/dist/cjs/graphql/generated/2024.1/tsconfig.tada.js +0 -11
  836. package/dist/cjs/graphql/generated/2024.4/tada-env.js +0 -13287
  837. package/dist/cjs/graphql/generated/2024.4/tsconfig.tada.js +0 -11
  838. package/dist/cjs/graphql/generated/latest/tada-env.js +0 -12925
  839. package/dist/cjs/graphql/generated/latest/tsconfig.tada.js +0 -11
  840. package/dist/cjs/graphql/generated/queries.js +0 -807
  841. package/dist/cjs/graphql/index.js +0 -25
  842. package/dist/cjs/graphql/schemas/2024.1/index.js +0 -28
  843. package/dist/cjs/graphql/schemas/2024.4/index.js +0 -28
  844. package/dist/cjs/graphql/schemas/latest/index.js +0 -28
  845. package/dist/cjs/graphql/types.js +0 -16
  846. package/dist/cjs/package.json +0 -5
  847. package/dist/cjs/w/local/.eslintrc.js +0 -15
  848. package/dist/cjs/w/messenger/.eslintrc.js +0 -15
  849. package/dist/cjs/zklogin/address.js +0 -93
  850. package/dist/cjs/zklogin/bcs.js +0 -41
  851. package/dist/cjs/zklogin/index.js +0 -45
  852. package/dist/cjs/zklogin/jwt-decode.js +0 -88
  853. package/dist/cjs/zklogin/jwt-utils.js +0 -128
  854. package/dist/cjs/zklogin/nonce.js +0 -60
  855. package/dist/cjs/zklogin/poseidon.js +0 -64
  856. package/dist/cjs/zklogin/publickey.js +0 -281
  857. package/dist/cjs/zklogin/signature.js +0 -57
  858. package/dist/cjs/zklogin/utils.js +0 -98
  859. package/dist/esm/graphql/client.js +0 -79
  860. package/dist/esm/graphql/core.js +0 -505
  861. package/dist/esm/graphql/generated/2024.1/tada-env.js +0 -13121
  862. package/dist/esm/graphql/generated/2024.1/tsconfig.tada.js +0 -16
  863. package/dist/esm/graphql/generated/2024.4/tada-env.js +0 -13267
  864. package/dist/esm/graphql/generated/2024.4/tsconfig.tada.js +0 -16
  865. package/dist/esm/graphql/generated/latest/tada-env.js +0 -12905
  866. package/dist/esm/graphql/generated/latest/tsconfig.tada.js +0 -16
  867. package/dist/esm/graphql/generated/queries.js +0 -788
  868. package/dist/esm/graphql/index.js +0 -8
  869. package/dist/esm/graphql/schemas/2024.1/index.js +0 -8
  870. package/dist/esm/graphql/schemas/2024.4/index.js +0 -8
  871. package/dist/esm/graphql/schemas/latest/index.js +0 -8
  872. package/dist/esm/graphql/types.js +0 -0
  873. package/dist/esm/package.json +0 -5
  874. package/dist/esm/w/local/.eslintrc.js +0 -23
  875. package/dist/esm/w/messenger/.eslintrc.js +0 -23
  876. package/dist/esm/zklogin/address.js +0 -78
  877. package/dist/esm/zklogin/bcs.js +0 -21
  878. package/dist/esm/zklogin/index.js +0 -38
  879. package/dist/esm/zklogin/jwt-decode.js +0 -68
  880. package/dist/esm/zklogin/jwt-utils.js +0 -108
  881. package/dist/esm/zklogin/nonce.js +0 -40
  882. package/dist/esm/zklogin/poseidon.js +0 -61
  883. package/dist/esm/zklogin/publickey.js +0 -265
  884. package/dist/esm/zklogin/signature.js +0 -37
  885. package/dist/esm/zklogin/utils.js +0 -78
  886. package/dist/tsconfig.esm.tsbuildinfo +0 -1
  887. 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