Skip to content

Commit

Permalink
Merge pull request #168 from hckrnews/feature/finetune-error-message
Browse files Browse the repository at this point in the history
Use error package for more error details
  • Loading branch information
w3nl authored Mar 31, 2022
2 parents 4d57c6f + 9708213 commit 2109351
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 12 deletions.
24 changes: 22 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@hckrnews/objects",
"description": "Create valid JavaScript objects",
"version": "3.6.4",
"version": "4.0.0",
"author": {
"name": "Pieter Wigboldus",
"url": "https://hckr.news/"
Expand Down Expand Up @@ -59,6 +59,7 @@
"flat"
],
"dependencies": {
"@hckrnews/error": "^0.3.8",
"@hckrnews/validator": "^5.0.4"
}
}
43 changes: 34 additions & 9 deletions src/objects.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Validator } from '@hckrnews/validator';
import { ValidationError } from '@hckrnews/error';
import Parser from './parser.js';
import Int from './int.js';
import ParseOptionsSchema from './schemas/parse-options.js';
Expand Down Expand Up @@ -152,9 +153,17 @@ const ObjectGenerator = ({ schema } = {}) =>
const subTypeName =
subType?.constructor === String ? subType : subType.name;

throw new Error(
`The field ${path}.${subField} should be a ${subTypeName} (${invalidData})`
);
throw new ValidationError({
message: `The field ${path}.${subField} should be a ${subTypeName} (${invalidData})`,
value: {
field: `${path}.${subField}`,
type: subTypeName,
invalidData,
schema,
data: this.original,
},
me: this.constructor,
});
}

/**
Expand All @@ -173,15 +182,31 @@ const ObjectGenerator = ({ schema } = {}) =>
const invalidData = dataToString({ data, field });

if (type?.constructor === String) {
throw new Error(
`The field ${field} should be a ${type} (${invalidData})`
);
throw new ValidationError({
message: `The field ${field} should be a ${type} (${invalidData})`,
value: {
field,
type,
invalidData,
schema,
data: this.original,
},
me: this.constructor,
});
} else if (type?.constructor === Object) {
this.subValidator({ field, type, data });
} else {
throw new Error(
`The field ${field} should be a ${type.name} (${invalidData})`
);
throw new ValidationError({
message: `The field ${field} should be a ${type.name} (${invalidData})`,
value: {
field,
type: type.name,
invalidData,
schema,
data: this.original,
},
me: this.constructor,
});
}
}
});
Expand Down

0 comments on commit 2109351

Please sign in to comment.