@dashevo/wasm-dpp 0.25.0-dev.8 → 0.25.0-pr.1545.2

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 (329) hide show
  1. package/Cargo.toml +34 -7
  2. package/README.md +12 -7
  3. package/dist/errors/patchConsensusErrors.js +94 -115
  4. package/dist/wasm/wasm_dpp.d.ts +2302 -4106
  5. package/dist/wasm/wasm_dpp.js +18149 -2639
  6. package/dist/wasm/wasm_dpp_bg.js +1 -1
  7. package/lib/bls/bls.js +48 -0
  8. package/lib/dpp.ts +1 -1
  9. package/lib/errors/patchConsensusErrors.ts +94 -93
  10. package/lib/test/bootstrap.js +5 -0
  11. package/lib/test/fixtures/getChainAssetLockProofFixture.js +20 -1
  12. package/lib/test/fixtures/getDataContractFixture.js +13 -9
  13. package/lib/test/fixtures/getDocumentTransitionsFixture.js +31 -1
  14. package/lib/test/fixtures/getDocumentsFixture.js +9 -5
  15. package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +14 -20
  16. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +14 -0
  17. package/lib/test/fixtures/getIdentityFixture.js +21 -32
  18. package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
  19. package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
  20. package/lib/test/fixtures/getInstantAssetLockProofFixture.js +32 -12
  21. package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
  22. package/lib/test/mocks/createStateRepositoryMock.js +1 -0
  23. package/lib/test/mocks/getBlsAdapterMock.js +1 -1
  24. package/lib/utils/creditsConverter.js +14 -0
  25. package/lib/utils/hash.js +18 -0
  26. package/lib/wasm/wasm_dpp.d.ts +2302 -4106
  27. package/package.json +4 -6
  28. package/scripts/build-wasm.sh +30 -29
  29. package/src/bls_adapter.rs +1 -1
  30. package/src/dash_platform_protocol.rs +169 -192
  31. package/src/data_contract/data_contract.rs +309 -199
  32. package/src/data_contract/data_contract_facade.rs +28 -47
  33. package/src/data_contract/errors/mod.rs +1 -0
  34. package/src/data_contract/mod.rs +2 -2
  35. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +92 -79
  36. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +84 -77
  37. package/src/data_contract_factory/data_contract_factory.rs +43 -83
  38. package/src/document/document_facade.rs +81 -76
  39. package/src/document/errors/document_already_exists_error.rs +6 -6
  40. package/src/document/errors/document_no_revision_error.rs +1 -0
  41. package/src/document/errors/document_not_provided_error.rs +6 -6
  42. package/src/document/errors/invalid_document_action_error.rs +11 -7
  43. package/src/document/errors/invalid_document_error.rs +5 -0
  44. package/src/document/errors/invalid_initial_revision_error.rs +4 -4
  45. package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
  46. package/src/document/errors/mod.rs +5 -0
  47. package/src/document/errors/revision_absent_error.rs +6 -6
  48. package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
  49. package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
  50. package/src/document/extended_document.rs +91 -76
  51. package/src/document/factory.rs +140 -119
  52. package/src/document/generate_document_id.rs +2 -2
  53. package/src/document/mod.rs +164 -150
  54. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +236 -229
  55. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
  56. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
  57. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +164 -152
  58. package/src/document/state_transition/document_batch_transition/mod.rs +232 -222
  59. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -9
  60. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -9
  61. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -10
  62. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -9
  63. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -9
  64. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -9
  65. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -9
  66. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -9
  67. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -9
  68. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -9
  69. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -9
  70. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -9
  71. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -9
  72. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -9
  73. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -9
  74. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -9
  75. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -9
  76. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -9
  77. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -7
  78. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -9
  79. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -9
  80. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -9
  81. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -9
  82. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -9
  83. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -9
  84. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -9
  85. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -9
  86. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -9
  87. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -9
  88. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -9
  89. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -9
  90. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -9
  91. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -9
  92. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +3 -11
  93. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -9
  94. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +2 -10
  95. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -9
  96. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +5 -11
  97. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -9
  98. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -9
  99. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -9
  100. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +1 -1
  101. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -9
  102. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -9
  103. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -9
  104. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -9
  105. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -9
  106. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -9
  107. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -9
  108. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -9
  109. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -9
  110. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -9
  111. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -9
  112. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -9
  113. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -9
  114. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -9
  115. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -9
  116. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -15
  117. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -9
  118. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -9
  119. package/src/errors/consensus/basic/json_schema_error.rs +33 -11
  120. package/src/errors/consensus/basic/mod.rs +2 -0
  121. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -9
  122. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
  123. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -9
  124. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -9
  125. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -9
  126. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -9
  127. package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
  128. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -9
  129. package/src/errors/consensus/consensus_error.rs +44 -21
  130. package/src/errors/consensus/deserialize.rs +2 -1
  131. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -2
  132. package/src/errors/consensus/signature/basic_bls_error.rs +1 -9
  133. package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -9
  134. package/src/errors/consensus/signature/identity_not_found_error.rs +4 -2
  135. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -9
  136. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -2
  137. package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +42 -0
  138. package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +44 -0
  139. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -1
  140. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -1
  141. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -1
  142. package/src/errors/consensus/state/data_contract/mod.rs +7 -1
  143. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -9
  144. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -9
  145. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -9
  146. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -9
  147. package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +34 -0
  148. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -9
  149. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -9
  150. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -12
  151. package/src/errors/consensus/state/document/mod.rs +2 -0
  152. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -9
  153. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -9
  154. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -9
  155. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -9
  156. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -9
  157. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -9
  158. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -9
  159. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -9
  160. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -9
  161. package/src/errors/consensus/value_error.rs +1 -9
  162. package/src/errors/from.rs +12 -8
  163. package/src/errors/mod.rs +7 -7
  164. package/src/errors/value_error.rs +5 -0
  165. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +1 -2
  166. package/src/identity/factory_utils.rs +13 -13
  167. package/src/identity/identity.rs +275 -0
  168. package/src/identity/identity_facade.rs +94 -75
  169. package/src/identity/identity_factory.rs +74 -54
  170. package/src/identity/identity_public_key/mod.rs +87 -64
  171. package/src/identity/mod.rs +25 -247
  172. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +32 -17
  173. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
  174. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
  175. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +24 -15
  176. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
  177. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
  178. package/src/identity/state_transition/asset_lock_proof/mod.rs +124 -127
  179. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +72 -65
  180. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
  181. package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
  182. package/src/identity/state_transition/identity_create_transition/to_object.rs +11 -12
  183. package/src/identity/state_transition/identity_credit_transfer_transition/apply_identity_credit_transfer_transition.rs +31 -0
  184. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_basic_validator.rs +66 -0
  185. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_state_validator.rs +44 -0
  186. package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +8 -0
  187. package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +49 -0
  188. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +344 -0
  189. package/src/identity/state_transition/identity_public_key_transitions.rs +89 -75
  190. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +68 -62
  191. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
  192. package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
  193. package/src/identity/state_transition/identity_topup_transition/to_object.rs +9 -12
  194. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
  195. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +99 -104
  196. package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
  197. package/src/identity/state_transition/identity_update_transition/to_object.rs +15 -19
  198. package/src/identity/state_transition/mod.rs +5 -2
  199. package/src/identity/state_transition/transition_types.rs +34 -0
  200. package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
  201. package/src/lib.rs +9 -10
  202. package/src/metadata.rs +3 -3
  203. package/src/protocol_version.rs +7 -0
  204. package/src/state_transition/conversion.rs +11 -1
  205. package/src/state_transition/errors/invalid_state_transition_error.rs +12 -1
  206. package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
  207. package/src/state_transition/mod.rs +137 -139
  208. package/src/state_transition/state_transition_facade.rs +11 -11
  209. package/src/state_transition/state_transition_factory.rs +142 -153
  210. package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
  211. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +28 -10
  212. package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
  213. package/src/utils.rs +7 -8
  214. package/src/validation/mod.rs +2 -2
  215. package/src/validation/validation_result.rs +17 -15
  216. package/test/integration/dataContract/DataContractFacade.spec.js +25 -32
  217. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +6 -6
  218. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +11 -10
  219. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +3 -3
  220. package/test/integration/document/Document.spec.js +3 -3
  221. package/test/integration/document/DocumentFacade.spec.js +33 -48
  222. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +13 -24
  223. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +15 -15
  224. package/test/integration/document/validation/validateDocumentFactory.spec.js +3 -3
  225. package/test/integration/identity/IdentityFacade.spec.js +33 -63
  226. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +6 -8
  227. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +4 -7
  228. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
  229. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +21 -24
  230. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
  231. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +4 -4
  232. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +7 -10
  233. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +5 -6
  234. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +6 -6
  235. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +5 -9
  236. package/test/integration/identity/validation/validateIdentityFactory.spec.js +7 -6
  237. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +5 -25
  238. package/test/integration/stateTransition/StateTransitionFacade.spec.js +45 -58
  239. package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
  240. package/test/unit/DashPlatformProtocol.spec.js +10 -25
  241. package/test/unit/dataContract/DataContract.spec.js +119 -148
  242. package/test/unit/dataContract/DataContractFactory.spec.js +42 -31
  243. package/test/unit/dataContract/createDataContract.spec.js +6 -6
  244. package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
  245. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +34 -26
  246. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -9
  247. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +34 -27
  248. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +5 -5
  249. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +11 -10
  250. package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +7 -7
  251. package/test/unit/document/Document.spec.js +59 -70
  252. package/test/unit/document/DocumentFactory.spec.js +46 -111
  253. package/test/unit/document/errors/InvalidDocumentError.spec.js +9 -9
  254. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
  255. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +160 -158
  256. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
  257. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +1 -1
  258. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +134 -136
  259. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +4 -4
  260. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +572 -595
  261. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +6 -14
  262. package/test/unit/identity/Identity.spec.js +48 -83
  263. package/test/unit/identity/IdentityFactory.spec.js +61 -75
  264. package/test/unit/identity/IdentityPublicKey.spec.js +34 -48
  265. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +30 -63
  266. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +5 -9
  267. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +13 -35
  268. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -9
  269. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +24 -46
  270. package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +9 -28
  271. package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +19 -27
  272. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +130 -0
  273. package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
  274. package/test/unit/stateTransition/StateTransitionFactory.spec.js +16 -22
  275. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +43 -21
  276. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +3 -3
  277. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +5 -17
  278. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +9 -5
  279. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +8 -14
  280. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
  281. package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
  282. package/test-d/index.test-d.ts +2 -2
  283. package/lib/test/fixtures/getDashPayContractFixture.js +0 -1
  284. package/lib/test/fixtures/getDashPayDocumentFixture.js +0 -1
  285. package/lib/test/fixtures/getDpnsContractFixture.js +0 -1
  286. package/lib/test/fixtures/getDpnsDocumentFixture.js +0 -1
  287. package/lib/test/fixtures/getFeatureFlagsContractFixture.js +0 -1
  288. package/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js +0 -1
  289. package/lib/test/fixtures/getIdentityTopUpTransitionFixtureJs.js +0 -1
  290. package/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js +0 -1
  291. package/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js +0 -1
  292. package/lib/test/fixtures/getPreorderDocumentFixture.js +0 -1
  293. package/lib/test/fixtures/getRawTransactionFixture.js +0 -1
  294. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
  295. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
  296. package/src/decode_protocol_entity.rs +0 -25
  297. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
  298. package/test/integration/DashPlatformProtocol.spec.js +0 -53
  299. package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +0 -148
  300. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +0 -195
  301. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +0 -500
  302. package/test/integration/stateTransition/calculateStateTransitionFeeFromOperationsFactory.spec.js +0 -53
  303. package/test/integration/util/generateEntropy.spec.js +0 -17
  304. package/test/integration/util/serializer.spec.js +0 -24
  305. package/test/unit/dataContract/getBinaryPropertiesFromSchema.spec.js +0 -103
  306. package/test/unit/dataContract/getPropertyDefinitionByPath.spec.js +0 -84
  307. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +0 -47
  308. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +0 -49
  309. package/test/unit/dataTrigger/DataTrigger.spec.js +0 -132
  310. package/test/unit/dataTrigger/DataTriggerExecutionContext.spec.js +0 -29
  311. package/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +0 -107
  312. package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +0 -382
  313. package/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +0 -99
  314. package/test/unit/dataTrigger/getDataTriggersFactory.spec.js +0 -113
  315. package/test/unit/dataTrigger/rejectDataTrigger.spec.js +0 -51
  316. package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +0 -202
  317. package/test/unit/decodeProtocolEntityFactory.spec.js +0 -69
  318. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +0 -257
  319. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +0 -94
  320. package/test/unit/errors/consensus/codes.spec.js +0 -102
  321. package/test/unit/identity/creditsConverter.spec.js +0 -34
  322. package/test/unit/identity/errors/InvalidIdentityError.spec.js +0 -46
  323. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +0 -89
  324. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +0 -142
  325. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +0 -100
  326. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +0 -36
  327. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +0 -63
  328. package/test/unit/identity/validation/validateRequiredPurposeAndSecurityLevelFactory.spec.js +0 -47
  329. package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +0 -51
