@dashevo/wasm-dpp 0.23.0-dev.14 → 0.24.0-dev.10

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 (272) hide show
  1. package/.eslintignore +1 -0
  2. package/Cargo.toml +23 -0
  3. package/README.md +21 -6
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.js +2 -0
  6. package/dist/index.js.LICENSE.txt +8 -0
  7. package/dist/lib/patchIdentifier.d.ts +2 -0
  8. package/dist/wasm/wasm_dpp.d.ts +2756 -0
  9. package/index.ts +30 -0
  10. package/karma.conf.js +6 -3
  11. package/lib/patchIdentifier.ts +37 -0
  12. package/lib/test/.eslintrc +9 -0
  13. package/lib/test/bootstrap.js +27 -0
  14. package/lib/test/expect/expectError.js +34 -0
  15. package/lib/test/karma/loader.js +6 -0
  16. package/lib/test/utils/generateRandomIdentifierAsync.js +14 -0
  17. package/package.json +31 -55
  18. package/scripts/build.sh +69 -0
  19. package/scripts/clean.sh +4 -0
  20. package/src/bls_adapter.rs +71 -0
  21. package/src/buffer.rs +15 -0
  22. package/src/dash_platform_protocol.rs +26 -0
  23. package/src/data_contract/data_contract.rs +290 -0
  24. package/src/data_contract/errors/data_contract_already_exists.rs +1 -0
  25. package/src/data_contract/errors/invalid_data_contract.rs +29 -0
  26. package/src/data_contract/errors/invalid_document_type.rs +33 -0
  27. package/src/data_contract/errors/mod.rs +37 -0
  28. package/src/data_contract/index.rs +61 -0
  29. package/src/data_contract/mod.rs +10 -0
  30. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +37 -0
  31. package/src/data_contract/state_transition/mod.rs +3 -0
  32. package/src/data_contract_factory/data_contract_factory.rs +155 -0
  33. package/src/data_contract_factory/mod.rs +1 -0
  34. package/src/document/errors/document_already_exists_error.rs +28 -0
  35. package/src/document/errors/document_not_provided_error.rs +28 -0
  36. package/src/document/errors/invalid_action_name_error.rs +24 -0
  37. package/src/document/errors/invalid_document_action_error.rs +28 -0
  38. package/src/document/errors/invalid_document_error.rs +32 -0
  39. package/src/document/errors/invalid_initial_revision_error.rs +25 -0
  40. package/src/document/errors/mismatch_owners_ids_error.rs +27 -0
  41. package/src/document/errors/mod.rs +55 -0
  42. package/src/document/errors/no_documents_supplied_error.rs +22 -0
  43. package/src/document/mod.rs +158 -0
  44. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +22 -0
  45. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +22 -0
  46. package/src/document/state_transition/document_batch_transition/document_transition/document_update_transition.rs +22 -0
  47. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +24 -0
  48. package/src/document/state_transition/document_batch_transition/mod.rs +1 -0
  49. package/src/document/state_transition/mod.rs +1 -0
  50. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +36 -0
  51. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +36 -0
  52. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +36 -0
  53. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +26 -0
  54. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +36 -0
  55. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +36 -0
  56. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +66 -0
  57. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +43 -0
  58. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +39 -0
  59. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +39 -0
  60. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +59 -0
  61. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +67 -0
  62. package/src/errors/consensus/basic/data_contract/index_error/mod.rs +15 -0
  63. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +51 -0
  64. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +51 -0
  65. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +36 -0
  66. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +37 -0
  67. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +36 -0
  68. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +26 -0
  69. package/src/errors/consensus/basic/data_contract/mod.rs +25 -0
  70. package/src/errors/consensus/basic/decode/mod.rs +5 -0
  71. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +29 -0
  72. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +29 -0
  73. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +32 -0
  74. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +36 -0
  75. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +40 -0
  76. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +26 -0
  77. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +38 -0
  78. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +39 -0
  79. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +20 -0
  80. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +20 -0
  81. package/src/errors/consensus/basic/document/missing_document_type_error.rs +20 -0
  82. package/src/errors/consensus/basic/document/mod.rs +19 -0
  83. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +32 -0
  84. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +32 -0
  85. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +38 -0
  86. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +31 -0
  87. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +37 -0
  88. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +29 -0
  89. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +33 -0
  90. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +34 -0
  91. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +34 -0
  92. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +29 -0
  93. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +60 -0
  94. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +29 -0
  95. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +29 -0
  96. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +32 -0
  97. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +29 -0
  98. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +39 -0
  99. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +42 -0
  100. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +30 -0
  101. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +22 -0
  102. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +24 -0
  103. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +22 -0
  104. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +29 -0
  105. package/src/errors/consensus/basic/identity/mod.rs +45 -0
  106. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +32 -0
  107. package/src/errors/consensus/basic/invalid_identifier_error.rs +36 -0
  108. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +41 -0
  109. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +20 -0
  110. package/src/errors/consensus/basic/json_schema_compilation_error.rs +26 -0
  111. package/src/errors/consensus/basic/json_schema_error.rs +274 -0
  112. package/src/errors/consensus/basic/mod.rs +30 -0
  113. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +30 -0
  114. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +41 -0
  115. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +29 -0
  116. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +20 -0
  117. package/src/errors/consensus/basic/state_transition/mod.rs +7 -0
  118. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +36 -0
  119. package/src/errors/consensus/basic/test_consensus_error.rs +21 -0
  120. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +32 -0
  121. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +37 -0
  122. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +32 -0
  123. package/src/errors/consensus/fee/mod.rs +3 -0
  124. package/src/errors/consensus/mod.rs +4 -0
  125. package/src/errors/consensus/signature/identity_not_found_error.rs +29 -0
  126. package/src/errors/consensus/signature/mod.rs +3 -0
  127. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +31 -0
  128. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +74 -0
  129. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +82 -0
  130. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +66 -0
  131. package/src/errors/consensus/state/data_contract/data_trigger/mod.rs +7 -0
  132. package/src/errors/consensus/state/data_contract/mod.rs +4 -0
  133. package/src/errors/consensus/state/document/document_already_present_error.rs +28 -0
  134. package/src/errors/consensus/state/document/document_not_found_error.rs +28 -0
  135. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +50 -0
  136. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +72 -0
  137. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +28 -0
  138. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +42 -0
  139. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +38 -0
  140. package/src/errors/consensus/state/document/mod.rs +15 -0
  141. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +28 -0
  142. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +49 -0
  143. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +31 -0
  144. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +28 -0
  145. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +28 -0
  146. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +38 -0
  147. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +26 -0
  148. package/src/errors/consensus/state/identity/mod.rs +15 -0
  149. package/src/errors/consensus/state/mod.rs +3 -0
  150. package/src/errors/consensus_error.rs +612 -0
  151. package/src/errors/from.rs +24 -0
  152. package/src/errors/js_conversion.rs +63 -0
  153. package/src/errors/mod.rs +10 -0
  154. package/src/errors/public_key_validation_error.rs +23 -0
  155. package/src/identifier.rs +103 -0
  156. package/src/identity.rs +253 -0
  157. package/src/identity_facade.rs +55 -0
  158. package/src/identity_public_key/key_type.rs +22 -0
  159. package/src/identity_public_key/mod.rs +192 -0
  160. package/src/identity_public_key/public_keys_validator.rs +44 -0
  161. package/src/identity_public_key/purpose.rs +24 -0
  162. package/src/identity_public_key/security_level.rs +21 -0
  163. package/src/lib.rs +28 -0
  164. package/src/metadata.rs +54 -0
  165. package/src/utils.rs +59 -0
  166. package/src/validation_result.rs +41 -0
  167. package/test/integration/DashPlatformProtocol.spec.js +4 -4
  168. package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +2 -2
  169. package/test/integration/dataContract/DataContractFacade.spec.js +6 -6
  170. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +10 -10
  171. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +14 -14
  172. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +22 -22
  173. package/test/integration/document/Document.spec.js +10 -5
  174. package/test/integration/document/DocumentFacade.spec.js +11 -11
  175. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +5 -5
  176. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +25 -25
  177. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +15 -15
  178. package/test/integration/document/validation/validateDocumentFactory.spec.js +12 -12
  179. package/test/integration/error/consensus/createConsensusError.spec.js +3 -3
  180. package/test/integration/identity/IdentityFacade.spec.js +13 -13
  181. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +12 -12
  182. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +11 -11
  183. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +8 -8
  184. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +24 -39
  185. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +7 -7
  186. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +29 -35
  187. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +8 -8
  188. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +11 -11
  189. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +10 -10
  190. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +7 -7
  191. package/test/integration/identity/validation/validateIdentityFactory.spec.js +8 -8
  192. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +50 -24
  193. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +14 -14
  194. package/test/integration/stateTransition/StateTransitionFacade.spec.js +15 -19
  195. package/test/integration/stateTransition/calculateStateTransitionFee.spec.js +8 -11
  196. package/test/integration/util/generateEntropy.spec.js +1 -1
  197. package/test/integration/util/serializer.spec.js +2 -2
  198. package/test/unit/DashPlatformProtocol.spec.js +4 -4
  199. package/test/unit/Identifier.spec.js +2 -2
  200. package/test/unit/Metadata.spec.js +1 -1
  201. package/test/unit/dataContract/DataContract.spec.js +100 -159
  202. package/test/unit/dataContract/DataContractFactory.spec.js +55 -111
  203. package/test/unit/dataContract/createDataContract.spec.js +20 -10
  204. package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +2 -2
  205. package/test/unit/dataContract/generateDataContractId.spec.js +23 -6
  206. package/test/unit/dataContract/getBinaryPropertiesFromSchema.spec.js +1 -1
  207. package/test/unit/dataContract/getPropertyDefinitionByPath.spec.js +1 -1
  208. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +8 -8
  209. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +6 -6
  210. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +8 -8
  211. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +8 -8
  212. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +6 -6
  213. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +6 -6
  214. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +9 -9
  215. package/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js +6 -6
  216. package/test/unit/dataContract/validation/validateDataContractPatternsFactory.spec.js +3 -3
  217. package/test/unit/dataTrigger/DataTrigger.spec.js +8 -8
  218. package/test/unit/dataTrigger/DataTriggerExecutionContext.spec.js +4 -4
  219. package/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +13 -15
  220. package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +12 -12
  221. package/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +11 -13
  222. package/test/unit/dataTrigger/getDataTriggersFactory.spec.js +7 -7
  223. package/test/unit/dataTrigger/rejectDataTrigger.spec.js +8 -8
  224. package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +9 -9
  225. package/test/unit/decodeProtocolEntityFactory.spec.js +4 -4
  226. package/test/unit/document/Document.spec.js +9 -9
  227. package/test/unit/document/DocumentFactory.spec.js +19 -19
  228. package/test/unit/document/errors/InvalidDocumentError.spec.js +2 -2
  229. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +8 -8
  230. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +8 -8
  231. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +16 -17
  232. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
  233. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +2 -2
  234. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +6 -6
  235. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +7 -7
  236. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +6 -6
  237. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +27 -34
  238. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +9 -9
  239. package/test/unit/errors/consensus/codes.spec.js +7 -7
  240. package/test/unit/identity/Identity.spec.js +98 -69
  241. package/test/unit/identity/IdentityFactory.spec.js +15 -15
  242. package/test/unit/identity/IdentityPublicKey.spec.js +53 -66
  243. package/test/unit/identity/creditsConverter.spec.js +1 -1
  244. package/test/unit/identity/errors/InvalidIdentityError.spec.js +2 -2
  245. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +7 -7
  246. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +8 -8
  247. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +6 -6
  248. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +4 -4
  249. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +7 -7
  250. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +2 -2
  251. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +6 -6
  252. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +6 -6
  253. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +5 -5
  254. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +3 -3
  255. package/test/unit/identity/validation/validateRequiredPurposeAndSecurityLevelFactory.spec.js +5 -5
  256. package/test/unit/stateTransition/StateTransitionFactory.spec.js +8 -8
  257. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +8 -8
  258. package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +3 -3
  259. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +12 -12
  260. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +15 -15
  261. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +22 -22
  262. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +6 -6
  263. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +9 -9
  264. package/test/unit/version/validateProtocolVersionFactory.spec.js +7 -7
  265. package/tsconfig.json +18 -0
  266. package/wasm/wasm_dpp.d.ts +2756 -0
  267. package/wasm/wasm_dpp.js +7750 -0
  268. package/wasm/wasm_dpp_bg.js +1 -0
  269. package/wasm/wasm_dpp_bg.wasm +0 -0
  270. package/wasm/wasm_dpp_bg.wasm.d.ts +518 -0
  271. package/webpack.config.js +22 -19
  272. package/CHANGELOG.md +0 -397
