joi-extension-semver
Advanced tools
Comparing version
54
index.js
'use strict' | ||
var joi = require('joi') | ||
var semver = require('semver') | ||
const Joi = require('@hapi/joi') | ||
const semver = require('semver') | ||
var extensionName = 'semver' | ||
const extensionName = 'semver' | ||
var validRule = { | ||
const validRule = { | ||
name: 'valid', | ||
validate: function (params, value, state, options) { | ||
return semver.valid(value) ? value : this.createError(extensionName + '.valid', { v: value }, state, options) | ||
return semver.valid(value) ? value : this.createError(`${extensionName}.valid`, { v: value }, state, options) | ||
} | ||
} | ||
var simpleComparatorRules = ['gt', 'gte', 'lt', 'lte', 'eq', 'neq'].map(function (name) { | ||
const simpleComparatorRules = ['gt', 'gte', 'lt', 'lte', 'eq', 'neq'].map(function (name) { | ||
return { | ||
name: name, | ||
name, | ||
params: { | ||
exp: joi.string().required() | ||
exp: Joi.string().required() | ||
}, | ||
validate: function (params, value, state, options) { | ||
return semver[name](value, params.exp) ? value : this.createError(extensionName + '.' + name, { v: value, exp: params.exp }, state, options) | ||
return semver[name](value, params.exp) ? value : this.createError(`${extensionName}.${name}`, { v: value, exp: params.exp }, state, options) | ||
} | ||
@@ -27,28 +27,28 @@ } | ||
var cmpRule = { | ||
const cmpRule = { | ||
name: 'cmp', | ||
params: { | ||
cmp: joi.string().required(), | ||
exp: joi.string().required() | ||
cmp: Joi.string().required(), | ||
exp: Joi.string().required() | ||
}, | ||
validate: function (params, value, state, options) { | ||
return semver.cmp(value, params.cmp, params.exp) ? value : this.createError(extensionName + '.cmp', { v: value, cmp: params.cmp, exp: params.exp }, state, options) | ||
return semver.cmp(value, params.cmp, params.exp) ? value : this.createError(`${extensionName}.cmp`, { v: value, cmp: params.cmp, exp: params.exp }, state, options) | ||
} | ||
} | ||
var validRangeRule = { | ||
const validRangeRule = { | ||
name: 'validRange', | ||
validate: function (params, value, state, options) { | ||
return semver.validRange(value) ? value : this.createError(extensionName + '.validRange', { v: value }, state, options) | ||
return semver.validRange(value) ? value : this.createError(`${extensionName}.validRange`, { v: value }, state, options) | ||
} | ||
} | ||
var rangeComparatorRules = ['satisfies', 'gtr', 'ltr'].map(function (name) { | ||
const rangeComparatorRules = ['satisfies', 'gtr', 'ltr'].map(function (name) { | ||
return { | ||
name: name, | ||
name, | ||
params: { | ||
rng: joi.string().required() | ||
rng: Joi.string().required() | ||
}, | ||
validate: function (params, value, state, options) { | ||
return semver[name](value, params.rng) ? value : this.createError(extensionName + '.' + name, { v: value, rng: params.rng }, state, options) | ||
return semver[name](value, params.rng) ? value : this.createError(`${extensionName}.${name}`, { v: value, rng: params.rng }, state, options) | ||
} | ||
@@ -58,14 +58,14 @@ } | ||
var outsideRule = { | ||
const outsideRule = { | ||
name: 'outside', | ||
params: { | ||
hilo: joi.string().required(), | ||
rng: joi.string().required() | ||
hilo: Joi.string().required(), | ||
rng: Joi.string().required() | ||
}, | ||
validate: function (params, value, state, options) { | ||
return semver.outside(value, params.rng, params.hilo) ? value : this.createError(extensionName + '.outside', { v: value, hilo: params.hilo, rng: params.rng }, state, options) | ||
return semver.outside(value, params.rng, params.hilo) ? value : this.createError(`${extensionName}.outside`, { v: value, hilo: params.hilo, rng: params.rng }, state, options) | ||
} | ||
} | ||
var rules = [] | ||
const rules = [] | ||
.concat([validRule]) | ||
@@ -78,4 +78,4 @@ .concat(simpleComparatorRules) | ||
var extension = { | ||
base: joi.string(), | ||
const extension = { | ||
base: Joi.string(), | ||
name: 'semver', | ||
@@ -97,5 +97,5 @@ language: { | ||
}, | ||
rules: rules | ||
rules | ||
} | ||
module.exports = extension |
{ | ||
"name": "joi-extension-semver", | ||
"version": "2.0.0", | ||
"version": "3.0.0", | ||
"description": "Semver extension for the Joi validation library", | ||
@@ -8,3 +8,3 @@ "main": "index.js", | ||
"lint": "eslint **/*.js", | ||
"test": "mocha index.spec.js" | ||
"test": "nyc mocha index.spec.js" | ||
}, | ||
@@ -16,22 +16,27 @@ "keywords": [ | ||
], | ||
"files": [], | ||
"author": "David Szakallas <david.szakallas@gmail.com>", | ||
"license": "MIT", | ||
"devDependencies": { | ||
"chai": "^3.5.0", | ||
"eslint": "^3.3.1", | ||
"eslint-config-standard": "^5.3.5", | ||
"eslint-plugin-promise": "^2.0.1", | ||
"eslint-plugin-standard": "^2.0.0", | ||
"mocha": "^3.0.2", | ||
"@hapi/joi": "^15.0.3", | ||
"chai": "^4.2.0", | ||
"eslint": "^5.16.0", | ||
"eslint-config-standard": "^12.0.0", | ||
"eslint-plugin-import": "^2.17.3", | ||
"eslint-plugin-node": "^9.1.0", | ||
"eslint-plugin-promise": "^4.1.1", | ||
"eslint-plugin-standard": "^4.0.0", | ||
"mocha": "^6.1.4", | ||
"nyc": "^14.1.1", | ||
"pre-commit": "^1.1.3" | ||
}, | ||
"peerDependencies": { | ||
"joi": ">=9.0.0" | ||
"@hapi/joi": ">=15.0.0" | ||
}, | ||
"dependencies": { | ||
"semver": "^5.3.0" | ||
"semver": "^6.1.1" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/szdavid92/joi-extension-semver.git" | ||
"repository": "dszakallas/joi-extension-semver", | ||
"engines": { | ||
"node": ">= 8" | ||
}, | ||
@@ -41,3 +46,14 @@ "pre-commit": [ | ||
"test" | ||
] | ||
], | ||
"nyc": { | ||
"all": true, | ||
"check-coverage": true, | ||
"exclude": [ | ||
"index.spec.js" | ||
], | ||
"branches": 100, | ||
"lines": 100, | ||
"functions": 100, | ||
"statements": 100 | ||
} | ||
} |
# joi-extension-semver | ||
[](https://travis-ci.org/szdavid92/joi-extension-semver) | ||
[](https://travis-ci.org/dszakallas/joi-extension-semver) | ||
@@ -11,8 +11,8 @@ Semver extension for the Joi validation library | ||
var joi = require('joi') | ||
.extend(require('joi-extension-semver')); | ||
const Joi = require('@hapi/joi') | ||
.extend(require('joi-extension-semver')) | ||
joi.attempt('1.2.3', joi.semver().gte('1.2.3')); //1.2.3 | ||
joi.attempt('1.2.3', joi.semver().lt('1.2.3')); // throws ValidationError | ||
joi.attempt('1.2.3', joi.semver().satisfies('^1.0.0')); // 1.2.3 | ||
Joi.attempt('1.2.3', joi.semver().gte('1.2.3')) // 1.2.3 | ||
Joi.attempt('1.2.3', joi.semver().lt('1.2.3')) // throws ValidationError | ||
Joi.attempt('1.2.3', joi.semver().satisfies('^1.0.0')) // 1.2.3 | ||
``` | ||
@@ -47,19 +47,26 @@ | ||
### `semver.valid()` | ||
Validates that the value is a semver version. | ||
Asserts `valid(value)`. | ||
### `semver.gt(exp)` | ||
Asserts `gt(value, exp)`. | ||
### `semver.gte(exp)` | ||
Asserts `gte(value, exp)`. | ||
### `semver.lt(exp)` | ||
Asserts `lt(value, exp)`. | ||
### `semver.lte(exp)` | ||
Asserts `lte(value, exp)`. | ||
### `semver.eq(exp)` | ||
Asserts `eq(value, exp)`. | ||
### `semver.neq(exp)` | ||
### `semver.cmp(cmp, exp)` | ||
Asserts `neq(value, exp)`. | ||
### `semver.cmp(comp, exp)` | ||
Asserts `cmp(value, comp, exp)`. | ||
### `semver.validRange()` | ||
Validates that the value is a semver range. | ||
Asserts `validRange(value)`. | ||
### `semver.satisfies(rng)` | ||
Asserts `satisfies(value, rng)`. | ||
### `semver.gtr(rng)` | ||
Asserts `gtr(value, rng)`. | ||
### `semver.ltr(rng)` | ||
Asserts `ltr(value, rng)`. | ||
### `semver.outside(hilo, rng)` | ||
Asserts `outside(value, hilo, rng)`. |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
7752
30.37%71
10.94%11
57.14%5
-16.67%86
-7.53%1
Infinity%1
Infinity%+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
Updated