@dashevo/wasm-dpp 0.24.0-dev.12 → 0.24.0-dev.14

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 (245) hide show
  1. package/.mocharc.yml +1 -1
  2. package/Cargo.toml +5 -2
  3. package/README.md +5 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.LICENSE.txt +9 -0
  6. package/dist/wasm/wasm_dpp.d.ts +3397 -1237
  7. package/karma.conf.js +5 -0
  8. package/lib/identifier/patchIdentifier.ts +5 -4
  9. package/lib/index.ts +1 -1
  10. package/lib/test/bootstrap.js +5 -0
  11. package/lib/test/fixtures/getDataContractFixture.js +267 -0
  12. package/lib/test/fixtures/getDocumentsFixture.js +43 -0
  13. package/lib/test/mocks/createStateRepositoryMock.js +64 -0
  14. package/lib/test/mocks/getBlsAdapterMock.js +51 -0
  15. package/package.json +11 -8
  16. package/src/bls_adapter.rs +17 -1
  17. package/src/buffer.rs +3 -0
  18. package/src/dash_platform_protocol.rs +107 -10
  19. package/src/data_contract/data_contract.rs +59 -10
  20. package/src/data_contract/data_contract_facade.rs +128 -0
  21. package/src/data_contract/errors/invalid_data_contract.rs +16 -16
  22. package/src/data_contract/errors/invalid_document_type.rs +8 -8
  23. package/src/data_contract/errors/mod.rs +10 -16
  24. package/src/data_contract/index.rs +56 -1
  25. package/src/data_contract/mod.rs +4 -0
  26. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +1 -1
  27. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +41 -10
  28. package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +35 -4
  29. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +1 -1
  30. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +20 -7
  31. package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +47 -11
  32. package/src/data_contract_factory/data_contract_factory.rs +19 -17
  33. package/src/data_trigger/data_trigger_execution_context.rs +95 -0
  34. package/src/data_trigger/data_trigger_execution_result.rs +48 -0
  35. package/src/data_trigger/execute_data_triggers_factory.rs +60 -0
  36. package/src/data_trigger/get_data_triggers_factory.rs +65 -0
  37. package/src/data_trigger/mod.rs +121 -0
  38. package/src/document/document_facade.rs +125 -0
  39. package/src/document/errors/invalid_document_error.rs +10 -9
  40. package/src/document/errors/invalid_initial_revision_error.rs +1 -1
  41. package/src/document/errors/mismatch_owners_ids_error.rs +14 -4
  42. package/src/document/errors/mod.rs +17 -13
  43. package/src/document/errors/no_documents_supplied_error.rs +4 -4
  44. package/src/document/factory.rs +257 -0
  45. package/src/document/fetch_and_validate_data_contract.rs +77 -0
  46. package/src/document/generate_document_id.rs +17 -0
  47. package/src/document/mod.rs +311 -37
  48. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +22 -0
  49. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +253 -1
  50. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +60 -1
  51. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +263 -0
  52. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +302 -3
  53. package/src/document/state_transition/document_batch_transition/mod.rs +378 -0
  54. package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_id.rs +40 -0
  55. package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_indices.rs +50 -0
  56. package/src/document/state_transition/document_batch_transition/validation/basic/mod.rs +8 -0
  57. package/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +34 -0
  58. package/src/document/state_transition/document_batch_transition/validation/basic/validate_partial_compound_indices.rs +39 -0
  59. package/src/document/state_transition/document_batch_transition/validation/mod.rs +2 -0
  60. package/src/document/state_transition/document_batch_transition/validation/state/fetch_documents.rs +43 -0
  61. package/src/document/state_transition/document_batch_transition/validation/state/mod.rs +3 -0
  62. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +27 -0
  63. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_uniqueness_by_indices.rs +47 -0
  64. package/src/document/validator.rs +52 -0
  65. package/src/errors/compatible_protocol_version_is_not_defined_error.rs +24 -0
  66. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -1
  67. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -1
  68. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +2 -2
  69. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +15 -1
  70. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +16 -2
  71. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -1
  72. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -1
  73. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +6 -2
  74. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +5 -2
  75. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +3 -3
  76. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +2 -2
  77. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +29 -0
  78. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +4 -3
  79. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -1
  80. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -1
  81. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +4 -3
  82. package/src/errors/consensus/basic/identity/mod.rs +2 -0
  83. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -1
  84. package/src/errors/consensus/basic/json_schema_error.rs +8 -2
  85. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -1
  86. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +9 -9
  87. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +4 -4
  88. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +35 -0
  89. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +34 -0
  90. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +10 -7
  91. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +2 -3
  92. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +7 -3
  93. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -3
  94. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +7 -4
  95. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +2 -1
  96. package/src/errors/consensus/state/identity/mod.rs +4 -0
  97. package/src/errors/consensus_error.rs +218 -268
  98. package/src/errors/data_contract_not_present_error.rs +23 -0
  99. package/src/errors/dpp_error.rs +17 -0
  100. package/src/errors/from.rs +22 -0
  101. package/src/errors/js_conversion.rs +52 -5
  102. package/src/errors/mod.rs +6 -0
  103. package/src/errors/protocol_error.rs +14 -3
  104. package/src/identifier/errors.rs +30 -0
  105. package/src/identifier/mod.rs +95 -11
  106. package/src/identity/errors/asset_lock_output_not_found_error.rs +11 -0
  107. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +20 -0
  108. package/src/identity/errors/invalid_identity_error.rs +32 -0
  109. package/src/identity/errors/mod.rs +9 -0
  110. package/src/identity/errors/unknown_asset_lock_proof_type_error.rs +26 -0
  111. package/src/identity/factory_utils.rs +87 -0
  112. package/src/identity/identity_facade.rs +194 -20
  113. package/src/identity/identity_factory.rs +209 -0
  114. package/src/identity/identity_public_key/mod.rs +51 -40
  115. package/src/identity/mod.rs +31 -17
  116. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +132 -0
  117. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +72 -0
  118. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +4 -0
  119. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +177 -0
  120. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +72 -0
  121. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +4 -0
  122. package/src/identity/state_transition/asset_lock_proof/mod.rs +269 -0
  123. package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +26 -0
  124. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +337 -0
  125. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +153 -0
  126. package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +37 -0
  127. package/src/identity/state_transition/identity_create_transition/mod.rs +8 -0
  128. package/src/identity/state_transition/identity_create_transition/to_object.rs +45 -0
  129. package/src/identity/state_transition/identity_public_key_transitions.rs +207 -0
  130. package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +31 -0
  131. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +278 -0
  132. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +113 -0
  133. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +37 -0
  134. package/src/identity/state_transition/identity_topup_transition/mod.rs +8 -0
  135. package/src/identity/state_transition/identity_topup_transition/to_object.rs +42 -0
  136. package/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +24 -0
  137. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +55 -0
  138. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +448 -0
  139. package/src/identity/state_transition/identity_update_transition/identity_update_transition_basic_validator.rs +94 -0
  140. package/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +53 -0
  141. package/src/identity/state_transition/identity_update_transition/mod.rs +9 -0
  142. package/src/identity/state_transition/identity_update_transition/to_object.rs +66 -0
  143. package/src/identity/state_transition/mod.rs +12 -0
  144. package/src/identity/state_transition/validate_public_key_signatures.rs +61 -0
  145. package/src/identity/validation/identity_validator.rs +50 -0
  146. package/src/identity/validation/mod.rs +2 -0
  147. package/src/identity/validation/public_keys_validator.rs +14 -13
  148. package/src/identity_public_key/public_keys_validator.rs +44 -0
  149. package/src/lib.rs +6 -0
  150. package/src/lodash.rs +7 -0
  151. package/src/metadata.rs +54 -10
  152. package/src/state_repository.rs +598 -101
  153. package/src/state_transition/conversion.rs +104 -0
  154. package/src/state_transition/errors/invalid_state_transition_error.rs +32 -0
  155. package/src/state_transition/errors/mod.rs +1 -0
  156. package/src/state_transition/mod.rs +46 -0
  157. package/src/state_transition/state_transition_facade.rs +263 -0
  158. package/src/state_transition/state_transition_factory.rs +216 -0
  159. package/src/state_transition/validation/mod.rs +1 -0
  160. package/src/state_transition/validation/validate_state_transition_key_signature.rs +62 -0
  161. package/src/utils.rs +210 -8
  162. package/src/validation/json_schema_validator.rs +41 -0
  163. package/src/validation/mod.rs +2 -0
  164. package/src/validation/validation_result.rs +29 -5
  165. package/src/version/mod.rs +2 -0
  166. package/src/version/protocol_version.rs +103 -0
  167. package/test/integration/dataContract/DataContractFacade.spec.js +46 -30
  168. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +45 -127
  169. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +91 -139
  170. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +577 -503
  171. package/test/integration/document/Document.spec.js +55 -29
  172. package/test/integration/document/DocumentFacade.spec.js +51 -64
  173. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +38 -16
  174. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +341 -396
  175. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +116 -218
  176. package/test/integration/document/validation/validateDocumentFactory.spec.js +123 -171
  177. package/test/integration/identity/IdentityFacade.spec.js +52 -27
  178. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +185 -164
  179. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +84 -114
  180. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +120 -137
  181. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +106 -91
  182. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +50 -16
  183. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +78 -86
  184. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +74 -30
  185. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +93 -147
  186. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +65 -77
  187. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +60 -23
  188. package/test/integration/identity/validation/validateIdentityFactory.spec.js +46 -114
  189. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +9 -3
  190. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +12 -8
  191. package/test/integration/stateTransition/StateTransitionFacade.spec.js +95 -233
  192. package/test/integration/stateTransition/calculateStateTransitionFeeFromOperationsFactory.spec.js +53 -0
  193. package/test/unit/Identifier.spec.js +36 -36
  194. package/test/unit/Metadata.spec.js +17 -3
  195. package/test/unit/dataContract/DataContract.spec.js +9 -4
  196. package/test/unit/dataContract/createDataContract.spec.js +0 -1
  197. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +3 -3
  198. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +1 -1
  199. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +2 -2
  200. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -3
  201. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -1
  202. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +25 -31
  203. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +3 -3
  204. package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +2 -0
  205. package/test/unit/decodeProtocolEntityFactory.spec.js +2 -2
  206. package/test/unit/document/Document.spec.js +147 -155
  207. package/test/unit/document/DocumentFactory.spec.js +153 -153
  208. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +59 -14
  209. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +131 -62
  210. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +144 -56
  211. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +38 -8
  212. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +11 -7
  213. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +29 -18
  214. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +38 -29
  215. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +53 -91
  216. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +357 -493
  217. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +133 -72
  218. package/test/unit/identity/Identity.spec.js +26 -9
  219. package/test/unit/identity/IdentityFactory.spec.js +81 -89
  220. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +73 -30
  221. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +38 -38
  222. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +34 -25
  223. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +36 -16
  224. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +85 -50
  225. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +24 -6
  226. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +44 -22
  227. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +58 -103
  228. package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +63 -0
  229. package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +90 -0
  230. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +18 -3
  231. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +38 -11
  232. package/test/unit/stateTransition/StateTransitionFactory.spec.js +49 -101
  233. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +23 -25
  234. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +73 -46
  235. package/test/unit/version/validateProtocolVersionFactory.spec.js +45 -27
  236. package/wasm/package.json +5 -0
  237. package/wasm/wasm_dpp.d.ts +3397 -1237
  238. package/wasm/wasm_dpp.js +7158 -1384
  239. package/wasm/wasm_dpp_bg.js +1 -1
  240. package/wasm/wasm_dpp_bg.wasm +0 -0
  241. package/wasm/wasm_dpp_bg.wasm.d.ts +777 -389
  242. package/webpack.config.js +9 -0
  243. package/src/document/state_transition/document_batch_transition/document_transition/document_update_transition.rs +0 -22
  244. package/test/integration/stateTransition/calculateStateTransitionFeeFactory.spec.js +0 -135
  245. package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +0 -54
