Skip to content
This repository has been archived by the owner on Jan 4, 2022. It is now read-only.

Commit

Permalink
feat: introduce consensus error codes (#341)
Browse files Browse the repository at this point in the history
  • Loading branch information
shumkov authored Aug 26, 2021
1 parent f5ceb99 commit 2b0a86a
Show file tree
Hide file tree
Showing 193 changed files with 904 additions and 979 deletions.
2 changes: 1 addition & 1 deletion lib/dataContract/DataContractFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const generateDataContractId = require('./generateDataContractId');
const DataContractCreateTransition = require('./stateTransition/DataContractCreateTransition/DataContractCreateTransition');

const generateEntropy = require('../util/generateEntropy');
const ConsensusError = require('../errors/ConsensusError');
const ConsensusError = require('../errors/consensus/ConsensusError');

class DataContractFactory {
/**
Expand Down
13 changes: 4 additions & 9 deletions lib/dataContract/errors/DataContractAlreadyExistsError.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
class DataContractAlreadyExistsError extends Error {
const DPPError = require('../../errors/DPPError');

class DataContractAlreadyExistsError extends DPPError {
/**
* @param {AbstractStateTransition} stateTransition
*/
constructor(stateTransition) {
super();

this.name = this.constructor.name;
this.message = 'Data contract already exists';
super('Data contract already exists');

this.stateTransition = stateTransition;

if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}

/**
Expand Down
17 changes: 7 additions & 10 deletions lib/dataContract/errors/InvalidDataContractError.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
class InvalidDataContractError extends Error {
const DPPError = require('../../errors/DPPError');

class InvalidDataContractError extends DPPError {
/**
* @param {ConsensusError[]} errors
* @param {RawDataContract} rawDataContract
*/
constructor(errors, rawDataContract) {
super();

this.name = this.constructor.name;
this.message = `Invalid Data Contract: "${errors[0].message}"`;
let message = `Invalid Data Contract: "${errors[0].message}"`;
if (errors.length > 1) {
this.message = `${this.message} and ${errors.length - 1} more`;
message = `${message} and ${errors.length - 1} more`;
}

super(message);

this.errors = errors;
this.rawDataContract = rawDataContract;

if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const InvalidDataContractIdError = require('../../../../../errors/InvalidDataContractIdError');
const InvalidDataContractIdError = require('../../../../../errors/consensus/basic/dataContract/InvalidDataContractIdError');

const generateDataContractId = require('../../../../generateDataContractId');

Expand Down Expand Up @@ -48,7 +48,7 @@ function validateDataContractCreateTransitionBasicFactory(

if (!generatedId.equals(rawDataContract.$id)) {
result.addError(
new InvalidDataContractIdError(rawDataContract),
new InvalidDataContractIdError(generatedId, rawDataContract.$id),
);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const ValidationResult = require('../../../../../validation/ValidationResult');

const DataContractAlreadyPresentError = require('../../../../../errors/DataContractAlreadyPresentError');
const DataContractAlreadyPresentError = require('../../../../../errors/consensus/state/dataContract/DataContractAlreadyPresentError');

/**
*
Expand Down
16 changes: 8 additions & 8 deletions lib/dataContract/validation/validateDataContractFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ const DataContract = require('../DataContract');

const baseDocumentSchema = require('../../../schema/document/documentBase.json');

const DuplicateIndexError = require('../../errors/DuplicateIndexError');
const UndefinedIndexPropertyError = require('../../errors/UndefinedIndexPropertyError');
const InvalidIndexPropertyTypeError = require('../../errors/InvalidIndexPropertyTypeError');
const SystemPropertyIndexAlreadyPresentError = require('../../errors/SystemPropertyIndexAlreadyPresentError');
const UniqueIndicesLimitReachedError = require('../../errors/UniqueIndicesLimitReachedError');
const InvalidIndexedPropertyConstraintError = require('../../errors/InvalidIndexedPropertyConstraintError');
const InvalidCompoundIndexError = require('../../errors/InvalidCompoundIndexError');
const DuplicateIndexError = require('../../errors/consensus/basic/dataContract/DuplicateIndexError');
const UndefinedIndexPropertyError = require('../../errors/consensus/basic/dataContract/UndefinedIndexPropertyError');
const InvalidIndexPropertyTypeError = require('../../errors/consensus/basic/dataContract/InvalidIndexPropertyTypeError');
const SystemPropertyIndexAlreadyPresentError = require('../../errors/consensus/basic/dataContract/SystemPropertyIndexAlreadyPresentError');
const UniqueIndicesLimitReachedError = require('../../errors/consensus/basic/dataContract/UniqueIndicesLimitReachedError');
const InvalidIndexedPropertyConstraintError = require('../../errors/consensus/basic/dataContract/InvalidIndexedPropertyConstraintError');
const InvalidCompoundIndexError = require('../../errors/consensus/basic/dataContract/InvalidCompoundIndexError');

const getPropertyDefinitionByPathFactory = require('../getPropertyDefinitionByPathFactory');

Expand Down Expand Up @@ -246,7 +246,7 @@ module.exports = function validateDataContractFactory(

if (!allAreRequired && !allAreNotRequired) {
result.addError(
new InvalidCompoundIndexError(documentType, indexDefinition),
new InvalidCompoundIndexError(rawDataContract, documentType, indexDefinition),
);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const lodashCloneDeep = require('lodash.clonedeep');
const ValidationResult = require('../../validation/ValidationResult');
const JsonSchemaError = require('../../errors/JsonSchemaError');
const DataContractMaxDepthExceedError = require('../../errors/DataContractMaxDepthExceedError');
const JsonSchemaError = require('../../errors/consensus/basic/JsonSchemaError');
const DataContractMaxDepthExceedError = require('../../errors/consensus/basic/dataContract/DataContractMaxDepthExceedError');

/**
* Check that JSON Schema max depth is less than max value
Expand Down
4 changes: 2 additions & 2 deletions lib/dataTrigger/DataTrigger.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const DataTriggerExecutionResult = require('./DataTriggerExecutionResult');
const DataTriggerExecutionError = require('../errors/DataTriggerExecutionError');
const DataTriggerInvalidResultError = require('../errors/DataTriggerInvalidResultError');
const DataTriggerExecutionError = require('../errors/consensus/state/dataContract/dataTrigger/DataTriggerExecutionError');
const DataTriggerInvalidResultError = require('../errors/consensus/state/dataContract/dataTrigger/DataTriggerInvalidResultError');

class DataTrigger {
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const DataTriggerExecutionResult = require('../DataTriggerExecutionResult');
const DataTriggerConditionError = require('../../errors/DataTriggerConditionError');
const DataTriggerConditionError = require('../../errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError');

const BLOCKS_WINDOW_SIZE = 8;

Expand Down
2 changes: 1 addition & 1 deletion lib/dataTrigger/dpnsTriggers/createDomainDataTrigger.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const hash = require('../../util/hash');

const DataTriggerExecutionResult = require('../DataTriggerExecutionResult');
const DataTriggerConditionError = require('../../errors/DataTriggerConditionError');
const DataTriggerConditionError = require('../../errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError');

const MAX_PRINTABLE_DOMAIN_NAME_LENGTH = 253;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const Long = require('long');

const DataTriggerConditionError = require('../../errors/DataTriggerConditionError');
const DataTriggerConditionError = require('../../errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError');
const DataTriggerExecutionResult = require('../DataTriggerExecutionResult');

/**
Expand Down
2 changes: 1 addition & 1 deletion lib/dataTrigger/rejectDataTrigger.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const DataTriggerExecutionResult = require('./DataTriggerExecutionResult');
const DataTriggerConditionError = require('../errors/DataTriggerConditionError');
const DataTriggerConditionError = require('../errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError');

/**
* Data trigger for domain deletion process
Expand Down
8 changes: 4 additions & 4 deletions lib/decodeProtocolEntityFactory.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const ProtocolVersionParsingError = require('./errors/ProtocolVersionParsingError');
const SerializedObjectParsingError = require('./errors/SerializedObjectParsingError');
const UnsupportedProtocolVersionError = require('./errors/UnsupportedProtocolVersionError');
const IncompatibleProtocolVersionError = require('./errors/IncompatibleProtocolVersionError');
const ProtocolVersionParsingError = require('./errors/consensus/basic/decode/ProtocolVersionParsingError');
const SerializedObjectParsingError = require('./errors/consensus/basic/decode/SerializedObjectParsingError');
const UnsupportedProtocolVersionError = require('./errors/consensus/basic/decode/UnsupportedProtocolVersionError');
const IncompatibleProtocolVersionError = require('./errors/consensus/basic/decode/IncompatibleProtocolVersionError');
const CompatibleProtocolVersionIsNotDefinedError = require('./errors/CompatibleProtocolVersionIsNotDefinedError');

const { decode } = require('./util/serializer');
Expand Down
2 changes: 1 addition & 1 deletion lib/document/DocumentFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const DocumentsBatchTransition = require('./stateTransition/DocumentsBatchTransi
const AbstractDocumentTransition = require('./stateTransition/DocumentsBatchTransition/documentTransition/AbstractDocumentTransition');
const DocumentCreateTransition = require('./stateTransition/DocumentsBatchTransition/documentTransition/DocumentCreateTransition');

const ConsensusError = require('../errors/ConsensusError');
const ConsensusError = require('../errors/consensus/ConsensusError');
const InvalidActionNameError = require('./errors/InvalidActionNameError');
const NoDocumentsSuppliedError = require('./errors/NoDocumentsSuppliedError');
const MismatchOwnerIdsError = require('./errors/MismatchOwnerIdsError');
Expand Down
13 changes: 4 additions & 9 deletions lib/document/errors/DocumentAlreadyExistsError.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
class DocumentAlreadyExistsError extends Error {
const DPPError = require('../../errors/DPPError');

class DocumentAlreadyExistsError extends DPPError {
/**
* @param {DocumentCreateTransition} documentTransition
*/
constructor(documentTransition) {
super();

this.name = this.constructor.name;
this.message = 'Document already exists';
super('Document already exists');

this.documentTransition = documentTransition;

if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}

/**
Expand Down
13 changes: 4 additions & 9 deletions lib/document/errors/DocumentNotProvidedError.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
class DocumentNotProvidedError extends Error {
const DPPError = require('../../errors/DPPError');

class DocumentNotProvidedError extends DPPError {
/**
* @param {DocumentCreateTransition} documentTransition
*/
constructor(documentTransition) {
super();

this.name = this.constructor.name;
this.message = 'Document was not provided for apply of state transition';
super('Document was not provided for apply of state transition');

this.documentTransition = documentTransition;

if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}

/**
Expand Down
2 changes: 1 addition & 1 deletion lib/document/errors/IncompatibleRe2PatternError.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const ConsensusError = require('../../errors/ConsensusError');
const ConsensusError = require('../../errors/consensus/ConsensusError');

class IncompatibleRe2PatternError extends ConsensusError {
/**
Expand Down
9 changes: 4 additions & 5 deletions lib/document/errors/InvalidActionNameError.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
class InvalidActionNameError extends Error {
const DPPError = require('../../errors/DPPError');

class InvalidActionNameError extends DPPError {
/**
* @param {string[]} actions
*/
constructor(actions) {
super();

this.name = this.constructor.name;
this.message = 'Invalid document action submitted';
super('Invalid document action submitted');

this.actions = actions;
}
Expand Down
12 changes: 4 additions & 8 deletions lib/document/errors/InvalidDocumentActionError.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
class InvalidDocumentActionError extends Error {
const DPPError = require('../../errors/DPPError');

class InvalidDocumentActionError extends DPPError {
/**
* @param {
* DocumentCreateTransition|DocumentReplaceTransition|DocumentDeleteTransition
* } documentTransition
*/
constructor(documentTransition) {
super();
super(`Invalid Document action ${documentTransition.getAction()}`);

this.name = this.constructor.name;
this.message = `Invalid Document action ${documentTransition.getAction()}`;
this.documentTransition = documentTransition;

if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}

/**
Expand Down
17 changes: 7 additions & 10 deletions lib/document/errors/InvalidDocumentError.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
class InvalidDocumentError extends Error {
const DPPError = require('../../errors/DPPError');

class InvalidDocumentError extends DPPError {
/**
* @param {ConsensusError[]} errors
* @param {RawDocument} rawDocument
*/
constructor(errors, rawDocument) {
super();

this.name = this.constructor.name;
this.message = `Invalid Document: "${errors[0].message}"`;
let message = `Invalid Document: "${errors[0].message}"`;
if (errors.length > 1) {
this.message = `${this.message} and ${errors.length - 1} more`;
message = `${message} and ${errors.length - 1} more`;
}

super(message);

this.errors = errors;
this.rawDocument = rawDocument;

if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}

/**
Expand Down
12 changes: 4 additions & 8 deletions lib/document/errors/InvalidInitialRevisionError.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
class InvalidInitialRevisionError extends Error {
const DPPError = require('../../errors/DPPError');

class InvalidInitialRevisionError extends DPPError {
/**
* @param {Document} document
*/
constructor(document) {
super();
super(`Invalid Document initial revision ${document.getRevision()}`);

this.name = this.constructor.name;
this.message = `Invalid Document initial revision ${document.getRevision()}`;
this.document = document;

if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}

/**
Expand Down
9 changes: 4 additions & 5 deletions lib/document/errors/MismatchOwnerIdsError.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
class MismatchOwnerIdsError extends Error {
const DPPError = require('../../errors/DPPError');

class MismatchOwnerIdsError extends DPPError {
/**
* @param {Document[]} documents
*/
constructor(documents) {
super();

this.name = this.constructor.name;
this.message = 'Documents have mixed owner ids';
super('Documents have mixed owner ids');

this.documents = documents;
}
Expand Down
9 changes: 4 additions & 5 deletions lib/document/errors/NoDocumentsSuppliedError.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
class NoDocumentsSuppliedError extends Error {
constructor() {
super();
const DPPError = require('../../errors/DPPError');

this.name = this.constructor.name;
this.message = 'No documents were supplied to state transition';
class NoDocumentsSuppliedError extends DPPError {
constructor() {
super('No documents were supplied to state transition');
}
}

Expand Down
4 changes: 2 additions & 2 deletions lib/document/fetchAndValidateDataContractFactory.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const MissingDataContractIdError = require('../errors/MissingDataContractIdError');
const DataContractNotPresentError = require('../errors/DataContractNotPresentError');
const MissingDataContractIdError = require('../errors/consensus/basic/document/MissingDataContractIdError');
const DataContractNotPresentError = require('../errors/consensus/basic/document/DataContractNotPresentError');

const createAndValidateIdentifier = require('../identifier/createAndValidateIdentifier');

Expand Down
Loading

0 comments on commit 2b0a86a

Please sign in to comment.