@dashevo/wasm-dpp 0.24.0-dev.11 → 0.24.0-dev.13

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 (167) hide show
  1. package/Cargo.toml +3 -0
  2. package/README.md +5 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.LICENSE.txt +9 -0
  5. package/dist/lib/dpp.d.ts +9 -0
  6. package/dist/lib/errors/AbstractConsensusError.d.ts +10 -0
  7. package/dist/lib/errors/DPPError.d.ts +5 -0
  8. package/dist/lib/errors/patchConsensusErrors.d.ts +1 -0
  9. package/dist/lib/{patchIdentifier.d.ts → identifier/patchIdentifier.d.ts} +1 -1
  10. package/dist/{index.d.ts → lib/index.d.ts} +1 -1
  11. package/dist/lib/utils/extend.d.ts +1 -0
  12. package/dist/wasm/wasm_dpp.d.ts +1595 -518
  13. package/karma.conf.js +5 -0
  14. package/lib/dpp.ts +24 -0
  15. package/lib/errors/AbstractConsensusError.ts +13 -0
  16. package/lib/errors/DPPError.ts +15 -0
  17. package/lib/errors/patchConsensusErrors.ts +175 -0
  18. package/lib/{patchIdentifier.ts → identifier/patchIdentifier.ts} +6 -5
  19. package/{index.ts → lib/index.ts} +5 -4
  20. package/lib/test/bootstrap.js +5 -0
  21. package/lib/test/expect/expectError.js +4 -2
  22. package/lib/test/mocks/getBlsAdapterMock.js +36 -0
  23. package/lib/test/utils/newDocumentsContainer.js +36 -0
  24. package/lib/utils/extend.ts +6 -0
  25. package/package.json +9 -6
  26. package/src/bls_adapter.rs +16 -1
  27. package/src/data_contract/data_contract.rs +35 -7
  28. package/src/data_contract/errors/invalid_data_contract.rs +21 -0
  29. package/src/data_contract/errors/invalid_document_type.rs +1 -1
  30. package/src/data_contract/index.rs +56 -1
  31. package/src/data_contract/mod.rs +1 -0
  32. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +6 -8
  33. package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +4 -4
  34. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +44 -0
  35. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +145 -0
  36. package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +49 -0
  37. package/src/data_contract/state_transition/mod.rs +2 -0
  38. package/src/data_contract_factory/data_contract_factory.rs +25 -12
  39. package/src/document/errors/invalid_document_error.rs +10 -9
  40. package/src/document/errors/invalid_initial_revision_error.rs +1 -1
  41. package/src/document/errors/mismatch_owners_ids_error.rs +14 -4
  42. package/src/document/errors/mod.rs +17 -13
  43. package/src/document/errors/no_documents_supplied_error.rs +4 -4
  44. package/src/document/factory.rs +192 -0
  45. package/src/document/mod.rs +222 -30
  46. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +47 -1
  47. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +25 -1
  48. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +65 -0
  49. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +123 -3
  50. package/src/document/state_transition/document_batch_transition/mod.rs +378 -0
  51. package/src/document/validator.rs +30 -0
  52. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +5 -5
  53. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +4 -4
  54. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +36 -0
  55. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +20 -0
  56. package/src/errors/consensus/basic/document/mod.rs +4 -0
  57. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +2 -2
  58. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +2 -2
  59. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +6 -2
  60. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +5 -2
  61. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +3 -3
  62. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +2 -2
  63. package/src/errors/consensus/basic/json_schema_error.rs +1 -1
  64. package/src/errors/consensus_error.rs +15 -8
  65. package/src/errors/dpp_error.rs +17 -0
  66. package/src/errors/from.rs +6 -1
  67. package/src/errors/js_conversion.rs +19 -4
  68. package/src/errors/mod.rs +3 -0
  69. package/src/errors/protocol_error.rs +15 -0
  70. package/src/{identifier.rs → identifier/mod.rs} +48 -3
  71. package/src/identity/errors/asset_lock_output_not_found_error.rs +11 -0
  72. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +20 -0
  73. package/src/identity/errors/mod.rs +7 -0
  74. package/src/identity/errors/unknown_asset_lock_proof_type_error.rs +26 -0
  75. package/src/{identity_facade.rs → identity/identity_facade.rs} +3 -5
  76. package/src/{identity_public_key → identity/identity_public_key}/key_type.rs +0 -0
  77. package/src/{identity_public_key → identity/identity_public_key}/mod.rs +41 -10
  78. package/src/{identity_public_key → identity/identity_public_key}/purpose.rs +0 -0
  79. package/src/{identity_public_key → identity/identity_public_key}/security_level.rs +0 -0
  80. package/src/{identity.rs → identity/mod.rs} +20 -12
  81. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +132 -0
  82. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +72 -0
  83. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +4 -0
  84. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +177 -0
  85. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +72 -0
  86. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +4 -0
  87. package/src/identity/state_transition/asset_lock_proof/mod.rs +269 -0
  88. package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +26 -0
  89. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +335 -0
  90. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +153 -0
  91. package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +37 -0
  92. package/src/identity/state_transition/identity_create_transition/mod.rs +8 -0
  93. package/src/identity/state_transition/identity_create_transition/to_object.rs +46 -0
  94. package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +31 -0
  95. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +280 -0
  96. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +113 -0
  97. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +37 -0
  98. package/src/identity/state_transition/identity_topup_transition/mod.rs +8 -0
  99. package/src/identity/state_transition/identity_topup_transition/to_object.rs +42 -0
  100. package/src/identity/state_transition/mod.rs +9 -0
  101. package/src/identity/state_transition/validate_public_key_signatures.rs +59 -0
  102. package/src/identity/validation/mod.rs +3 -0
  103. package/src/identity/validation/public_keys_validator.rs +76 -0
  104. package/src/identity_public_key/public_keys_validator.rs +1 -1
  105. package/src/lib.rs +3 -6
  106. package/src/lodash.rs +7 -0
  107. package/src/state_repository.rs +188 -36
  108. package/src/state_transition/mod.rs +12 -0
  109. package/src/utils.rs +102 -7
  110. package/src/validation/json_schema_validator.rs +41 -0
  111. package/src/validation/mod.rs +5 -0
  112. package/src/{validation_result.rs → validation/validation_result.rs} +23 -5
  113. package/src/version/mod.rs +2 -0
  114. package/src/version/protocol_version.rs +26 -0
  115. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +579 -502
  116. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +175 -165
  117. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +83 -114
  118. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +1 -1
  119. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +82 -91
  120. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +75 -31
  121. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +93 -148
  122. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +63 -75
  123. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +48 -19
  124. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +79 -114
  125. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +0 -11
  126. package/test/integration/stateTransition/StateTransitionFacade.spec.js +1 -1
  127. package/test/integration/stateTransition/calculateStateTransitionFeeFactory.spec.js +135 -0
  128. package/test/unit/dataContract/DataContract.spec.js +5 -9
  129. package/test/unit/dataContract/DataContractFactory.spec.js +13 -6
  130. package/test/unit/dataContract/createDataContract.spec.js +0 -1
  131. package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +11 -3
  132. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +3 -3
  133. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +20 -16
  134. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +24 -60
  135. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +27 -23
  136. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +29 -12
  137. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +66 -49
  138. package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +73 -0
  139. package/test/unit/decodeProtocolEntityFactory.spec.js +2 -2
  140. package/test/unit/document/Document.spec.js +147 -155
  141. package/test/unit/document/DocumentFactory.spec.js +325 -91
  142. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +142 -64
  143. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +1 -1
  144. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +1 -1
  145. package/test/unit/identity/Identity.spec.js +2 -2
  146. package/test/unit/identity/IdentityPublicKey.spec.js +25 -31
  147. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +69 -30
  148. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +32 -32
  149. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +56 -25
  150. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +36 -16
  151. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +48 -46
  152. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +24 -6
  153. package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +63 -0
  154. package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +90 -0
  155. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +18 -3
  156. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +38 -11
  157. package/tsconfig.json +1 -1
  158. package/wasm/package.json +5 -0
  159. package/wasm/wasm_dpp.d.ts +1595 -518
  160. package/wasm/wasm_dpp.js +5007 -2172
  161. package/wasm/wasm_dpp_bg.js +1 -1
  162. package/wasm/wasm_dpp_bg.wasm +0 -0
  163. package/wasm/wasm_dpp_bg.wasm.d.ts +566 -365
  164. package/webpack.config.js +10 -1
  165. package/test/integration/stateTransition/calculateStateTransitionFee.spec.js +0 -32
  166. package/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js +0 -93
  167. package/test/unit/dataContract/validation/validateDataContractPatternsFactory.spec.js +0 -64
