pshenmic-dpp 1.0.4 → 1.0.6

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 (152) hide show
  1. package/.github/workflows/build.yml +9 -1
  2. package/.github/workflows/publish.yml +9 -1
  3. package/Cargo.lock +222 -76
  4. package/Cargo.toml +28 -19
  5. package/README.md +75 -23
  6. package/babel.config.json +19 -0
  7. package/dist/wasm/index.d.ts +52 -0
  8. package/dist/wasm/pshenmic_dpp.d.ts +962 -0
  9. package/dist/wasm/pshenmic_dpp.js +5565 -966
  10. package/dist/wasm/pshenmic_dpp_bg.js +1 -1
  11. package/dist/wasm/pshenmic_dpp_bg.wasm.d.ts +440 -0
  12. package/docs/AssetLockProof.md +107 -0
  13. package/docs/Building.md +50 -0
  14. package/docs/ChainLockProof.md +63 -0
  15. package/docs/CoreScript.md +17 -0
  16. package/docs/DataContract.md +192 -0
  17. package/docs/DataContractCreateTransition.md +84 -0
  18. package/docs/DataContractUpdateTransition.md +84 -0
  19. package/docs/Document.md +396 -0
  20. package/docs/DocumentBaseTransition.md +111 -0
  21. package/docs/DocumentCreateTransition.md +132 -0
  22. package/docs/DocumentDeleteTransition.md +82 -0
  23. package/docs/DocumentPurchaseTransition.md +109 -0
  24. package/docs/DocumentReplaceTransition.md +112 -0
  25. package/docs/DocumentTransferTransition.md +96 -0
  26. package/docs/DocumentTransition.md +125 -0
  27. package/docs/DocumentUpdatePriceTransition.md +109 -0
  28. package/docs/DocumentsBatch.md +133 -0
  29. package/docs/Enums.md +103 -0
  30. package/docs/Home.md +28 -0
  31. package/docs/Identifier.md +37 -0
  32. package/docs/Identity.md +140 -0
  33. package/docs/IdentityCreateTransition.md +155 -0
  34. package/docs/IdentityCreditTransfer.md +187 -0
  35. package/docs/IdentityCreditWithdrawalTransition.md +244 -0
  36. package/docs/IdentityPublicKey.md +348 -0
  37. package/docs/IdentityPublicKeyInCreation.md +141 -0
  38. package/docs/IdentityTopUpTransition.md +166 -0
  39. package/docs/IdentityUpdateTransition.md +234 -0
  40. package/docs/InstantAssetLockProof.md +117 -0
  41. package/docs/InstantLock.md +100 -0
  42. package/docs/OutPoint.md +80 -0
  43. package/docs/PrefundedVotingBalance.md +48 -0
  44. package/docs/PrivateKey.md +112 -0
  45. package/docs/TxOut.md +93 -0
  46. package/package.json +15 -8
  47. package/packages/asset_lock_proof/Cargo.toml +19 -0
  48. package/packages/asset_lock_proof/src/chain/mod.rs +79 -0
  49. package/packages/asset_lock_proof/src/instant/instant_lock.rs +111 -0
  50. package/packages/asset_lock_proof/src/instant/mod.rs +115 -0
  51. package/packages/asset_lock_proof/src/lib.rs +133 -0
  52. package/packages/asset_lock_proof/src/outpoint/mod.rs +79 -0
  53. package/packages/asset_lock_proof/src/tx_out/mod.rs +80 -0
  54. package/packages/cbor_conversation/Cargo.toml +2 -2
  55. package/packages/core_script/Cargo.toml +13 -0
  56. package/packages/core_script/src/lib.rs +69 -0
  57. package/packages/data_contract/Cargo.toml +4 -3
  58. package/packages/data_contract/src/lib.rs +209 -33
  59. package/packages/data_contract_transitions/Cargo.toml +2 -2
  60. package/packages/data_contract_transitions/src/create/mod.rs +23 -16
  61. package/packages/data_contract_transitions/src/update/mod.rs +21 -12
  62. package/packages/document/Cargo.toml +3 -2
  63. package/packages/document/src/lib.rs +14 -13
  64. package/packages/document/src/methods/mod.rs +373 -2
  65. package/packages/{document_batch → documents_batch}/Cargo.toml +7 -4
  66. package/packages/documents_batch/src/document_base_transition/mod.rs +88 -0
  67. package/packages/documents_batch/src/document_transition/mod.rs +166 -0
  68. package/packages/documents_batch/src/generators.rs +122 -0
  69. package/packages/documents_batch/src/lib.rs +195 -0
  70. package/packages/documents_batch/src/prefunded_voting_balance/mod.rs +45 -0
  71. package/packages/documents_batch/src/transitions/create/mod.rs +126 -0
  72. package/packages/documents_batch/src/transitions/delete/mod.rs +67 -0
  73. package/packages/documents_batch/src/transitions/mod.rs +6 -0
  74. package/packages/documents_batch/src/transitions/purchase/mod.rs +91 -0
  75. package/packages/documents_batch/src/transitions/replace/mod.rs +93 -0
  76. package/packages/documents_batch/src/transitions/transfer/mod.rs +84 -0
  77. package/packages/documents_batch/src/transitions/update_price/mod.rs +75 -0
  78. package/packages/enums/Cargo.toml +4 -4
  79. package/packages/enums/src/batch/batch_enum.rs +75 -10
  80. package/packages/enums/src/keys/key_type.rs +46 -0
  81. package/packages/enums/src/keys/purpose.rs +55 -0
  82. package/packages/enums/src/keys/security_level.rs +46 -0
  83. package/packages/enums/src/lib.rs +3 -0
  84. package/packages/enums/src/lock_types/mod.rs +65 -0
  85. package/packages/enums/src/network/mod.rs +67 -0
  86. package/packages/enums/src/platform/mod.rs +68 -8
  87. package/packages/enums/src/withdrawal/mod.rs +72 -0
  88. package/packages/identifier/Cargo.toml +9 -0
  89. package/packages/identifier/src/lib.rs +105 -0
  90. package/packages/identity/Cargo.toml +5 -5
  91. package/packages/identity/src/lib.rs +31 -25
  92. package/packages/{public_key → identity_public_key}/Cargo.toml +2 -2
  93. package/packages/{public_key → identity_public_key}/src/lib.rs +74 -27
  94. package/packages/identity_transitions/Cargo.toml +8 -4
  95. package/packages/identity_transitions/src/create_transition/mod.rs +102 -37
  96. package/packages/identity_transitions/src/credit_withdrawal_transition/mod.rs +212 -0
  97. package/packages/identity_transitions/src/identity_credit_transfer_transition/mod.rs +169 -0
  98. package/packages/identity_transitions/src/lib.rs +6 -1
  99. package/packages/identity_transitions/src/public_key_in_creation/mod.rs +197 -0
  100. package/packages/identity_transitions/src/top_up_transition/mod.rs +141 -0
  101. package/packages/identity_transitions/src/update_transition/mod.rs +213 -0
  102. package/packages/mock_bls/Cargo.toml +1 -1
  103. package/packages/private_key/Cargo.toml +4 -3
  104. package/packages/private_key/src/lib.rs +44 -6
  105. package/packages/state_transition/Cargo.toml +6 -4
  106. package/packages/state_transition/src/lib.rs +102 -36
  107. package/packages/utils/Cargo.toml +3 -4
  108. package/packages/utils/src/lib.rs +17 -18
  109. package/scripts/build-js.sh +22 -5
  110. package/scripts/build.sh +27 -2
  111. package/src/lib.rs +8 -1
  112. package/tests/AssetLockProof.spec.js +80 -0
  113. package/tests/ChainLockProof.spec.js +69 -0
  114. package/tests/CoreScript.spec.js +37 -0
  115. package/tests/DataContract.spec.js +178 -0
  116. package/tests/DataContractCreateStateTransition.spec.js +109 -0
  117. package/tests/DataContractUpdateStateTransition.spec.js +109 -0
  118. package/tests/Document.spec.js +238 -0
  119. package/tests/DocumentBatchTransition.spec.js +109 -0
  120. package/tests/DocumentTransition.spec.js +97 -0
  121. package/tests/DocumentsTransitions.spec.js +705 -0
  122. package/tests/Identifier.spec.js +84 -0
  123. package/tests/Identity.spec.js +113 -0
  124. package/tests/IdentityCreateTransition.spec.js +93 -0
  125. package/tests/IdentityCreditTransferTransition.spec.js +146 -0
  126. package/tests/IdentityCreditWithdrawalTransition.spec.js +192 -0
  127. package/tests/IdentityPublicKey.spec.js +132 -0
  128. package/tests/IdentityTopUpTransition.spec.js +131 -0
  129. package/tests/IdentityUpdateTransition.spec.js +147 -0
  130. package/tests/InstantLockProof.spec.js +97 -0
  131. package/tests/OutPoint.spec.js +55 -0
  132. package/tests/PrivateKey.spec.js +73 -0
  133. package/tests/PublicKeyInCreation.spec.js +258 -0
  134. package/tests/TxOut.spec.js +76 -0
  135. package/tests/mocks/DataContract/DataContract.json +153 -0
  136. package/tests/mocks/DataContract/index.js +6 -0
  137. package/tests/mocks/Document/DataContract.json +23 -0
  138. package/tests/mocks/Document/document.json +3 -0
  139. package/tests/mocks/Document/document2.json +3 -0
  140. package/tests/mocks/Document/index.js +11 -0
  141. package/tests/mocks/Identity/index.js +7 -0
  142. package/tests/mocks/Locks/index.js +5 -0
  143. package/tests/mocks/PrivateKey/index.js +5 -0
  144. package/tests/mocks/PublicKey/index.js +14 -0
  145. package/tests/utils/hex.js +15 -0
  146. package/tests/utils/wasm.js +14 -0
  147. package/typings/index.d.ts +52 -0
  148. package/packages/document/src/methods/js.rs +0 -260
  149. package/packages/document/src/methods/rust.rs +0 -92
  150. package/packages/document_batch/src/generators.rs +0 -63
  151. package/packages/document_batch/src/lib.rs +0 -228
  152. package/packages/identity_transitions/src/create_transition/public_key_in_creation/mod.rs +0 -146
