@dashevo/wasm-dpp 1.8.0 → 2.0.0-dev.1

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 (80) hide show
  1. package/.eslintrc +3 -0
  2. package/Cargo.toml +3 -2
  3. package/dist/wasm/wasm_dpp.d.ts +1824 -1070
  4. package/dist/wasm/wasm_dpp.js +597 -168
  5. package/dist/wasm/wasm_dpp_bg.js +1 -1
  6. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +1 -1
  7. package/lib/test/fixtures/getIdentityFixture.js +1 -1
  8. package/lib/wasm/wasm_dpp.d.ts +1824 -1070
  9. package/package.json +6 -6
  10. package/scripts/build-wasm.sh +1 -1
  11. package/src/data_contract/data_contract.rs +17 -22
  12. package/src/data_contract/mod.rs +1 -0
  13. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +21 -0
  14. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +25 -0
  15. package/src/data_contract/tokens.rs +60 -0
  16. package/src/document/document_facade.rs +3 -3
  17. package/src/document/errors/document_already_exists_error.rs +1 -1
  18. package/src/document/errors/document_not_provided_error.rs +1 -1
  19. package/src/document/errors/invalid_document_action_error.rs +2 -2
  20. package/src/document/extended_document.rs +3 -5
  21. package/src/document/factory.rs +14 -8
  22. package/src/document/mod.rs +3 -5
  23. package/src/document/state_transition/batch_transition/batched_transition/mod.rs +18 -0
  24. package/src/document/state_transition/{document_batch_transition → batch_transition}/document_transition/document_create_transition.rs +45 -3
  25. package/src/document/state_transition/{document_batch_transition → batch_transition}/document_transition/document_delete_transition.rs +23 -4
  26. package/src/document/state_transition/{document_batch_transition → batch_transition}/document_transition/document_replace_transition.rs +24 -5
  27. package/src/document/state_transition/{document_batch_transition → batch_transition}/document_transition/mod.rs +99 -14
  28. package/src/document/state_transition/{document_batch_transition → batch_transition}/mod.rs +45 -29
  29. package/src/document/state_transition/batch_transition/token_transition/burn.rs +12 -0
  30. package/src/document/state_transition/batch_transition/token_transition/claim.rs +12 -0
  31. package/src/document/state_transition/batch_transition/token_transition/config.rs +12 -0
  32. package/src/document/state_transition/batch_transition/token_transition/destroy.rs +22 -0
  33. package/src/document/state_transition/batch_transition/token_transition/emergency_action.rs +12 -0
  34. package/src/document/state_transition/batch_transition/token_transition/freeze.rs +22 -0
  35. package/src/document/state_transition/batch_transition/token_transition/mint.rs +31 -0
  36. package/src/document/state_transition/batch_transition/token_transition/mod.rs +147 -0
  37. package/src/document/state_transition/batch_transition/token_transition/transfer.rs +22 -0
  38. package/src/document/state_transition/batch_transition/token_transition/unfreeze.rs +22 -0
  39. package/src/document/state_transition/mod.rs +1 -1
  40. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +2 -2
  41. package/src/errors/consensus/consensus_error.rs +167 -1
  42. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +4 -4
  43. package/src/identity/identity.rs +14 -14
  44. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +10 -0
  45. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +31 -6
  46. package/src/identity/state_transition/identity_credit_withdrawal_transition/transition.rs +15 -0
  47. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +10 -0
  48. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +29 -4
  49. package/src/identity/state_transition/identity_update_transition/to_object.rs +2 -2
  50. package/src/identity/state_transition/transition_types.rs +1 -1
  51. package/src/metadata.rs +16 -27
  52. package/src/state_transition/state_transition_factory.rs +2 -4
  53. package/src/voting/state_transition/masternode_vote_transition/mod.rs +75 -50
  54. package/test/integration/document/Document.spec.js +2 -7
  55. package/test/integration/document/DocumentFacade.spec.js +4 -4
  56. package/test/integration/identity/IdentityFacade.spec.js +5 -10
  57. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +4 -4
  58. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +3 -3
  59. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +1 -1
  60. package/test/integration/stateTransition/StateTransitionFacade.spec.js +3 -3
  61. package/test/unit/Metadata.spec.js +8 -23
  62. package/test/unit/dataContract/DataContract.spec.js +1 -18
  63. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +1 -1
  64. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +1 -1
  65. package/test/unit/document/Document.spec.js +4 -7
  66. package/test/unit/document/DocumentFactory.spec.js +2 -2
  67. package/test/unit/identity/Identity.spec.js +15 -35
  68. package/test/unit/identity/IdentityFactory.spec.js +3 -3
  69. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +2 -2
  70. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +1 -1
  71. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/basic/find_duplicates_by_id.rs +0 -0
  72. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/basic/find_duplicates_by_indices.rs +0 -0
  73. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/basic/mod.rs +0 -0
  74. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/basic/validate_documents_batch_transition_basic.rs +0 -0
  75. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/basic/validate_partial_compound_indices.rs +0 -0
  76. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/mod.rs +0 -0
  77. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/state/fetch_extended_documents.rs +0 -0
  78. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/state/mod.rs +0 -0
  79. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/state/validate_documents_batch_transitions_state.rs +0 -0
  80. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/state/validate_documents_uniqueness_by_indices.rs +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dashevo/wasm-dpp",
