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

feat: introduce consensus error codes #341

Merged
merged 2 commits into from
Aug 26, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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