wowok 2.1.10 → 2.1.13

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