package/webpack.config.js CHANGED
@@ -1,8 +1,9 @@
1
1
  const path = require('path');
2
2
  const webpack = require('webpack');
3
+ const TerserPlugin = require('terser-webpack-plugin');
3
4
 
4
5
  module.exports = {
5
- entry: './index.ts',
6
+ entry: './lib/index.ts',
6
7
  output: {
7
8
  path: path.resolve(__dirname, 'dist'),
8
9
  filename: 'index.js',
@@ -14,6 +15,14 @@ module.exports = {
14
15
  // as webpack names global object "self" for some reason
15
16
  globalObject: 'this',
16
17
  },
18
+ optimization: {
19
+ minimize: true,
20
+ minimizer: [new TerserPlugin({
21
+ terserOptions: {
22
+ keep_classnames: true,
23
+ },
24
+ })],
25
+ },
17
26
  mode: 'production',
18
27
  module: {
19
28
  rules: [
@@ -1,32 +0,0 @@
1
- const calculateStateTransitionFee = require('@dashevo/dpp/lib/stateTransition/fee/calculateStateTransitionFee');
2
-
3
- const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
4
- const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
5
- const ReadOperation = require('@dashevo/dpp/lib/stateTransition/fee/operations/ReadOperation');
6
- const PreCalculatedOperation = require('@dashevo/dpp/lib/stateTransition/fee/operations/PreCalculatedOperation');
7
- const DummyFeeResult = require('@dashevo/dpp/lib/stateTransition/fee/DummyFeeResult');
8
-
9
- describe('calculateStateTransitionFee', () => {
10
- let stateTransition;
11
-
12
- beforeEach(async () => {
13
- const privateKey = 'af432c476f65211f45f48f1d42c9c0b497e56696aa1736b40544ef1a496af837';
14
-
15
- stateTransition = getIdentityCreateTransitionFixture();
16
- await stateTransition.signByPrivateKey(privateKey, IdentityPublicKey.TYPES.ECDSA_SECP256K1);
17
- });
18
-
19
- // TODO: Must be more comprehensive. After we settle all factors and formula.
20
- it('should calculate fee based on executed operations', () => {
21
- const executionContext = stateTransition.getExecutionContext();
22
-
23
- executionContext.addOperation(
24
- new ReadOperation(10),
25
- new PreCalculatedOperation(new DummyFeeResult(12, 12)),
26
- );
27
-
28
- const result = calculateStateTransitionFee(stateTransition);
29
-
30
- expect(result).to.equal(17088);
31
- });
32
- });
@@ -1,93 +0,0 @@
1
- const validateDataContractMaxDepthFactory = require('@dashevo/dpp/lib/dataContract/validation/validateDataContractMaxDepthFactory');
2
- const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
3
- const { expectValidationError } = require('@dashevo/dpp/lib/test/expect/expectError');
4
- const DataContractMaxDepthExceedError = require('@dashevo/dpp/lib/errors/consensus/basic/dataContract/DataContractMaxDepthExceedError');
5
- const generateDeepJson = require('@dashevo/dpp/lib/test/utils/generateDeepJson');
6
- const InvalidJsonSchemaRefError = require('@dashevo/dpp/lib/errors/consensus/basic/dataContract/InvalidJsonSchemaRefError');
7
-
8
- describe('validateDataContractMaxDepthFactory', () => {
9
- let refParserMock;
10
- let validateDataContractMaxDepth;
11
- let dataContractFixture;
12
-
13
- beforeEach(function beforeEach() {
14
- dataContractFixture = {};
15
-
16
- refParserMock = {
17
- dereference: this.sinonSandbox.stub(),
18
- };
19
-
20
- validateDataContractMaxDepth = validateDataContractMaxDepthFactory(refParserMock);
21
- });
22
-
23
- it('should throw error if depth > MAX_DEPTH', async () => {
24
- dataContractFixture = generateDeepJson(DataContractMaxDepthExceedError.MAX_DEPTH + 1);
25
-
26
- refParserMock.dereference.resolves(dataContractFixture);
27
-
28
- const result = await validateDataContractMaxDepth(dataContractFixture);
29
-
30
- expectValidationError(result);
31
-
32
- const [error] = result.getErrors();
33
-
34
- expect(error).to.be.an.instanceOf(DataContractMaxDepthExceedError);
35
- expect(error.getCode()).to.equal(1007);
36
- });
37
-
38
- it('should return valid result if depth = MAX_DEPTH', async () => {
39
- dataContractFixture = generateDeepJson(DataContractMaxDepthExceedError.MAX_DEPTH);
40
-
41
- refParserMock.dereference.resolves(dataContractFixture);
42
-
43
- const result = await validateDataContractMaxDepth(dataContractFixture);
44
-
45
- expect(result).to.be.an.instanceOf(ValidationResult);
46
- expect(result.isValid()).to.be.true();
47
- });
48
-
49
- it('should throw error if contract contains array with depth > MAX_DEPTH', async () => {
50
- const deepJson = generateDeepJson(DataContractMaxDepthExceedError.MAX_DEPTH + 1);
51
-
52
- dataContractFixture = {
53
- array: [
54
- 0, deepJson,
55
- ],
56
- };
57
-
58
- refParserMock.dereference.resolves(dataContractFixture);
59
-
60
- const result = await validateDataContractMaxDepth(dataContractFixture);
61
-
62
- expectValidationError(result);
63
-
64
- const [error] = result.getErrors();
65
-
66
- expect(error).to.be.an.instanceOf(DataContractMaxDepthExceedError);
67
- expect(error.getCode()).to.equal(1007);
68
- });
69
-
70
- it('should return error if refParser throws an error', async () => {
71
- const refParserError = new Error('refParser error');
72
-
73
- refParserMock.dereference.throws(refParserError);
74
-
75
- const result = await validateDataContractMaxDepth(dataContractFixture);
76
-
77
- expectValidationError(result);
78
-
79
- const [error] = result.getErrors();
80
-
81
- expect(error).to.be.an.instanceOf(InvalidJsonSchemaRefError);
82
- expect(error.message).to.equal(`Invalid JSON Schema $ref: ${refParserError.message}`);
83
- });
84
-
85
- it('should return valid result', async () => {
86
- refParserMock.dereference.resolves(dataContractFixture);
87
-
88
- const result = await validateDataContractMaxDepth(dataContractFixture);
89
-
90
- expect(result).to.be.an.instanceOf(ValidationResult);
91
- expect(result.isValid()).to.be.true();
92
- });
93
- });
@@ -1,64 +0,0 @@
1
- const { getRE2Class } = require('@dashevo/wasm-re2');
2
-
3
- const validateDataContractPatternsFactory = require('@dashevo/dpp/lib/dataContract/validation/validateDataContractPatternsFactory');
4
- const { expectValidationError } = require(
5
- '@dashevo/dpp/lib/test/expect/expectError',
6
- );
7
- const IncompatibleRe2PatternError = require('@dashevo/dpp/lib/errors/consensus/basic/dataContract/IncompatibleRe2PatternError');
8
-
9
- describe('validateDataContractPatternsFactory', () => {
10
- let validateDataContractPatterns;
11
- let RE2;
12
-
13
- before(async () => {
14
- RE2 = await getRE2Class();
15
- });
16
-
17
- beforeEach(() => {
18
- validateDataContractPatterns = validateDataContractPatternsFactory(RE2);
19
- });
20
-
21
- it('should return valid result', () => {
22
- const schema = {
23
- type: 'object',
24
- properties: {
25
- foo: { type: 'integer' },
26
- bar: {
27
- type: 'string',
28
- pattern: '([a-z]+)+$',
29
- },
30
- },
31
- required: ['foo'],
32
- additionalProperties: false,
33
- };
34
-
35
- const result = validateDataContractPatterns(schema);
36
-
37
- expect(result.isValid()).to.be.true();
38
- });
39
-
40
- it('should return invalid result on incompatible pattern', () => {
41
- const schema = {
42
- type: 'object',
43
- properties: {
44
- foo: { type: 'integer' },
45
- bar: {
46
- type: 'string',
47
- pattern: '^((?!-|_)[a-zA-Z0-9-_]{0,62}[a-zA-Z0-9])$',
48
- },
49
- },
50
- required: ['foo'],
51
- additionalProperties: false,
52
- };
53
-
54
- const result = validateDataContractPatterns(schema);
55
-
56
- expectValidationError(result, IncompatibleRe2PatternError);
57
- const [error] = result.getErrors();
58
-
59
- expect(error.getCode()).to.equal(1009);
60
- expect(error.getPattern()).to.equal('^((?!-|_)[a-zA-Z0-9-_]{0,62}[a-zA-Z0-9])$');
61
- expect(error.getPath()).to.equal('/properties/bar');
62
- expect(error.getPatternError()).to.be.instanceOf(Error);
63
- });
64
- });