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,30 +1,9 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import {
5
- toTxObject,
6
- toTxString,
7
- isValidDescription,
8
- MAX_DESCRIPTION_LENGTH,
9
- isValidName,
10
- PackageAddress,
11
- IsValidArgType,
12
- isValidU8,
13
- repositoryFn,
14
- parseValueType
15
- } from "../common.js";
1
+ // Copyright (c) Wowok.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { toTxObject, toTxString, isValidDescription, MAX_DESCRIPTION_LENGTH, isValidName, PackageAddress, IsValidArgType, isValidU8, repositoryFn, parseValueType, } from "../common.js";
16
4
  import { W_ERROR, WErrors } from "../exception.js";
17
- import {
18
- owner_receive,
19
- validObjects,
20
- valueToBcsBytes,
21
- uint2address
22
- } from "../util.js";
23
- import {
24
- GetObjectExisted,
25
- GetObject,
26
- GetObjectDescription
27
- } from "../common.js";
5
+ import { owner_receive, validObjects, valueToBcsBytes, uint2address, } from "../util.js";
6
+ import { GetObjectExisted, GetObject, GetObjectDescription, } from "../common.js";
28
7
  import { GetAccountOrMark_Address } from "../local/index.js";
29
8
  import { LocalMark } from "../local/local.js";
30
9
  import { CallBase } from "./base.js";
@@ -33,1293 +12,1080 @@ import { IdFrom, ObjectType, parseIdFrom } from "../query/object.js";
33
12
  import { create as permissionCreate } from "./permission.js";
34
13
  import { queryObjectsWithType } from "../query/util.js";
35
14
  import { query_received } from "../query/received.js";