@@ -0,0 +1,40 @@
1
+ use dpp::document::document_transition::{document_base_transition, document_create_transition};
2
+ use dpp::document::validation::basic::find_duplicates_by_id::find_duplicates_by_id;
3
+ use itertools::Itertools;
4
+ use js_sys::Array;
5
+ use serde_json::Value;
6
+ use wasm_bindgen::prelude::*;
7
+
8
+ use crate::document_batch_transition::document_transition::to_object;
9
+ use crate::utils::{replace_identifiers_with_bytes_without_failing, ToSerdeJSONExt, WithJsError};
10
+
11
+ #[wasm_bindgen(js_name=findDuplicatesById)]
12
+ pub fn find_duplicates_by_id_wasm(js_raw_transitions: Array) -> Result<Vec<JsValue>, JsValue> {
13
+ let raw_transitions: Vec<Value> = js_raw_transitions
14
+ .iter()
15
+ .map(|t| {
16
+ t.with_serde_to_json_value().map(|mut v| {
17
+ replace_identifiers_with_bytes_without_failing(
18
+ &mut v,
19
+ document_base_transition::IDENTIFIER_FIELDS,
20
+ );
21
+ v
22
+ })
23
+ })
24
+ .try_collect()?;
25
+
26
+ let result: Vec<JsValue> = find_duplicates_by_id(&raw_transitions)
27
+ .with_js_error()?
28
+ .into_iter()
29
+ .map(|raw| {
30
+ to_object(
31
+ raw,
32
+ &JsValue::null(),
33
+ document_base_transition::IDENTIFIER_FIELDS,
34
+ document_create_transition::BINARY_FIELDS,
35
+ )
36
+ })
37
+ .try_collect()?;
38
+
39
+ Ok(result)
40
+ }
@@ -0,0 +1,50 @@
1
+ use dpp::document::{
2
+ document_transition::{document_base_transition, document_create_transition},
3
+ validation::basic::find_duplicates_by_indices::find_duplicates_by_indices,
4
+ };
5
+ use itertools::Itertools;
6
+ use js_sys::Array;
7
+ use serde_json::Value;
8
+ use wasm_bindgen::prelude::*;
9
+
10
+ use crate::{
11
+ document_batch_transition::document_transition::to_object,
12
+ utils::{replace_identifiers_with_bytes_without_failing, ToSerdeJSONExt, WithJsError},
13
+ DataContractWasm,
14
+ };
15
+
16
+ #[wasm_bindgen(js_name=findDuplicatesByIndices)]
17
+ pub fn find_duplicates_by_indices_wasm(
18
+ js_raw_transitions: &Array,
19
+ data_contract: &DataContractWasm,
20
+ ) -> Result<Vec<JsValue>, JsValue> {
21
+ let raw_transitions: Vec<Value> = js_raw_transitions
22
+ .iter()
23
+ .map(|t| {
24
+ t.with_serde_to_json_value().map(|mut v| {
25
+ replace_identifiers_with_bytes_without_failing(
26
+ &mut v,
27
+ document_base_transition::IDENTIFIER_FIELDS,
28
+ );
29
+ v
30
+ })
31
+ })
32
+ .try_collect()?;
33
+
34
+ let result =
35
+ find_duplicates_by_indices(&raw_transitions, data_contract.inner()).with_js_error()?;
36
+
37
+ let duplicates: Vec<JsValue> = result
38
+ .into_iter()
39
+ .map(|v| {
40
+ to_object(
41
+ v.to_owned(),
42
+ &JsValue::NULL,
43
+ document_base_transition::IDENTIFIER_FIELDS,
44
+ document_create_transition::BINARY_FIELDS,
45
+ )
46
+ })
47
+ .try_collect()?;
48
+
49
+ Ok(duplicates)
50
+ }
@@ -0,0 +1,8 @@
1
+ mod find_duplicates_by_id;
2
+ pub use find_duplicates_by_id::*;
3
+ mod find_duplicates_by_indices;
4
+ pub use find_duplicates_by_indices::*;
5
+ mod validate_partial_compound_indices;
6
+ pub use validate_partial_compound_indices::*;
7
+ mod validate_documents_batch_transition_basic;
8
+ pub use validate_documents_batch_transition_basic::*;
@@ -0,0 +1,34 @@
1
+ use dpp::document::validation::basic::validate_documents_batch_transition_basic;
2
+ use std::sync::Arc;
3
+ use wasm_bindgen::prelude::*;
4
+
5
+ use crate::{
6
+ state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
7
+ utils::{ToSerdeJSONExt, WithJsError},
8
+ validation::ValidationResultWasm,
9
+ version::ProtocolVersionValidatorWasm,
10
+ StateTransitionExecutionContextWasm,
11
+ };
12
+
13
+ #[wasm_bindgen(js_name=validateDocumentsBatchTransitionBasic)]
14
+ pub async fn validate_documents_batch_transition_basic_wasm(
15
+ protocol_version_validator: ProtocolVersionValidatorWasm,
16
+ state_repository: ExternalStateRepositoryLike,
17
+ js_raw_state_transition: JsValue,
18
+ execution_context: StateTransitionExecutionContextWasm,
19
+ ) -> Result<ValidationResultWasm, JsValue> {
20
+ let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
21
+ let raw_state_transition = js_raw_state_transition.with_serde_to_json_value()?;
22
+
23
+ let validation_result =
24
+ validate_documents_batch_transition_basic::validate_documents_batch_transition_basic(
25
+ &protocol_version_validator.into(),
26
+ &raw_state_transition,
27
+ Arc::new(wrapped_state_repository),
28
+ &execution_context.into(),
29
+ )
30
+ .await
31
+ .with_js_error()?;
32
+
33
+ Ok(validation_result.map(|_| JsValue::undefined()).into())
34
+ }
@@ -0,0 +1,39 @@
1
+ use dpp::document::{
2
+ document_transition::document_base_transition,
3
+ validation::basic::validate_partial_compound_indices::validate_partial_compound_indices,
4
+ };
5
+ use itertools::Itertools;
6
+ use js_sys::Array;
7
+ use serde_json::Value;
8
+ use wasm_bindgen::prelude::*;
9
+
10
+ use crate::{
11
+ utils::{replace_identifiers_with_bytes_without_failing, ToSerdeJSONExt, WithJsError},
12
+ validation::ValidationResultWasm,
13
+ DataContractWasm,
14
+ };
15
+
16
+ #[wasm_bindgen(js_name=validatePartialCompoundIndices)]
17
+ pub fn validate_partial_compound_indices_wasm(
18
+ js_raw_transitions: Array,
19
+ data_contract: &DataContractWasm,
20
+ ) -> Result<ValidationResultWasm, JsValue> {
21
+ let raw_transitions: Vec<Value> = js_raw_transitions
22
+ .iter()
23
+ .map(|t| {
24
+ t.with_serde_to_json_value().map(|mut v| {
25
+ replace_identifiers_with_bytes_without_failing(
26
+ &mut v,
27
+ document_base_transition::IDENTIFIER_FIELDS,
28
+ );
29
+ v
30
+ })
31
+ })
32
+ .try_collect()?;
33
+
34
+ let validation_result =
35
+ validate_partial_compound_indices(&raw_transitions, data_contract.inner())
36
+ .with_js_error()?;
37
+
38
+ Ok(validation_result.map(|_| JsValue::undefined()).into())
39
+ }
@@ -0,0 +1,2 @@
1
+ pub mod basic;
2
+ pub mod state;
@@ -0,0 +1,43 @@
1
+ use dpp::{
2
+ document::validation::state::fetch_documents, prelude::DocumentTransition,
3
+ state_transition::state_transition_execution_context::StateTransitionExecutionContext,
4
+ };
5
+ use js_sys::Array;
6
+ use wasm_bindgen::prelude::*;
7
+
8
+ use crate::{
9
+ document_batch_transition::document_transition::DocumentTransitionWasm,
10
+ state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
11
+ utils::{IntoWasm, WithJsError},
12
+ DocumentWasm, StateTransitionExecutionContextWasm,
13
+ };
14
+
15
+ #[wasm_bindgen(js_name = fetchDocuments)]
16
+ pub async fn fetch_documents_wasm(
17
+ state_repository: ExternalStateRepositoryLike,
18
+ js_document_transitions: Array,
19
+ js_execution_context: &StateTransitionExecutionContextWasm,
20
+ ) -> Result<Array, JsValue> {
21
+ let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
22
+ let mut document_transitions: Vec<DocumentTransition> = vec![];
23
+ for js_transition in js_document_transitions.iter() {
24
+ let transition = js_transition.to_wasm::<DocumentTransitionWasm>("DocumentTransition")?;
25
+ document_transitions.push(transition.to_owned().into());
26
+ }
27
+ let execution_context: StateTransitionExecutionContext = js_execution_context.into();
28
+
29
+ let documents = fetch_documents::fetch_documents(
30
+ &wrapped_state_repository,
31
+ document_transitions,
32
+ &execution_context,
33
+ )
34
+ .await
35
+ .with_js_error()?;
36
+
37
+ let array = js_sys::Array::new();
38
+ for document in documents.into_iter().map(DocumentWasm::from) {
39
+ array.push(&document.into());
40
+ }
41
+
42
+ Ok(array)
43
+ }
@@ -0,0 +1,3 @@
1
+ pub mod fetch_documents;
2
+ pub mod validate_documents_batch_transitions_state;
3
+ pub mod validate_documents_uniqueness_by_indices;
@@ -0,0 +1,27 @@
1
+ use dpp::document::validation::state::validate_documents_batch_transition_state;
2
+ use wasm_bindgen::prelude::*;
3
+
4
+ use crate::{
5
+ state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
6
+ utils::WithJsError,
7
+ validation::ValidationResultWasm,
8
+ DocumentsBatchTransitionWasm,
9
+ };
10
+
11
+ #[wasm_bindgen(js_name = "validateDocumentsBatchTransitionState")]
12
+ pub async fn validate_documents_batch_transition_state_wasm(
13
+ state_repository: ExternalStateRepositoryLike,
14
+ state_transition: &DocumentsBatchTransitionWasm,
15
+ ) -> Result<ValidationResultWasm, JsValue> {
16
+ let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
17
+
18
+ let validation_result =
19
+ validate_documents_batch_transition_state::validate_document_batch_transition_state(
20
+ &wrapped_state_repository,
21
+ &state_transition.0,
22
+ )
23
+ .await
24
+ .with_js_error()?;
25
+
26
+ Ok(validation_result.map(|_| JsValue::undefined()).into())
27
+ }
@@ -0,0 +1,47 @@
1
+ use dpp::{
2
+ document::validation::state::validate_documents_uniqueness_by_indices,
3
+ prelude::{DocumentTransition, Identifier},
4
+ state_transition::state_transition_execution_context::StateTransitionExecutionContext,
5
+ };
6
+ use js_sys::Array;
7
+ use wasm_bindgen::prelude::*;
8
+
9
+ use crate::{
10
+ document_batch_transition::document_transition::DocumentTransitionWasm,
11
+ identifier::IdentifierWrapper,
12
+ state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
13
+ utils::{IntoWasm, WithJsError},
14
+ validation::ValidationResultWasm,
15
+ DataContractWasm, StateTransitionExecutionContextWasm,
16
+ };
17
+
18
+ #[wasm_bindgen(js_name=validateDocumentsUniquenessByIndices)]
19
+ pub async fn validate_uniqueness_by_indices_wasm(
20
+ state_repository: ExternalStateRepositoryLike,
21
+ js_owner_id: &IdentifierWrapper,
22
+ js_document_transitions: Array,
23
+ js_data_contract: &DataContractWasm,
24
+ js_execution_context: &StateTransitionExecutionContextWasm,
25
+ ) -> Result<ValidationResultWasm, JsValue> {
26
+ let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
27
+ let mut document_transitions: Vec<DocumentTransition> = vec![];
28
+ for js_transition in js_document_transitions.iter() {
29
+ let transition = js_transition.to_wasm::<DocumentTransitionWasm>("DocumentTransition")?;
30
+ document_transitions.push(transition.to_owned().into());
31
+ }
32
+ let execution_context: StateTransitionExecutionContext = js_execution_context.into();
33
+ let owner_id: Identifier = js_owner_id.into();
34
+
35
+ let validation_result =
36
+ validate_documents_uniqueness_by_indices::validate_documents_uniqueness_by_indices(
37
+ &wrapped_state_repository,
38
+ &owner_id,
39
+ document_transitions,
40
+ js_data_contract.inner(),
41
+ &execution_context,
42
+ )
43
+ .await
44
+ .with_js_error()?;
45
+
46
+ Ok(validation_result.map(|_| JsValue::undefined()).into())
47
+ }
@@ -0,0 +1,52 @@
1
+ use dpp::{document::document_validator::DocumentValidator, version::ProtocolVersionValidator};
2
+ use std::sync::Arc;
3
+ use wasm_bindgen::prelude::*;
4
+
5
+ use crate::{
6
+ raw_document_from_js_value, utils::WithJsError, validation::ValidationResultWasm,
7
+ version::ProtocolVersionValidatorWasm, DataContractWasm,
8
+ };
9
+
10
+ #[derive(Clone)]
11
+ #[wasm_bindgen(js_name = DocumentValidator)]
12
+ pub struct DocumentValidatorWasm(DocumentValidator);
13
+
14
+ #[wasm_bindgen(js_class=DocumentValidator)]
15
+ impl DocumentValidatorWasm {
16
+ #[wasm_bindgen(constructor)]
17
+ pub fn new(protocol_validator: ProtocolVersionValidatorWasm) -> DocumentValidatorWasm {
18
+ DocumentValidatorWasm(DocumentValidator::new(Arc::new(protocol_validator.into())))
19
+ }
20
+
21
+ pub fn validate(
22
+ &self,
23
+ js_raw_document: &JsValue,
24
+ js_data_contract: &DataContractWasm,
25
+ ) -> Result<ValidationResultWasm, JsValue> {
26
+ let raw_document = raw_document_from_js_value(js_raw_document, js_data_contract.inner())?;
27
+ let validation_result = self
28
+ .0
29
+ .validate(&raw_document, js_data_contract.inner())
30
+ .with_js_error()?;
31
+
32
+ Ok(validation_result.map(|_| JsValue::undefined()).into())
33
+ }
34
+ }
35
+
36
+ impl DocumentValidatorWasm {
37
+ pub(crate) fn new_with_arc(protocol_validator: Arc<ProtocolVersionValidator>) -> Self {
38
+ DocumentValidatorWasm(DocumentValidator::new(protocol_validator.clone()))
39
+ }
40
+ }
41
+
42
+ impl From<DocumentValidator> for DocumentValidatorWasm {
43
+ fn from(doc_validator: DocumentValidator) -> Self {
44
+ DocumentValidatorWasm(doc_validator)
45
+ }
46
+ }
47
+
48
+ impl From<DocumentValidatorWasm> for DocumentValidator {
49
+ fn from(val: DocumentValidatorWasm) -> Self {
50
+ val.0
51
+ }
52
+ }
@@ -0,0 +1,24 @@
1
+ use dpp::CompatibleProtocolVersionIsNotDefinedError;
2
+ use thiserror::Error;
3
+ use wasm_bindgen::prelude::*;
4
+
5
+ #[wasm_bindgen(js_name=CompatibleProtocolVersionIsNotDefinedError)]
6
+ #[derive(Error, Debug)]
7
+ #[error(transparent)]
8
+ pub struct CompatibleProtocolVersionIsNotDefinedErrorWasm(
9
+ CompatibleProtocolVersionIsNotDefinedError,
10
+ );
11
+
12
+ impl CompatibleProtocolVersionIsNotDefinedErrorWasm {
13
+ pub fn new(err: CompatibleProtocolVersionIsNotDefinedError) -> Self {
14
+ Self(err)
15
+ }
16
+ }
17
+
18
+ #[wasm_bindgen(js_class=CompatibleProtocolVersionIsNotDefinedError)]
19
+ impl CompatibleProtocolVersionIsNotDefinedErrorWasm {
20
+ #[wasm_bindgen(js_name=getCurrentProtocolVersion)]
21
+ pub fn current_protocol_version(&self) -> u32 {
22
+ self.0.current_protocol_version()
23
+ }
24
+ }
@@ -16,7 +16,7 @@ impl DuplicateDocumentTransitionsWithIdsErrorWasm {
16
16
 
17
17
  #[wasm_bindgen(js_class=DuplicateDocumentTransitionsWithIdsError)]
18
18
  impl DuplicateDocumentTransitionsWithIdsErrorWasm {
19
- #[wasm_bindgen(js_name=getReferences)]
19
+ #[wasm_bindgen(js_name=getDocumentTransitionReferences)]
20
20
  pub fn get_references(&self) -> js_sys::Array {
21
21
  self.references
22
22
  .iter()
@@ -16,7 +16,7 @@ impl DuplicateDocumentTransitionsWithIndicesErrorWasm {
16
16
 
17
17
  #[wasm_bindgen(js_class=DuplicateDocumentTransitionsWithIndicesError)]
18
18
  impl DuplicateDocumentTransitionsWithIndicesErrorWasm {
19
- #[wasm_bindgen(js_name=getReferences)]
19
+ #[wasm_bindgen(js_name=getDocumentTransitionReferences)]
20
20
  pub fn get_references(&self) -> js_sys::Array {
21
21
  self.references
22
22
  .iter()
@@ -20,8 +20,8 @@ impl InconsistentCompoundIndexDataErrorWasm {
20
20
 
21
21
  #[wasm_bindgen(js_class=InconsistentCompoundIndexDataError)]
22
22
  impl InconsistentCompoundIndexDataErrorWasm {
23
- #[wasm_bindgen(js_name=getIndexProperties)]
24
- pub fn get_index_properties(&self) -> js_sys::Array {
23
+ #[wasm_bindgen(js_name=getIndexedProperties)]
24
+ pub fn get_indexed_properties(&self) -> js_sys::Array {
25
25
  self.index_properties
26
26
  .iter()
27
27
  .map(|string| JsString::from(string.as_ref()))
@@ -2,6 +2,7 @@ use dpp::prelude::Identifier;
2
2
  use wasm_bindgen::prelude::*;
3
3
 
4
4
  use crate::buffer::Buffer;
5
+ use crate::identifier::IdentifierWrapper;
5
6
 
6
7
  #[wasm_bindgen(js_name=InvalidDocumentTypeError)]
7
8
  pub struct InvalidDocumentTypeErrorWasm {
@@ -22,7 +23,20 @@ impl InvalidDocumentTypeErrorWasm {
22
23
 
23
24
  #[wasm_bindgen(js_class=InvalidDocumentTypeError)]
24
25
  impl InvalidDocumentTypeErrorWasm {
25
- #[wasm_bindgen(js_name=getDocumentType)]
26
+ #[wasm_bindgen(constructor)]
27
+ pub fn constructor(
28
+ document_type: String,
29
+ data_contract_id: IdentifierWrapper,
30
+ code: u32,
31
+ ) -> Self {
32
+ Self {
33
+ document_type,
34
+ data_contract_id: data_contract_id.into(),
35
+ code,
36
+ }
37
+ }
38
+
39
+ #[wasm_bindgen(js_name=getType)]
26
40
  pub fn get_document_type(&self) -> String {
27
41
  self.document_type.clone()
28
42
  }
@@ -1,13 +1,19 @@
1
+ use dpp::document::document_transition::document_base_transition::JsonValue;
2
+ use serde::Serialize;
1
3
  use wasm_bindgen::prelude::*;
2
4
 
3
5
  #[wasm_bindgen(js_name=MissingDataContractIdError)]
4
6
  pub struct MissingDataContractIdErrorWasm {
7
+ raw_document_transition: JsonValue,
5
8
  code: u32,
6
9
  }
7
10
 
8
11
  impl MissingDataContractIdErrorWasm {
9
- pub fn new(code: u32) -> Self {
10
- MissingDataContractIdErrorWasm { code }
12
+ pub fn new(raw_document_transition: JsonValue, code: u32) -> Self {
13
+ MissingDataContractIdErrorWasm {
14
+ raw_document_transition,
15
+ code,
16
+ }
11
17
  }
12
18
  }
13
19
 
@@ -17,4 +23,12 @@ impl MissingDataContractIdErrorWasm {
17
23
  pub fn get_code(&self) -> u32 {
18
24
  self.code
19
25
  }
26
+
27
+ #[wasm_bindgen(js_name=rawDocumentTransition)]
28
+ pub fn raw_document_transition(&self) -> wasm_bindgen::JsValue {
29
+ let serializer = serde_wasm_bindgen::Serializer::json_compatible();
30
+ self.raw_document_transition
31
+ .serialize(&serializer)
32
+ .expect("implements Serialize")
33
+ }
20
34
  }
@@ -21,7 +21,7 @@ impl DuplicatedIdentityPublicKeyErrorWasm {
21
21
  self.inner
22
22
  .duplicated_public_keys_ids()
23
23
  .iter()
24
- .map(|id| JsValue::from(*id as u32))
24
+ .map(|id| JsValue::from(*id))
25
25
  .collect()
26
26
  }
27
27
 
@@ -21,7 +21,7 @@ impl DuplicatedIdentityPublicKeyIdErrorWasm {
21
21
  self.inner
22
22
  .duplicated_ids()
23
23
  .iter()
24
- .map(|id| JsValue::from(*id as u32))
24
+ .map(|id| JsValue::from(*id))
25
25
  .collect()
26
26
  }
27
27
 
@@ -1,5 +1,6 @@
1
1
  use dpp::consensus::basic::identity::IdentityAssetLockProofLockedTransactionMismatchError;
2
2
  use dpp::consensus::ConsensusError;
3
+ use dpp::dashcore::hashes::Hash;
3
4
  use wasm_bindgen::prelude::*;
4
5
 
5
6
  use crate::buffer::Buffer;
@@ -22,13 +23,16 @@ impl IdentityAssetLockProofLockedTransactionMismatchErrorWasm {
22
23
  #[wasm_bindgen(js_name=getInstantLockTransactionId)]
23
24
  pub fn instant_lock_transaction_id(&self) -> Buffer {
24
25
  let tx_id = self.inner.instant_lock_transaction_id();
25
- Buffer::from_bytes(tx_id.to_vec().as_ref())
26
+ Buffer::from_bytes(&tx_id)
26
27
  }
27
28
 
28
29
  #[wasm_bindgen(js_name=getAssetLockTransactionId)]
29
30
  pub fn asset_lock_transaction_id(&self) -> Buffer {
30
31
  let tx_id = self.inner.asset_lock_transaction_id();
31
- Buffer::from_bytes(tx_id.to_vec().as_ref())
32
+ let mut hash_bytes = tx_id.as_hash().into_inner();
33
+ hash_bytes.reverse();
34
+
35
+ Buffer::from_bytes(&hash_bytes)
32
36
  }
33
37
 
34
38
  #[wasm_bindgen(js_name=getCode)]
@@ -1,5 +1,6 @@
1
1
  use dpp::consensus::basic::identity::IdentityAssetLockTransactionOutPointAlreadyExistsError;
2
2
  use dpp::consensus::ConsensusError;
3
+ use dpp::dashcore::hashes::Hash;
3
4
  use wasm_bindgen::prelude::*;
4
5
 
5
6
  use crate::buffer::Buffer;
@@ -19,7 +20,7 @@ impl From<&IdentityAssetLockTransactionOutPointAlreadyExistsError>
19
20
 
20
21
  #[wasm_bindgen(js_class=IdentityAssetLockTransactionOutPointAlreadyExistsError)]
21
22
  impl IdentityAssetLockTransactionOutPointAlreadyExistsErrorWasm {
22
- #[wasm_bindgen(js_name=getDuplicatedIds)]
23
+ #[wasm_bindgen(js_name=getOutputIndex)]
23
24
  pub fn output_index(&self) -> usize {
24
25
  self.inner.output_index()
25
26
  }
@@ -27,7 +28,9 @@ impl IdentityAssetLockTransactionOutPointAlreadyExistsErrorWasm {
27
28
  #[wasm_bindgen(js_name=getTransactionId)]
28
29
  pub fn transaction_id(&self) -> Buffer {
29
30
  let tx_id = self.inner.transaction_id();
30
- Buffer::from_bytes(tx_id.to_vec().as_ref())
31
+ let mut tx_id_bytes = tx_id.as_hash().into_inner();
32
+ tx_id_bytes.reverse();
33
+ Buffer::from_bytes(&tx_id_bytes)
31
34
  }
32
35
 
33
36
  #[wasm_bindgen(js_name=getCode)]
@@ -22,9 +22,9 @@ impl InvalidAssetLockProofTransactionHeightErrorWasm {
22
22
  self.inner.proof_core_chain_locked_height()
23
23
  }
24
24
 
25
- #[wasm_bindgen(js_name=getCurrentCoreChainLockedHeight)]
26
- pub fn current_core_chain_locked_height(&self) -> Option<u32> {
27
- self.inner.current_core_chain_locked_height()
25
+ #[wasm_bindgen(js_name=getTransactionHeight)]
26
+ pub fn transaction_height(&self) -> Option<u32> {
27
+ self.inner.transaction_height()
28
28
  }
29
29
 
30
30
  #[wasm_bindgen(js_name=getCode)]
@@ -18,8 +18,8 @@ impl From<&InvalidIdentityCreditWithdrawalTransitionCoreFeeError>
18
18
  #[wasm_bindgen(js_class=InvalidIdentityCreditWithdrawalTransitionCoreFeeError)]
19
19
  impl InvalidIdentityCreditWithdrawalTransitionCoreFeeErrorWasm {
20
20
  #[wasm_bindgen(js_name=getCoreFee)]
21
- pub fn core_fee(&self) -> u32 {
22
- self.inner.core_fee()
21
+ pub fn core_fee_per_byte(&self) -> u32 {
22
+ self.inner.core_fee_per_byte()
23
23
  }
24
24
 
25
25
  #[wasm_bindgen(js_name=getCode)]
@@ -0,0 +1,29 @@
1
+ use dpp::consensus::basic::identity::NotImplementedIdentityCreditWithdrawalTransitionPoolingError;
2
+ use dpp::consensus::ConsensusError;
3
+ use wasm_bindgen::prelude::*;
4
+
5
+ #[wasm_bindgen(js_name=NotImplementedIdentityCreditWithdrawalTransitionPoolingError)]
6
+ pub struct NotImplementedIdentityCreditWithdrawalTransitionPoolingErrorWasm {
7
+ inner: NotImplementedIdentityCreditWithdrawalTransitionPoolingError,
8
+ }
9
+
10
+ impl From<&NotImplementedIdentityCreditWithdrawalTransitionPoolingError>
11
+ for NotImplementedIdentityCreditWithdrawalTransitionPoolingErrorWasm
12
+ {
13
+ fn from(e: &NotImplementedIdentityCreditWithdrawalTransitionPoolingError) -> Self {
14
+ Self { inner: e.clone() }
15
+ }
16
+ }
17
+
18
+ #[wasm_bindgen(js_class=NotImplementedIdentityCreditWithdrawalTransitionPoolingError)]
19
+ impl NotImplementedIdentityCreditWithdrawalTransitionPoolingErrorWasm {
20
+ #[wasm_bindgen(js_name=getPooling)]
21
+ pub fn pooling(&self) -> u8 {
22
+ self.inner.pooling()
23
+ }
24
+
25
+ #[wasm_bindgen(js_name=getCode)]
26
+ pub fn code(&self) -> u32 {
27
+ ConsensusError::from(self.inner.clone()).code()
28
+ }
29
+ }
@@ -1,13 +1,14 @@
1
+ use dpp::identity::KeyID;
1
2
  use wasm_bindgen::prelude::*;
2
3
 
3
4
  #[wasm_bindgen(js_name=InvalidIdentityKeySignatureError)]
4
5
  pub struct InvalidIdentityKeySignatureErrorWasm {
5
- public_key_id: u32,
6
+ public_key_id: KeyID,
6
7
  code: u32,
7
8
  }
8
9
 
9
10
  impl InvalidIdentityKeySignatureErrorWasm {
10
- pub fn new(public_key_id: u32, code: u32) -> Self {
11
+ pub fn new(public_key_id: KeyID, code: u32) -> Self {
11
12
  InvalidIdentityKeySignatureErrorWasm {
12
13
  public_key_id,
13
14
  code,
@@ -18,7 +19,7 @@ impl InvalidIdentityKeySignatureErrorWasm {
18
19
  #[wasm_bindgen(js_class=InvalidIdentityKeySignatureError)]
19
20
  impl InvalidIdentityKeySignatureErrorWasm {
20
21
  #[wasm_bindgen(js_name=getPublicKeyId)]
21
- pub fn get_public_key_id(&self) -> u32 {
22
+ pub fn get_public_key_id(&self) -> KeyID {
22
23
  self.public_key_id
23
24
  }
24
25
 
@@ -21,7 +21,7 @@ impl InvalidIdentityPublicKeyDataErrorWasm {
21
21
  #[wasm_bindgen(js_name=getPublicKeyId)]
22
22
  pub fn public_key_id(&self) -> u32 {
23
23
  // TODO: think about what to do with that conversion
24
- self.inner.public_key_id() as u32
24
+ self.inner.public_key_id()
25
25
  }
26
26
 
27
27
  #[wasm_bindgen(js_name=getValidationError)]
@@ -22,7 +22,7 @@ impl InvalidIdentityPublicKeySecurityLevelErrorWasm {
22
22
  #[wasm_bindgen(js_name=getPublicKeyId)]
23
23
  pub fn public_key_id(&self) -> u32 {
24
24
  // TODO: think about what to do with that conversion
25
- self.inner.public_key_id() as u32
25
+ self.inner.public_key_id()
26
26
  }
27
27
 
28
28
  #[wasm_bindgen(js_name=getPublicKeyPurpose)]