upgrade to Joi 14; affects [elm-package jetbrains npmversion pypi vaadin-directory dynamic-xml] (#2221)
* upgrade to Joi 14
Joi 14 throws an exception on regexes which use the `g` flag
see https://github.com/hapijs/joi/issues/1615
semver-regex uses the `g` flag
https://github.com/sindresorhus/semver-regex/blob/master/index.js
so in order to upgrade Joi, I've swapped out semver-regex
We'll use joi-extension-semver for semver validation now
* use isVPlusDottedVersionNClauses in jetbrains tests
some of these projects use version numbers like
v1.7 or
v3.0.0.141
This commit is contained in:
87
package-lock.json
generated
87
package-lock.json
generated
@@ -378,8 +378,7 @@
|
||||
"acorn": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
|
||||
"integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=",
|
||||
"optional": true
|
||||
"integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc="
|
||||
},
|
||||
"acorn-dynamic-import": {
|
||||
"version": "2.0.2",
|
||||
@@ -2558,8 +2557,7 @@
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"aproba": {
|
||||
"version": "1.2.0",
|
||||
@@ -2580,14 +2578,12 @@
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
@@ -2602,20 +2598,17 @@
|
||||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"console-control-strings": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
@@ -2732,8 +2725,7 @@
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
@@ -2745,7 +2737,6 @@
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"number-is-nan": "^1.0.0"
|
||||
}
|
||||
@@ -2760,7 +2751,6 @@
|
||||
"version": "3.0.4",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
@@ -2768,14 +2758,12 @@
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"minipass": {
|
||||
"version": "2.2.4",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.1",
|
||||
"yallist": "^3.0.0"
|
||||
@@ -2794,7 +2782,6 @@
|
||||
"version": "0.5.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
}
|
||||
@@ -2875,8 +2862,7 @@
|
||||
"number-is-nan": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
@@ -2888,7 +2874,6 @@
|
||||
"version": "1.4.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
@@ -2974,8 +2959,7 @@
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
@@ -3011,7 +2995,6 @@
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"code-point-at": "^1.0.0",
|
||||
"is-fullwidth-code-point": "^1.0.0",
|
||||
@@ -3031,7 +3014,6 @@
|
||||
"version": "3.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
@@ -3075,14 +3057,12 @@
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.0.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -3907,8 +3887,7 @@
|
||||
"cssom": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz",
|
||||
"integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=",
|
||||
"optional": true
|
||||
"integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs="
|
||||
},
|
||||
"cssstyle": {
|
||||
"version": "0.2.37",
|
||||
@@ -7167,9 +7146,9 @@
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
},
|
||||
"isemail": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/isemail/-/isemail-3.1.3.tgz",
|
||||
"integrity": "sha512-5xbsG5wYADIcB+mfLsd+nst1V/D+I7EU7LEZPo2GOIMu4JzfcRs5yQoypP4avA7QtUqgxYLKBYNv4IdzBmbhdw==",
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz",
|
||||
"integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==",
|
||||
"requires": {
|
||||
"punycode": "2.x.x"
|
||||
},
|
||||
@@ -7310,15 +7289,24 @@
|
||||
}
|
||||
},
|
||||
"joi": {
|
||||
"version": "13.7.0",
|
||||
"resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz",
|
||||
"integrity": "sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==",
|
||||
"version": "14.0.1",
|
||||
"resolved": "https://registry.npmjs.org/joi/-/joi-14.0.1.tgz",
|
||||
"integrity": "sha512-M8yD7j1G/9UfJ40h97ophm/flC0zDXUn1RrK3GEm2IsyxOOJAnjQiYLLFS5p75gDGtaKwAPMB4JNLLr5yvCadw==",
|
||||
"requires": {
|
||||
"hoek": "5.x.x",
|
||||
"isemail": "3.x.x",
|
||||
"topo": "3.x.x"
|
||||
}
|
||||
},
|
||||
"joi-extension-semver": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/joi-extension-semver/-/joi-extension-semver-2.0.0.tgz",
|
||||
"integrity": "sha1-/XTCn1nDm2hlIlj0MCVDV2qYVQU=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"semver": "^5.3.0"
|
||||
}
|
||||
},
|
||||
"js-beautify": {
|
||||
"version": "1.7.4",
|
||||
"resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.7.4.tgz",
|
||||
@@ -9421,7 +9409,6 @@
|
||||
"version": "0.1.4",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"kind-of": "^3.0.2",
|
||||
"longest": "^1.0.1",
|
||||
@@ -9746,8 +9733,7 @@
|
||||
"is-buffer": {
|
||||
"version": "1.1.6",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"is-builtin-module": {
|
||||
"version": "1.0.0",
|
||||
@@ -9831,7 +9817,6 @@
|
||||
"version": "3.2.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"is-buffer": "^1.1.5"
|
||||
}
|
||||
@@ -9878,8 +9863,7 @@
|
||||
"longest": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "4.1.3",
|
||||
@@ -10145,8 +10129,7 @@
|
||||
"repeat-string": {
|
||||
"version": "1.6.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"require-directory": {
|
||||
"version": "2.1.1",
|
||||
@@ -12308,12 +12291,6 @@
|
||||
"semver": "^5.0.3"
|
||||
}
|
||||
},
|
||||
"semver-regex": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz",
|
||||
"integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==",
|
||||
"dev": true
|
||||
},
|
||||
"send": {
|
||||
"version": "0.16.1",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
|
||||
@@ -13512,7 +13489,7 @@
|
||||
},
|
||||
"text-encoding": {
|
||||
"version": "0.6.4",
|
||||
"resolved": "http://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz",
|
||||
"resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz",
|
||||
"integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=",
|
||||
"dev": true
|
||||
},
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
"glob": "^7.1.1",
|
||||
"gm": "^1.23.0",
|
||||
"is-css-color": "^1.0.0",
|
||||
"joi": "13.7.0",
|
||||
"joi": "14.0.1",
|
||||
"js-yaml": "^3.11.0",
|
||||
"jsonpath": "~1.0.0",
|
||||
"lodash.countby": "^4.6.0",
|
||||
@@ -155,6 +155,7 @@
|
||||
"icedfrisby-nock": "^1.0.0",
|
||||
"is-png": "^1.1.0",
|
||||
"is-svg": "^3.0.0",
|
||||
"joi-extension-semver": "2.0.0",
|
||||
"lint-staged": "^7.3.0",
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"lodash.difference": "^4.5.0",
|
||||
@@ -179,7 +180,6 @@
|
||||
"redis-server": "^1.2.2",
|
||||
"rimraf": "^2.6.2",
|
||||
"sazerac": "^0.4.2",
|
||||
"semver-regex": "^2.0.0",
|
||||
"sinon": "^7.0.0",
|
||||
"sinon-chai": "^3.0.0",
|
||||
"snap-shot-it": "^6.1.8",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
const Joi = require('joi')
|
||||
const ServiceTester = require('../service-tester')
|
||||
const { isMetric, isSemver } = require('../test-validators')
|
||||
const { isMetric, isVPlusDottedVersionNClauses } = require('../test-validators')
|
||||
|
||||
const t = new ServiceTester({ id: 'jetbrains', title: 'JetBrains' })
|
||||
module.exports = t
|
||||
@@ -215,17 +215,26 @@ t.create('version for unknown plugin')
|
||||
t.create('version (user friendly plugin id)')
|
||||
.get('/plugin/v/1347-scala.json')
|
||||
.expectJSONTypes(
|
||||
Joi.object().keys({ name: 'jetbrains plugin', value: isSemver })
|
||||
Joi.object().keys({
|
||||
name: 'jetbrains plugin',
|
||||
value: isVPlusDottedVersionNClauses,
|
||||
})
|
||||
)
|
||||
|
||||
t.create('version (plugin id from plugin.xml)')
|
||||
.get('/plugin/v/org.intellij.scala.json')
|
||||
.expectJSONTypes(
|
||||
Joi.object().keys({ name: 'jetbrains plugin', value: isSemver })
|
||||
Joi.object().keys({
|
||||
name: 'jetbrains plugin',
|
||||
value: isVPlusDottedVersionNClauses,
|
||||
})
|
||||
)
|
||||
|
||||
t.create('version (number as a plugin id)')
|
||||
.get('/plugin/v/7495.json')
|
||||
.expectJSONTypes(
|
||||
Joi.object().keys({ name: 'jetbrains plugin', value: isSemver })
|
||||
Joi.object().keys({
|
||||
name: 'jetbrains plugin',
|
||||
value: isVPlusDottedVersionNClauses,
|
||||
})
|
||||
)
|
||||
|
||||
@@ -7,12 +7,11 @@
|
||||
should be declared in that service's test file.
|
||||
*/
|
||||
|
||||
const Joi = require('joi')
|
||||
const semverRegex = require('semver-regex')()
|
||||
const Joi = require('joi').extend(require('joi-extension-semver'))
|
||||
|
||||
const withRegex = re => Joi.string().regex(re)
|
||||
|
||||
const isSemver = withRegex(semverRegex)
|
||||
const isSemver = Joi.semver().valid()
|
||||
|
||||
const isVPlusTripleDottedVersion = withRegex(/^v[0-9]+.[0-9]+.[0-9]+$/)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user