36
- const MAX_POLICY_DESCRIPTION_LEN = 500;
37
- const MAX_POLICY_COUNT = 50;
38
- const MAX_POLICY_GUARD_COUNT = 10;
39
- const MAX_DATA_SIZE = 40960;
40
- const MAX_ID_COUNT_ONCE = 100;
41
- const MAX_REWARD_COUNT = 20;
42
- class CallRepository extends CallBase {
43
- constructor(data2) {
44
- super();
45
- __publicField(this, "data");
46
- __publicField(this, "object_address");
47
- __publicField(this, "permission_address");
48
- __publicField(this, "new_permission_description");
49
- this.data = data2;
50
- }
51
- async prepare(env) {
52
- await super.prepare(env);
53
- if (!this.object_address) {
54
- this.object_address = await GetObjectExisted(this.data?.object);
15
+ // ================================================
16
+ // 常量定义
17
+ export const MAX_POLICY_DESCRIPTION_LEN = 500;
18
+ export const MAX_POLICY_COUNT = 50;
19
+ export const MAX_POLICY_GUARD_COUNT = 10;
20
+ export const MAX_DATA_SIZE = 40960; // 10KB
21
+ export const MAX_ID_COUNT_ONCE = 100;
22
+ export const MAX_REWARD_COUNT = 20;
23
+ // ================================================
24
+ // 数据操作类 TODO: submission无需提供id或data的情况,支持的不好,现在仍要填充并检查数据有效性
25
+ export class CallRepository extends CallBase {
26
+ data;
27
+ object_address = undefined;
28
+ permission_address = undefined;
29
+ new_permission_description = undefined;
30
+ constructor(data) {
31
+ super();
32
+ this.data = data;
55
33
  }
56
- if (this.object_address) {
57
- await this.update_content(
58
- env,
59
- ObjectType.Repository,
60
- this.object_address
61
- );
62
- if (!this.content)
63
- W_ERROR(
64
- WErrors.InvalidParam,
65
- "CallRepository_Data.data.object:" + this.object_address
66
- );
67
- this.permission_address = this.content.permission;
68
- if (!this.permission_address) {
69
- W_ERROR(
70
- WErrors.InvalidParam,
71
- "CallRepository_Data.data.object.permission is empty"
72
- );
73
- }
74
- } else {
75
- const n = GetObject(this.data.object);
76
- this.permission_address = await GetObjectExisted(n?.permission);
77
- this.new_permission_description = GetObjectDescription(
78
- n?.permission
79
- );
80
- }
81
- }
82
- async call(env) {
83
- await this.prepare(env);
84
- const perms = [];
85
- const guards = [];
86
- const add_guard = (guard) => {
87
- if (!guards.includes(guard)) {
88
- guards.push(guard);
89
- }
90
- };
91
- const add_perm = (index) => {
92
- if (this.permission_address && !perms.includes(index)) {
93
- perms.push(index);
94
- }
95
- };
96
- if (this.permission_address && !this.object_address) {
97
- add_perm(BuiltinPermissionIndex.REPOSITORY_NEW);
98
- }
99
- if (this.permission_address && this.data?.description != null && this.object_address) {
100
- add_perm(BuiltinPermissionIndex.REPOSITORY_DESCRIPTION);
101
- }
102
- if (this.permission_address && this.data?.policies != null) {
103
- add_perm(BuiltinPermissionIndex.REPOSITORY_POLICY);
34
+ async prepare(env) {
35
+ await super.prepare(env);
36
+ if (!this.object_address) {
37
+ this.object_address = await GetObjectExisted(this.data?.object);
38
+ }
39
+ if (this.object_address) {
40
+ await this.update_content(env, ObjectType.Repository, this.object_address);
41
+ if (!this.content)
42
+ W_ERROR(WErrors.InvalidParam, "CallRepository_Data.data.object:" + this.object_address);
43
+ this.permission_address = this.content.permission;
44
+ if (!this.permission_address) {
45
+ W_ERROR(WErrors.InvalidParam, "CallRepository_Data.data.object.permission is empty");
46
+ }
47
+ }
48
+ else {
49
+ const n = GetObject(this.data.object);
50
+ this.permission_address = await GetObjectExisted(n?.permission);
51
+ this.new_permission_description = GetObjectDescription(n?.permission);
52
+ }
104
53
  }
105
- if (this.data?.data_add != null) {
106
- if (!this.content) {
107
- W_ERROR(
108
- WErrors.InvalidParam,
109
- "CallRepository_Data.data.data_add fail because the Repository content not ready"
110
- );
111
- }
112
- const p = this.content.policies.find(
113
- (p2) => p2.name === this.data.data_add.name
114
- );
115
- if (!p) {
116
- W_ERROR(
117
- WErrors.InvalidParam,
118
- `Invalid policy name: ${this.data.data_add.name}`
119
- );
120
- }
121
- if ("items" in this.data.data_add) {
122
- for (const item of this.data.data_add.items) {
123
- for (const keyData of item.data) {
124
- let idAddress;
125
- if (typeof keyData.id === "number" || typeof keyData.id === "bigint" || typeof keyData.id === "string") {
126
- idAddress = uint2address(keyData.id);
127
- } else {
128
- const r = await GetAccountOrMark_Address(
129
- keyData.id
130
- );
131
- if (!r) {
132
- W_ERROR(
133
- WErrors.InvalidParam,
134
- `Invalid id address: ${keyData.id}`
135
- );
136
- }
137
- idAddress = r;
54
+ async call(env) {
55
+ await this.prepare(env); // prepare first.
56
+ const perms = [];
57
+ const guards = [];
58
+ const add_guard = (guard) => {
59
+ if (!guards.includes(guard)) {
60
+ guards.push(guard);
138
61
  }
139
- keyData.id = idAddress;
140
- }
141
- if (item.write_guard) {
142
- const guardAddress = await LocalMark.Instance().get_address(
143
- item.write_guard
144
- );
145
- if (guardAddress) {
146
- if (!p.write_guard.find(
147
- (g) => g.guard === guardAddress
148
- )) {
149
- W_ERROR(
150
- WErrors.InvalidParam,
151
- `${item.write_guard} (${guardAddress}) is not match in policy ${p.name} with write_guards: ${p.write_guard.map((g) => g.guard).join(", ")}`
152
- );
153
- }
154
- item.write_guard = guardAddress;
155
- add_guard(guardAddress);
156
- } else {
157
- W_ERROR(
158
- WErrors.InvalidParam,
159
- `Invalid write_guard address: ${item.write_guard}`
160
- );
62
+ };
63
+ const add_perm = (index) => {
64
+ if (this.permission_address && !perms.includes(index)) {
65
+ perms.push(index);
161
66
  }
162
- }
67
+ };
68
+ if (this.permission_address && !this.object_address) {
69
+ add_perm(BuiltinPermissionIndex.REPOSITORY_NEW);
70
+ }
71
+ if (this.permission_address &&
72
+ this.data?.description != null &&
73
+ this.object_address) {
74
+ add_perm(BuiltinPermissionIndex.REPOSITORY_DESCRIPTION);
163
75
  }
164
- } else if (this.data.data_add.write_guard) {
165
- const guardAddress = await LocalMark.Instance().get_address(
166
- this.data.data_add.write_guard
167
- );
168
- if (guardAddress) {
169
- if (!p.write_guard.find((g) => g.guard === guardAddress)) {
170
- W_ERROR(
171
- WErrors.InvalidParam,
172
- `Invalid write_guard address: ${this.data.data_add.write_guard} in policy ${p.name}`
173
- );
174
- }
175
- this.data.data_add.write_guard = guardAddress;
176
- add_guard(guardAddress);
177
- } else {
178
- W_ERROR(
179
- WErrors.InvalidParam,
180
- `Invalid write_guard address: ${this.data.data_add.write_guard}`
181
- );
76
+ if (this.permission_address && this.data?.policies != null) {
77
+ add_perm(BuiltinPermissionIndex.REPOSITORY_POLICY);
78
+ }
79
+ // 对id和guard做地址转换和检查
80
+ if (this.data?.data_add != null) {
81
+ if (!this.content) {
82
+ W_ERROR(WErrors.InvalidParam, "CallRepository_Data.data.data_add fail because the Repository content not ready");
83
+ }
84
+ const p = this.content.policies.find((p) => p.name === this.data.data_add.name);
85
+ if (!p) {
86
+ W_ERROR(WErrors.InvalidParam, `Invalid policy name: ${this.data.data_add.name}`);
87
+ }
88
+ // 处理 data_add 中的数据
89
+ if ("items" in this.data.data_add) {
90
+ // 遍历 items 数组
91
+ for (const item of this.data.data_add.items) {
92
+ // 遍历 data 数组,处理 id 字段
93
+ for (const keyData of item.data) {
94
+ // 将 id 转换为地址
95
+ let idAddress;
96
+ if (typeof keyData.id === "number" ||
97
+ typeof keyData.id === "bigint" ||
98
+ typeof keyData.id === "string") {
99
+ idAddress = uint2address(keyData.id);
100
+ }
101
+ else {
102
+ const r = await GetAccountOrMark_Address(keyData.id);
103
+ if (!r) {
104
+ W_ERROR(WErrors.InvalidParam, `Invalid id address: ${keyData.id}`);
105
+ }
106
+ idAddress = r;
107
+ }
108
+ keyData.id = idAddress;
109
+ }
110
+ // 处理 write_guard 字段
111
+ if (item.write_guard) {
112
+ // 将 write_guard 转换为地址
113
+ const guardAddress = await LocalMark.Instance().get_address(item.write_guard);
114
+ if (guardAddress) {
115
+ if (!p.write_guard.find((g) => g.guard === guardAddress)) {
116
+ W_ERROR(WErrors.InvalidParam, `${item.write_guard} (${guardAddress}) is not match in policy ${p.name} with write_guards: ${p.write_guard.map((g) => g.guard).join(", ")}`);
117
+ }
118
+ item.write_guard = guardAddress;
119
+ add_guard(guardAddress);
120
+ }
121
+ else {
122
+ W_ERROR(WErrors.InvalidParam, `Invalid write_guard address: ${item.write_guard}`);
123
+ }
124
+ }
125
+ }
126
+ }
127
+ else if (this.data.data_add.write_guard) {
128
+ // 处理 SignerOrClock 类型的 write_guard
129
+ const guardAddress = await LocalMark.Instance().get_address(this.data.data_add.write_guard);
130
+ if (guardAddress) {
131
+ if (!p.write_guard.find((g) => g.guard === guardAddress)) {
132
+ W_ERROR(WErrors.InvalidParam, `Invalid write_guard address: ${this.data.data_add.write_guard} in policy ${p.name}`);
133
+ }
134
+ this.data.data_add.write_guard = guardAddress;
135
+ add_guard(guardAddress);
136
+ }
137
+ else {
138
+ W_ERROR(WErrors.InvalidParam, `Invalid write_guard address: ${this.data.data_add.write_guard}`);
139
+ }
140
+ }
182
141
  }
183
- }
142
+ if (this.data?.data_remove != null) {
143
+ const p = this.content.policies.find((p) => p.name === this.data.data_remove.name);
144
+ if (!p) {
145
+ W_ERROR(WErrors.InvalidParam, `Invalid policy name: ${this.data.data_remove.name}`);
146
+ }
147
+ // 处理 data_remove 中的数据
148
+ if ("items" in this.data.data_remove) {
149
+ // 遍历 items 数组
150
+ for (const item of this.data.data_remove.items) {
151
+ // 处理 id 数组,转换每个 id 为地址
152
+ const idAddresses = [];
153
+ for (const id of item.id) {
154
+ let idAddress;
155
+ if (typeof id === "number" ||
156
+ typeof id === "bigint" ||
157
+ typeof id === "string") {
158
+ idAddress = uint2address(id);
159
+ }
160
+ else {
161
+ const r = await GetAccountOrMark_Address(id);
162
+ if (!r) {
163
+ W_ERROR(WErrors.InvalidParam, `Invalid id address: ${id}`);
164
+ }
165
+ idAddress = r;
166
+ }
167
+ idAddresses.push(idAddress);
168
+ }
169
+ item.id = idAddresses;
170
+ // 处理 write_guard 字段
171
+ if (item.write_guard) {
172
+ // 将 write_guard 转换为地址
173
+ const guardAddress = await LocalMark.Instance().get_address(item.write_guard);
174
+ if (guardAddress) {
175
+ if (!p.write_guard.find((g) => g.guard === guardAddress)) {
176
+ W_ERROR(WErrors.InvalidParam, `Invalid write_guard address: ${item.write_guard} in policy ${p.name}`);
177
+ }
178
+ item.write_guard = guardAddress;
179
+ add_guard(guardAddress);
180
+ }
181
+ else {
182
+ W_ERROR(WErrors.InvalidParam, `Invalid write_guard address: ${item.write_guard}`);
183
+ }
184
+ }
185
+ }
186
+ }
187
+ else {
188
+ if (this.data.data_remove.write_guard) {
189
+ // 处理 SignerOrClockBase 类型的 write_guard
190
+ const guardAddress = await LocalMark.Instance().get_address(this.data.data_remove.write_guard);
191
+ if (guardAddress) {
192
+ if (!p.write_guard.find((g) => g.guard === guardAddress)) {
193
+ W_ERROR(WErrors.InvalidParam, `Invalid write_guard address: ${this.data.data_remove.write_guard} in policy ${p.name}`);
194
+ }
195
+ this.data.data_remove.write_guard = guardAddress;
196
+ add_guard(guardAddress);
197
+ }
198
+ else {
199
+ W_ERROR(WErrors.InvalidParam, `Invalid write_guard address: ${this.data.data_remove.write_guard}`);
200
+ }
201
+ }
202
+ }
203
+ }
204
+ if (this.permission_address && this.data?.rewards != null) {
205
+ add_perm(BuiltinPermissionIndex.REPOSITORY_REWARD);
206
+ }
207
+ if (this.permission_address && this.data?.owner_receive != null) {
208
+ add_perm(BuiltinPermissionIndex.REPOSITORY_OWNER_RECEIVE);
209
+ }
210
+ if (this.permission_address && this.data?.um !== undefined) {
211
+ add_perm(BuiltinPermissionIndex.REPOSITORY_UM);
212
+ }
213
+ if (this.permission_address || guards.length > 0) {
214
+ return await this.check_permission_and_call(env, this.permission_address, perms, guards);
215
+ }
216
+ return await this.exec(env);
184
217
  }
185
- if (this.data?.data_remove != null) {
186
- const p = this.content.policies.find(
187
- (p2) => p2.name === this.data.data_remove.name
188
- );
189
- if (!p) {
190
- W_ERROR(
191
- WErrors.InvalidParam,
192
- `Invalid policy name: ${this.data.data_remove.name}`
193
- );
194
- }
195
- if ("items" in this.data.data_remove) {
196
- for (const item of this.data.data_remove.items) {
197
- const idAddresses = [];
198
- for (const id of item.id) {
199
- let idAddress;
200
- if (typeof id === "number" || typeof id === "bigint" || typeof id === "string") {
201
- idAddress = uint2address(id);
202
- } else {
203
- const r = await GetAccountOrMark_Address(id);
204
- if (!r) {
205
- W_ERROR(
206
- WErrors.InvalidParam,
207
- `Invalid id address: ${id}`
208
- );
209
- }
210
- idAddress = r;
218
+ async operate(env, tx, passport, submission) {
219
+ let permission = this.permission_address;
220
+ let object = this.object_address;
221
+ //console.dir(this.data, { depth: null });
222
+ if (!this.object_address) {
223
+ if (!permission) {
224
+ permission = newPermission(tx, this.new_permission_description ?? "");
225
+ }
226
+ if (permission) {
227
+ object = newRepository(tx, toTxObject(tx, permission), this.data?.description ?? "", passport);
228
+ }
229
+ }
230
+ if (!object || !permission) {
231
+ W_ERROR(WErrors.InvalidParam, "CallRepository_Data.data.object:" + this.object_address);
232
+ }
233
+ if (this.data?.description != null && this.object_address) {
234
+ description_set(tx, object, permission, this.data.description, passport);
235
+ }
236
+ if (this.data?.policies != null) {
237
+ if (this.data.policies.op === "set" ||
238
+ this.data.policies.op === "add") {
239
+ // 使用map和Promise.all并行处理,提高效率
240
+ await Promise.all(this.data.policies.policy.map(async (p) => {
241
+ // 处理 write_guard 数组
242
+ await Promise.all(p.write_guard.map(async (g) => {
243
+ const r = await LocalMark.Instance().get_address(g.guard);
244
+ if (r) {
245
+ g.guard = r;
246
+ }
247
+ else {
248
+ W_ERROR(WErrors.InvalidParam, `Invalid write_guard address: ${g.guard}`);
249
+ }
250
+ }));
251
+ // 处理 quote_guard 字段
252
+ if (p.quote_guard &&
253
+ typeof p.quote_guard === "string") {
254
+ const r = await LocalMark.Instance().get_address(p.quote_guard);
255
+ if (r) {
256
+ p.quote_guard = r;
257
+ }
258
+ else {
259
+ W_ERROR(WErrors.InvalidParam, `Invalid quote_guard address: ${p.quote_guard}`);
260
+ }
261
+ }
262
+ }));
211
263
  }
212
- idAddresses.push(idAddress);
213
- }
214
- item.id = idAddresses;
215
- if (item.write_guard) {
216
- const guardAddress = await LocalMark.Instance().get_address(
217
- item.write_guard
218
- );
219
- if (guardAddress) {
220
- if (!p.write_guard.find(
221
- (g) => g.guard === guardAddress
222
- )) {
223
- W_ERROR(
224
- WErrors.InvalidParam,
225
- `Invalid write_guard address: ${item.write_guard} in policy ${p.name}`
226
- );
227
- }
228
- item.write_guard = guardAddress;
229
- add_guard(guardAddress);
230
- } else {
231
- W_ERROR(
232
- WErrors.InvalidParam,
233
- `Invalid write_guard address: ${item.write_guard}`
234
- );
264
+ switch (this.data.policies.op) {
265
+ case "set": {
266
+ policy_set(tx, object, permission, this.data.policies.policy, passport);
267
+ break;
268
+ }
269
+ case "add": {
270
+ policy_add(tx, object, permission, this.data.policies.policy, passport);
271
+ break;
272
+ }
273
+ case "remove": {
274
+ policy_remove(tx, object, permission, this.data.policies.policy, passport);
275
+ break;
276
+ }
277
+ case "clear": {
278
+ policy_clear(tx, object, permission, passport);
279
+ break;
280
+ }
281
+ }
282
+ }
283
+ if (this.data?.data_add != null && this.content) {
284
+ // 查找 policy 中的 write_guard
285
+ const policy = this.content.policies.find((p) => p.name === this.data.data_add.name);
286
+ if (!policy) {
287
+ W_ERROR(WErrors.InvalidParam, `policy ${this.data.data_add.name} not found in policies ${this.content.policies.map((p) => p.name)}`);
288
+ }
289
+ if ("items" in this.data.data_add) {
290
+ data(tx, object, policy, this.data.data_add.items, passport);
291
+ }
292
+ else {
293
+ data_id_from(tx, object, policy, this.data.data_add, passport);
235
294
  }
236
- }
237
295
  }
238
- } else {
239
- if (this.data.data_remove.write_guard) {
240
- const guardAddress = await LocalMark.Instance().get_address(
241
- this.data.data_remove.write_guard
242
- );
243
- if (guardAddress) {
244
- if (!p.write_guard.find(
245
- (g) => g.guard === guardAddress
246
- )) {
247
- W_ERROR(
248
- WErrors.InvalidParam,
249
- `Invalid write_guard address: ${this.data.data_remove.write_guard} in policy ${p.name}`
250
- );
296
+ if (this.data?.data_remove != null) {
297
+ // 查找 policy 中的 write_guard
298
+ const policy = this.content.policies.find((p) => p.name === this.data.data_remove.name);
299
+ if (!policy) {
300
+ W_ERROR(WErrors.InvalidParam, `policy ${this.data.data_remove.name} not found in policies ${this.content.policies.map((p) => p.name)}`);
301
+ }
302
+ if ("items" in this.data.data_remove) {
303
+ data_remove(tx, object, policy, { items: this.data.data_remove.items }, passport);
304
+ }
305
+ else {
306
+ data_remove(tx, object, policy, { write_guard: this.data.data_remove.write_guard }, passport);
307
+ }
308
+ }
309
+ if (this.data?.rewards != null) {
310
+ switch (this.data.rewards.op) {
311
+ case "set":
312
+ case "add": {
313
+ if (this.data.rewards.objects.length > MAX_REWARD_COUNT) {
314
+ W_ERROR(WErrors.InvalidParam, `rewards count exceeds maximum limit ${MAX_REWARD_COUNT}`);
315
+ }
316
+ if (this.data.rewards.op === "set") {
317
+ reward_clear(tx, object, permission, passport);
318
+ }
319
+ // 无需localmark查询
320
+ const rewards = await queryObjectsWithType(env, this.data.rewards.objects, ObjectType.Reward, "reward::Reward", false);
321
+ rewards.forEach((reward) => {
322
+ reward_add(tx, object, permission, reward.object, reward.type, passport);
323
+ });
324
+ break;
325
+ }
326
+ case "remove": {
327
+ if (this.data.rewards.objects.length > MAX_REWARD_COUNT) {
328
+ W_ERROR(WErrors.InvalidParam, `rewards count exceeds maximum limit ${MAX_REWARD_COUNT}`);
329
+ }
330
+ const rewardAddrs = await LocalMark.Instance().get_many_address_availables(this.data.rewards.objects);
331
+ reward_remove(tx, object, permission, rewardAddrs, passport);
332
+ break;
333
+ }
334
+ case "clear": {
335
+ reward_clear(tx, object, permission, passport);
336
+ break;
337
+ }
251
338
  }
252
- this.data.data_remove.write_guard = guardAddress;
253
- add_guard(guardAddress);
254
- } else {
255
- W_ERROR(
256
- WErrors.InvalidParam,
257
- `Invalid write_guard address: ${this.data.data_remove.write_guard}`
258
- );
259
- }
260
339
  }
261
- }
340
+ if (this.data.owner_receive != null && this.object_address) {
341
+ if (this.data.owner_receive === "recently") {
342
+ this.data.owner_receive = await query_received({
343
+ object: this.object_address,
344
+ all_type: true,
345
+ });
346
+ }
347
+ await owner_receive(tx, object, permission, this.data.owner_receive, undefined, (name) => `${PackageAddress}::repository::${name}`, passport);
348
+ }
349
+ // 处理 um
350
+ if (this.data.um !== undefined) {
351
+ let um_address = null;
352
+ if (this.data.um) {
353
+ um_address =
354
+ (await LocalMark.Instance().get_address(this.data.um)) ||
355
+ null;
356
+ if (!um_address) {
357
+ W_ERROR(WErrors.InvalidParam, "CallRepository_Data.data.um:" + this.data.um);
358
+ }
359
+ }
360
+ um_set(tx, object, permission, um_address, passport);
361
+ }
362
+ if (!this.permission_address) {
363
+ const p = GetObject(this.data?.object);
364
+ await this.new_with_mark(env, tx, ObjectType.Permission, permissionCreate(tx, permission), GetObject(p.permission));
365
+ }
366
+ if (!this.object_address) {
367
+ await this.new_with_mark(env, tx, ObjectType.Repository, create(tx, object), GetObject(this.data?.object));
368
+ }
262
369
  }
263
- if (this.permission_address && this.data?.rewards != null) {
264
- add_perm(BuiltinPermissionIndex.REPOSITORY_REWARD);
370
+ }
371
+ export function create(tx, repository) {
372
+ validObjects([repository]);
373
+ return tx.moveCall({
374
+ target: repositoryFn("create"),
375
+ arguments: [toTxObject(tx, repository)],
376
+ });
377
+ }
378
+ function policy_guard(tx, param) {
379
+ validObjects([param.guard]);
380
+ if (param.id_from_submission != null &&
381
+ !isValidU8(param.id_from_submission)) {
382
+ W_ERROR(WErrors.IsValidU8, `Id from submission ${param.id_from_submission} is not valid`);
265
383
  }
266
- if (this.permission_address && this.data?.owner_receive != null) {
267
- add_perm(BuiltinPermissionIndex.REPOSITORY_OWNER_RECEIVE);
384
+ if (param.data_from_submission != null &&
385
+ !isValidU8(param.data_from_submission)) {
386
+ W_ERROR(WErrors.IsValidU8, `Data from submission ${param.data_from_submission} is not valid`);
268
387
  }
269
- if (this.permission_address && this.data?.um !== void 0) {
270
- add_perm(BuiltinPermissionIndex.REPOSITORY_UM);
388
+ return tx.moveCall({
389
+ target: repositoryFn("policy_guard"),
390
+ arguments: [
391
+ toTxObject(tx, param.guard),
392
+ tx.pure.option("u8", param.id_from_submission ?? null),
393
+ tx.pure.option("u8", param.data_from_submission ?? null),
394
+ ],
395
+ });
396
+ }
397
+ export function policy(tx, param) {
398
+ if (typeof param.name === "string" && !isValidName(param.name)) {
399
+ W_ERROR(WErrors.InvalidParam, `Policy name ${param.name} is not valid`);
271
400
  }
272
- if (this.permission_address || guards.length > 0) {
273
- return await this.check_permission_and_call(
274
- env,
275
- this.permission_address,
276
- perms,
277
- guards
278
- );
401
+ if (typeof param.description === "string" &&
402
+ !isValidDescription(param.description)) {
403
+ W_ERROR(WErrors.IsValidDescription, `Description exceeds maximum length ${MAX_DESCRIPTION_LENGTH}`);
279
404
  }
280
- return await this.exec(env);
281
- }
282
- async operate(env, tx, passport, submission) {
283
- let permission = this.permission_address;
284
- let object = this.object_address;
285
- if (!this.object_address) {
286
- if (!permission) {
287
- permission = newPermission(
288
- tx,
289
- this.new_permission_description ?? ""
290
- );
291
- }
292
- if (permission) {
293
- object = newRepository(
294
- tx,
295
- toTxObject(tx, permission),
296
- this.data?.description ?? "",
297
- passport
298
- );
299
- }
405
+ validObjects([
406
+ param.quote_guard,
407
+ ...param.write_guard.map((guard) => guard.guard),
408
+ ]);
409
+ const idFrom = parseIdFrom(param.id_from);
410
+ const obj = tx.moveCall({
411
+ target: repositoryFn("policy"),
412
+ arguments: [
413
+ toTxString(tx, param.name),
414
+ toTxString(tx, param.description),
415
+ tx.pure.u8(idFrom),
416
+ tx.pure.u8(param.value_type),
417
+ ],
418
+ });
419
+ if (param.quote_guard) {
420
+ // some
421
+ tx.moveCall({
422
+ target: repositoryFn("policy_quote_guard_set"),
423
+ arguments: [obj, toTxObject(tx, param.quote_guard)],
424
+ });
300
425
  }
301
- if (!object || !permission) {
302
- W_ERROR(
303
- WErrors.InvalidParam,
304
- "CallRepository_Data.data.object:" + this.object_address
305
- );
426
+ else if (param.quote_guard === null) {
427
+ //@ null
428
+ tx.moveCall({
429
+ target: repositoryFn("policy_quote_guard_none"),
430
+ arguments: [obj],
431
+ });
432
+ }
433
+ if (param.write_guard.length > 0) {
434
+ tx.moveCall({
435
+ target: repositoryFn("policy_write_guard_set"),
436
+ arguments: [
437
+ obj,
438
+ tx.makeMoveVec({
439
+ elements: param.write_guard.map((guard) => policy_guard(tx, guard)),
440
+ type: `${PackageAddress}::repository::PolicyGuard`,
441
+ }),
442
+ ],
443
+ });
306
444
  }
307
- if (this.data?.description != null && this.object_address) {
308
- description_set(
309
- tx,
310
- object,
311
- permission,
312
- this.data.description,
313
- passport
314
- );
445
+ return obj;
446
+ }
447
+ export async function data_id_from(tx, repository, policy, data, passport) {
448
+ // RepIdData类型
449
+ const idFrom = parseIdFrom(policy.id_from);
450
+ if (idFrom === IdFrom.None) {
451
+ W_ERROR(WErrors.InvalidParam, `id_from must be set when id_from is IdFrom.None`);
315
452
  }
316
- if (this.data?.policies != null) {
317
- if (this.data.policies.op === "set" || this.data.policies.op === "add") {
318
- await Promise.all(
319
- this.data.policies.policy.map(async (p) => {
320
- await Promise.all(
321
- p.write_guard.map(async (g) => {
322
- const r = await LocalMark.Instance().get_address(
323
- g.guard
324
- );
325
- if (r) {
326
- g.guard = r;
327
- } else {
328
- W_ERROR(
329
- WErrors.InvalidParam,
330
- `Invalid write_guard address: ${g.guard}`
331
- );
332
- }
333
- })
334
- );
335
- if (p.quote_guard && typeof p.quote_guard === "string") {
336
- const r = await LocalMark.Instance().get_address(
337
- p.quote_guard
338
- );
339
- if (r) {
340
- p.quote_guard = r;
341
- } else {
342
- W_ERROR(
343
- WErrors.InvalidParam,
344
- `Invalid quote_guard address: ${p.quote_guard}`
345
- );
346
- }
347
- }
348
- })
349
- );
350
- }
351
- switch (this.data.policies.op) {
352
- case "set": {
353
- policy_set(
354
- tx,
355
- object,
356
- permission,
357
- this.data.policies.policy,
358
- passport
359
- );
360
- break;
453
+ if (data.write_guard) {
454
+ if (!passport) {
455
+ W_ERROR(WErrors.InvalidParam, `passport is required when write_guard is specified`);
361
456
  }
362
- case "add": {
363
- policy_add(
364
- tx,
365
- object,
366
- permission,
367
- this.data.policies.policy,
368
- passport
369
- );
370
- break;
457
+ if (policy.write_guard.find((guard) => guard.guard === data.write_guard)) {
458
+ const policyValueType1 = parseValueType(policy.value_type);
459
+ tx.moveCall({
460
+ target: repositoryFn("data_when_id_from_set_with_passport"),
461
+ arguments: [
462
+ toTxObject(tx, repository),
463
+ toTxString(tx, policy.name),
464
+ tx.pure.address(data.write_guard),
465
+ tx.pure.vector("u8", await valueToBcsBytes(policyValueType1, data.data)),
466
+ tx.object.clock(),
467
+ passport,
468
+ ],
469
+ });
470
+ }
471
+ else {
472
+ W_ERROR(WErrors.InvalidParam, `Write guard ${data.write_guard} is not in policy ${policy.name}`);
371
473
  }
372
- case "remove": {
373
- policy_remove(
374
- tx,
375
- object,
376
- permission,
377
- this.data.policies.policy,
378
- passport
379
- );
380
- break;
474
+ }
475
+ else {
476
+ if (policy.write_guard.length === 0) {
477
+ const policyValueType2 = parseValueType(policy.value_type);
478
+ tx.moveCall({
479
+ target: repositoryFn("data_when_id_from_set"),
480
+ arguments: [
481
+ toTxObject(tx, repository),
482
+ toTxString(tx, policy.name),
483
+ tx.pure.vector("u8", await valueToBcsBytes(policyValueType2, data.data)),
484
+ tx.object.clock(),
485
+ ],
486
+ });
381
487
  }
382
- case "clear": {
383
- policy_clear(tx, object, permission, passport);
384
- break;
488
+ else {
489
+ W_ERROR(WErrors.InvalidParam, `specify write guard in policy ${policy.write_guard.map((guard) => guard.guard)}`);
385
490
  }
386
- }
387
491
  }
388
- if (this.data?.data_add != null && this.content) {
389
- const policy2 = this.content.policies.find(
390
- (p) => p.name === this.data.data_add.name
391
- );
392
- if (!policy2) {
393
- W_ERROR(
394
- WErrors.InvalidParam,
395
- `policy ${this.data.data_add.name} not found in policies ${this.content.policies.map((p) => p.name)}`
396
- );
397
- }
398
- if ("items" in this.data.data_add) {
399
- data(tx, object, policy2, this.data.data_add.items, passport);
400
- } else {
401
- data_id_from(
402
- tx,
403
- object,
404
- policy2,
405
- this.data.data_add,
406
- passport
407
- );
408
- }
492
+ }
493
+ export function um_set(tx, repository, permission, um, passport) {
494
+ validObjects([repository, permission]);
495
+ if (um) {
496
+ if (passport) {
497
+ tx.moveCall({
498
+ target: repositoryFn(`um_set_with_passport`),
499
+ arguments: [
500
+ toTxObject(tx, repository),
501
+ toTxObject(tx, permission),
502
+ passport,
503
+ toTxObject(tx, um),
504
+ tx.object.mutRegistrar(),
505
+ tx.object.clock(),
506
+ ],
507
+ });
508
+ }
509
+ else {
510
+ tx.moveCall({
511
+ target: repositoryFn(`um_set`),
512
+ arguments: [
513
+ toTxObject(tx, repository),
514
+ toTxObject(tx, permission),
515
+ toTxObject(tx, um),
516
+ tx.object.mutRegistrar(),
517
+ tx.object.clock(),
518
+ ],
519
+ });
520
+ }
409
521
  }
410
- if (this.data?.data_remove != null) {
411
- const policy2 = this.content.policies.find(
412
- (p) => p.name === this.data.data_remove.name
413
- );
414
- if (!policy2) {
415
- W_ERROR(
416
- WErrors.InvalidParam,
417
- `policy ${this.data.data_remove.name} not found in policies ${this.content.policies.map((p) => p.name)}`
418
- );
419
- }
420
- if ("items" in this.data.data_remove) {
421
- data_remove(
422
- tx,
423
- object,
424
- policy2,
425
- { items: this.data.data_remove.items },
426
- passport
427
- );
428
- } else {
429
- data_remove(
430
- tx,
431
- object,
432
- policy2,
433
- { write_guard: this.data.data_remove.write_guard },
434
- passport
435
- );
436
- }
522
+ else {
523
+ if (passport) {
524
+ tx.moveCall({
525
+ target: repositoryFn(`um_none_with_passport`),
526
+ arguments: [
527
+ toTxObject(tx, repository),
528
+ toTxObject(tx, permission),
529
+ passport,
530
+ tx.object.mutRegistrar(),
531
+ ],
532
+ });
533
+ }
534
+ else {
535
+ tx.moveCall({
536
+ target: repositoryFn(`um_none`),
537
+ arguments: [
538
+ toTxObject(tx, repository),
539
+ toTxObject(tx, permission),
540
+ tx.object.mutRegistrar(),
541
+ ],
542
+ });
543
+ }
544
+ }
545
+ }
546
+ export async function data(tx, repository, policy, data, passport) {
547
+ validObjects([repository]);
548
+ if (policy.id_from !== IdFrom.None) {
549
+ W_ERROR(WErrors.InvalidParam, `id_from must be IdFrom.None when items is provided`);
437
550
  }
438
- if (this.data?.rewards != null) {
439
- switch (this.data.rewards.op) {
440
- case "set":
441
- case "add": {
442
- if (this.data.rewards.objects.length > MAX_REWARD_COUNT) {
443
- W_ERROR(
444
- WErrors.InvalidParam,
445
- `rewards count exceeds maximum limit ${MAX_REWARD_COUNT}`
446
- );
447
- }
448
- if (this.data.rewards.op === "set") {
449
- reward_clear(tx, object, permission, passport);
450
- }
451
- const rewards = await queryObjectsWithType(
452
- env,
453
- this.data.rewards.objects,
454
- ObjectType.Reward,
455
- "reward::Reward",
456
- false
457
- );
458
- rewards.forEach((reward) => {
459
- reward_add(
460
- tx,
461
- object,
462
- permission,
463
- reward.object,
464
- reward.type,
465
- passport
466
- );
467
- });
468
- break;
551
+ // 优化分组逻辑
552
+ const noGuardItems = [];
553
+ const regularGuards = [];
554
+ const mixedItems = [];
555
+ // 分类处理每个item
556
+ for (const item of data) {
557
+ if (!item.write_guard) {
558
+ if (policy.write_guard.length === 0) {
559
+ // 1. 无guard组
560
+ noGuardItems.push(item);
561
+ }
562
+ else {
563
+ W_ERROR(WErrors.InvalidParam, `specify write guard in policy ${policy.write_guard.map((guard) => guard.guard)}`);
564
+ }
469
565
  }
470
- case "remove": {
471
- if (this.data.rewards.objects.length > MAX_REWARD_COUNT) {
472
- W_ERROR(
473
- WErrors.InvalidParam,
474
- `rewards count exceeds maximum limit ${MAX_REWARD_COUNT}`
475
- );
476
- }
477
- const rewardAddrs = await LocalMark.Instance().get_many_address_availables(
478
- this.data.rewards.objects
479
- );
480
- reward_remove(
481
- tx,
482
- object,
483
- permission,
484
- rewardAddrs,
485
- passport
486
- );
487
- break;
566
+ else {
567
+ const guard = item.write_guard;
568
+ // 查找policy中对应的guard设置
569
+ const policyGuard = policy.write_guard.find((g) => g.guard === guard);
570
+ if (!policyGuard) {
571
+ W_ERROR(WErrors.InvalidParam, `Guard ${guard} not found in policy ${policy.write_guard.map((guard) => guard.guard)}`);
572
+ }
573
+ // 检查guard是否有设置id_from_submission
574
+ const hasSubmissionSettings = policyGuard.id_from_submission !== undefined;
575
+ if (hasSubmissionSettings) {
576
+ // 3. 有submission设置的guard - 取最后一个元素的id和data
577
+ if (item.data.length > 0) {
578
+ const lastItem = item.data[item.data.length - 1];
579
+ // 检查guard是否已存在,如果存在则覆盖
580
+ const existingIndex = mixedItems.findIndex((item) => item.guard === guard);
581
+ if (existingIndex >= 0) {
582
+ // 覆盖已存在的条目
583
+ //@ notice: 前面已将地址转换为了string
584
+ mixedItems[existingIndex] = {
585
+ guard,
586
+ id: lastItem.id,
587
+ data: lastItem.data,
588
+ };
589
+ }
590
+ else {
591
+ // 添加新条目
592
+ mixedItems.push({
593
+ guard,
594
+ id: lastItem.id,
595
+ data: lastItem.data,
596
+ });
597
+ }
598
+ } /* else {
599
+ W_ERROR(
600
+ WErrors.InvalidParam,
601
+ `Guard ${guard} has submission settings but no data provided`,
602
+ );
603
+ } 忽略空数据项*/
604
+ }
605
+ else {
606
+ // 2. 无submission设置的guard - 按guard单独分组
607
+ const existingGuard = regularGuards.find((g) => g.guard === guard);
608
+ if (existingGuard) {
609
+ existingGuard.items.push(item);
610
+ }
611
+ else {
612
+ regularGuards.push({ guard, items: [item] });
613
+ }
614
+ }
488
615
  }
489
- case "clear": {
490
- reward_clear(tx, object, permission, passport);
491
- break;
616
+ }
617
+ // 处理无guard组
618
+ if (noGuardItems.length > 0) {
619
+ const policyValueType3 = parseValueType(policy.value_type);
620
+ const ids = noGuardItems.flatMap((item) => item.data.map((keyData) => keyData.id));
621
+ const dataBytes = await Promise.all(noGuardItems
622
+ .flatMap((item) => item.data)
623
+ .map(async (keyData) => await valueToBcsBytes(policyValueType3, keyData.data)));
624
+ if (ids.length !== dataBytes.length) {
625
+ W_ERROR(WErrors.InvalidParam, `Id and data arrays must have the same length`);
492
626
  }
493
- }
627
+ //@ notice: 前面已将地址转换为了string
628
+ tx.moveCall({
629
+ target: repositoryFn("id_data"),
630
+ arguments: [
631
+ toTxObject(tx, repository),
632
+ toTxString(tx, policy.name),
633
+ tx.pure.vector("address", ids),
634
+ tx.makeMoveVec({
635
+ elements: dataBytes.map((arr) => tx.pure.vector("u8", arr)),
636
+ type: "vector<u8>",
637
+ }),
638
+ ],
639
+ });
494
640
  }
495
- if (this.data.owner_receive != null && this.object_address) {
496
- if (this.data.owner_receive === "recently") {
497
- this.data.owner_receive = await query_received({
498
- object: this.object_address,
499
- all_type: true
641
+ // 处理有submission设置的guard组(合并成一个调用)
642
+ if (mixedItems.length > 0) {
643
+ if (!passport) {
644
+ W_ERROR(WErrors.InvalidParam, "Guard specified but no passport provided");
645
+ }
646
+ // 提取所有ids、data和guards
647
+ const policyValueType4 = parseValueType(policy.value_type);
648
+ const ids = mixedItems.map((item) => item.id);
649
+ const dataBytes = await Promise.all(mixedItems.map(async (item) => await valueToBcsBytes(policyValueType4, item.data)));
650
+ const guards = mixedItems.map((item) => item.guard);
651
+ if (ids.length !== dataBytes.length || ids.length !== guards.length) {
652
+ W_ERROR(WErrors.InvalidParam, `Id, data, and guard arrays must have the same length`);
653
+ }
654
+ // 调用id_data_mixed_with_passport
655
+ tx.moveCall({
656
+ target: repositoryFn("id_data_mixed_with_passport"),
657
+ arguments: [
658
+ toTxObject(tx, repository),
659
+ toTxString(tx, policy.name),
660
+ tx.pure.vector("address", guards),
661
+ tx.pure.vector("address", ids),
662
+ tx.makeMoveVec({
663
+ elements: dataBytes.map((arr) => tx.pure.vector("u8", arr)),
664
+ type: "vector<u8>",
665
+ }),
666
+ toTxObject(tx, passport),
667
+ ],
500
668
  });
501
- }
502
- await owner_receive(
503
- tx,
504
- object,
505
- permission,
506
- this.data.owner_receive,
507
- void 0,
508
- (name) => `${PackageAddress}::repository::${name}`,
509
- passport
510
- );
511
669
  }
512
- if (this.data.um !== void 0) {
513
- let um_address = null;
514
- if (this.data.um) {
515
- um_address = await LocalMark.Instance().get_address(this.data.um) || null;
516
- if (!um_address) {
517
- W_ERROR(
518
- WErrors.InvalidParam,
519
- "CallRepository_Data.data.um:" + this.data.um
520
- );
670
+ // 处理无submission设置的guard组(每个guard单独调用)
671
+ for (const { guard, items } of regularGuards) {
672
+ if (!passport) {
673
+ W_ERROR(WErrors.InvalidParam, "Guard specified but no passport provided");
674
+ }
675
+ const policyValueType5 = parseValueType(policy.value_type);
676
+ const keyDataItems = items.flatMap((item) => item.data);
677
+ const ids = keyDataItems.map((keyData) => keyData.id);
678
+ const dataBytes = await Promise.all(keyDataItems.map(async (keyData) => await valueToBcsBytes(policyValueType5, keyData.data)));
679
+ if (ids.length !== dataBytes.length) {
680
+ W_ERROR(WErrors.InvalidParam, `Id and data arrays must have the same length for guard ${guard}`);
521
681
  }
522
- }
523
- um_set(tx, object, permission, um_address, passport);
682
+ // 调用id_data_with_passport
683
+ tx.moveCall({
684
+ target: repositoryFn("id_data_with_passport"),
685
+ arguments: [
686
+ toTxObject(tx, repository),
687
+ toTxString(tx, policy.name),
688
+ tx.pure.address(guard),
689
+ tx.pure.vector("address", ids),
690
+ tx.makeMoveVec({
691
+ elements: dataBytes.map((arr) => tx.pure.vector("u8", arr)),
692
+ type: "vector<u8>",
693
+ }),
694
+ toTxObject(tx, passport),
695
+ ],
696
+ });
524
697
  }
525
- if (!this.permission_address) {
526
- const p = GetObject(this.data?.object);
527
- await this.new_with_mark(
528
- env,
529
- tx,
530
- ObjectType.Permission,
531
- permissionCreate(tx, permission),
532
- GetObject(p.permission)
533
- );
698
+ }
699
+ // ================================================
700
+ // 构造函数和设置函数
701
+ export function newRepository(tx, permission, description, passport) {
702
+ validObjects([permission, passport]);
703
+ if (typeof description === "string" && !isValidDescription(description)) {
704
+ W_ERROR(WErrors.IsValidDescription, `Description exceeds maximum length ${MAX_DESCRIPTION_LENGTH}`);
534
705
  }
535
- if (!this.object_address) {
536
- await this.new_with_mark(
537
- env,
538
- tx,
539
- ObjectType.Repository,
540
- create(tx, object),
541
- GetObject(this.data?.object)
542
- );
706
+ if (passport) {
707
+ return tx.moveCall({
708
+ target: repositoryFn("new_with_passport"),
709
+ arguments: [
710
+ toTxObject(tx, permission),
711
+ toTxObject(tx, passport),
712
+ toTxString(tx, description),
713
+ tx.object.mutRegistrar(),
714
+ tx.object.clock(),
715
+ ],
716
+ });
717
+ }
718
+ else {
719
+ return tx.moveCall({
720
+ target: repositoryFn("new"),
721
+ arguments: [
722
+ toTxObject(tx, permission),
723
+ toTxString(tx, description),
724
+ tx.object.mutRegistrar(),
725
+ tx.object.clock(),
726
+ ],
727
+ });
543
728
  }
544
- }
545
- }
546
- function create(tx, repository) {
547
- validObjects([repository]);
548
- return tx.moveCall({
549
- target: repositoryFn("create"),
550
- arguments: [toTxObject(tx, repository)]
551
- });
552
- }
553
- function policy_guard(tx, param) {
554
- validObjects([param.guard]);
555
- if (param.id_from_submission != null && !isValidU8(param.id_from_submission)) {
556
- W_ERROR(
557
- WErrors.IsValidU8,
558
- `Id from submission ${param.id_from_submission} is not valid`
559
- );
560
- }
561
- if (param.data_from_submission != null && !isValidU8(param.data_from_submission)) {
562
- W_ERROR(
563
- WErrors.IsValidU8,
564
- `Data from submission ${param.data_from_submission} is not valid`
565
- );
566
- }
567
- return tx.moveCall({
568
- target: repositoryFn("policy_guard"),
569
- arguments: [
570
- toTxObject(tx, param.guard),
571
- tx.pure.option("u8", param.id_from_submission ?? null),
572
- tx.pure.option("u8", param.data_from_submission ?? null)
573
- ]
574
- });
575
- }
576
- function policy(tx, param) {
577
- if (typeof param.name === "string" && !isValidName(param.name)) {
578
- W_ERROR(WErrors.InvalidParam, `Policy name ${param.name} is not valid`);
579
- }
580
- if (typeof param.description === "string" && !isValidDescription(param.description)) {
581
- W_ERROR(
582
- WErrors.IsValidDescription,
583
- `Description exceeds maximum length ${MAX_DESCRIPTION_LENGTH}`
584
- );
585
- }
586
- validObjects([
587
- param.quote_guard,
588
- ...param.write_guard.map((guard) => guard.guard)
589
- ]);
590
- const idFrom = parseIdFrom(param.id_from);
591
- const obj = tx.moveCall({
592
- target: repositoryFn("policy"),
593
- arguments: [
594
- toTxString(tx, param.name),
595
- toTxString(tx, param.description),
596
- tx.pure.u8(idFrom),
597
- tx.pure.u8(param.value_type)
598
- ]
599
- });
600
- if (param.quote_guard) {
601
- tx.moveCall({
602
- target: repositoryFn("policy_quote_guard_set"),
603
- arguments: [obj, toTxObject(tx, param.quote_guard)]
604
- });
605
- } else if (param.quote_guard === null) {
606
- tx.moveCall({
607
- target: repositoryFn("policy_quote_guard_none"),
608
- arguments: [obj]
609
- });
610
- }
611
- if (param.write_guard.length > 0) {
612
- tx.moveCall({
613
- target: repositoryFn("policy_write_guard_set"),
614
- arguments: [
615
- obj,
616
- tx.makeMoveVec({
617
- elements: param.write_guard.map(
618
- (guard) => policy_guard(tx, guard)
619
- ),
620
- type: `${PackageAddress}::repository::PolicyGuard`
621
- })
622
- ]
623
- });
624
- }
625
- return obj;
626
729
  }
627
- async function data_id_from(tx, repository, policy2, data2, passport) {
628
- const idFrom = parseIdFrom(policy2.id_from);
629
- if (idFrom === IdFrom.None) {
630
- W_ERROR(
631
- WErrors.InvalidParam,
632
- `id_from must be set when id_from is IdFrom.None`
633
- );
634
- }
635
- if (data2.write_guard) {
636
- if (!passport) {
637
- W_ERROR(
638
- WErrors.InvalidParam,
639
- `passport is required when write_guard is specified`
640
- );
730
+ export function description_set(tx, repository, permission, description, passport) {
731
+ validObjects([repository, permission, passport]);
732
+ if (typeof description === "string" && !isValidDescription(description)) {
733
+ W_ERROR(WErrors.IsValidDescription, `Description exceeds maximum length ${MAX_DESCRIPTION_LENGTH}`);
641
734
  }
642
- if (policy2.write_guard.find(
643
- (guard) => guard.guard === data2.write_guard
644
- )) {
645
- const policyValueType1 = parseValueType(policy2.value_type);
646
- tx.moveCall({
647
- target: repositoryFn("data_when_id_from_set_with_passport"),
648
- arguments: [
649
- toTxObject(tx, repository),
650
- toTxString(tx, policy2.name),
651
- tx.pure.address(data2.write_guard),
652
- tx.pure.vector(
653
- "u8",
654
- await valueToBcsBytes(policyValueType1, data2.data)
655
- ),
656
- tx.object.clock(),
657
- passport
658
- ]
659
- });
660
- } else {
661
- W_ERROR(
662
- WErrors.InvalidParam,
663
- `Write guard ${data2.write_guard} is not in policy ${policy2.name}`
664
- );
735
+ if (passport) {
736
+ tx.moveCall({
737
+ target: repositoryFn("description_set_with_passport"),
738
+ arguments: [
739
+ toTxObject(tx, repository),
740
+ toTxObject(tx, permission),
741
+ toTxObject(tx, passport),
742
+ toTxString(tx, description),
743
+ ],
744
+ });
665
745
  }
666
- } else {
667
- if (policy2.write_guard.length === 0) {
668
- const policyValueType2 = parseValueType(policy2.value_type);
669
- tx.moveCall({
670
- target: repositoryFn("data_when_id_from_set"),
671
- arguments: [
672
- toTxObject(tx, repository),
673
- toTxString(tx, policy2.name),
674
- tx.pure.vector(
675
- "u8",
676
- await valueToBcsBytes(policyValueType2, data2.data)
677
- ),
678
- tx.object.clock()
679
- ]
680
- });
681
- } else {
682
- W_ERROR(
683
- WErrors.InvalidParam,
684
- `specify write guard in policy ${policy2.write_guard.map((guard) => guard.guard)}`
685
- );
746
+ else {
747
+ tx.moveCall({
748
+ target: repositoryFn("description_set"),
749
+ arguments: [
750
+ toTxObject(tx, repository),
751
+ toTxObject(tx, permission),
752
+ toTxString(tx, description),
753
+ ],
754
+ });
686
755
  }
687
- }
688
756
  }
689
- function um_set(tx, repository, permission, um, passport) {
690
- validObjects([repository, permission]);
691
- if (um) {
692
- if (passport) {
693
- tx.moveCall({
694
- target: repositoryFn(`um_set_with_passport`),
695
- arguments: [
696
- toTxObject(tx, repository),
697
- toTxObject(tx, permission),
698
- passport,
699
- toTxObject(tx, um),
700
- tx.object.mutRegistrar(),
701
- tx.object.clock()
702
- ]
703
- });
704
- } else {
705
- tx.moveCall({
706
- target: repositoryFn(`um_set`),
707
- arguments: [
708
- toTxObject(tx, repository),
709
- toTxObject(tx, permission),
710
- toTxObject(tx, um),
711
- tx.object.mutRegistrar(),
712
- tx.object.clock()
713
- ]
714
- });
757
+ export function policy_add(tx, repository, permission, policies, passport) {
758
+ if (policies.length === 0) {
759
+ return;
715
760
  }
716
- } else {
761
+ validObjects([repository, permission, passport]);
717
762
  if (passport) {
718
- tx.moveCall({
719
- target: repositoryFn(`um_none_with_passport`),
720
- arguments: [
721
- toTxObject(tx, repository),
722
- toTxObject(tx, permission),
723
- passport,
724
- tx.object.mutRegistrar()
725
- ]
726
- });
727
- } else {
728
- tx.moveCall({
729
- target: repositoryFn(`um_none`),
730
- arguments: [
731
- toTxObject(tx, repository),
732
- toTxObject(tx, permission),
733
- tx.object.mutRegistrar()
734
- ]
735
- });
763
+ tx.moveCall({
764
+ target: repositoryFn("policy_add_with_passport"),
765
+ arguments: [
766
+ toTxObject(tx, repository),
767
+ toTxObject(tx, permission),
768
+ toTxObject(tx, passport),
769
+ tx.makeMoveVec({
770
+ elements: policies.map((p) => policy(tx, p)),
771
+ type: `${PackageAddress}::repository::PolicyRule`,
772
+ }),
773
+ tx.object.mutRegistrar(),
774
+ tx.object.clock(),
775
+ ],
776
+ });
736
777
  }
737
- }
738
- }
739
- async function data(tx, repository, policy2, data2, passport) {
740
- validObjects([repository]);
741
- if (policy2.id_from !== IdFrom.None) {
742
- W_ERROR(
743
- WErrors.InvalidParam,
744
- `id_from must be IdFrom.None when items is provided`
745
- );
746
- }
747
- const noGuardItems = [];
748
- const regularGuards = [];
749
- const mixedItems = [];
750
- for (const item of data2) {
751
- if (!item.write_guard) {
752
- if (policy2.write_guard.length === 0) {
753
- noGuardItems.push(item);
754
- } else {
755
- W_ERROR(
756
- WErrors.InvalidParam,
757
- `specify write guard in policy ${policy2.write_guard.map((guard) => guard.guard)}`
758
- );
759
- }
760
- } else {
761
- const guard = item.write_guard;
762
- const policyGuard = policy2.write_guard.find(
763
- (g) => g.guard === guard
764
- );
765
- if (!policyGuard) {
766
- W_ERROR(
767
- WErrors.InvalidParam,
768
- `Guard ${guard} not found in policy ${policy2.write_guard.map((guard2) => guard2.guard)}`
769
- );
770
- }
771
- const hasSubmissionSettings = policyGuard.id_from_submission !== void 0;
772
- if (hasSubmissionSettings) {
773
- if (item.data.length > 0) {
774
- const lastItem = item.data[item.data.length - 1];
775
- const existingIndex = mixedItems.findIndex(
776
- (item2) => item2.guard === guard
777
- );
778
- if (existingIndex >= 0) {
779
- mixedItems[existingIndex] = {
780
- guard,
781
- id: lastItem.id,
782
- data: lastItem.data
783
- };
784
- } else {
785
- mixedItems.push({
786
- guard,
787
- id: lastItem.id,
788
- data: lastItem.data
789
- });
790
- }
791
- }
792
- } else {
793
- const existingGuard = regularGuards.find(
794
- (g) => g.guard === guard
795
- );
796
- if (existingGuard) {
797
- existingGuard.items.push(item);
798
- } else {
799
- regularGuards.push({ guard, items: [item] });
800
- }
801
- }
778
+ else {
779
+ tx.moveCall({
780
+ target: repositoryFn("policy_add"),
781
+ arguments: [
782
+ toTxObject(tx, repository),
783
+ toTxObject(tx, permission),
784
+ tx.makeMoveVec({
785
+ elements: policies.map((p) => policy(tx, p)),
786
+ type: `${PackageAddress}::repository::PolicyRule`,
787
+ }),
788
+ tx.object.mutRegistrar(),
789
+ tx.object.clock(),
790
+ ],
791
+ });
802
792
  }
803
- }
804
- if (noGuardItems.length > 0) {
805
- const policyValueType3 = parseValueType(policy2.value_type);
806
- const ids = noGuardItems.flatMap(
807
- (item) => item.data.map((keyData) => keyData.id)
808
- );
809
- const dataBytes = await Promise.all(
810
- noGuardItems.flatMap((item) => item.data).map(
811
- async (keyData) => await valueToBcsBytes(policyValueType3, keyData.data)
812
- )
813
- );
814
- if (ids.length !== dataBytes.length) {
815
- W_ERROR(
816
- WErrors.InvalidParam,
817
- `Id and data arrays must have the same length`
818
- );
793
+ }
794
+ export function policy_set(tx, repository, permission, policies, passport) {
795
+ validObjects([repository, permission, passport]);
796
+ if (passport) {
797
+ tx.moveCall({
798
+ target: repositoryFn("policy_set_with_passport"),
799
+ arguments: [
800
+ toTxObject(tx, repository),
801
+ toTxObject(tx, permission),
802
+ toTxObject(tx, passport),
803
+ tx.makeMoveVec({
804
+ elements: policies.map((p) => policy(tx, p)),
805
+ type: `${PackageAddress}::repository::PolicyRule`,
806
+ }),
807
+ tx.object.mutRegistrar(),
808
+ tx.object.clock(),
809
+ ],
810
+ });
819
811
  }
820
- tx.moveCall({
821
- target: repositoryFn("id_data"),
822
- arguments: [
823
- toTxObject(tx, repository),
824
- toTxString(tx, policy2.name),
825
- tx.pure.vector("address", ids),
826
- tx.makeMoveVec({
827
- elements: dataBytes.map((arr) => tx.pure.vector("u8", arr)),
828
- type: "vector<u8>"
829
- })
830
- ]
831
- });
832
- }
833
- if (mixedItems.length > 0) {
834
- if (!passport) {
835
- W_ERROR(
836
- WErrors.InvalidParam,
837
- "Guard specified but no passport provided"
838
- );
812
+ else {
813
+ tx.moveCall({
814
+ target: repositoryFn("policy_set"),
815
+ arguments: [
816
+ toTxObject(tx, repository),
817
+ toTxObject(tx, permission),
818
+ tx.makeMoveVec({
819
+ elements: policies.map((p) => policy(tx, p)),
820
+ type: `${PackageAddress}::repository::PolicyRule`,
821
+ }),
822
+ tx.object.mutRegistrar(),
823
+ tx.object.clock(),
824
+ ],
825
+ });
839
826
  }
840
- const policyValueType4 = parseValueType(policy2.value_type);
841
- const ids = mixedItems.map((item) => item.id);
842
- const dataBytes = await Promise.all(
843
- mixedItems.map(
844
- async (item) => await valueToBcsBytes(policyValueType4, item.data)
845
- )
846
- );
847
- const guards = mixedItems.map((item) => item.guard);
848
- if (ids.length !== dataBytes.length || ids.length !== guards.length) {
849
- W_ERROR(
850
- WErrors.InvalidParam,
851
- `Id, data, and guard arrays must have the same length`
852
- );
827
+ }
828
+ export function policy_remove(tx, repository, permission, policies, passport) {
829
+ if (policies.length === 0) {
830
+ return;
853
831
  }
854
- tx.moveCall({
855
- target: repositoryFn("id_data_mixed_with_passport"),
856
- arguments: [
857
- toTxObject(tx, repository),
858
- toTxString(tx, policy2.name),
859
- tx.pure.vector("address", guards),
860
- tx.pure.vector("address", ids),
861
- tx.makeMoveVec({
862
- elements: dataBytes.map((arr) => tx.pure.vector("u8", arr)),
863
- type: "vector<u8>"
864
- }),
865
- toTxObject(tx, passport)
866
- ]
867
- });
868
- }
869
- for (const { guard, items } of regularGuards) {
870
- if (!passport) {
871
- W_ERROR(
872
- WErrors.InvalidParam,
873
- "Guard specified but no passport provided"
874
- );
832
+ validObjects([repository, permission, passport]);
833
+ if (passport) {
834
+ tx.moveCall({
835
+ target: repositoryFn("policy_remove_with_passport"),
836
+ arguments: [
837
+ toTxObject(tx, repository),
838
+ toTxObject(tx, permission),
839
+ toTxObject(tx, passport),
840
+ tx.pure.vector("string", policies),
841
+ tx.object.mutRegistrar(),
842
+ ],
843
+ });
875
844
  }
876
- const policyValueType5 = parseValueType(policy2.value_type);
877
- const keyDataItems = items.flatMap((item) => item.data);
878
- const ids = keyDataItems.map((keyData) => keyData.id);
879
- const dataBytes = await Promise.all(
880
- keyDataItems.map(
881
- async (keyData) => await valueToBcsBytes(policyValueType5, keyData.data)
882
- )
883
- );
884
- if (ids.length !== dataBytes.length) {
885
- W_ERROR(
886
- WErrors.InvalidParam,
887
- `Id and data arrays must have the same length for guard ${guard}`
888
- );
845
+ else {
846
+ tx.moveCall({
847
+ target: repositoryFn("policy_remove"),
848
+ arguments: [
849
+ toTxObject(tx, repository),
850
+ toTxObject(tx, permission),
851
+ tx.pure.vector("string", policies),
852
+ tx.object.mutRegistrar(),
853
+ ],
854
+ });
889
855
  }
890
- tx.moveCall({
891
- target: repositoryFn("id_data_with_passport"),
892
- arguments: [
893
- toTxObject(tx, repository),
894
- toTxString(tx, policy2.name),
895
- tx.pure.address(guard),
896
- tx.pure.vector("address", ids),
897
- tx.makeMoveVec({
898
- elements: dataBytes.map((arr) => tx.pure.vector("u8", arr)),
899
- type: "vector<u8>"
900
- }),
901
- toTxObject(tx, passport)
902
- ]
903
- });
904
- }
905
- }
906
- function newRepository(tx, permission, description, passport) {
907
- validObjects([permission, passport]);
908
- if (typeof description === "string" && !isValidDescription(description)) {
909
- W_ERROR(
910
- WErrors.IsValidDescription,
911
- `Description exceeds maximum length ${MAX_DESCRIPTION_LENGTH}`
912
- );
913
- }
914
- if (passport) {
915
- return tx.moveCall({
916
- target: repositoryFn("new_with_passport"),
917
- arguments: [
918
- toTxObject(tx, permission),
919
- toTxObject(tx, passport),
920
- toTxString(tx, description),
921
- tx.object.mutRegistrar(),
922
- tx.object.clock()
923
- ]
924
- });
925
- } else {
926
- return tx.moveCall({
927
- target: repositoryFn("new"),
928
- arguments: [
929
- toTxObject(tx, permission),
930
- toTxString(tx, description),
931
- tx.object.mutRegistrar(),
932
- tx.object.clock()
933
- ]
934
- });
935
- }
936
- }
937
- function description_set(tx, repository, permission, description, passport) {
938
- validObjects([repository, permission, passport]);
939
- if (typeof description === "string" && !isValidDescription(description)) {
940
- W_ERROR(
941
- WErrors.IsValidDescription,
942
- `Description exceeds maximum length ${MAX_DESCRIPTION_LENGTH}`
943
- );
944
- }
945
- if (passport) {
946
- tx.moveCall({
947
- target: repositoryFn("description_set_with_passport"),
948
- arguments: [
949
- toTxObject(tx, repository),
950
- toTxObject(tx, permission),
951
- toTxObject(tx, passport),
952
- toTxString(tx, description)
953
- ]
954
- });
955
- } else {
956
- tx.moveCall({
957
- target: repositoryFn("description_set"),
958
- arguments: [
959
- toTxObject(tx, repository),
960
- toTxObject(tx, permission),
961
- toTxString(tx, description)
962
- ]
963
- });
964
- }
965
- }
966
- function policy_add(tx, repository, permission, policies, passport) {
967
- if (policies.length === 0) {
968
- return;
969
- }
970
- validObjects([repository, permission, passport]);
971
- if (passport) {
972
- tx.moveCall({
973
- target: repositoryFn("policy_add_with_passport"),
974
- arguments: [
975
- toTxObject(tx, repository),
976
- toTxObject(tx, permission),
977
- toTxObject(tx, passport),
978
- tx.makeMoveVec({
979
- elements: policies.map((p) => policy(tx, p)),
980
- type: `${PackageAddress}::repository::PolicyRule`
981
- }),
982
- tx.object.mutRegistrar(),
983
- tx.object.clock()
984
- ]
985
- });
986
- } else {
987
- tx.moveCall({
988
- target: repositoryFn("policy_add"),
989
- arguments: [
990
- toTxObject(tx, repository),
991
- toTxObject(tx, permission),
992
- tx.makeMoveVec({
993
- elements: policies.map((p) => policy(tx, p)),
994
- type: `${PackageAddress}::repository::PolicyRule`
995
- }),
996
- tx.object.mutRegistrar(),
997
- tx.object.clock()
998
- ]
999
- });
1000
- }
1001
- }
1002
- function policy_set(tx, repository, permission, policies, passport) {
1003
- validObjects([repository, permission, passport]);
1004
- if (passport) {
1005
- tx.moveCall({
1006
- target: repositoryFn("policy_set_with_passport"),
1007
- arguments: [
1008
- toTxObject(tx, repository),
1009
- toTxObject(tx, permission),
1010
- toTxObject(tx, passport),
1011
- tx.makeMoveVec({
1012
- elements: policies.map((p) => policy(tx, p)),
1013
- type: `${PackageAddress}::repository::PolicyRule`
1014
- }),
1015
- tx.object.mutRegistrar(),
1016
- tx.object.clock()
1017
- ]
1018
- });
1019
- } else {
1020
- tx.moveCall({
1021
- target: repositoryFn("policy_set"),
1022
- arguments: [
1023
- toTxObject(tx, repository),
1024
- toTxObject(tx, permission),
1025
- tx.makeMoveVec({
1026
- elements: policies.map((p) => policy(tx, p)),
1027
- type: `${PackageAddress}::repository::PolicyRule`
1028
- }),
1029
- tx.object.mutRegistrar(),
1030
- tx.object.clock()
1031
- ]
1032
- });
1033
- }
1034
- }
1035
- function policy_remove(tx, repository, permission, policies, passport) {
1036
- if (policies.length === 0) {
1037
- return;
1038
- }
1039
- validObjects([repository, permission, passport]);
1040
- if (passport) {
1041
- tx.moveCall({
1042
- target: repositoryFn("policy_remove_with_passport"),
1043
- arguments: [
1044
- toTxObject(tx, repository),
1045
- toTxObject(tx, permission),
1046
- toTxObject(tx, passport),
1047
- tx.pure.vector("string", policies),
1048
- tx.object.mutRegistrar()
1049
- ]
1050
- });
1051
- } else {
1052
- tx.moveCall({
1053
- target: repositoryFn("policy_remove"),
1054
- arguments: [
1055
- toTxObject(tx, repository),
1056
- toTxObject(tx, permission),
1057
- tx.pure.vector("string", policies),
1058
- tx.object.mutRegistrar()
1059
- ]
1060
- });
1061
- }
1062
- }
1063
- function policy_clear(tx, repository, permission, passport) {
1064
- validObjects([repository, permission, passport]);
1065
- if (passport) {
1066
- tx.moveCall({
1067
- target: repositoryFn("policy_clear_with_passport"),
1068
- arguments: [
1069
- toTxObject(tx, repository),
1070
- toTxObject(tx, permission),
1071
- toTxObject(tx, passport)
1072
- ]
1073
- });
1074
- } else {
1075
- tx.moveCall({
1076
- target: repositoryFn("policy_clear"),
1077
- arguments: [toTxObject(tx, repository), toTxObject(tx, permission)]
1078
- });
1079
- }
1080
856
  }
1081
- function reward_add(tx, repository, permission, reward, reward_type, passport) {
1082
- validObjects([repository, permission, passport, reward]);
1083
- if (!IsValidArgType(reward_type)) {
1084
- W_ERROR(
1085
- WErrors.IsValidArgType,
1086
- `Reward type ${reward_type} is not valid`
1087
- );
1088
- }
1089
- if (passport) {
1090
- tx.moveCall({
1091
- target: repositoryFn("reward_add_with_passport"),
1092
- arguments: [
1093
- toTxObject(tx, repository),
1094
- toTxObject(tx, permission),
1095
- toTxObject(tx, passport),
1096
- tx.object(reward)
1097
- ],
1098
- typeArguments: [reward_type]
1099
- });
1100
- } else {
1101
- tx.moveCall({
1102
- target: repositoryFn("reward_add"),
1103
- arguments: [
1104
- toTxObject(tx, repository),
1105
- toTxObject(tx, permission),
1106
- tx.object(reward)
1107
- ],
1108
- typeArguments: [reward_type]
1109
- });
1110
- }
1111
- }
1112
- function reward_remove(tx, repository, permission, rewards, passport) {
1113
- if (rewards.length === 0) {
1114
- return;
1115
- }
1116
- validObjects([repository, permission, passport, ...rewards]);
1117
- if (passport) {
1118
- tx.moveCall({
1119
- target: repositoryFn("reward_remove_with_passport"),
1120
- arguments: [
1121
- toTxObject(tx, repository),
1122
- toTxObject(tx, permission),
1123
- toTxObject(tx, passport),
1124
- tx.pure.vector("address", rewards)
1125
- ]
1126
- });
1127
- } else {
1128
- tx.moveCall({
1129
- target: repositoryFn("reward_remove"),
1130
- arguments: [
1131
- toTxObject(tx, repository),
1132
- toTxObject(tx, permission),
1133
- tx.pure.vector("address", rewards)
1134
- ]
1135
- });
1136
- }
1137
- }
1138
- function reward_clear(tx, repository, permission, passport) {
1139
- validObjects([repository, permission, passport]);
1140
- if (passport) {
1141
- tx.moveCall({
1142
- target: repositoryFn("reward_clear_with_passport"),
1143
- arguments: [
1144
- toTxObject(tx, repository),
1145
- toTxObject(tx, permission),
1146
- toTxObject(tx, passport)
1147
- ]
1148
- });
1149
- } else {
1150
- tx.moveCall({
1151
- target: repositoryFn("reward_clear"),
1152
- arguments: [toTxObject(tx, repository), toTxObject(tx, permission)]
1153
- });
1154
- }
857
+ export function policy_clear(tx, repository, permission, passport) {
858
+ validObjects([repository, permission, passport]);
859
+ if (passport) {
860
+ tx.moveCall({
861
+ target: repositoryFn("policy_clear_with_passport"),
862
+ arguments: [
863
+ toTxObject(tx, repository),
864
+ toTxObject(tx, permission),
865
+ toTxObject(tx, passport),
866
+ ],
867
+ });
868
+ }
869
+ else {
870
+ tx.moveCall({
871
+ target: repositoryFn("policy_clear"),
872
+ arguments: [toTxObject(tx, repository), toTxObject(tx, permission)],
873
+ });
874
+ }
1155
875
  }
1156
- async function data_remove(tx, repository, policy2, param, passport) {
1157
- validObjects([repository]);
1158
- if ("items" in param) {
1159
- if (policy2.id_from !== IdFrom.None) {
1160
- W_ERROR(
1161
- WErrors.InvalidParam,
1162
- `id_from must be IdFrom.None when items is provided`
1163
- );
876
+ export function reward_add(tx, repository, permission, reward, reward_type, passport) {
877
+ validObjects([repository, permission, passport, reward]);
878
+ if (!IsValidArgType(reward_type)) {
879
+ W_ERROR(WErrors.IsValidArgType, `Reward type ${reward_type} is not valid`);
1164
880
  }
1165
- const noGuardItems = [];
1166
- const regularGuards = [];
1167
- const mixedItems = [];
1168
- for (const item of param.items) {
1169
- if (!item.write_guard) {
1170
- if (policy2.write_guard.length === 0) {
1171
- noGuardItems.push(...item.id);
1172
- } else {
1173
- W_ERROR(
1174
- WErrors.InvalidParam,
1175
- `specify write guard in policy ${policy2.write_guard.map((guard) => guard.guard)}`
1176
- );
1177
- }
1178
- } else {
1179
- const guard = item.write_guard;
1180
- const policyGuard = policy2.write_guard.find(
1181
- (g) => g.guard === guard
1182
- );
1183
- if (!policyGuard) {
1184
- W_ERROR(
1185
- WErrors.InvalidParam,
1186
- `Guard ${guard} not found in policy ${policy2.write_guard.map((guard2) => guard2.guard)}`
1187
- );
1188
- }
1189
- const hasSubmissionSettings = policyGuard.id_from_submission !== void 0;
1190
- if (hasSubmissionSettings) {
1191
- mixedItems.push(guard);
1192
- } else {
1193
- const existingGuard = regularGuards.find(
1194
- (g) => g.guard === guard
1195
- );
1196
- if (existingGuard) {
1197
- existingGuard.id.push(...item.id);
1198
- } else {
1199
- regularGuards.push({
1200
- guard,
1201
- id: [...item.id]
1202
- });
1203
- }
1204
- }
1205
- }
881
+ if (passport) {
882
+ tx.moveCall({
883
+ target: repositoryFn("reward_add_with_passport"),
884
+ arguments: [
885
+ toTxObject(tx, repository),
886
+ toTxObject(tx, permission),
887
+ toTxObject(tx, passport),
888
+ tx.object(reward),
889
+ ],
890
+ typeArguments: [reward_type],
891
+ });
1206
892
  }
1207
- if (noGuardItems.length > 0) {
1208
- if (policy2.write_guard.length !== 0) {
1209
- W_ERROR(
1210
- WErrors.InvalidParam,
1211
- `specify write guard in policy ${policy2.write_guard.map((guard) => guard.guard)}`
1212
- );
1213
- }
1214
- const uniqueIds = [...new Set(noGuardItems)];
1215
- tx.moveCall({
1216
- target: repositoryFn("id_data_remove"),
1217
- arguments: [
1218
- toTxObject(tx, repository),
1219
- toTxString(tx, policy2.name),
1220
- tx.pure.vector("address", uniqueIds)
1221
- ]
1222
- });
893
+ else {
894
+ tx.moveCall({
895
+ target: repositoryFn("reward_add"),
896
+ arguments: [
897
+ toTxObject(tx, repository),
898
+ toTxObject(tx, permission),
899
+ tx.object(reward),
900
+ ],
901
+ typeArguments: [reward_type],
902
+ });
1223
903
  }
1224
- if (mixedItems.length > 0) {
1225
- if (!passport) {
1226
- W_ERROR(
1227
- WErrors.InvalidParam,
1228
- "Guard specified but no passport provided"
1229
- );
1230
- }
1231
- const uniqueIds = [...new Set(mixedItems)];
1232
- tx.moveCall({
1233
- target: repositoryFn("id_data_mixed_remove_with_passport"),
1234
- arguments: [
1235
- toTxObject(tx, repository),
1236
- toTxString(tx, policy2.name),
1237
- tx.pure.vector("address", uniqueIds),
1238
- toTxObject(tx, passport)
1239
- ]
1240
- });
904
+ }
905
+ export function reward_remove(tx, repository, permission, rewards, passport) {
906
+ if (rewards.length === 0) {
907
+ return;
1241
908
  }
1242
- for (const { guard, id } of regularGuards) {
1243
- const uniqueIds = [...new Set(id)];
1244
- tx.moveCall({
1245
- target: repositoryFn("id_data_remove_with_passport"),
1246
- arguments: [
1247
- toTxObject(tx, repository),
1248
- toTxString(tx, policy2.name),
1249
- tx.pure.address(guard),
1250
- tx.pure.vector("address", uniqueIds),
1251
- toTxObject(tx, passport)
1252
- ]
1253
- });
909
+ validObjects([repository, permission, passport, ...rewards]);
910
+ if (passport) {
911
+ tx.moveCall({
912
+ target: repositoryFn("reward_remove_with_passport"),
913
+ arguments: [
914
+ toTxObject(tx, repository),
915
+ toTxObject(tx, permission),
916
+ toTxObject(tx, passport),
917
+ tx.pure.vector("address", rewards),
918
+ ],
919
+ });
1254
920
  }
1255
- } else {
1256
- const guard = param.write_guard;
1257
- if (policy2.id_from === IdFrom.None) {
1258
- W_ERROR(
1259
- WErrors.InvalidParam,
1260
- `id_from must be set when id_from is IdFrom.None`
1261
- );
921
+ else {
922
+ tx.moveCall({
923
+ target: repositoryFn("reward_remove"),
924
+ arguments: [
925
+ toTxObject(tx, repository),
926
+ toTxObject(tx, permission),
927
+ tx.pure.vector("address", rewards),
928
+ ],
929
+ });
1262
930
  }
1263
- if (guard) {
1264
- if (policy2.write_guard.find((g) => g.guard === guard)) {
931
+ }
932
+ export function reward_clear(tx, repository, permission, passport) {
933
+ validObjects([repository, permission, passport]);
934
+ if (passport) {
1265
935
  tx.moveCall({
1266
- target: repositoryFn(
1267
- "data_remove_when_id_from_set_with_passport"
1268
- ),
1269
- arguments: [
1270
- toTxObject(tx, repository),
1271
- toTxString(tx, policy2.name),
1272
- tx.pure.address(guard),
1273
- tx.object.clock(),
1274
- toTxObject(tx, passport)
1275
- ]
936
+ target: repositoryFn("reward_clear_with_passport"),
937
+ arguments: [
938
+ toTxObject(tx, repository),
939
+ toTxObject(tx, permission),
940
+ toTxObject(tx, passport),
941
+ ],
1276
942
  });
1277
- } else {
1278
- W_ERROR(
1279
- WErrors.InvalidParam,
1280
- `Write guard ${guard} is not in policy ${policy2.write_guard.map((guard2) => guard2.guard)}`
1281
- );
1282
- }
1283
- } else {
1284
- if (policy2.write_guard.length === 0) {
943
+ }
944
+ else {
1285
945
  tx.moveCall({
1286
- target: repositoryFn("data_remove_when_id_from_set"),
1287
- arguments: [
1288
- toTxObject(tx, repository),
1289
- toTxString(tx, policy2.name),
1290
- tx.object.clock()
1291
- ]
946
+ target: repositoryFn("reward_clear"),
947
+ arguments: [toTxObject(tx, repository), toTxObject(tx, permission)],
1292
948
  });
1293
- } else {
1294
- W_ERROR(
1295
- WErrors.InvalidParam,
1296
- `specify write guard in policy ${policy2.write_guard.map((guard2) => guard2.guard)}`
1297
- );
1298
- }
1299
949
  }
1300
- }
1301
950
  }
1302
- export {
1303
- CallRepository,
1304
- MAX_DATA_SIZE,
1305
- MAX_ID_COUNT_ONCE,
1306
- MAX_POLICY_COUNT,
1307
- MAX_POLICY_DESCRIPTION_LEN,
1308
- MAX_POLICY_GUARD_COUNT,
1309
- MAX_REWARD_COUNT,
1310
- create,
1311
- data,
1312
- data_id_from,
1313
- data_remove,
1314
- description_set,
1315
- newRepository,
1316
- policy,
1317
- policy_add,
1318
- policy_clear,
1319
- policy_remove,
1320
- policy_set,
1321
- reward_add,
1322
- reward_clear,
1323
- reward_remove,
1324
- um_set
1325
- };
951
+ export async function data_remove(tx, repository, policy, param, passport) {
952
+ validObjects([repository]);
953
+ // 检查参数类型
954
+ if ("items" in param) {
955
+ if (policy.id_from !== IdFrom.None) {
956
+ W_ERROR(WErrors.InvalidParam, `id_from must be IdFrom.None when items is provided`);
957
+ }
958
+ // 优化分组逻辑
959
+ const noGuardItems = [];
960
+ const regularGuards = [];
961
+ const mixedItems = [];
962
+ // 分类处理每个item
963
+ for (const item of param.items) {
964
+ if (!item.write_guard) {
965
+ // 1. 无guard组
966
+ if (policy.write_guard.length === 0) {
967
+ noGuardItems.push(...item.id);
968
+ }
969
+ else {
970
+ W_ERROR(WErrors.InvalidParam, `specify write guard in policy ${policy.write_guard.map((guard) => guard.guard)}`);
971
+ }
972
+ }
973
+ else {
974
+ const guard = item.write_guard;
975
+ // 查找policy中对应的guard设置
976
+ const policyGuard = policy.write_guard.find((g) => g.guard === guard);
977
+ if (!policyGuard) {
978
+ W_ERROR(WErrors.InvalidParam, `Guard ${guard} not found in policy ${policy.write_guard.map((guard) => guard.guard)}`);
979
+ }
980
+ // 检查guard是否有设置id_from_submission
981
+ const hasSubmissionSettings = policyGuard.id_from_submission !== undefined;
982
+ if (hasSubmissionSettings) {
983
+ // 3. 有submission设置的guard - 取最后一个id和data
984
+ mixedItems.push(guard);
985
+ }
986
+ else {
987
+ // 2. 无submission设置的guard - 按guard单独分组
988
+ const existingGuard = regularGuards.find((g) => g.guard === guard);
989
+ if (existingGuard) {
990
+ existingGuard.id.push(...item.id);
991
+ }
992
+ else {
993
+ regularGuards.push({
994
+ guard,
995
+ id: [...item.id],
996
+ });
997
+ }
998
+ }
999
+ }
1000
+ }
1001
+ // 处理无guard组
1002
+ if (noGuardItems.length > 0) {
1003
+ if (policy.write_guard.length !== 0) {
1004
+ W_ERROR(WErrors.InvalidParam, `specify write guard in policy ${policy.write_guard.map((guard) => guard.guard)}`);
1005
+ }
1006
+ // 去重处理
1007
+ const uniqueIds = [...new Set(noGuardItems)];
1008
+ // 调用id_data_remove
1009
+ tx.moveCall({
1010
+ target: repositoryFn("id_data_remove"),
1011
+ arguments: [
1012
+ toTxObject(tx, repository),
1013
+ toTxString(tx, policy.name),
1014
+ tx.pure.vector("address", uniqueIds),
1015
+ ],
1016
+ });
1017
+ }
1018
+ // 处理有submission设置的guard组(合并成一个调用)
1019
+ if (mixedItems.length > 0) {
1020
+ if (!passport) {
1021
+ W_ERROR(WErrors.InvalidParam, "Guard specified but no passport provided");
1022
+ }
1023
+ const uniqueIds = [...new Set(mixedItems)];
1024
+ // 调用id_data_mixed_with_passport
1025
+ tx.moveCall({
1026
+ target: repositoryFn("id_data_mixed_remove_with_passport"),
1027
+ arguments: [
1028
+ toTxObject(tx, repository),
1029
+ toTxString(tx, policy.name),
1030
+ tx.pure.vector("address", uniqueIds),
1031
+ toTxObject(tx, passport),
1032
+ ],
1033
+ });
1034
+ }
1035
+ // 处理无submission设置的guard组(每个guard单独调用)
1036
+ for (const { guard, id } of regularGuards) {
1037
+ const uniqueIds = [...new Set(id)];
1038
+ // 调用id_data_with_passport
1039
+ tx.moveCall({
1040
+ target: repositoryFn("id_data_remove_with_passport"),
1041
+ arguments: [
1042
+ toTxObject(tx, repository),
1043
+ toTxString(tx, policy.name),
1044
+ tx.pure.address(guard),
1045
+ tx.pure.vector("address", uniqueIds),
1046
+ toTxObject(tx, passport),
1047
+ ],
1048
+ });
1049
+ }
1050
+ }
1051
+ else {
1052
+ const guard = param.write_guard;
1053
+ // RepIdData类型
1054
+ if (policy.id_from === IdFrom.None) {
1055
+ W_ERROR(WErrors.InvalidParam, `id_from must be set when id_from is IdFrom.None`);
1056
+ }
1057
+ if (guard) {
1058
+ if (policy.write_guard.find((g) => g.guard === guard)) {
1059
+ tx.moveCall({
1060
+ target: repositoryFn("data_remove_when_id_from_set_with_passport"),
1061
+ arguments: [
1062
+ toTxObject(tx, repository),
1063
+ toTxString(tx, policy.name),
1064
+ tx.pure.address(guard),
1065
+ tx.object.clock(),
1066
+ toTxObject(tx, passport),
1067
+ ],
1068
+ });
1069
+ }
1070
+ else {
1071
+ W_ERROR(WErrors.InvalidParam, `Write guard ${guard} is not in policy ${policy.write_guard.map((guard) => guard.guard)}`);
1072
+ }
1073
+ }
1074
+ else {
1075
+ if (policy.write_guard.length === 0) {
1076
+ tx.moveCall({
1077
+ target: repositoryFn("data_remove_when_id_from_set"),
1078
+ arguments: [
1079
+ toTxObject(tx, repository),
1080
+ toTxString(tx, policy.name),
1081
+ tx.object.clock(),
1082
+ ],
1083
+ });
1084
+ }
1085
+ else {
1086
+ W_ERROR(WErrors.InvalidParam, `specify write guard in policy ${policy.write_guard.map((guard) => guard.guard)}`);
1087
+ }
1088
+ }
1089
+ }
1090
+ }
1091
+ //# sourceMappingURL=repository.js.map