Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
joi-decimal
Advanced tools
Joi extension for Decimal type.
Useful to validate any scientific / financial number.
⚠️ do not use .precision()
for now as it doesn't work as expected.
It will be fixed in v1.2.0.
const BaseJoi = require('@hapi/joi');
const DecimalExtension = require('joi-decimal');
const Joi = BaseJoi.extend(DecimalExtension);
const schema = Joi.decimal().greater(100.0);
const result = schema.validate(101.00);
// result.error === null -> valid
decimal
- inherits from Any
Generates a schema object that matches a Decimal type (as well as a JavaScript string or number that can be converted to Decimal type). If
the validation convert
option is on (enabled by default), a string or number will be converted to a Decimal
, if specified.
Also, if
convert
is on and decimal.precision()
is used, the value will be converted to the specified precision
as well.
const dec = Joi.decimal();
dec.validate('0.046875', (err, value) => { });
Possible validation errors: decimal.base
decimal.finite()
Requires the number to be finite.
const schema = Joi.decimal().finite();
Possible validation errors: decimal.finite
decimal.greater(limit)
Specifies that the value must be greater than limit
or a reference.
const schema = Joi.decimal().greater(5.000);
const schema = Joi.object({
min: Joi.decimal().required(),
max: Joi.decimal().greater(Joi.ref('min')).required()
});
Possible validation errors: decimal.greater
, decimal.ref
decimal.integer()
Requires the number to be an integer (no floating point).
const schema = Joi.decimal().integer();
Possible validation errors: decimal.integer
decimal.less(limit)
Specifies that the value must be less than limit
or a reference.
const schema = Joi.decimal().less(10);
const schema = Joi.object({
min: Joi.decimal().less(Joi.ref('max')).required(),
max: Joi.decimal().required()
});
Possible validation errors: decimal.less
, decimal.ref
decimal.max(limit)
Specifies the maximum value where:
limit
- the maximum value allowed or a reference.const schema = Joi.decimal().max(10);
const schema = Joi.object({
min: Joi.decimal().max(Joi.ref('max')).required(),
max: Joi.decimal().required()
});
Possible validation errors: decimal.max
, decimal.ref
decimal.min(limit)
Specifies the minimum value where:
limit
- the minimum value allowed or a reference.const schema = Joi.decimal().min(2);
const schema = Joi.object({
min: Joi.decimal().required(),
max: Joi.decimal().min(Joi.ref('min')).required()
});
Possible validation errors: decimal.min
, decimal.ref
decimal.multiple(base)
Specifies that the value must be a multiple of base
(or a reference):
const schema = Joi.decimal().multiple(3);
Possible validation errors: decimal.multiple
, decimal.ref
decimal.nan()
Requires the number to be NaN.
const schema = Joi.decimal().nan();
Possible validation errors: decimal.nan
decimal.negative()
Requires the number to be negative.
const schema = Joi.decimal().negative();
Possible validation errors: decimal.negative
decimal.positive()
Requires the number to be positive.
const schema = Joi.decimal().positive();
Possible validation errors: decimal.positive
decimal.precision(sd, rm)
Specifies the maximum precision where:
sd
- the number of significant digits on which to round.rm
- the rounding mode to use.const schema = Joi.decimal().precision(2, 5);
Possible validation errors: decimal.precision
decimal.zero()
Requires the number to be zero.
const schema = Joi.decimal().zero();
Possible validation errors: decimal.zero
decimal.base
The value is not a Decimal or could not be cast to a Decimal.
decimal.finite
The number was not finite.
decimal.greater
The number is lower or equal to the limit that you set.
Additional local context properties:
{
limit: number // Minimum value that was expected for this number
}
decimal.integer
The number is not a valid integer.
decimal.less
The number is higher or equal to the limit that you set.
Additional local context properties:
{
limit: number // Maximum value that was expected for this number
}
decimal.max
The number is higher than the limit that you set.
Additional local context properties:
{
limit: number // Maximum value that was expected for this number
}
decimal.min
The number is lower than the limit that you set.
Additional local context properties:
{
limit: number // Minimum value that was expected for this number
}
decimal.multiple
The number could not be divided by the base you provided.
Additional local context properties:
{
base: number // The number of which the input is supposed to be a multiple of
}
decimal.nan
The number is not NaN.
decimal.negative
The number was positive.
decimal.only
Only some values were allowed, the input didn't match any of them.
Additional local context properties:
{
values: Array<any> // Contains the list of the valid values that were expected
}
decimal.positive
The number was negative.
decimal.precision
The arguments (sd
and/or rm
) are not numbers.
decimal.ref
A reference was used in one of decimal.greater()
, decimal.less()
, decimal.max()
, decimal.min()
or decimal.multiple()
and the value pointed to by that reference in the input is not a valid Decimal or could not be cast to a Decimal.
decimal.zero
The number is not zero.
FAQs
Joi extension for decimals
We found that joi-decimal demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.