Compare commits
2 Commits
3.3.0
...
requires-p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
332a496e84 | ||
|
|
5f28ac34cc |
@@ -14,6 +14,9 @@ update_configs:
|
||||
- match:
|
||||
dependency_name: 'eslint*'
|
||||
update_type: 'semver:minor'
|
||||
- match:
|
||||
dependency_name: 'enzyme*'
|
||||
update_type: 'semver:minor'
|
||||
- match:
|
||||
dependency_name: 'mocha*'
|
||||
update_type: 'semver:minor'
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
"**/*-test-helpers.js",
|
||||
"**/*-fixtures.js",
|
||||
"**/mocha-*.js",
|
||||
"**/*.test-d.ts",
|
||||
"dangerfile.js",
|
||||
"gatsby-*.js",
|
||||
"core/service-test-runner",
|
||||
|
||||
6
.vscode/extensions.json
vendored
6
.vscode/extensions.json
vendored
@@ -1,3 +1,7 @@
|
||||
{
|
||||
"recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"]
|
||||
"recommendations": [
|
||||
"esbenp.prettier-vscode",
|
||||
"EditorConfig.EditorConfig",
|
||||
"dbaeumer.vscode-eslint"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -86,15 +86,11 @@ and pull requests! You can peruse the [contributing guidelines][contributing].
|
||||
When adding or changing a service [please add tests][service-tests].
|
||||
|
||||
This project has quite a backlog of suggestions! If you're new to the project,
|
||||
maybe you'd like to open a pull request to address one of them.
|
||||
|
||||
You can read a [tutorial on how to add a badge][tutorial].
|
||||
maybe you'd like to open a pull request to address one of them:
|
||||
|
||||
[](https://github.com/badges/shields/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
|
||||
[](https://github.com/badges/shields/issues?q=is%3Aopen+is%3Aissue+label%3Ahacktoberfest)
|
||||
|
||||
Let's see if we can beat last year!
|
||||
[](https://github.com/badges/shields/issues?q=is%3Aopen+is%3Aissue+label%3Ahacktoberfest)
|
||||
You can read a [tutorial on how to add a badge][tutorial].
|
||||
|
||||
[service-tests]: https://github.com/badges/shields/blob/master/doc/service-tests.md
|
||||
[tutorial]: doc/TUTORIAL.md
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
# Changelog
|
||||
|
||||
## 3.3.0
|
||||
|
||||
- Readability improvements: a dark font color is automatically used when the badge's background is too light. For example: 
|
||||
- Better CSS color compliance: thanks to a switch from _is-css-color_ to _[css-color-converter](https://www.npmjs.com/package/css-color-converter)_, you can use a wider range of color formats from the latest CSS specification, for example `rgb(0 255 0)`
|
||||
- Less dependencies: _badge-maker_ no longer depends on _camelcase_
|
||||
|
||||
## 3.2.0
|
||||
|
||||
- Accessibility improvements: Help users of assistive technologies to read the badges when used inline
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const { fromString } = require('css-color-converter')
|
||||
const cssColorConverter = require('css-color-converter')
|
||||
|
||||
// When updating these, be sure also to update the list in `badge-maker/README.md`.
|
||||
const namedColors = {
|
||||
@@ -38,7 +38,10 @@ function isHexColor(s = '') {
|
||||
}
|
||||
|
||||
function isCSSColor(color) {
|
||||
return typeof color === 'string' && fromString(color.trim())
|
||||
return (
|
||||
typeof color === 'string' &&
|
||||
typeof cssColorConverter(color.trim()).toRgbaArray() !== 'undefined'
|
||||
)
|
||||
}
|
||||
|
||||
function normalizeColor(color) {
|
||||
@@ -70,9 +73,8 @@ function toSvgColor(color) {
|
||||
|
||||
function brightness(color) {
|
||||
if (color) {
|
||||
const cssColor = fromString(color)
|
||||
if (cssColor) {
|
||||
const rgb = cssColor.toRgbaArray()
|
||||
const rgb = cssColorConverter(color).toRgbaArray()
|
||||
if (rgb) {
|
||||
return +((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 255000).toFixed(2)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ test(normalizeColor, () => {
|
||||
given(' blue ').expect(' blue ')
|
||||
given('rgb(100%, 200%, 222%)').expect('rgb(100%, 200%, 222%)')
|
||||
given('rgb(122, 200, 222)').expect('rgb(122, 200, 222)')
|
||||
given('rgb(122, 200, 222, 1)').expect('rgb(122, 200, 222, 1)')
|
||||
given('rgb(100%, 200, 222)').expect('rgb(100%, 200, 222)')
|
||||
given('rgba(100, 20, 111, 1)').expect('rgba(100, 20, 111, 1)')
|
||||
given('hsl(122, 200%, 222%)').expect('hsl(122, 200%, 222%)')
|
||||
given('hsla(122, 200%, 222%, 1)').expect('hsla(122, 200%, 222%, 1)')
|
||||
@@ -46,8 +46,8 @@ test(normalizeColor, () => {
|
||||
given(''),
|
||||
given('not-a-color'),
|
||||
given('#ABCFGH'),
|
||||
given('rgb(122, 200, 222, 1)'),
|
||||
given('rgb(-100, 20, 111)'),
|
||||
given('rgb(100%, 200, 222)'),
|
||||
given('rgba(-100, 20, 111, 1.1)'),
|
||||
given('hsl(122, 200, 222, 1)'),
|
||||
given('hsl(122, 200, 222)'),
|
||||
|
||||
@@ -34,14 +34,10 @@ describe('The badge generator', function () {
|
||||
]).expect('#abc123')
|
||||
// valid rgb(a)
|
||||
given('rgb(0,128,255)').expect('rgb(0,128,255)')
|
||||
given('rgb(220,128,255,0.5)').expect('rgb(220,128,255,0.5)')
|
||||
given('rgba(0,0,255)').expect('rgba(0,0,255)')
|
||||
given('rgba(0,128,255,0)').expect('rgba(0,128,255,0)')
|
||||
// valid hsl(a)
|
||||
given('hsl(100, 56%, 10%)').expect('hsl(100, 56%, 10%)')
|
||||
given('hsl(360,50%,50%,0.5)').expect('hsl(360,50%,50%,0.5)')
|
||||
given('hsla(25,20%,0%,0.1)').expect('hsla(25,20%,0%,0.1)')
|
||||
given('hsla(0,50%,101%)').expect('hsla(0,50%,101%)')
|
||||
// CSS named color.
|
||||
given('papayawhip').expect('papayawhip')
|
||||
// Shields named color.
|
||||
@@ -57,6 +53,12 @@ describe('The badge generator', function () {
|
||||
// invalid hex
|
||||
given('#123red'), // contains letter above F
|
||||
given('#red'), // contains letter above F
|
||||
// invalid rgb(a)
|
||||
given('rgb(220,128,255,0.5)'), // has alpha
|
||||
given('rgba(0,0,255)'), // no alpha
|
||||
// invalid hsl(a)
|
||||
given('hsl(360,50%,50%,0.5)'), // has alpha
|
||||
given('hsla(0,50%,101%)'), // no alpha
|
||||
// neither a css named color nor colorscheme
|
||||
given('notacolor'),
|
||||
given('bluish'),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "badge-maker",
|
||||
"version": "3.3.0",
|
||||
"version": "3.2.0",
|
||||
"description": "Shields.io badge library",
|
||||
"keywords": [
|
||||
"GitHub",
|
||||
@@ -36,7 +36,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"anafanafo": "^1.0.0",
|
||||
"css-color-converter": "^2.0.0"
|
||||
"css-color-converter": "^1.1.1"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo 'Run tests from parent dir'; false"
|
||||
|
||||
@@ -18,3 +18,7 @@ public:
|
||||
redirectUrl: 'https://shields.io/'
|
||||
|
||||
rasterUrl: 'https://raster.shields.io'
|
||||
|
||||
private:
|
||||
# These are not really private; they should be moved to `public`.
|
||||
shields_ips: ['192.99.59.72', '51.254.114.150', '149.56.96.133']
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { expect } = require('chai')
|
||||
const gql = require('graphql-tag')
|
||||
const sinon = require('sinon')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { expect } = require('chai')
|
||||
const sinon = require('sinon')
|
||||
const BaseJsonService = require('./base-json')
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
const { expect } = require('chai')
|
||||
const sinon = require('sinon')
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const makeBadge = require('../../badge-maker/lib/make-badge')
|
||||
const BaseSvgScrapingService = require('./base-svg-scraping')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { expect } = require('chai')
|
||||
const sinon = require('sinon')
|
||||
const BaseXmlService = require('./base-xml')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { expect } = require('chai')
|
||||
const sinon = require('sinon')
|
||||
const BaseYamlService = require('./base-yaml')
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
// See available emoji at http://emoji.muan.co/
|
||||
const emojic = require('emojic')
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const log = require('../server/log')
|
||||
const { AuthHelper } = require('./auth-helper')
|
||||
const { MetricHelper, MetricNames } = require('./metric-helper')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const chai = require('chai')
|
||||
const { expect } = chai
|
||||
const sinon = require('sinon')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict'
|
||||
|
||||
const assert = require('assert')
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const coalesce = require('./coalesce')
|
||||
|
||||
const serverStartTimeGMTString = new Date().toGMTString()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const categories = require('../../services/categories')
|
||||
|
||||
const isRealCategory = Joi.equal(...categories.map(({ id }) => id)).required()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const camelcase = require('camelcase')
|
||||
const BaseService = require('./base')
|
||||
const { isValidCategory } = require('./categories')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { pathToRegexp, compile } = require('path-to-regexp')
|
||||
const categories = require('../../services/categories')
|
||||
const coalesceBadge = require('./coalesce-badge')
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
const camelcase = require('camelcase')
|
||||
const emojic = require('emojic')
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const queryString = require('query-string')
|
||||
const BaseService = require('./base')
|
||||
const {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict'
|
||||
|
||||
const escapeStringRegexp = require('escape-string-regexp')
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { pathToRegexp } = require('path-to-regexp')
|
||||
|
||||
function makeFullUrl(base, partialUrl) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict'
|
||||
|
||||
const { expect } = require('chai')
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { test, given, forCases } = require('sazerac')
|
||||
const {
|
||||
prepareRoute,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
|
||||
// This should be kept in sync with the schema in
|
||||
// `frontend/lib/service-definitions/index.ts`.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict'
|
||||
|
||||
const emojic = require('emojic')
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const trace = require('./trace')
|
||||
|
||||
function validate(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { expect } = require('chai')
|
||||
const sinon = require('sinon')
|
||||
const trace = require('./trace')
|
||||
|
||||
@@ -1,6 +1,20 @@
|
||||
'use strict'
|
||||
|
||||
const config = require('config').util.toObject()
|
||||
const secretIsValid = require('./secret-is-valid')
|
||||
const RateLimit = require('./rate-limit')
|
||||
const log = require('./log')
|
||||
|
||||
function secretInvalid(req, res) {
|
||||
if (!secretIsValid(req.password)) {
|
||||
// An unknown entity tries to connect. Let the connection linger for a minute.
|
||||
setTimeout(() => {
|
||||
res.json({ errors: [{ code: 'invalid_secrets' }] })
|
||||
}, 10000)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
function setRoutes({ rateLimit }, { server, metricInstance }) {
|
||||
const ipRateLimit = new RateLimit({
|
||||
@@ -15,6 +29,12 @@ function setRoutes({ rateLimit }, { server, metricInstance }) {
|
||||
})
|
||||
|
||||
server.handle((req, res, next) => {
|
||||
if (req.url.startsWith('/sys/')) {
|
||||
if (secretInvalid(req, res)) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if (rateLimit) {
|
||||
const ip =
|
||||
(req.headers['x-forwarded-for'] || '').split(', ')[0] ||
|
||||
@@ -39,6 +59,27 @@ function setRoutes({ rateLimit }, { server, metricInstance }) {
|
||||
next()
|
||||
})
|
||||
|
||||
server.get('/sys/network', (req, res) => {
|
||||
res.json({ ips: config.public.shields_ips })
|
||||
})
|
||||
|
||||
server.ws('/sys/logs', socket => {
|
||||
const listener = (...msg) => socket.send(msg.join(' '))
|
||||
socket.on('close', () => log.removeListener(listener))
|
||||
socket.on('message', msg => {
|
||||
let req
|
||||
try {
|
||||
req = JSON.parse(msg)
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
if (!secretIsValid(req.secret)) {
|
||||
return socket.close()
|
||||
}
|
||||
log.addListener(listener)
|
||||
})
|
||||
})
|
||||
|
||||
server.get('/sys/rate-limit', (req, res) => {
|
||||
res.json({
|
||||
ip: ipRateLimit.toJSON(),
|
||||
@@ -54,4 +95,6 @@ function setRoutes({ rateLimit }, { server, metricInstance }) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { setRoutes }
|
||||
module.exports = {
|
||||
setRoutes,
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
'use strict'
|
||||
|
||||
const serverSecrets = require('../../lib/server-secrets')
|
||||
|
||||
function constEq(a, b) {
|
||||
if (a.length !== b.length) {
|
||||
return false
|
||||
@@ -11,10 +13,9 @@ function constEq(a, b) {
|
||||
return zero === 0
|
||||
}
|
||||
|
||||
function makeSecretIsValid(shieldsSecret) {
|
||||
return function secretIsValid(secret = '') {
|
||||
return shieldsSecret && constEq(secret, shieldsSecret)
|
||||
}
|
||||
module.exports = function secretIsValid(secret = '') {
|
||||
return (
|
||||
serverSecrets.shields_secret &&
|
||||
constEq(secret, serverSecrets.shields_secret)
|
||||
)
|
||||
}
|
||||
|
||||
module.exports = { makeSecretIsValid }
|
||||
|
||||
@@ -8,7 +8,7 @@ const url = require('url')
|
||||
const { URL } = url
|
||||
const bytes = require('bytes')
|
||||
const Camp = require('@shields_io/camp')
|
||||
const originalJoi = require('joi')
|
||||
const originalJoi = require('@hapi/joi')
|
||||
const makeBadge = require('../../badge-maker/lib/make-badge')
|
||||
const GithubConstellation = require('../../services/github/github-constellation')
|
||||
const suggest = require('../../services/suggest')
|
||||
@@ -168,6 +168,7 @@ const privateConfigSchema = Joi.object({
|
||||
npm_token: Joi.string(),
|
||||
redis_url: Joi.string().uri({ scheme: ['redis', 'rediss'] }),
|
||||
sentry_dsn: Joi.string(),
|
||||
shields_ips: Joi.array().items(Joi.string().ip()),
|
||||
shields_secret: Joi.string(),
|
||||
sl_insight_userUuid: Joi.string(),
|
||||
sl_insight_apiToken: Joi.string(),
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* @module
|
||||
*/
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { expect } = require('chai')
|
||||
|
||||
/**
|
||||
|
||||
@@ -32,7 +32,6 @@ class FsTokenPersistence extends TokenPersistence {
|
||||
}
|
||||
|
||||
async onTokenAdded(token) {
|
||||
/* istanbul ignore if */
|
||||
if (!this._tokens) {
|
||||
throw Error('initialize() has not been called')
|
||||
}
|
||||
@@ -41,7 +40,6 @@ class FsTokenPersistence extends TokenPersistence {
|
||||
}
|
||||
|
||||
async onTokenRemoved(token) {
|
||||
/* istanbul ignore if */
|
||||
if (!this._tokens) {
|
||||
throw Error('initialize() has not been called')
|
||||
}
|
||||
|
||||
@@ -111,7 +111,10 @@ if (allFiles.length > 100) {
|
||||
|
||||
// eslint-disable-next-line promise/prefer-await-to-then
|
||||
danger.git.diffForFile(file).then(({ diff }) => {
|
||||
if (diff.includes('authHelper') && !secretsDocs.modified) {
|
||||
if (
|
||||
(diff.includes('authHelper') || diff.includes('serverSecrets')) &&
|
||||
!secretsDocs.modified
|
||||
) {
|
||||
warn(
|
||||
[
|
||||
`:books: Remember to ensure any changes to \`config.private\` `,
|
||||
|
||||
@@ -179,7 +179,7 @@ const { renderVersionBadge } = require('..//version')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
// (4)
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const schema = Joi.object({
|
||||
version: Joi.string().required(),
|
||||
}).required()
|
||||
|
||||
@@ -145,7 +145,7 @@ Once the route is working, fill out `render()` and `handle()`.
|
||||
<details>
|
||||
|
||||
```js
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { errorMessagesFor } = require('./github-helpers')
|
||||
|
||||
const issueSchema = Joi.object({
|
||||
@@ -174,7 +174,7 @@ or create an abstract superclass like **PypiBase**:
|
||||
<details>
|
||||
|
||||
```js
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const BaseJsonService = require('../base-json')
|
||||
|
||||
const schema = Joi.object({
|
||||
|
||||
8
frontend/enzyme-conf.spec.js
Normal file
8
frontend/enzyme-conf.spec.js
Normal file
@@ -0,0 +1,8 @@
|
||||
import Enzyme from 'enzyme'
|
||||
import Adapter from 'enzyme-adapter-react-16'
|
||||
import chai from 'chai'
|
||||
import chaiEnzyme from 'chai-enzyme'
|
||||
|
||||
Enzyme.configure({ adapter: new Adapter() })
|
||||
|
||||
chai.use(chaiEnzyme())
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const {
|
||||
toSvgColor,
|
||||
brightness,
|
||||
|
||||
3935
package-lock.json
generated
3935
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
42
package.json
42
package.json
@@ -22,7 +22,8 @@
|
||||
"url": "https://github.com/badges/shields"
|
||||
},
|
||||
"dependencies": {
|
||||
"joi": "17.2.1",
|
||||
"@hapi/joi": "^17.1.1",
|
||||
"@renovate/pep440": "^0.4.1",
|
||||
"@sentry/node": "^5.24.2",
|
||||
"@shields_io/camp": "^18.0.0",
|
||||
"badge-maker": "file:badge-maker",
|
||||
@@ -32,7 +33,7 @@
|
||||
"chalk": "^4.1.0",
|
||||
"check-node-version": "^4.0.3",
|
||||
"chrome-web-store-item-property": "~1.2.0",
|
||||
"config": "^3.3.2",
|
||||
"config": "^3.3.1",
|
||||
"cross-env": "^7.0.2",
|
||||
"decamelize": "^3.2.0",
|
||||
"dotenv": "^8.2.0",
|
||||
@@ -44,13 +45,13 @@
|
||||
"graphql": "^14.7.0",
|
||||
"graphql-tag": "^2.11.0",
|
||||
"ioredis": "4.17.3",
|
||||
"joi-extension-semver": "5.0.0",
|
||||
"joi-extension-semver": "4.1.1",
|
||||
"js-yaml": "^3.14.0",
|
||||
"jsonpath": "~1.0.2",
|
||||
"lodash.countby": "^4.6.0",
|
||||
"lodash.groupby": "^4.6.0",
|
||||
"lodash.times": "^4.3.2",
|
||||
"moment": "^2.29.0",
|
||||
"moment": "^2.28.0",
|
||||
"node-env-flag": "^0.1.0",
|
||||
"parse-link-header": "^1.0.1",
|
||||
"path-to-regexp": "^5.0.0",
|
||||
@@ -60,7 +61,7 @@
|
||||
"query-string": "^6.13.2",
|
||||
"request": "~2.88.2",
|
||||
"semver": "~7.3.2",
|
||||
"simple-icons": "3.10.0",
|
||||
"simple-icons": "3.8.0",
|
||||
"xmldom": "~0.2.1",
|
||||
"xpath": "~0.0.29"
|
||||
},
|
||||
@@ -147,13 +148,15 @@
|
||||
"@babel/register": "7.11.5",
|
||||
"@mapbox/react-click-to-select": "^2.2.0",
|
||||
"@types/chai": "^4.2.12",
|
||||
"@types/chai-enzyme": "^0.6.7",
|
||||
"@types/enzyme": "^3.10.6",
|
||||
"@types/lodash.debounce": "^4.0.6",
|
||||
"@types/lodash.groupby": "^4.6.6",
|
||||
"@types/mocha": "^8.0.3",
|
||||
"@types/node": "^14.11.2",
|
||||
"@types/node": "^14.11.1",
|
||||
"@types/react-helmet": "^6.1.0",
|
||||
"@types/react-modal": "^3.10.6",
|
||||
"@types/react-select": "^3.0.21",
|
||||
"@types/react-select": "^3.0.19",
|
||||
"@types/styled-components": "5.1.3",
|
||||
"@typescript-eslint/eslint-plugin": "^2.34.0",
|
||||
"@typescript-eslint/parser": "^2.34.0",
|
||||
@@ -163,37 +166,40 @@
|
||||
"caller": "^1.0.1",
|
||||
"chai": "^4.1.2",
|
||||
"chai-datetime": "^1.7.0",
|
||||
"chai-enzyme": "^1.0.0-beta.1",
|
||||
"chai-string": "^1.4.0",
|
||||
"cheerio": "^1.0.0-rc.3",
|
||||
"child-process-promise": "^2.2.1",
|
||||
"clipboard-copy": "^3.1.0",
|
||||
"concurrently": "^5.3.0",
|
||||
"cypress": "^5.3.0",
|
||||
"danger": "^10.4.1",
|
||||
"cypress": "^5.1.0",
|
||||
"danger": "^10.4.0",
|
||||
"danger-plugin-no-test-shortcuts": "^2.0.0",
|
||||
"deepmerge": "^4.2.2",
|
||||
"enzyme": "^3.11.0",
|
||||
"enzyme-adapter-react-16": "^1.15.4",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-config-prettier": "^6.12.0",
|
||||
"eslint-config-prettier": "^6.11.0",
|
||||
"eslint-config-standard": "^14.1.1",
|
||||
"eslint-config-standard-react": "^9.2.0",
|
||||
"eslint-plugin-chai-friendly": "^0.6.0",
|
||||
"eslint-plugin-cypress": "^2.11.2",
|
||||
"eslint-plugin-cypress": "^2.11.1",
|
||||
"eslint-plugin-import": "^2.22.0",
|
||||
"eslint-plugin-jsdoc": "^30.6.3",
|
||||
"eslint-plugin-jsdoc": "^30.4.2",
|
||||
"eslint-plugin-mocha": "^6.3.0",
|
||||
"eslint-plugin-no-extension-in-require": "^0.2.0",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-promise": "^4.2.1",
|
||||
"eslint-plugin-react": "^7.21.3",
|
||||
"eslint-plugin-react": "^7.20.6",
|
||||
"eslint-plugin-react-hooks": "^2.5.1",
|
||||
"eslint-plugin-sort-class-members": "^1.8.0",
|
||||
"eslint-plugin-standard": "^4.0.1",
|
||||
"fetch-ponyfill": "^6.1.1",
|
||||
"form-data": "^3.0.0",
|
||||
"fs-readfile-promise": "^3.0.1",
|
||||
"gatsby": "2.24.65",
|
||||
"gatsby": "2.24.57",
|
||||
"gatsby-plugin-catch-links": "^2.3.10",
|
||||
"gatsby-plugin-page-creator": "^2.3.30",
|
||||
"gatsby-plugin-page-creator": "^2.3.27",
|
||||
"gatsby-plugin-react-helmet": "^3.3.9",
|
||||
"gatsby-plugin-remove-trailing-slashes": "^2.3.10",
|
||||
"gatsby-plugin-styled-components": "^3.3.9",
|
||||
@@ -206,7 +212,7 @@
|
||||
"is-png": "^2.0.0",
|
||||
"is-svg": "^4.2.1",
|
||||
"js-yaml-loader": "^1.2.2",
|
||||
"jsdoc": "^3.6.6",
|
||||
"jsdoc": "^3.6.5",
|
||||
"lint-staged": "^10.4.0",
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"lodash.difference": "^4.5.0",
|
||||
@@ -235,10 +241,10 @@
|
||||
"require-hacker": "^3.0.1",
|
||||
"rimraf": "^3.0.2",
|
||||
"sazerac": "^2.0.0",
|
||||
"sinon": "^9.1.0",
|
||||
"sinon": "^9.0.3",
|
||||
"sinon-chai": "^3.5.0",
|
||||
"snap-shot-it": "^7.9.3",
|
||||
"start-server-and-test": "1.11.5",
|
||||
"start-server-and-test": "1.11.3",
|
||||
"styled-components": "^5.2.0",
|
||||
"tmp": "0.2.1",
|
||||
"tsd": "^0.13.1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { nonNegativeInteger } = require('../validators')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ const t = (module.exports = new ServiceTester({
|
||||
}))
|
||||
|
||||
t.create('Weekly Downloads')
|
||||
.get('/dw/duckduckgo-for-firefox.json')
|
||||
.get('/dw/dustman.json')
|
||||
.expectBadge({ label: 'downloads', message: isMetricOverTimePeriod })
|
||||
|
||||
t.create('Weekly Downloads (not found)')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isStarRating } = require('../test-validators')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { floorCount } = require('../color-formatters')
|
||||
const { BaseJsonService, InvalidResponse } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { downloadCount } = require('../color-formatters')
|
||||
const { metric } = require('../text-formatters')
|
||||
const { nonNegativeInteger } = require('../validators')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { renderLicenseBadge } = require('../licenses')
|
||||
const { renderVersionBadge } = require('../version')
|
||||
const { metric } = require('../text-formatters')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { nonNegativeInteger } = require('../validators')
|
||||
const { isBuildStatus } = require('../build-status')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict'
|
||||
|
||||
const queryString = require('querystring')
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
|
||||
const isAppveyorTestTotals = Joi.string().regex(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { renderVersionBadge } = require('../version')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { floorCount: floorCountColor } = require('../color-formatters')
|
||||
const { addv, metric } = require('../text-formatters')
|
||||
const { nonNegativeInteger } = require('../validators')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { BaseJsonService, NotFound } = require('..')
|
||||
|
||||
const latestBuildSchema = Joi.object({
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { renderBuildStatusBadge } = require('../build-status')
|
||||
const { BaseSvgScrapingService, NotFound } = require('..')
|
||||
const { keywords, fetch } = require('./azure-devops-helpers')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const {
|
||||
coveragePercentage: coveragePercentageColor,
|
||||
} = require('../color-formatters')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isBuildStatus } = require('../build-status')
|
||||
|
||||
const keywords = ['vso', 'vsts', 'azure-devops']
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const {
|
||||
testResultQueryParamSchema,
|
||||
renderTestResultBadge,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
|
||||
const org = 'azuredevops-powershell'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
const schema = Joi.object({
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { metric } = require('../text-formatters')
|
||||
const { downloadCount } = require('../color-formatters')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { renderVersionBadge } = require('../version')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { metric } = require('../text-formatters')
|
||||
const { nonNegativeInteger } = require('../validators')
|
||||
const { downloadCount } = require('../color-formatters')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { metric } = require('../text-formatters')
|
||||
const { nonNegativeInteger } = require('../validators')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { renderBuildStatusBadge } = require('../build-status')
|
||||
const { BaseJsonService, redirector } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { AuthHelper } = require('../../core/base-service/auth-helper')
|
||||
const { metric } = require('../text-formatters')
|
||||
const { nonNegativeInteger, optionalUrl } = require('../validators')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
// https://devcenter.bitrise.io/api/app-status-badge/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { nonNegativeInteger } = require('../validators')
|
||||
const { metric } = require('../text-formatters')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
const schema = Joi.object()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { renderVersionBadge } = require('../version')
|
||||
const { InvalidResponse, redirector } = require('..')
|
||||
const BaseBowerService = require('./bower-base')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
|
||||
const { ServiceTester } = require('../tester')
|
||||
const t = (module.exports = new ServiceTester({
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { metric } = require('../text-formatters')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { metric } = require('../text-formatters')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { optionalUrl } = require('../validators')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
|
||||
const bzBugStatus = Joi.equal(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
|
||||
const greenStatuses = [
|
||||
'fixed',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isBuildStatus, renderBuildStatusBadge } = require('../build-status')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isBuildStatus } = require('../build-status')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const prettyBytes = require('pretty-bytes')
|
||||
const { nonNegativeInteger } = require('../validators')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { renderVersionBadge } = require('../version')
|
||||
const { BaseJsonService, NotFound } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
|
||||
t.create('Price')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { colorScale, coveragePercentage } = require('../color-formatters')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isBuildStatus, renderBuildStatusBadge } = require('../build-status')
|
||||
const { BaseSvgScrapingService, redirector } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isBuildStatus, renderBuildStatusBadge } = require('../build-status')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isBuildStatus } = require('../build-status')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { nonNegativeInteger } = require('../validators')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { version: versionColor } = require('../color-formatters')
|
||||
const { redirector } = require('..')
|
||||
const { BaseClojarsService } = require('./clojars-base')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
const schema = Joi.object({
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const {
|
||||
coveragePercentage: coveragePercentageColor,
|
||||
} = require('../color-formatters')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
|
||||
const isPlatform = Joi.string().regex(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const {
|
||||
coveragePercentage: coveragePercentageColor,
|
||||
} = require('../color-formatters')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { BaseSvgScrapingService } = require('..')
|
||||
const { codacyGrade } = require('./codacy-helpers')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
|
||||
const codacyGrade = Joi.equal('A', 'B', 'C', 'D', 'E', 'F')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { colorScale, letterScore } = require('../color-formatters')
|
||||
const { nonNegativeInteger } = require('../validators')
|
||||
const { BaseJsonService, NotFound } = require('..')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isIntegerPercentage } = require('../test-validators')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { NotFound } = require('..')
|
||||
|
||||
const keywords = ['codeclimate']
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { coveragePercentage, letterScore } = require('../color-formatters')
|
||||
const { BaseJsonService, NotFound } = require('..')
|
||||
const { keywords, isLetterGrade, fetchRepo } = require('./codeclimate-common')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isIntegerPercentage } = require('../test-validators')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { coveragePercentage } = require('../color-formatters')
|
||||
const { BaseSvgScrapingService } = require('..')
|
||||
const { parseJson } = require('../../core/base-service/json')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { BaseSvgScrapingService } = require('..')
|
||||
const { isValidGrade, gradeColor } = require('./codefactor-helpers')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
|
||||
// https://support.codefactor.io/i14-glossary
|
||||
// https://github.com/badges/shields/issues/4269
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isBuildStatus, renderBuildStatusBadge } = require('../build-status')
|
||||
const { BaseSvgScrapingService } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { nonNegativeInteger } = require('../validators')
|
||||
const { BaseJsonService } = require('..')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const Joi = require('@hapi/joi')
|
||||
const { renderLicenseBadge } = require('../licenses')
|
||||
const toArray = require('../../core/base-service/to-array')
|
||||
const BaseCondaService = require('./conda-base')
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user