@@ -1,35 +1,33 @@
1
1
  const bs58 = require('bs58');
2
2
 
3
- const Identifier = require('../../../lib/identifier/Identifier');
3
+ const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
4
+ const JsDataContract = require('@dashevo/dpp/lib/dataContract/DataContract');
4
5
 
5
- const InvalidDocumentTypeError = require('../../../lib/errors/InvalidDocumentTypeError');
6
-
7
- const generateRandomIdentifier = require('../../../lib/test/utils/generateRandomIdentifier');
8
- const Metadata = require('../../../lib/Metadata');
9
- const DataContract = require('../../../lib/dataContract/DataContract');
10
-
11
- const hash = require('../../../lib/util/hash');
12
- const serializer = require('../../../lib/util/serializer');
13
- const getBinaryPropertiesFromSchema = require('../../../lib/dataContract/getBinaryPropertiesFromSchema');
6
+ const { default: loadWasmDpp } = require('../../../dist');
14
7
 
15
8
  describe('DataContract', () => {
16
- let hashMock;
17
- let encodeMock;
18
9
  let documentType;
19
10
  let documentSchema;
20
11
  let documents;
21
- let dataContract;
12
+ let jsDataContract;
22
13
  let ownerId;
23
14
  let entropy;
24
15
  let contractId;
25
- let getBinaryPropertiesFromSchemaMock;
26
- let metadataFixture;
16
+ let dataContract;
17
+ let defs;
18
+
19
+ let DataContract;
20
+ let DataContractDefaults;
21
+ let Identifier;
22
+ let Metadata;
27
23
 
28
- beforeEach(function beforeEach() {
29
- encodeMock = this.sinonSandbox.stub(serializer, 'encode');
30
- hashMock = this.sinonSandbox.stub(hash, 'hash');
31
- getBinaryPropertiesFromSchemaMock = this.sinonSandbox.stub(getBinaryPropertiesFromSchema, 'getBinaryPropertiesFromSchema');
24
+ before(async () => {
25
+ ({
26
+ DataContract, DataContractDefaults, Identifier, Metadata,
27
+ } = await loadWasmDpp());
28
+ });
32
29
 
30
+ beforeEach(() => {
33
31
  documentType = 'niceDocument';
34
32
 
35
33
  documentSchema = {
@@ -37,6 +35,10 @@ describe('DataContract', () => {
37
35
  nice: {
38
36
  type: 'boolean',
39
37
  },
38
+ aBinaryProperty: {
39
+ type: 'object',
40
+ byteArray: true,
41
+ },
40
42
  },
41
43
  };
42
44
 
@@ -44,36 +46,31 @@ describe('DataContract', () => {
44
46
  [documentType]: documentSchema,
45
47
  };
46
48
 
47
- getBinaryPropertiesFromSchemaMock.withArgs(documentSchema)
48
- .returns({
49
- 'firstLevel.secondLevel': {
50
- type: 'array',
51
- byteArray: true,
52
- },
53
- });
54
-
55
49
  ownerId = generateRandomIdentifier();
56
- entropy = Buffer.alloc(32);
50
+ entropy = Buffer.alloc(32, 420);
57
51
  contractId = generateRandomIdentifier();
58
52
 
59
- dataContract = new DataContract({
60
- $schema: DataContract.DEFAULTS.SCHEMA,
53
+ defs = { something: { type: 'string' } };
54
+
55
+ jsDataContract = new JsDataContract({
56
+ $schema: JsDataContract.DEFAULTS.SCHEMA,
61
57
  $id: contractId,
62
58
  version: 1,
59
+ protocolVersion: 1,
63
60
  ownerId,
64
61
  documents,
65
- $defs: {},
62
+ $defs: defs,
66
63
  });
67
64
 
68
- metadataFixture = new Metadata(42, 0);
69
-
70
- dataContract.setMetadata(metadataFixture);
71
- });
72
-
73
- afterEach(() => {
74
- encodeMock.restore();
75
- hashMock.restore();
76
- getBinaryPropertiesFromSchemaMock.restore();
65
+ dataContract = new DataContract({
66
+ $schema: DataContractDefaults.SCHEMA,
67
+ $id: contractId,
68
+ version: 1,
69
+ protocolVersion: 1,
70
+ ownerId,
71
+ documents,
72
+ $defs: defs,
73
+ });
77
74
  });
78
75
 
79
76
  describe('constructor', () => {
@@ -81,18 +78,20 @@ describe('DataContract', () => {
81
78
  const id = generateRandomIdentifier();
82
79
 
83
80
  dataContract = new DataContract({
84
- $schema: DataContract.DEFAULTS.SCHEMA,
81
+ $schema: DataContractDefaults.SCHEMA,
85
82
  $id: id,
86
83
  ownerId,
84
+ protocolVersion: 1,
85
+ version: 1,
87
86
  documents,
88
- $defs: {},
87
+ $defs: defs,
89
88
  });
90
89
 
91
- expect(dataContract.id).to.deep.equal(id);
92
- expect(dataContract.ownerId).to.deep.equal(ownerId);
93
- expect(dataContract.schema).to.equal(DataContract.DEFAULTS.SCHEMA);
94
- expect(dataContract.documents).to.equal(documents);
95
- expect(dataContract.$defs).to.deep.equal({});
90
+ expect(dataContract.getId().toBuffer()).to.deep.equal(id.toBuffer());
91
+ expect(dataContract.getOwnerId().toBuffer()).to.deep.equal(ownerId.toBuffer());
92
+ expect(dataContract.getJsonMetaSchema()).to.deep.equal(DataContractDefaults.SCHEMA);
93
+ expect(dataContract.getDocuments()).to.deep.equal(documents);
94
+ expect(dataContract.getDefinitions()).to.deep.equal(defs);
96
95
  });
97
96
  });
98
97
 
@@ -100,7 +99,7 @@ describe('DataContract', () => {
100
99
  it('should return DataContract Identifier', () => {
101
100
  const result = dataContract.getId();
102
101
 
103
- expect(result).to.deep.equal(contractId);
102
+ expect(result.toBuffer()).to.deep.equal(contractId.toBuffer());
104
103
  expect(result).to.be.instanceof(Identifier);
105
104
  });
106
105
  });
@@ -117,10 +116,9 @@ describe('DataContract', () => {
117
116
  it('should set meta schema', () => {
118
117
  const metaSchema = 'http://test.com/schema';
119
118
 
120
- const result = dataContract.setJsonMetaSchema(metaSchema);
119
+ dataContract.setJsonMetaSchema(metaSchema);
121
120
 
122
- expect(result).to.equal(dataContract);
123
- expect(dataContract.schema).to.equal(metaSchema);
121
+ expect(dataContract.getJsonMetaSchema()).to.deep.equal(metaSchema);
124
122
  });
125
123
  });
126
124
 
@@ -128,12 +126,12 @@ describe('DataContract', () => {
128
126
  it('should return meta schema', () => {
129
127
  const result = dataContract.getJsonMetaSchema();
130
128
 
131
- expect(result).to.equal(dataContract.schema);
129
+ expect(result).to.deep.equal(DataContractDefaults.SCHEMA);
132
130
  });
133
131
  });
134
132
 
135
- describe('#setDocuments', () => {
136
- it('should set Documents definition', () => {
133
+ describe('#getDocuments', () => {
134
+ it('should get Documents definition', () => {
137
135
  const anotherDocuments = {
138
136
  anotherDocument: {
139
137
  properties: {
@@ -142,18 +140,23 @@ describe('DataContract', () => {
142
140
  },
143
141
  };
144
142
 
145
- const result = dataContract.setDocuments(anotherDocuments);
146
-
147
- expect(result).to.equal(dataContract);
148
- expect(dataContract.documents).to.equal(anotherDocuments);
143
+ dataContract.setDocuments(anotherDocuments);
144
+ expect(dataContract.getDocuments()).to.deep.equal(anotherDocuments);
149
145
  });
150
146
  });
151
147
 
152
- describe('#getDocuments', () => {
153
- it('should return Documents definition', () => {
154
- const result = dataContract.getDocuments();
148
+ describe('#setDocuments', () => {
149
+ it('should set Documents definition', () => {
150
+ const anotherDocuments = {
151
+ anotherDocument: {
152
+ properties: {
153
+ name: { type: 'string' },
154
+ },
155
+ },
156
+ };
155
157
 
156
- expect(result).to.equal(dataContract.documents);
158
+ dataContract.setDocuments(anotherDocuments);
159
+ expect(dataContract.getDocuments()).to.deep.equal(anotherDocuments);
157
160
  });
158
161
  });
159
162
 
@@ -180,12 +183,12 @@ describe('DataContract', () => {
180
183
  },
181
184
  };
182
185
 
183
- const result = dataContract.setDocumentSchema(anotherType, anotherDefinition);
186
+ dataContract.setDocumentSchema(anotherType, anotherDefinition);
184
187
 
185
- expect(result).to.equal(dataContract);
188
+ const anotherDocuments = dataContract.getDocuments();
186
189
 
187
- expect(dataContract.documents).to.have.property(anotherType);
188
- expect(dataContract.documents[anotherType]).to.equal(anotherDefinition);
190
+ expect(anotherDocuments).to.have.property(anotherType);
191
+ expect(anotherDocuments[anotherType]).to.deep.equal(anotherDefinition);
189
192
  });
190
193
  });
191
194
 
@@ -197,14 +200,13 @@ describe('DataContract', () => {
197
200
  } catch (e) {
198
201
  error = e;
199
202
  }
200
-
201
- expect(error).to.be.an.instanceOf(InvalidDocumentTypeError);
203
+ expect(error.getDocType()).to.equal('undefinedObject');
202
204
  });
203
205
 
204
206
  it('should return Document Schema', () => {
205
207
  const result = dataContract.getDocumentSchema(documentType);
206
208
 
207
- expect(result).to.equal(documentSchema);
209
+ expect(result).to.deep.equal(documentSchema);
208
210
  });
209
211
  });
210
212
 
@@ -216,30 +218,25 @@ describe('DataContract', () => {
216
218
  } catch (e) {
217
219
  error = e;
218
220
  }
219
-
220
- expect(error).to.be.an.instanceOf(InvalidDocumentTypeError);
221
+ expect(error.getDocType()).to.equal('undefinedObject');
221
222
  });
222
223
 
223
- it('should return schema with $ref to Document schema', () => {
224
- const hashed = Buffer.from(ownerId + entropy);
225
- hashMock.returns(hashed);
226
-
224
+ it('should return schema ref', () => {
227
225
  const result = dataContract.getDocumentSchemaRef(documentType);
228
226
 
229
- expect(result).to.deep.equal({
230
- $ref: `${dataContract.getJsonSchemaId()}#/documents/niceDocument`,
231
- });
227
+ expect(result).to.equal(`${dataContract.getJsonSchemaId()}#/documents/niceDocument`);
232
228
  });
233
229
  });
234
230
 
235
231
  describe('#setDefinitions', () => {
236
232
  it('should set $defs', () => {
237
- const $defs = {};
233
+ const $defs = {
234
+ subSchema: { type: 'object' },
235
+ };
238
236
 
239
- const result = dataContract.setDefinitions($defs);
237
+ dataContract.setDefinitions($defs);
240
238
 
241
- expect(result).to.equal(dataContract);
242
- expect(dataContract.$defs).to.equal($defs);
239
+ expect(dataContract.getDefinitions()).to.deep.equal($defs);
243
240
  });
244
241
  });
245
242
 
@@ -247,21 +244,22 @@ describe('DataContract', () => {
247
244
  it('should return $defs', () => {
248
245
  const result = dataContract.getDefinitions();
249
246
 
250
- expect(result).to.equal(dataContract.$defs);
247
+ expect(result).to.deep.equal(defs);
251
248
  });
252
249
  });
253
250
 
254
251
  describe('#toJSON', () => {
255
- it('should return DataContract as plain object', () => {
252
+ it('should return JataContract as plain object', () => {
256
253
  const result = dataContract.toJSON();
257
254
 
258
255
  expect(result).to.deep.equal({
259
256
  protocolVersion: dataContract.getProtocolVersion(),
260
257
  $id: bs58.encode(contractId),
261
- $schema: DataContract.DEFAULTS.SCHEMA,
258
+ $schema: DataContractDefaults.SCHEMA,
262
259
  version: 1,
263
260
  ownerId: bs58.encode(ownerId),
264
261
  documents,
262
+ $defs: defs,
265
263
  });
266
264
  });
267
265
 
@@ -276,7 +274,7 @@ describe('DataContract', () => {
276
274
 
277
275
  expect(result).to.deep.equal({
278
276
  protocolVersion: dataContract.getProtocolVersion(),
279
- $schema: DataContract.DEFAULTS.SCHEMA,
277
+ $schema: DataContractDefaults.SCHEMA,
280
278
  $id: bs58.encode(contractId),
281
279
  version: 1,
282
280
  ownerId: bs58.encode(ownerId),
@@ -288,68 +286,29 @@ describe('DataContract', () => {
288
286
 
289
287
  describe('#toBuffer', () => {
290
288
  it('should return DataContract as a Buffer', () => {
291
- const serializedDataContract = Buffer.from('123');
292
-
293
- encodeMock.returns(serializedDataContract);
294
-
295
- const result = dataContract.toBuffer();
296
-
297
- const dataContractToEncode = dataContract.toObject();
298
- delete dataContractToEncode.protocolVersion;
289
+ expect(jsDataContract.getProtocolVersion()).to.deep.equal(dataContract.getProtocolVersion());
299
290
 
300
- const protocolVersionUInt32 = Buffer.alloc(4);
301
- protocolVersionUInt32.writeUInt32LE(dataContract.getProtocolVersion(), 0);
291
+ const jsResult = jsDataContract.toBuffer();
292
+ const wasmResult = dataContract.toBuffer();
302
293
 
303
- expect(encodeMock).to.have.been.calledOnceWith(dataContractToEncode);
304
- expect(result).to.deep.equal(Buffer.concat([protocolVersionUInt32, serializedDataContract]));
294
+ expect(wasmResult).to.deep.equal(jsResult);
305
295
  });
306
296
  });
307
297
 
308
298
  describe('#hash', () => {
309
- let toBufferMock;
310
-
311
- beforeEach(function beforeEach() {
312
- toBufferMock = this.sinonSandbox.stub(DataContract.prototype, 'toBuffer');
313
- });
314
-
315
- afterEach(() => {
316
- toBufferMock.restore();
317
- });
318
-
319
299
  it('should return DataContract hash', () => {
320
- const serializedDataContract = '123';
321
- const hashedDocument = '456';
322
-
323
- toBufferMock.returns(serializedDataContract);
324
-
325
- hashMock.returns(hashedDocument);
326
-
327
- const result = dataContract.hash();
328
-
329
- expect(result).to.equal(hashedDocument);
330
-
331
- expect(toBufferMock).to.have.been.calledOnce();
300
+ const jsResult = jsDataContract.hash();
301
+ const wasmResult = dataContract.hash();
332
302
 
333
- expect(hashMock).to.have.been.calledOnceWith(serializedDataContract);
303
+ expect(wasmResult).to.deep.equal(jsResult);
334
304
  });
335
305
  });
336
306
 
337
307
  describe('#setEntropy', () => {
338
308
  it('should set entropy', () => {
339
- const result = dataContract.setEntropy(entropy);
309
+ dataContract.setEntropy(entropy);
340
310
 
341
- expect(result).to.equal(dataContract);
342
- expect(dataContract.entropy).to.deep.equal(entropy);
343
- });
344
- });
345
-
346
- describe('#getEntropy', () => {
347
- it('should return entropy', () => {
348
- dataContract.entropy = entropy;
349
-
350
- const result = dataContract.getEntropy();
351
-
352
- expect(result).to.equal(dataContract.entropy);
311
+ expect(dataContract.getEntropy()).to.deep.equal(entropy);
353
312
  });
354
313
  });
355
314
 
@@ -357,51 +316,33 @@ describe('DataContract', () => {
357
316
  it('should return flat map of properties with `contentEncoding` keywords', () => {
358
317
  const result = dataContract.getBinaryProperties(documentType);
359
318
  expect(result).to.deep.equal({
360
- 'firstLevel.secondLevel': {
361
- type: 'array',
362
- byteArray: true,
363
- },
364
- });
365
- });
366
-
367
- it('should return cached flat map of properties with `contentEncoding` keywords', () => {
368
- dataContract.getBinaryProperties(documentType);
369
-
370
- const result = dataContract.getBinaryProperties(documentType);
371
-
372
- expect(result).to.deep.equal({
373
- 'firstLevel.secondLevel': {
374
- type: 'array',
319
+ aBinaryProperty: {
320
+ type: 'object',
375
321
  byteArray: true,
376
322
  },
377
323
  });
378
-
379
- expect(getBinaryPropertiesFromSchemaMock).to.have.been.calledOnceWith(documentSchema);
380
324
  });
381
325
 
382
326
  it('should throw an error if document type is not found', () => {
327
+ let error;
383
328
  try {
384
329
  dataContract.getBinaryProperties('unknown');
385
330
  expect.fail('Error was not thrown');
386
331
  } catch (e) {
387
- expect(e).to.be.an.instanceOf(InvalidDocumentTypeError);
332
+ error = e;
388
333
  }
334
+ expect(error.getDocType()).to.equal('unknown');
389
335
  });
390
336
  });
391
337
 
392
338
  describe('#setMetadata', () => {
393
339
  it('should set metadata', () => {
394
340
  const otherMetadata = new Metadata(43, 1);
341
+ const otherMetadataToObject = otherMetadata.toObject();
395
342
 
396
343
  dataContract.setMetadata(otherMetadata);
397
344
 
398
- expect(dataContract.metadata).to.deep.equal(otherMetadata);
399
- });
400
- });
401
-
402
- describe('#getMetadata', () => {
403
- it('should get metadata', () => {
404
- expect(dataContract.getMetadata()).to.deep.equal(metadataFixture);
345
+ expect(dataContract.getMetadata().toObject()).to.deep.equal(otherMetadataToObject);
405
346
  });
406
347
  });
407
348
  });