@@ -1,51 +1,34 @@
1
1
  const bs58 = require('bs58');
2
+ const crypto = require('crypto');
2
3
 
3
- const DocumentCreateTransition = require('@dashevo/dpp/lib/document/stateTransition/DocumentsBatchTransition/documentTransition/DocumentCreateTransition');
4
- const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
5
- const createDPPMock = require('@dashevo/dpp/lib/test/mocks/createDPPMock');
6
- const DocumentFactoryJS = require('@dashevo/dpp/lib/document/DocumentFactory');
7
-
8
- const getDataContractFixtureJs = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
9
- const getDocumentsFixtureJs = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
10
- const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock');
4
+ const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
5
+ const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture');
11
6
  const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync');
12
7
 
13
8
  let {
14
- Identifier, DocumentFactory, DataContract, ExtendedDocument, DocumentValidator,
15
- ProtocolVersionValidator, InvalidDocumentTypeInDataContractError, InvalidDocumentError,
9
+ Identifier, DocumentFactory, ExtendedDocument,
10
+ InvalidDocumentTypeInDataContractError, InvalidDocumentError,
16
11
  JsonSchemaError, NoDocumentsSuppliedError, MismatchOwnerIdsError, InvalidInitialRevisionError,
17
- InvalidActionNameError, PlatformValueError,
12
+ InvalidActionNameError, DocumentCreateTransition,
18
13
  } = require('../../..');