@@ -1,260 +0,0 @@
1
- use crate::DocumentWASM;
2
- use dpp::ProtocolError;
3
- use dpp::dashcore::hashes::serde::Serialize;
4
- use dpp::data_contract::JsonValue;
5
- use dpp::document::Document;
6
- use dpp::document::serialization_traits::DocumentPlatformConversionMethodsV0;
7
- use dpp::platform_value::converter::serde_json::BTreeValueJsonConverter;
8
- use dpp::platform_value::string_encoding::Encoding::Base58;
9
- use dpp::prelude::Revision;
10
- use pshenmic_dpp_data_contract::DataContractWASM;
11
- use pshenmic_dpp_enums::platform::PlatformVersionWASM;
12
- use pshenmic_dpp_utils::{ToSerdeJSONExt, WithJsError, identifier_from_js_value};
13
- use wasm_bindgen::JsValue;
14
- use wasm_bindgen::prelude::wasm_bindgen;
15
-
16
- #[wasm_bindgen]
17
- impl DocumentWASM {
18
- #[wasm_bindgen(constructor)]
19
- pub fn js_new(
20
- js_raw_document: JsValue,
21
- js_document_type_name: &str,
22
- js_revision: u64,
23
- js_data_contract_id: &str,
24
- js_owner_id: &str,
25
- ) -> Self {
26
- let revision = Revision::from(js_revision);
27
-
28
- let document = js_raw_document
29
- .with_serde_to_platform_value_map()
30
- .expect("cannot convert document to platform value map");
31
-
32
- DocumentWASM::new(
33
- document,
34
- js_document_type_name,
35
- revision,
36
- js_data_contract_id,
37
- js_owner_id,
38
- )
39
- }
40
-
41
- #[wasm_bindgen(js_name=getId)]
42
- pub fn js_get_id(&self) -> JsValue {
43
- JsValue::from_str(self.id.to_string(Base58).as_str())
44
- }
45
-
46
- #[wasm_bindgen(js_name=getEntropy)]
47
- pub fn js_get_entropy(&self) -> JsValue {
48
- match self.entropy {
49
- Some(_entropy) => JsValue::from(self.entropy.unwrap().to_vec()),
50
- None => JsValue::undefined(),
51
- }
52
- }
53
-
54
- #[wasm_bindgen(js_name=getOwnerId)]
55
- pub fn js_get_owner_id(&self) -> JsValue {
56
- JsValue::from_str(self.owner_id.to_string(Base58).as_str())
57
- }
58
-
59
- #[wasm_bindgen(js_name=getProperties)]
60
- pub fn js_get_properties(&self) -> Result<JsValue, JsValue> {
61
- let json_value: JsonValue = self
62
- .properties
63
- .to_json_value()
64
- .map_err(ProtocolError::ValueError)
65
- .with_js_error()?;
66
-
67
- let js_value = json_value.serialize(&serde_wasm_bindgen::Serializer::json_compatible())?;
68
- Ok(js_value)
69
- }
70
-
71
- #[wasm_bindgen(js_name=getRevision)]
72
- pub fn get_revision(&self) -> Option<u64> {
73
- self.revision
74
- }
75
-
76
- #[wasm_bindgen(js_name=getCreatedAt)]
77
- pub fn get_created_at(&self) -> Option<u64> {
78
- self.created_at
79
- }
80
-
81
- #[wasm_bindgen(js_name=getUpdatedAt)]
82
- pub fn get_updated_at(&self) -> Option<u64> {
83
- self.updated_at
84
- }
85
-
86
- #[wasm_bindgen(js_name=getTransferredAt)]
87
- pub fn get_transferred_at(&self) -> Option<u64> {
88
- self.transferred_at
89
- }
90
-
91
- #[wasm_bindgen(js_name=getCreatedAtBlockHeight)]
92
- pub fn get_created_at_block_height(&self) -> Option<u64> {
93
- self.created_at_block_height
94
- }
95
-
96
- #[wasm_bindgen(js_name=getUpdatedAtBlockHeight)]
97
- pub fn get_updated_at_block_height(&self) -> Option<u64> {
98
- self.updated_at_block_height
99
- }
100
-
101
- #[wasm_bindgen(js_name=getTransferredAtBlockHeight)]
102
- pub fn get_transferred_at_block_height(&self) -> Option<u64> {
103
- self.transferred_at_block_height
104
- }
105
-
106
- #[wasm_bindgen(js_name=getCreatedAtCoreBlockHeight)]
107
- pub fn get_created_at_core_block_height(&self) -> Option<u32> {
108
- self.created_at_core_block_height
109
- }
110
-
111
- #[wasm_bindgen(js_name=getUpdatedAtCoreBlockHeight)]
112
- pub fn get_updated_at_core_block_height(&self) -> Option<u32> {
113
- self.updated_at_core_block_height
114
- }
115
-
116
- #[wasm_bindgen(js_name=getTransferredAtCoreBlockHeight)]
117
- pub fn get_transferred_at_core_block_height(&self) -> Option<u32> {
118
- self.transferred_at_core_block_height
119
- }
120
-
121
- #[wasm_bindgen(js_name=getDocumentTypeName)]
122
- pub fn get_document_type_name(&self) -> String {
123
- self.document_type_name.clone()
124
- }
125
-
126
- #[wasm_bindgen(js_name=setId)]
127
- pub fn js_set_id(&mut self, id: JsValue) {
128
- self.id = identifier_from_js_value(&id).unwrap()
129
- }
130
-
131
- #[wasm_bindgen(js_name=setEntropy)]
132
- pub fn js_set_entropy(&mut self, entropy: JsValue) {
133
- match entropy.is_undefined() {
134
- false => {
135
- let value = entropy.with_serde_to_platform_value().unwrap();
136
-
137
- let mut entropy = [0u8; 32];
138
- let bytes = value.as_bytes().unwrap();
139
- let len = bytes.len().min(32);
140
- entropy[..len].copy_from_slice(&bytes[..len]);
141
- self.entropy = Some(entropy);
142
- }
143
- true => self.entropy = None,
144
- }
145
- }
146
-
147
- #[wasm_bindgen(js_name=setOwnerId)]
148
- pub fn js_set_owner_id(&mut self, id: JsValue) {
149
- self.owner_id = identifier_from_js_value(&id).unwrap()
150
- }
151
-
152
- #[wasm_bindgen(js_name=setProperties)]
153
- pub fn js_set_properties(&mut self, properties: JsValue) {
154
- self.properties = properties.with_serde_to_platform_value_map().unwrap()
155
- }
156
-
157
- #[wasm_bindgen(js_name=setRevision)]
158
- pub fn set_revision(&mut self, revision: Option<u64>) {
159
- self.revision = revision
160
- }
161
-
162
- #[wasm_bindgen(js_name=setCreatedAt)]
163
- pub fn set_created_at(&mut self, created_at: Option<u64>) {
164
- self.created_at = created_at
165
- }
166
-
167
- #[wasm_bindgen(js_name=setUpdatedAt)]
168
- pub fn set_get_updated_at(&mut self, updated_at: Option<u64>) {
169
- self.updated_at = updated_at
170
- }
171
-
172
- #[wasm_bindgen(js_name=setTransferredAt)]
173
- pub fn set_transferred_at(&mut self, transferred_at: Option<u64>) {
174
- self.transferred_at = transferred_at
175
- }
176
-
177
- #[wasm_bindgen(js_name=setCreatedAtBlockHeight)]
178
- pub fn set_created_at_block_height(&mut self, created_at_block_height: Option<u64>) {
179
- self.created_at_block_height = created_at_block_height
180
- }
181
-
182
- #[wasm_bindgen(js_name=setUpdatedAtBlockHeight)]
183
- pub fn set_updated_at_block_height(&mut self, updated_at_block_height: Option<u64>) {
184
- self.updated_at_block_height = updated_at_block_height
185
- }
186
-
187
- #[wasm_bindgen(js_name=setTransferredAtBlockHeight)]
188
- pub fn set_transferred_at_block_height(&mut self, transferred_at_block_height: Option<u64>) {
189
- self.transferred_at_block_height = transferred_at_block_height
190
- }
191
-
192
- #[wasm_bindgen(js_name=setCreatedAtCoreBlockHeight)]
193
- pub fn set_created_at_core_block_height(&mut self, created_at_core_block_height: Option<u32>) {
194
- self.created_at_core_block_height = created_at_core_block_height
195
- }
196
-
197
- #[wasm_bindgen(js_name=setUpdatedAtCoreBlockHeight)]
198
- pub fn set_updated_at_core_block_height(&mut self, updated_at_core_block_height: Option<u32>) {
199
- self.updated_at_core_block_height = updated_at_core_block_height
200
- }
201
-
202
- #[wasm_bindgen(js_name=setTransferredAtCoreBlockHeight)]
203
- pub fn set_transferred_at_core_block_height(
204
- &mut self,
205
- transferred_at_core_block_height: Option<u32>,
206
- ) {
207
- self.transferred_at_core_block_height = transferred_at_core_block_height
208
- }
209
-
210
- #[wasm_bindgen(js_name=setDocumentTypeName)]
211
- pub fn set_document_type_name(&mut self, document_type_name: &str) {
212
- self.document_type_name = document_type_name.to_string();
213
- }
214
-
215
- #[wasm_bindgen(js_name=toBytes)]
216
- pub fn to_bytes(
217
- &self,
218
- data_contract: &DataContractWASM,
219
- type_name: String,
220
- platform_version: PlatformVersionWASM,
221
- ) -> Result<Vec<u8>, JsValue> {
222
- let rs_document: Document = Document::from(self.clone());
223
-
224
- let document_type_ref = data_contract
225
- .get_document_type_ref_by_name(type_name)
226
- .map_err(|err| JsValue::from_str(err.to_string().as_str()))?;
227
-
228
- DocumentPlatformConversionMethodsV0::serialize(
229
- &rs_document,
230
- document_type_ref,
231
- &platform_version.into(),
232
- )
233
- .with_js_error()
234
- }
235
-
236
- #[wasm_bindgen(js_name=fromBytes)]
237
- pub fn from_bytes(
238
- bytes: Vec<u8>,
239
- data_contract: &DataContractWASM,
240
- type_name: String,
241
- platform_version: PlatformVersionWASM,
242
- ) -> Result<DocumentWASM, JsValue> {
243
- let document_type_ref = match data_contract.get_document_type_ref_by_name(type_name) {
244
- Ok(type_ref) => Ok(type_ref),
245
- Err(err) => Err(JsValue::from_str(err.to_string().as_str())),
246
- }?;
247
-
248
- let rs_document = Document::from_bytes(
249
- bytes.as_slice(),
250
- document_type_ref,
251
- &platform_version.into(),
252
- )
253
- .with_js_error();
254
-
255
- match rs_document {
256
- Ok(doc) => Ok(DocumentWASM::from(doc)),
257
- Err(err) => Err(err),
258
- }
259
- }
260
- }
@@ -1,92 +0,0 @@
1
- use crate::DocumentWASM;
2
- use dpp::identifier::Identifier;
3
- use dpp::platform_value::Value;
4
- use dpp::platform_value::string_encoding::Encoding::Base58;
5
- use dpp::prelude::Revision;
6
- use dpp::util::entropy_generator;
7
- use dpp::util::entropy_generator::EntropyGenerator;
8
- use std::collections::BTreeMap;
9
-
10
- impl DocumentWASM {
11
- pub fn new(
12
- document: BTreeMap<String, Value>,
13
- document_type_name: &str,
14
- revision: u64,
15
- data_contract_id: &str,
16
- owner_id: &str,
17
- ) -> Self {
18
- let owner_id = Identifier::from_string(owner_id, Base58).unwrap();
19
- let data_contract_id = Identifier::from_string(data_contract_id, Base58).unwrap();
20
- let revision = Revision::from(revision);
21
-
22
- let entropy = entropy_generator::DefaultEntropyGenerator
23
- .generate()
24
- .unwrap();
25
-
26
- let document_id = pshenmic_dpp_utils::generate_document_id_v0(
27
- &data_contract_id,
28
- &owner_id,
29
- document_type_name,
30
- &entropy,
31
- );
32
-
33
- DocumentWASM {
34
- owner_id,
35
- entropy: Some(entropy),
36
- id: document_id,
37
- document_type_name: document_type_name.to_string(),
38
- data_contract_id,
39
- properties: document,
40
- revision: Some(revision),
41
- created_at: None,
42
- updated_at: None,
43
- transferred_at: None,
44
- created_at_block_height: None,
45
- updated_at_block_height: None,
46
- transferred_at_block_height: None,
47
- created_at_core_block_height: None,
48
- updated_at_core_block_height: None,
49
- transferred_at_core_block_height: None,
50
- }
51
- }
52
-
53
- pub fn get_id(&self) -> Identifier {
54
- self.id
55
- }
56
-
57
- pub fn get_entropy(&self) -> Option<[u8; 32]> {
58
- self.entropy
59
- }
60
-
61
- pub fn get_data_contract_id(&self) -> Identifier {
62
- self.data_contract_id
63
- }
64
-
65
- pub fn get_owner_id(&self) -> Identifier {
66
- self.owner_id
67
- }
68
-
69
- pub fn get_properties(&self) -> BTreeMap<String, Value> {
70
- self.properties.clone()
71
- }
72
-
73
- pub fn set_id(&mut self, id: Identifier) {
74
- self.id = id
75
- }
76
-
77
- pub fn set_entropy(&mut self, entropy: Option<[u8; 32]>) {
78
- self.entropy = entropy;
79
- }
80
-
81
- pub fn set_data_contract_id(&mut self, data_contract_id: Identifier) {
82
- self.data_contract_id = data_contract_id
83
- }
84
-
85
- pub fn set_owner_id(&mut self, id: Identifier) {
86
- self.owner_id = id
87
- }
88
-
89
- pub fn set_properties(&mut self, properties: BTreeMap<String, Value>) {
90
- self.properties = properties
91
- }
92
- }
@@ -1,63 +0,0 @@
1
- use dpp::prelude::{Identifier, IdentityNonce};
2
- use dpp::state_transition::documents_batch_transition::document_base_transition::DocumentBaseTransition;
3
- use dpp::state_transition::documents_batch_transition::document_base_transition::v0::DocumentBaseTransitionV0;
4
- use dpp::state_transition::documents_batch_transition::document_create_transition::DocumentCreateTransitionV0;
5
- use dpp::state_transition::documents_batch_transition::document_delete_transition::DocumentDeleteTransitionV0;
6
- use dpp::state_transition::documents_batch_transition::document_replace_transition::DocumentReplaceTransitionV0;
7
- use dpp::state_transition::documents_batch_transition::{
8
- DocumentCreateTransition, DocumentDeleteTransition, DocumentReplaceTransition,
9
- };
10
- use pshenmic_dpp_document::DocumentWASM;
11
-
12
- pub fn generate_create_transition(
13
- document: DocumentWASM,
14
- identity_contract_nonce: IdentityNonce,
15
- document_type_name: String,
16
- data_contract_id: Identifier,
17
- ) -> DocumentCreateTransition {
18
- DocumentCreateTransition::V0(DocumentCreateTransitionV0 {
19
- base: DocumentBaseTransition::V0(DocumentBaseTransitionV0 {
20
- id: document.get_id(),
21
- identity_contract_nonce,
22
- document_type_name,
23
- data_contract_id,
24
- }),
25
- entropy: document.get_entropy().unwrap(),
26
- data: document.get_properties(),
27
- prefunded_voting_balance: None,
28
- })
29
- }
30
-
31
- pub fn generate_delete_transition(
32
- document: DocumentWASM,
33
- identity_contract_nonce: IdentityNonce,
34
- document_type_name: String,
35
- data_contract_id: Identifier,
36
- ) -> DocumentDeleteTransition {
37
- DocumentDeleteTransition::V0(DocumentDeleteTransitionV0 {
38
- base: DocumentBaseTransition::V0(DocumentBaseTransitionV0 {
39
- id: document.get_id(),
40
- identity_contract_nonce,
41
- document_type_name,
42
- data_contract_id,
43
- }),
44
- })
45
- }
46
-
47
- pub fn generate_replace_transition(
48
- document: DocumentWASM,
49
- identity_contract_nonce: IdentityNonce,
50
- document_type_name: String,
51
- data_contract_id: Identifier,
52
- ) -> DocumentReplaceTransition {
53
- DocumentReplaceTransition::V0(DocumentReplaceTransitionV0 {
54
- base: DocumentBaseTransition::V0(DocumentBaseTransitionV0 {
55
- id: document.get_id(),
56
- identity_contract_nonce,
57
- document_type_name,
58
- data_contract_id,
59
- }),
60
- revision: document.get_revision().unwrap(),
61
- data: document.get_properties(),
62
- })
63
- }
@@ -1,228 +0,0 @@
1
- use crate::generators::{
2
- generate_create_transition, generate_delete_transition, generate_replace_transition,
3
- };
4
- use dpp::document::{Document, DocumentV0};
5
- use dpp::prelude::IdentityNonce;
6
- use dpp::serialization::{PlatformDeserializable, PlatformSerializable};
7
- use dpp::state_transition::documents_batch_transition::accessors::DocumentsBatchTransitionAccessorsV0;
8
- use dpp::state_transition::documents_batch_transition::document_base_transition::v0::v0_methods::DocumentBaseTransitionV0Methods;
9
- use dpp::state_transition::documents_batch_transition::document_transition::{
10
- DocumentTransition, DocumentTransitionV0Methods,
11
- };
12
- use dpp::state_transition::documents_batch_transition::{
13
- DocumentCreateTransition, DocumentDeleteTransition, DocumentReplaceTransition,
14
- DocumentsBatchTransition, DocumentsBatchTransitionV0,
15
- };
16
- use dpp::state_transition::{StateTransition, StateTransitionLike};
17
- use pshenmic_dpp_document::DocumentWASM;
18
- use pshenmic_dpp_enums::batch::batch_enum::BatchType;
19
- use pshenmic_dpp_state_transition::StateTransitionWASM;
20
- use pshenmic_dpp_utils::WithJsError;
21
- use std::collections::BTreeMap;
22
- use wasm_bindgen::JsValue;
23
- use wasm_bindgen::prelude::wasm_bindgen;
24
-
25
- mod generators;
26
-
27
- #[derive(Debug, Clone, PartialEq)]
28
- #[wasm_bindgen(js_name=DocumentBatchWASM)]
29
- pub struct DocumentBatchWASM {
30
- batch: DocumentsBatchTransition,
31
- document: DocumentWASM,
32
- }
33
-
34
- impl From<(DocumentTransition, DocumentsBatchTransition)> for DocumentBatchWASM {
35
- fn from(
36
- (document_transition, batch): (DocumentTransition, DocumentsBatchTransition),
37
- ) -> DocumentBatchWASM {
38
- let data_contract_id = document_transition.base().data_contract_id();
39
- let document_type_name = document_transition.base().document_type_name();
40
- let entropy = document_transition.entropy();
41
-
42
- let default = BTreeMap::new();
43
- let properties = document_transition.data().unwrap_or(&default);
44
-
45
- let document = DocumentV0 {
46
- id: document_transition.get_id(),
47
- owner_id: batch.owner_id(),
48
- properties: properties.clone(),
49
- revision: document_transition.revision(),
50
- created_at: None,
51
- updated_at: None,
52
- transferred_at: None,
53
- created_at_block_height: None,
54
- updated_at_block_height: None,
55
- transferred_at_block_height: None,
56
- created_at_core_block_height: None,
57
- updated_at_core_block_height: None,
58
- transferred_at_core_block_height: None,
59
- };
60
-
61
- let normal_entropy = match entropy {
62
- Some(entropy) => {
63
- let mut entropy_sized = [0u8; 32];
64
- let bytes = entropy.as_slice();
65
- let len = bytes.len().min(32);
66
- entropy_sized[..len].copy_from_slice(&bytes[..len]);
67
- Some(entropy_sized)
68
- }
69
- None => None,
70
- };
71
-
72
- DocumentBatchWASM {
73
- batch: batch.clone(),
74
- document: DocumentWASM::from_batch(
75
- Document::V0(document),
76
- data_contract_id,
77
- document_type_name.to_string(),
78
- normal_entropy,
79
- ),
80
- }
81
- }
82
- }
83
-
84
- #[wasm_bindgen]
85
- impl DocumentBatchWASM {
86
- #[wasm_bindgen(constructor)]
87
- pub fn new(
88
- batch_type: BatchType,
89
- document: DocumentWASM,
90
- identity_contract_nonce: IdentityNonce,
91
- ) -> Result<DocumentBatchWASM, JsValue> {
92
- let data_contract_id = document.get_data_contract_id();
93
- let document_type_name = document.get_document_type_name();
94
-
95
- match document.get_entropy() {
96
- Some(_entropy) => Ok(match batch_type {
97
- BatchType::CREATE => {
98
- let create_transition: DocumentCreateTransition = generate_create_transition(
99
- document.clone(),
100
- identity_contract_nonce,
101
- document_type_name.to_string(),
102
- data_contract_id,
103
- );
104
-
105
- DocumentBatchWASM {
106
- batch: DocumentsBatchTransition::V0(DocumentsBatchTransitionV0 {
107
- owner_id: document.get_owner_id(),
108
- transitions: [DocumentTransition::Create(create_transition)].to_vec(),
109
- user_fee_increase: 0,
110
- signature_public_key_id: 0,
111
- signature: Default::default(),
112
- }),
113
- document,
114
- }
115
- }
116
- BatchType::DELETE => {
117
- let delete_transition: DocumentDeleteTransition = generate_delete_transition(
118
- document.clone(),
119
- identity_contract_nonce,
120
- document_type_name.to_string(),
121
- data_contract_id,
122
- );
123
-
124
- DocumentBatchWASM {
125
- batch: DocumentsBatchTransition::V0(DocumentsBatchTransitionV0 {
126
- owner_id: document.get_owner_id(),
127
- transitions: [DocumentTransition::Delete(delete_transition)].to_vec(),
128
- user_fee_increase: 0,
129
- signature_public_key_id: 0,
130
- signature: Default::default(),
131
- }),
132
- document,
133
- }
134
- }
135
- BatchType::REPLACE => {
136
- let replace_transition: DocumentReplaceTransition = generate_replace_transition(
137
- document.clone(),
138
- identity_contract_nonce,
139
- document_type_name.to_string(),
140
- data_contract_id,
141
- );
142
-
143
- DocumentBatchWASM {
144
- batch: DocumentsBatchTransition::V0(DocumentsBatchTransitionV0 {
145
- owner_id: document.get_owner_id(),
146
- transitions: [DocumentTransition::Replace(replace_transition)].to_vec(),
147
- user_fee_increase: 0,
148
- signature_public_key_id: 0,
149
- signature: Default::default(),
150
- }),
151
- document,
152
- }
153
- }
154
- }),
155
- None => wasm_bindgen::throw_str("Entropy is empty"),
156
- }
157
- }
158
-
159
- #[wasm_bindgen(js_name=toStateTransition)]
160
- pub fn to_state_transition(&self) -> StateTransitionWASM {
161
- let st = StateTransition::from(self.batch.clone());
162
-
163
- StateTransitionWASM::from(st)
164
- }
165
-
166
- #[wasm_bindgen(js_name=toBytes)]
167
- pub fn to_bytes(&self) -> Result<JsValue, JsValue> {
168
- let bytes = self.batch.serialize_to_bytes().with_js_error();
169
-
170
- match bytes {
171
- Ok(bytes) => Ok(JsValue::from(bytes.clone())),
172
- Err(err) => Err(err),
173
- }
174
- }
175
-
176
- #[wasm_bindgen(js_name=fromStateTransition)]
177
- pub fn from_state_transition(
178
- state_transition: StateTransitionWASM,
179
- ) -> Result<DocumentBatchWASM, JsValue> {
180
- let rs_st = StateTransition::from(state_transition);
181
-
182
- match rs_st {
183
- StateTransition::DocumentsBatch(batch) => {
184
- let transition = batch.transitions().first();
185
-
186
- match transition {
187
- None => Err(JsValue::from_str("No transition")),
188
- Some(document_transition) => Ok(DocumentBatchWASM::from((
189
- document_transition.clone(),
190
- batch,
191
- ))),
192
- }
193
- }
194
- _ => Err(JsValue::from_str("Invalid state transition")),
195
- }
196
- }
197
-
198
- #[wasm_bindgen(js_name=fromBytes)]
199
- pub fn from_bytes(bytes: Vec<u8>) -> Result<DocumentBatchWASM, JsValue> {
200
- let batch_transition =
201
- DocumentsBatchTransition::deserialize_from_bytes(bytes.as_slice()).with_js_error();
202
-
203
- match batch_transition {
204
- Ok(batch) => {
205
- let transition = batch.transitions().first();
206
-
207
- match transition {
208
- None => Err(JsValue::from_str("No transition")),
209
- Some(document_transition) => Ok(DocumentBatchWASM::from((
210
- document_transition.clone(),
211
- batch,
212
- ))),
213
- }
214
- }
215
- Err(err) => Err(err),
216
- }
217
- }
218
-
219
- #[wasm_bindgen(js_name=getDocument)]
220
- pub fn get_document(&self) -> DocumentWASM {
221
- self.document.clone()
222
- }
223
-
224
- #[wasm_bindgen(js_name=getSignature)]
225
- pub fn get_signature(&self) -> Vec<u8> {
226
- self.batch.signature().to_vec()
227
- }
228
- }