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:
chris48s
2018-10-28 15:56:19 +00:00
committed by GitHub
parent 6e51178e73
commit 87524976c9
4 changed files with 49 additions and 64 deletions

87
package-lock.json generated
View File

@@ -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
},

View File

@@ -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",

View File

@@ -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,
})
)

View File

@@ -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]+$/)