Files
shields/services/librariesio/librariesio-dependencies.service.js
Jabbar Memon 76f13aa686 convert [lgtm liberapay librariesio localizely luarocks] classes to static props (#5587)
* convert [homebrew,hsts,itunes,jenkins,jetbrains] classes to static props

* Run the prettier across the files

* Updated the correct values in logos.spec.js

* revert back the logos.spec.js changes

* Completed refactoring of [lgtm liberapay librariesio localizely luarocks]

* Convert defaultBadgeData to object

Co-authored-by: Jabbar Memon <jabbar@zoop.one>
2020-09-21 22:11:33 -05:00

138 lines
3.6 KiB
JavaScript

'use strict'
const Joi = require('@hapi/joi')
const { BaseJsonService } = require('..')
const {
transform,
renderDependenciesBadge,
} = require('./librariesio-dependencies-helpers')
const schema = Joi.object({
dependencies: Joi.array()
.items(
Joi.object({
deprecated: Joi.boolean().allow(null).required(),
outdated: Joi.boolean().allow(null).required(),
})
)
.default([]),
}).required()
class LibrariesIoProjectDependencies extends BaseJsonService {
static category = 'dependencies'
static route = {
base: 'librariesio/release',
pattern: ':platform/:scope(@[^/]+)?/:packageName/:version?',
}
static examples = [
{
title: 'Libraries.io dependency status for latest release',
pattern: ':platform/:packageName',
namedParams: {
platform: 'hex',
packageName: 'phoenix',
},
staticPreview: renderDependenciesBadge({
deprecatedCount: 0,
outdatedCount: 1,
}),
},
{
title: 'Libraries.io dependency status for specific release',
pattern: ':platform/:packageName/:version',
namedParams: {
platform: 'hex',
packageName: 'phoenix',
version: '1.0.3',
},
staticPreview: renderDependenciesBadge({
deprecatedCount: 0,
outdatedCount: 3,
}),
},
{
title:
'Libraries.io dependency status for latest release, scoped npm package',
pattern: ':platform/:scope/:packageName',
namedParams: {
platform: 'npm',
scope: '@babel',
packageName: 'core',
},
staticPreview: renderDependenciesBadge({
deprecatedCount: 8,
outdatedCount: 0,
}),
},
{
title:
'Libraries.io dependency status for specific release, scoped npm package',
pattern: ':platform/:scope/:packageName/:version',
namedParams: {
platform: 'npm',
scope: '@babel',
packageName: 'core',
version: '7.0.0',
},
staticPreview: renderDependenciesBadge({
deprecatedCount: 12,
outdatedCount: 0,
}),
},
]
async handle({ platform, scope, packageName, version = 'latest' }) {
const url = `https://libraries.io/api/${encodeURIComponent(platform)}/${
scope ? encodeURIComponent(`${scope}/`) : ''
}${encodeURIComponent(packageName)}/${encodeURIComponent(
version
)}/dependencies`
const json = await this._requestJson({
url,
schema,
errorMessages: { 404: 'package or version not found' },
})
const { deprecatedCount, outdatedCount } = transform(json)
return renderDependenciesBadge({ deprecatedCount, outdatedCount })
}
}
class LibrariesIoRepoDependencies extends BaseJsonService {
static category = 'dependencies'
static route = {
base: 'librariesio/github',
pattern: ':user/:repo',
}
static examples = [
{
title: 'Libraries.io dependency status for GitHub repo',
namedParams: {
user: 'phoenixframework',
repo: 'phoenix',
},
staticPreview: renderDependenciesBadge({ outdatedCount: 325 }),
},
]
async handle({ user, repo }) {
const url = `https://libraries.io/api/github/${encodeURIComponent(
user
)}/${encodeURIComponent(repo)}/dependencies`
const json = await this._requestJson({
url,
schema,
errorMessages: {
404: 'repo not found',
},
})
const { deprecatedCount, outdatedCount } = transform(json)
return renderDependenciesBadge({ deprecatedCount, outdatedCount })
}
}
module.exports = [LibrariesIoProjectDependencies, LibrariesIoRepoDependencies]