19
14
 
20
- const { default: loadWasmDpp } = require('../../..');
15
+ const { default: loadWasmDpp, SerializedObjectParsingError } = require('../../..');
21
16
 
22
17
  describe('DocumentFactory', () => {
23
- let decodeProtocolEntityMock;
24
- let validateDocumentMock;
25
- let fetchAndValidateDataContractMock;
26
18
  let stateRepositoryMock;
27
19
  let ownerIdJs;
28
20
  let ownerId;
29
21
  let dataContract;
30
- let dataContractJs;
31
22
  let document;
32
- let documentJs;
33
- let documentsJs;
34
23
  let documents;
35
24
  let rawDocument;
36
- let rawDocumentJs;
37
- let factoryJs;
38
25
  let factory;
39
- let fakeTime;
40
- let fakeTimeDate;
41
- let dppMock;
42
26
  let dataContractId;
43
- let documentValidator;
44
27
 
45
28
  beforeEach(async () => {
46
29
  ({
47
- Identifier, ProtocolVersionValidator, DocumentValidator, DocumentFactory,
48
- DataContract, ExtendedDocument,
30
+ Identifier, DocumentFactory,
31
+ ExtendedDocument,
49
32
  // Errors:
50
33
  InvalidDocumentTypeInDataContractError,
51
34
  InvalidDocumentError,
@@ -54,62 +37,21 @@ describe('DocumentFactory', () => {
54
37
  MismatchOwnerIdsError,
55
38
  InvalidInitialRevisionError,
56
39
  InvalidActionNameError,
57
- PlatformValueError,
40
+ DocumentCreateTransition,
58
41
  } = await loadWasmDpp());
59
42
  });
60
43
 
61
- beforeEach(function beforeEach() {
62
- const protocolValidator = new ProtocolVersionValidator();
63
- documentValidator = new DocumentValidator(protocolValidator);
64
-
65
- ([{ ownerId: ownerIdJs }] = getDocumentsFixtureJs());
66
- ownerId = Identifier.from(ownerIdJs);
67
-
68
- dataContractJs = getDataContractFixtureJs();
69
- dataContract = DataContract.fromBuffer(dataContractJs.toBuffer());
70
- const dc = DataContract.fromBuffer(dataContractJs.toBuffer());
71
- dataContractId = dataContractJs.getId().toBuffer();
44
+ beforeEach(async () => {
45
+ dataContract = await getDataContractFixture();
46
+ dataContractId = dataContract.getId();
72
47
 
73
- documentsJs = getDocumentsFixtureJs(dataContractJs);
74
- documents = documentsJs.map((d) => {
75
- const doc = new ExtendedDocument(d.toObject(), dataContract);
76
- doc.setEntropy(d.entropy);
77
- return doc;
78
- });
48
+ documents = await getDocumentsFixture(dataContract);
49
+ ownerId = documents[0].getOwnerId();
79
50
 
80
- ([, , , documentJs] = documentsJs);
81
- rawDocumentJs = documentJs.toObject();
82
51
  ([, , , document] = documents);
83
52
  rawDocument = document.toObject();
84
53
 
85
- decodeProtocolEntityMock = this.sinonSandbox.stub();
86
- validateDocumentMock = this.sinonSandbox.stub();
87
-
88
- validateDocumentMock.returns(new ValidationResult());
89
-
90
- const fetchContractResult = new ValidationResult();
91
- fetchContractResult.setData(dataContractJs);
92
-
93
- stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
94
- stateRepositoryMock.fetchDataContract.resolves(dc);
95
-
96
- fetchAndValidateDataContractMock = this.sinonSandbox.stub().returns(fetchContractResult);
97
- dppMock = createDPPMock();
98
-
99
- factory = new DocumentFactory(1, documentValidator, stateRepositoryMock);
100
- factoryJs = new DocumentFactoryJS(
101
- dppMock,
102
- validateDocumentMock,
103
- fetchAndValidateDataContractMock,
104
- decodeProtocolEntityMock,
105
- );
106
-
107
- fakeTimeDate = new Date();
108
- fakeTime = this.sinonSandbox.useFakeTimers(fakeTimeDate);
109
- });
110
-
111
- afterEach(() => {
112
- fakeTime.reset();
54
+ factory = new DocumentFactory(1, { generate: () => crypto.randomBytes(32) });
113
55
  });
114
56
 
115
57
  describe('create', () => {
@@ -118,7 +60,7 @@ describe('DocumentFactory', () => {
118
60
  // should be valid for this test and it passes the DataContract validation.
119
61
  // The previous version of test passed due to the fact that
120
62
  // the mocked DataContract validator always returned true.
121
- const [niceDocument] = documentsJs;
63
+ const [niceDocument] = documents;
122
64
 
123
65
  const newRawDocument = niceDocument.toObject();
124
66
  const contractId = bs58.decode('FQco85WbwNgb5ix8QQAH6wurMcgEC5ENSCv5ixG9cj12');
@@ -182,7 +124,7 @@ describe('DocumentFactory', () => {
182
124
  });
183
125
  });
184
126
 
185
- describe('createFromObject', () => {
127
+ describe.skip('createFromObject', () => {
186
128
  it('should return new Data Contract with data from passed object', async () => {
187
129
  const result = await factory.createFromObject(rawDocument);
188
130
 
@@ -227,12 +169,11 @@ describe('DocumentFactory', () => {
227
169
  });
228
170
 
229
171
  it('should throw InvalidDocumentError if Data Contract is not valid', async () => {
230
- const dc = DataContract.fromBuffer(dataContractJs.toBuffer());
231
- dc.setDocuments({ '$%34': { '^&*': 'Keck' } });
232
- stateRepositoryMock.fetchDataContract.resolves(dc);
172
+ dataContract.setDocuments({ '$%34': { '^&*': 'Keck' } });
173
+ stateRepositoryMock.fetchDataContract.resolves(dataContract);
233
174
 
234
175
  try {
235
- await factory.createFromObject(rawDocumentJs);
176
+ await factory.createFromObject(rawDocument);
236
177
 
237
178
  expect.fail('InvalidDocumentTypeInDataContractError should be thrown');
238
179
  } catch (e) {
@@ -241,36 +182,30 @@ describe('DocumentFactory', () => {
241
182
  expect(stateRepositoryMock.fetchDataContract.callCount).to.be.equal(1);
242
183
  const callArguments = stateRepositoryMock.fetchDataContract.getCall(0).args[0];
243
184
 
244
- expect(callArguments.toBuffer()).to.be.deep.equal(dc.getId().toBuffer());
185
+ expect(callArguments.toBuffer()).to.be.deep.equal(dataContract.getId().toBuffer());
245
186
  }
246
187
  });
247
188
  });
248
189
 
249
- describe('createFromBuffer', () => {
190
+ describe.skip('createFromBuffer', () => {
250
191
  let serializedDocument;
251
192
 
252
- beforeEach(function beforeEach() {
253
- this.sinonSandbox.stub(factoryJs, 'createFromObject');
193
+ beforeEach(() => {
254
194
  // eslint-disable-next-line prefer-destructuring
255
- documentJs = documentsJs[8]; // document with binary fields
256
-
257
- serializedDocument = documentJs.toBuffer();
258
- rawDocumentJs = documentJs.toObject();
259
- });
260
-
261
- afterEach(() => {
262
- factoryJs.createFromObject.restore();
195
+ document = documents[8]; // document with binary fields
196
+ serializedDocument = document.toBuffer();
197
+ rawDocument = document.toObject();
263
198
  });
264
199
 
265
200
  it('should return new Document from serialized one', async () => {
266
201
  const result = await factory.createFromBuffer(serializedDocument);
267
- expect(result.toObject()).to.deep.equal(documentJs.toObject());
202
+ expect(result.toObject()).to.deep.equal(document.toObject());
268
203
  expect(stateRepositoryMock.fetchDataContract).to.have.been.calledOnce();
269
204
  });
270
205
 
271
206
  it('should throw InvalidDocumentError if the decoding fails with consensus error', async () => {
272
- documentJs.data = 'Not a valid data';
273
- serializedDocument = documentJs.toBuffer();
207
+ stateRepositoryMock.fetchDataContract.resolves(null);
208
+ serializedDocument = document.toBuffer();
274
209
 
275
210
  try {
276
211
  await factory.createFromBuffer(serializedDocument);
@@ -281,18 +216,19 @@ describe('DocumentFactory', () => {
281
216
  }
282
217
  });
283
218
 
284
- it('should throw an error if decoding fails with any other error - Rust', async () => {
219
+ it('should throw an error if decoding fails with any other error', async () => {
285
220
  const serializeDocument = Buffer.alloc(160, 1);
286
221
  try {
287
222
  await factory.createFromBuffer(serializeDocument);
288
223
 
289
224
  expect.fail('should throw an error');
290
225
  } catch (e) {
291
- expect(e).to.be.instanceOf(PlatformValueError);
292
- expect(e.getMessage()).to.equal('structure error: value is not a map');
226
+ expect(e).to.be.instanceOf(SerializedObjectParsingError);
293
227
  }
294
228
  });
295
- }); describe('createStateTransition', () => {
229
+ });
230
+
231
+ describe('createStateTransition', () => {
296
232
  it('should throw and error if documents have unknown action', async () => {
297
233
  try {
298
234
  factory.createStateTransition({
@@ -316,7 +252,7 @@ describe('DocumentFactory', () => {
316
252
  }
317
253
  });
318
254
 
319
- it('should throw and error if documents have mixed owner ids', async () => {
255
+ it.skip('should throw and error if documents have mixed owner ids', async () => {
320
256
  const newId = await generateRandomIdentifierAsync();
321
257
  documents[0].setOwnerId(newId);
322
258
  const rawDocuments = documents.map((d) => d.toObject());
@@ -333,7 +269,7 @@ describe('DocumentFactory', () => {
333
269
  }
334
270
  });
335
271
 
336
- it('should throw and error if create documents have invalid initial version', async () => {
272
+ it.skip('should throw and error if create documents have invalid initial version', async () => {
337
273
  documents[0].setRevision(3);
338
274
  const expectedDocument = documents[0].toObject();
339
275
  try {
@@ -348,23 +284,22 @@ describe('DocumentFactory', () => {
348
284
  });
349
285
 
350
286
  it('should create DocumentsBatchTransition with passed documents', async () => {
351
- const [newDocumentJs] = getDocumentsFixtureJs(dataContractJs);
352
- const newDocument = new ExtendedDocument(newDocumentJs.toObject(), dataContract);
287
+ const [newDocument] = await getDocumentsFixture(dataContract);
288
+ newDocument.setData({ lastName: 'Keck' });
353
289
 
354
290
  const stateTransition = factory.createStateTransition({
355
291
  create: documents,
356
292
  replace: [newDocument],
357
293
  });
358
294
 
359
- const stateTransitionJs = factoryJs.createStateTransition({
360
- create: documentsJs,
361
- replace: [newDocumentJs],
362
- });
363
-
364
- const transitions = stateTransition.getTransitions().map((t) => t.toObject());
365
- const expectedTransitions = stateTransitionJs.getTransitions().map((t) => t.toObject());
295
+ const replaceDocuments = stateTransition.getTransitions()
296
+ .filter((t) => t.getAction() === 1);
297
+ const createDocuments = stateTransition.getTransitions()
298
+ .filter((t) => t.getAction() === 0);
366
299
 
367
- expect(transitions).to.deep.includes.members(expectedTransitions);
300
+ expect(replaceDocuments[0].getId()).to.deep.equal(newDocument.getId());
301
+ expect(replaceDocuments[0].getRevision()).to.deep.equal(2);
302
+ expect(createDocuments).to.have.lengthOf(documents.length);
368
303
  });
369
304
  });
370
305
  });
@@ -1,21 +1,21 @@
1
- const InvalidDocumentError = require('@dashevo/dpp/lib/document/errors/InvalidDocumentError');
2
- const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
1
+ const { InvalidDocumentError } = require('../../../..');
2
+ const getDocumentsFixture = require('../../../../lib/test/fixtures/getDocumentsFixture');
3
3
 
4
4
  describe('InvalidDocumentError', () => {
5
5
  let rawDocument;
6
6
  let error;
7
7
 
8
- beforeEach(() => {
8
+ beforeEach(async () => {
9
9
  error = new Error('Some error');
10
10
 
11
- const [document] = getDocumentsFixture();
11
+ const [document] = await getDocumentsFixture();
12
12
  rawDocument = document.toObject();
13
13
  });
14
14
 
15
15
  it('should return errors', () => {
16
16
  const errors = [error];
17
17
 
18
- const invalidDocumentError = new InvalidDocumentError(errors, rawDocument);
18
+ const invalidDocumentError = new InvalidDocumentError(rawDocument, errors);
19
19
 
20
20
  expect(invalidDocumentError.getErrors()).to.deep.equal(errors);
21
21
  });
@@ -23,7 +23,7 @@ describe('InvalidDocumentError', () => {
23
23
  it('should return Document', async () => {
24
24
  const errors = [error];
25
25
 
26
- const invalidDocumentError = new InvalidDocumentError(errors, rawDocument);
26
+ const invalidDocumentError = new InvalidDocumentError(rawDocument, errors);
27
27
 
28
28
  expect(invalidDocumentError.getRawDocument()).to.deep.equal(rawDocument);
29
29
  });
@@ -31,9 +31,9 @@ describe('InvalidDocumentError', () => {
31
31
  it('should contain message for 1 error', async () => {
32
32
  const errors = [error];
33
33
 
34
- const invalidDocumentError = new InvalidDocumentError(errors, rawDocument);
34
+ const invalidDocumentError = new InvalidDocumentError(rawDocument, errors);
35
35
 
36
- expect(invalidDocumentError.message).to.equal(`Invalid Document: "${error.message}"`);
36
+ expect(invalidDocumentError.getMessage()).to.contain('Invalid document: ');
37
37
  });
38
38
 
39
39
  it('should contain message for multiple errors', async () => {
@@ -41,6 +41,6 @@ describe('InvalidDocumentError', () => {
41
41
 
42
42
  const invalidDocumentError = new InvalidDocumentError(errors, rawDocument);
43
43
 
44
- expect(invalidDocumentError.message).to.equal(`Invalid Document: "${error.message}" and 1 more`);
44
+ expect(invalidDocumentError.getMessage()).to.contain('Invalid document: ');
45
45
  });
46
46
  });
@@ -10,7 +10,7 @@ let ValidationResult;
10
10
  let MissingDataContractIdError;
11
11
  let DataContractNotPresentError;
12
12
 
13
- describe('fetchAndValidateDataContractFactory', () => {
13
+ describe.skip('fetchAndValidateDataContractFactory', () => {
14
14
  let stateRepositoryMock;
15
15
  let fetchAndValidateDataContract;
16
16
  let rawDocument;