3
- "version": "1.8.0",
3
+ "version": "2.0.0-dev.1",
4
4
  "description": "The JavaScript implementation of the Dash Platform Protocol",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -40,11 +40,11 @@
40
40
  },
41
41
  "devDependencies": {
42
42
  "@apidevtools/json-schema-ref-parser": "^8.0.0",
43
- "@babel/cli": "^7.23.0",
44
- "@babel/core": "^7.23.3",
45
- "@babel/preset-env": "^7.23.3",
43
+ "@babel/cli": "^7.26.4",
44
+ "@babel/core": "^7.26.10",
45
+ "@babel/preset-env": "^7.26.9",
46
46
  "@dashevo/dashcore-lib": "~0.22.0",
47
- "@dashevo/dpns-contract": "1.8.0",
47
+ "@dashevo/dpns-contract": "2.0.0-dev.1",
48
48
  "@types/bs58": "^4.0.1",
49
49
  "@types/node": "^14.6.0",
50
50
  "@yarnpkg/pnpify": "^4.0.0-rc.42",
@@ -73,7 +73,7 @@
73
73
  "karma-webpack": "^5.0.0",
74
74
  "lodash": "^4.17.21",
75
75
  "long": "^5.2.0",
76
- "mocha": "^10.2.0",
76
+ "mocha": "^11.1.0",
77
77
  "path-browserify": "^1.0.1",
78
78
  "process": "^0.11.10",
79
79
  "sinon": "^17.0.1",
@@ -49,7 +49,7 @@ fi
49
49
 
50
50
  if command -v wasm-opt &> /dev/null; then
51
51
  echo "Optimizing wasm using Binaryen"
52
- wasm-opt -Oz "$OUTPUT_FILE" -o "$OUTPUT_FILE"
52
+ wasm-opt -tnh --flatten --rereloop -Oz --gufa -Oz --gufa -Oz "$OUTPUT_FILE" -o "$OUTPUT_FILE"
53
53
  else
54
54
  echo "wasm-opt command not found. Skipping wasm optimization."
55
55
  fi
@@ -7,10 +7,11 @@ pub use serde::{Deserialize, Serialize};
7
7
  use wasm_bindgen::prelude::*;
8
8
 
9
9
  use dpp::data_contract::schema::DataContractSchemaMethodsV0;
10
- use dpp::data_contract::DataContract;
10
+ use dpp::data_contract::{DataContract, TokenContractPosition};
11
11
  use dpp::platform_value::{platform_value, Value};
12
12
 
13
13
  use dpp::data_contract::accessors::v0::{DataContractV0Getters, DataContractV0Setters};
14
+ use dpp::data_contract::accessors::v1::DataContractV1Getters;
14
15
  use dpp::data_contract::config::DataContractConfig;
15
16
  use dpp::data_contract::conversion::json::DataContractJsonConversionMethodsV0;
16
17
  use dpp::data_contract::conversion::value::v0::DataContractValueConversionMethodsV0;
@@ -22,6 +23,7 @@ use dpp::serialization::PlatformSerializableWithPlatformVersion;
22
23
  use dpp::version::PlatformVersion;
23
24
  use dpp::ProtocolError;
24
25
 
26
+ use crate::data_contract::tokens::TokenConfigurationWasm;
25
27
  use crate::identifier::identifier_from_js_value;
26
28
  use crate::metadata::MetadataWasm;
27
29
  use crate::utils::get_bool_from_options;
@@ -313,8 +315,8 @@ impl DataContractWasm {
313
315
  }
314
316
 
315
317
  #[wasm_bindgen(js_name=setIdentityNonce)]
316
- pub fn set_identity_nonce(&mut self, e: u64) -> Result<(), JsValue> {
317
- self.identity_nonce = Some(e);
318
+ pub fn set_identity_nonce(&mut self, nonce: u64) -> Result<(), JsValue> {
319
+ self.identity_nonce = Some(nonce);
318
320
  Ok(())
319
321
  }
320
322
 
@@ -323,25 +325,6 @@ impl DataContractWasm {
323
325
  self.identity_nonce.unwrap_or_default()
324
326
  }
325
327
 
326
- #[wasm_bindgen(js_name=getMetadata)]
327
- pub fn metadata(&self) -> Option<MetadataWasm> {
328
- self.inner.metadata().cloned().map(Into::into)
329
- }
330
-
331
- #[wasm_bindgen(js_name=setMetadata)]
332
- pub fn set_metadata(&mut self, metadata: JsValue) -> Result<(), JsValue> {
333
- let metadata = if !metadata.is_falsy() {
334
- let metadata = metadata.to_wasm::<MetadataWasm>("Metadata")?;
335
- Some(metadata.to_owned().into())
336
- } else {
337
- None
338
- };
339
-
340
- self.inner.set_metadata(metadata);
341
-
342
- Ok(())
343
- }
344
-
345
328
  #[wasm_bindgen(js_name=toObject)]
346
329
  pub fn to_object(&self) -> Result<JsValue, JsValue> {
347
330
  let platform_version = PlatformVersion::first();
@@ -448,6 +431,18 @@ impl DataContractWasm {
448
431
  .with_js_error()
449
432
  .map(Into::into)
450
433
  }
434
+
435
+ #[wasm_bindgen(js_name=getTokenConfiguration)]
436
+ pub fn token_configuration(
437
+ &self,
438
+ token_contract_position: TokenContractPosition,
439
+ ) -> Result<TokenConfigurationWasm, JsValue> {
440
+ self.inner
441
+ .expected_token_configuration(token_contract_position)
442
+ .map_err(ProtocolError::from)
443
+ .with_js_error()
444
+ .map(|token_configuration| token_configuration.clone().into())
445
+ }
451
446
  }
452
447
 
453
448
  impl Inner for DataContractWasm {
@@ -8,6 +8,7 @@ pub mod errors;
8
8
  mod state_transition;
9
9
 
10
10
  mod data_contract_facade;
11
+ pub mod tokens;
11
12
  // mod index;
12
13
 
13
14
  pub use data_contract_facade::DataContractFacadeWasm;
@@ -81,6 +81,27 @@ impl DataContractCreateTransitionWasm {
81
81
  pub fn get_type(&self) -> u32 {
82
82
  self.0.state_transition_type() as u32
83
83
  }
84
+
85
+ #[wasm_bindgen(js_name=setUserFeeIncrease)]
86
+ pub fn set_user_fee_increase(&mut self, user_fee_increase: u16) {
87
+ self.0.set_user_fee_increase(user_fee_increase);
88
+ }
89
+
90
+ #[wasm_bindgen(js_name=getUserFeeIncrease)]
91
+ pub fn get_user_fee_increase(&self) -> u16 {
92
+ self.0.user_fee_increase() as u16
93
+ }
94
+
95
+ #[wasm_bindgen(js_name=getSignature)]
96
+ pub fn get_signature(&self) -> Buffer {
97
+ Buffer::from_bytes(self.0.signature().as_slice())
98
+ }
99
+
100
+ #[wasm_bindgen(js_name=getSignaturePublicKeyId)]
101
+ pub fn get_signature_public_key_id(&self) -> u32 {
102
+ self.0.signature_public_key_id()
103
+ }
104
+
84
105
  //
85
106
  // #[wasm_bindgen(js_name=toJSON)]
86
107
  // pub fn to_json(&self, skip_signature: Option<bool>) -> Result<JsValue, JsValue> {
@@ -73,11 +73,36 @@ impl DataContractUpdateTransitionWasm {
73
73
  self.0.owner_id().into()
74
74
  }
75
75
 
76
+ #[wasm_bindgen(js_name=getIdentityContractNonce)]
77
+ pub fn get_identity_contract_nonce(&self) -> u64 {
78
+ self.0.identity_contract_nonce() as u64
79
+ }
80
+
76
81
  #[wasm_bindgen(js_name=getType)]
77
82
  pub fn get_type(&self) -> u32 {
78
83
  self.0.state_transition_type() as u32
79
84
  }
80
85
 
86
+ #[wasm_bindgen(js_name=getUserFeeIncrease)]
87
+ pub fn get_user_fee_increase(&self) -> u16 {
88
+ self.0.user_fee_increase() as u16
89
+ }
90
+
91
+ #[wasm_bindgen(js_name=setUserFeeIncrease)]
92
+ pub fn set_user_fee_increase(&mut self, user_fee_increase: u16) {
93
+ self.0.set_user_fee_increase(user_fee_increase);
94
+ }
95
+
96
+ #[wasm_bindgen(js_name=getSignature)]
97
+ pub fn get_signature(&self) -> Buffer {
98
+ Buffer::from_bytes(self.0.signature().as_slice())
99
+ }
100
+
101
+ #[wasm_bindgen(js_name=getSignaturePublicKeyId)]
102
+ pub fn get_signature_public_key_id(&self) -> u32 {
103
+ self.0.signature_public_key_id()
104
+ }
105
+
81
106
  // #[wasm_bindgen(js_name=toJSON)]
82
107
  // pub fn to_json(&self, skip_signature: Option<bool>) -> Result<JsValue, JsValue> {
83
108
  // let serializer = serde_wasm_bindgen::Serializer::json_compatible();
@@ -0,0 +1,60 @@
1
+ use dpp::data_contract::associated_token::token_configuration::accessors::v0::TokenConfigurationV0Getters;
2
+ use dpp::data_contract::associated_token::token_keeps_history_rules::accessors::v0::TokenKeepsHistoryRulesV0Getters;
3
+ use dpp::data_contract::associated_token::token_keeps_history_rules::TokenKeepsHistoryRules;
4
+ use dpp::data_contract::TokenConfiguration;
5
+ use wasm_bindgen::prelude::wasm_bindgen;
6
+
7
+ #[derive(Debug, Clone)]
8
+ #[wasm_bindgen(js_name = "TokenConfiguration")]
9
+ pub struct TokenConfigurationWasm(TokenConfiguration);
10
+
11
+ impl From<TokenConfiguration> for TokenConfigurationWasm {
12
+ fn from(value: TokenConfiguration) -> Self {
13
+ Self(value)
14
+ }
15
+ }
16
+
17
+ impl Into<TokenConfiguration> for TokenConfigurationWasm {
18
+ fn into(self) -> TokenConfiguration {
19
+ self.0
20
+ }
21
+ }
22
+
23
+ #[wasm_bindgen(js_class = "TokenConfiguration")]
24
+ impl TokenConfigurationWasm {
25
+ #[wasm_bindgen(js_name=keepsHistory)]
26
+ pub fn keeps_history(&self) -> TokenKeepsHistoryRulesWasm {
27
+ TokenKeepsHistoryRulesWasm(*self.0.keeps_history())
28
+ }
29
+ }
30
+
31
+ #[derive(Debug, Clone)]
32
+ #[wasm_bindgen(js_name = "TokenKeepsHistoryRules")]
33
+ pub struct TokenKeepsHistoryRulesWasm(TokenKeepsHistoryRules);
34
+
35
+ #[wasm_bindgen(js_class = "TokenKeepsHistoryRules")]
36
+ impl TokenKeepsHistoryRulesWasm {
37
+ /// Whether transfer history is recorded.
38
+ #[wasm_bindgen(js_name=keepsTransferHistory)]
39
+ pub fn keeps_transfer_history(&self) -> bool {
40
+ self.0.keeps_transfer_history()
41
+ }
42
+
43
+ /// Whether freezing history is recorded.
44
+ #[wasm_bindgen(js_name=keepsFreezingHistory)]
45
+ pub fn keeps_freezing_history(&self) -> bool {
46
+ self.0.keeps_freezing_history()
47
+ }
48
+
49
+ /// Whether minting history is recorded.
50
+ #[wasm_bindgen(js_name=keepsMintingHistory)]
51
+ pub fn keeps_minting_history(&self) -> bool {
52
+ self.0.keeps_minting_history()
53
+ }
54
+
55
+ /// Whether burning history is recorded.
56
+ #[wasm_bindgen(js_name=keepsBurningHistory)]
57
+ pub fn keeps_burning_history(&self) -> bool {
58
+ self.0.keeps_burning_history()
59
+ }
60
+ }
@@ -4,7 +4,7 @@ use wasm_bindgen::{prelude::*, JsValue};
4
4
  use crate::document::factory::DocumentFactoryWASM;
5
5
  use crate::{DataContractWasm, ExtendedDocumentWasm};
6
6
 
7
- use crate::document::state_transition::document_batch_transition::DocumentsBatchTransitionWasm;
7
+ use crate::document::state_transition::batch_transition::BatchTransitionWasm;
8
8
 
9
9
  #[derive(Clone)]
10
10
  #[wasm_bindgen(js_name=DocumentFacade)]
@@ -95,8 +95,8 @@ impl DocumentFacadeWasm {
95
95
  pub fn create_state_transition(
96
96
  &self,
97
97
  documents: &JsValue,
98
- nonce_counter_value: &js_sys::Object, //IdentityID/ContractID -> nonce
99
- ) -> Result<DocumentsBatchTransitionWasm, JsValue> {
98
+ nonce_counter_value: &js_sys::Object, //IdentityID/ContractID -> nonce (BigInt)
99
+ ) -> Result<BatchTransitionWasm, JsValue> {
100
100
  self.factory
101
101
  .create_state_transition(documents, nonce_counter_value)
102
102
  }
@@ -1,5 +1,5 @@
1
1
  // use crate::document::state_transition::document_batch_transition::document_transition::from_document_transition_to_js_value;
2
- use dpp::state_transition::documents_batch_transition::document_transition::DocumentTransition;
2
+ use dpp::state_transition::batch_transition::batched_transition::document_transition::DocumentTransition;
3
3
  use thiserror::Error;
4
4
 
5
5
  use super::*;
@@ -1,5 +1,5 @@
1
1
  // use crate::document::state_transition::document_batch_transition::document_transition::from_document_transition_to_js_value;
2
- use dpp::state_transition::documents_batch_transition::document_transition::DocumentTransition;
2
+ use dpp::state_transition::batch_transition::batched_transition::document_transition::DocumentTransition;
3
3
  use thiserror::Error;
4
4
 
5
5
  use super::*;
@@ -1,9 +1,9 @@
1
1
  // use crate::document::state_transition::document_batch_transition::document_transition::from_document_transition_to_js_value;
2
- use dpp::state_transition::documents_batch_transition::document_transition::DocumentTransition;
2
+ use dpp::state_transition::batch_transition::batched_transition::document_transition::DocumentTransition;
3
3
  use thiserror::Error;
4
4
 
5
5
  use super::*;
6
- use dpp::state_transition::documents_batch_transition::document_transition::action_type::TransitionActionTypeGetter;
6
+ use dpp::state_transition::batch_transition::batched_transition::document_transition_action_type::DocumentTransitionActionTypeGetter;
7
7
 
8
8
  #[wasm_bindgen]
9
9
  #[derive(Error, Debug)]
@@ -133,17 +133,15 @@ impl ExtendedDocumentWasm {
133
133
  }
134
134
 
135
135
  #[wasm_bindgen(js_name=setRevision)]
136
- pub fn set_revision(&mut self, rev: Option<u32>) {
137
- // TODO: js feeds Number (u32). Is casting revision to u64 safe?
136
+ pub fn set_revision(&mut self, rev: Option<u64>) {
138
137
  self.0
139
138
  .document_mut()
140
139
  .set_revision(rev.map(|r| r as Revision));
141
140
  }
142
141
 
143
142
  #[wasm_bindgen(js_name=getRevision)]
144
- pub fn get_revision(&self) -> Option<u32> {
145
- // TODO: js expects Number (u32). Is casting revision to u32 safe?
146
- self.0.document().revision().map(|r| r as u32)
143
+ pub fn get_revision(&self) -> Option<u64> {
144
+ self.0.document().revision().map(|r| r)
147
145
  }
148
146
 
149
147
  #[wasm_bindgen(js_name=setEntropy)]
@@ -13,18 +13,18 @@ use dpp::document::Document;
13
13
 
14
14
  use dpp::prelude::ExtendedDocument;
15
15
 
16
- use dpp::identifier::Identifier;
17
- use dpp::state_transition::documents_batch_transition::document_transition::action_type::DocumentTransitionActionType;
18
- use dpp::version::PlatformVersion;
19
- use std::convert::TryFrom;
20
-
21
- use crate::document_batch_transition::DocumentsBatchTransitionWasm;
16
+ use crate::batch_transition::BatchTransitionWasm;
22
17
  use crate::entropy_generator::ExternalEntropyGenerator;
23
18
  use crate::{
24
19
  identifier::identifier_from_js_value,
25
20
  utils::{IntoWasm, ToSerdeJSONExt, WithJsError},
26
21
  DataContractWasm, ExtendedDocumentWasm,
27
22
  };
23
+ use dpp::identifier::Identifier;
24
+ use dpp::state_transition::batch_transition::batched_transition::document_transition_action_type::DocumentTransitionActionType;
25
+ use dpp::version::PlatformVersion;
26
+ use std::convert::TryFrom;
27
+ use std::str::FromStr;
28
28
 
29
29
  #[wasm_bindgen(js_name=DocumentTransitions)]
30
30
  #[derive(Debug, Default)]
@@ -109,7 +109,7 @@ impl DocumentFactoryWASM {
109
109
  &self,
110
110
  documents: &JsValue,
111
111
  nonce_counter_value: &js_sys::Object, //IdentityID/ContractID -> nonce
112
- ) -> Result<DocumentsBatchTransitionWasm, JsValue> {
112
+ ) -> Result<BatchTransitionWasm, JsValue> {
113
113
  let mut nonce_counter = BTreeMap::new();
114
114
  let mut contract_ids_to_check = HashSet::<&Identifier>::new();
115
115
 
@@ -128,7 +128,12 @@ impl DocumentFactoryWASM {
128
128
  .for_each(|entry| {
129
129
  let key_value = js_sys::Array::from(&entry);
130
130
  let contract_id = identifier_from_js_value(&key_value.get(0)).unwrap();
131
- let nonce = key_value.get(1).as_f64().unwrap() as u64;
131
+ let nonce = key_value
132
+ .get(1)
133
+ .as_string()
134
+ .unwrap()
135
+ .parse::<u64>()
136
+ .unwrap();
132
137
  nonce_counter.insert((identity_id, contract_id), nonce);
133
138
  });
134
139
  });
@@ -245,6 +250,7 @@ impl DocumentFactoryWASM {
245
250
  //
246
251
  // Ok(document.into())
247
252
  // }
253
+ //
248
254
 
249
255
  #[wasm_bindgen(js_name=createExtendedDocumentFromDocumentBuffer)]
250
256
  pub fn create_extended_from_document_buffer(
@@ -126,15 +126,13 @@ impl DocumentWasm {
126
126
  }
127
127
 
128
128
  #[wasm_bindgen(js_name=setRevision)]
129
- pub fn set_revision(&mut self, revision: Option<u32>) {
130
- // TODO: JS feeding Number here (u32). Is it okay to cast u32 to u64?
129
+ pub fn set_revision(&mut self, revision: Option<u64>) {
131
130
  self.0.set_revision(revision.map(|r| r as u64));
132
131
  }
133
132
 
134
133
  #[wasm_bindgen(js_name=getRevision)]
135
- pub fn get_revision(&self) -> Option<u32> {
136
- // TODO: JS tests expecting Number (u32). Is it okay to cast u64 to u32 here?
137
- self.0.revision().map(|r| r as u32)
134
+ pub fn get_revision(&self) -> Option<u64> {
135
+ self.0.revision().map(|r| r)
138
136
  }
139
137
 
140
138
  #[wasm_bindgen(js_name=setData)]
@@ -0,0 +1,18 @@
1
+ use dpp::state_transition::batch_transition::batched_transition::BatchedTransition;
2
+ use wasm_bindgen::prelude::wasm_bindgen;
3
+
4
+ #[wasm_bindgen(js_name=BatchedTransition)]
5
+ #[derive(Debug, Clone)]
6
+ pub struct BatchedTransitionWasm(BatchedTransition);
7
+
8
+ impl From<BatchedTransition> for BatchedTransitionWasm {
9
+ fn from(t: BatchedTransition) -> Self {
10
+ BatchedTransitionWasm(t)
11
+ }
12
+ }
13
+
14
+ impl From<BatchedTransitionWasm> for BatchedTransition {
15
+ fn from(t: BatchedTransitionWasm) -> Self {
16
+ t.0
17
+ }
18
+ }
@@ -1,10 +1,13 @@
1
1
  use dpp::prelude::Revision;
2
2
 
3
- use dpp::state_transition::documents_batch_transition::document_create_transition::DocumentCreateTransition;
3
+ use dpp::state_transition::batch_transition::document_create_transition::DocumentCreateTransition;
4
4
 
5
5
  use dpp::document::INITIAL_REVISION;
6
6
 
7
7
  use wasm_bindgen::prelude::*;
8
+ use dpp::state_transition::batch_transition::document_create_transition::v0::v0_methods::DocumentCreateTransitionV0Methods;
9
+ use dpp::state_transition::batch_transition::document_base_transition::document_base_transition_trait::DocumentBaseTransitionAccessors;
10
+ use dpp::state_transition::batch_transition::document_base_transition::v0::v0_methods::DocumentBaseTransitionV0Methods;
8
11
 
9
12
  #[wasm_bindgen(js_name=DocumentCreateTransition)]
10
13
  #[derive(Debug, Clone)]
@@ -77,8 +80,47 @@ impl DocumentCreateTransitionWasm {
77
80
  }
78
81
 
79
82
  #[wasm_bindgen(getter, js_name=INITIAL_REVISION)]
80
- pub fn initial_revision() -> u32 {
81
- INITIAL_REVISION as u32
83
+ pub fn initial_revision() -> u64 {
84
+ INITIAL_REVISION
85
+ }
86
+
87
+ #[wasm_bindgen(js_name = getEntropy)]
88
+ pub fn get_entropy(&self) -> Vec<u8> {
89
+ Vec::from(self.inner.entropy())
90
+ }
91
+
92
+ #[wasm_bindgen(js_name=getIdentityContractNonce)]
93
+ pub fn get_identity_contract_nonce(&self) -> u64 {
94
+ self.inner.base().identity_contract_nonce()
95
+ }
96
+
97
+ #[wasm_bindgen(js_name=setIdentityContractNonce)]
98
+ pub fn set_identity_contract_nonce(&mut self, identity_contract_nonce: u64) {
99
+ let mut base = self.inner.base().clone();
100
+
101
+ base.set_identity_contract_nonce(identity_contract_nonce);
102
+
103
+ self.inner.set_base(base)
104
+ }
105
+
106
+ #[wasm_bindgen(js_name = getPrefundedVotingBalance)]
107
+ pub fn get_prefunded_voting_balance(&self) -> Result<JsValue, JsValue> {
108
+ let prefunded_voting_balance = self.inner.prefunded_voting_balance().clone();
109
+
110
+ match prefunded_voting_balance {
111
+ None => Ok(JsValue::null()),
112
+ Some((index_name, credits)) => {
113
+ let js_object = js_sys::Object::new();
114
+
115
+ js_sys::Reflect::set(
116
+ &js_object,
117
+ &JsValue::from_str(&index_name),
118
+ &JsValue::from(credits),
119
+ )?;
120
+
121
+ Ok(JsValue::from(js_object))
122
+ }
123
+ }
82
124
  }
83
125
 
84
126
  // // AbstractDocumentTransitionMethods
@@ -1,4 +1,4 @@
1
- use dpp::state_transition::documents_batch_transition::{
1
+ use dpp::state_transition::batch_transition::{
2
2
  document_delete_transition, DocumentDeleteTransition,
3
3
  };
4
4
 
@@ -10,9 +10,9 @@ use crate::{
10
10
  document::document_batch_transition::document_transition::to_object,
11
11
  identifier::IdentifierWrapper, utils::WithJsError,
12
12
  };
13
- use dpp::state_transition::documents_batch_transition::document_base_transition::v0::v0_methods::DocumentBaseTransitionV0Methods;
14
- use dpp::state_transition::documents_batch_transition::document_delete_transition::v0::v0_methods::DocumentDeleteTransitionV0Methods;
15
- use dpp::state_transition::documents_batch_transition::document_transition::action_type::DocumentTransitionActionType;
13
+ use dpp::state_transition::batch_transition::document_base_transition::v0::v0_methods::DocumentBaseTransitionV0Methods;
14
+ use dpp::state_transition::batch_transition::document_delete_transition::v0::v0_methods::DocumentDeleteTransitionV0Methods;
15
+ use dpp::state_transition::batch_transition::document_transition::action_type::DocumentTransitionActionType;
16
16
 
17
17
  #[wasm_bindgen(js_name=DocumentDeleteTransition)]
18
18
  #[derive(Debug, Clone)]
@@ -68,11 +68,30 @@ impl DocumentDeleteTransitionWasm {
68
68
  self.inner.base().document_type_name().clone()
69
69
  }
70
70
 
71
+ #[wasm_bindgen(js_name = getEntropy)]
72
+ pub fn get_entropy(&self) -> Vec<u8> {
73
+ Vec::from(self.inner.entropy())
74
+ }
75
+
71
76
  #[wasm_bindgen(js_name=getDataContractId)]
72
77
  pub fn data_contract_id(&self) -> IdentifierWrapper {
73
78
  self.inner.base().data_contract_id().into()
74
79
  }
75
80
 
81
+ #[wasm_bindgen(js_name=getIdentityContractNonce)]
82
+ pub fn get_identity_contract_nonce(&self) -> u64 {
83
+ self.inner.base().identity_contract_nonce() as u64
84
+ }
85
+
86
+ #[wasm_bindgen(js_name=setIdentityContractNonce)]
87
+ pub fn set_identity_contract_nonce(&mut self, identity_contract_nonce: u64) {
88
+ let mut base = self.inner.base().clone();
89
+
90
+ base.set_identity_contract_nonce(identity_contract_nonce);
91
+
92
+ self.inner.set_base(base)
93
+ }
94
+
76
95
  #[wasm_bindgen(js_name=get)]
77
96
  pub fn get(&self, path: String) -> Result<JsValue, JsValue> {
78
97
  let _ = path;
@@ -3,11 +3,15 @@ use std::convert::TryInto;
3
3
 
4
4
  use serde_json::Value as JsonValue;
5
5
 
6
+ use dpp::data_contract::accessors::v0::DataContractV0Getters;
7
+ use dpp::data_contract::document_type::accessors::DocumentTypeV0Getters;
6
8
  use dpp::platform_value::btreemap_extensions::{
7
9
  BTreeValueMapHelper, BTreeValueMapPathHelper, BTreeValueMapReplacementPathHelper,
8
10
  };
9
11
  use dpp::platform_value::ReplacementType;
10
12
  use dpp::prelude::Revision;
13
+ use dpp::state_transition::batch_transition::document_base_transition::v0::v0_methods::DocumentBaseTransitionV0Methods;
14
+ use dpp::state_transition::batch_transition::document_replace_transition::v0::v0_methods::DocumentReplaceTransitionV0Methods;
11
15
  use dpp::{
12
16
  prelude::{DataContract, Identifier},
13
17
  state_transition::documents_batch_transition::{
@@ -18,10 +22,6 @@ use dpp::{
18
22
  };
19
23
  use serde::Serialize;
20
24
  use wasm_bindgen::prelude::*;
21
- use dpp::data_contract::accessors::v0::DataContractV0Getters;
22
- use dpp::data_contract::document_type::accessors::DocumentTypeV0Getters;
23
- use dpp::state_transition::documents_batch_transition::document_base_transition::v0::v0_methods::DocumentBaseTransitionV0Methods;
24
- use dpp::state_transition::documents_batch_transition::document_replace_transition::v0::v0_methods::DocumentReplaceTransitionV0Methods;
25
25
 
26
26
  use crate::{
27
27
  buffer::Buffer,
@@ -31,7 +31,7 @@ use crate::{
31
31
  utils::{ToSerdeJSONExt, WithJsError},
32
32
  BinaryType, DataContractWasm,
33
33
  };
34
- use dpp::state_transition::documents_batch_transition::document_transition::action_type::DocumentTransitionActionType;
34
+ use dpp::state_transition::batch_transition::document_transition::action_type::DocumentTransitionActionType;
35
35
 
36
36
  #[wasm_bindgen(js_name=DocumentReplaceTransition)]
37
37
  #[derive(Debug, Clone)]
@@ -96,6 +96,11 @@ impl DocumentReplaceTransitionWasm {
96
96
  self.inner.revision()
97
97
  }
98
98
 
99
+ #[wasm_bindgen(js_name = getEntropy)]
100
+ pub fn get_entropy(&self) -> Vec<u8> {
101
+ Vec::from(self.inner.entropy())
102
+ }
103
+
99
104
  #[wasm_bindgen(js_name=getUpdatedAt)]
100
105
  pub fn updated_at(&self) -> Option<js_sys::Date> {
101
106
  self.inner
@@ -189,6 +194,20 @@ impl DocumentReplaceTransitionWasm {
189
194
  self.inner.base().data_contract_id().into()
190
195
  }
191
196
 
197
+ #[wasm_bindgen(js_name=getIdentityContractNonce)]
198
+ pub fn get_identity_contract_nonce(&self) -> u64 {
199
+ self.inner.base().identity_contract_nonce() as u64
200
+ }
201
+
202
+ #[wasm_bindgen(js_name=setIdentityContractNonce)]
203
+ pub fn set_identity_contract_nonce(&mut self, identity_contract_nonce: u64) -> () {
204
+ let mut base = self.inner.base().clone();
205
+
206
+ base.set_identity_contract_nonce(identity_contract_nonce);
207
+
208
+ self.inner.set_base(base)
209
+ }
210
+
192
211
  #[wasm_bindgen(js_name=get)]
193
212
  pub fn get(&self, path: String) -> Result<JsValue, JsValue> {
194
213
  let document_data = if let Some(ref data) = self.inner.data() {