Co-authored-by: Zeeshan Lakhani <zeeshan.lakhani@gmail.com> Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
33 lines
908 B
JavaScript
33 lines
908 B
JavaScript
import { renderVersionBadge } from '../version.js'
|
|
import { InvalidResponse } from '../index.js'
|
|
import { BaseCratesService, keywords } from './crates-base.js'
|
|
|
|
export default class CratesVersion extends BaseCratesService {
|
|
static category = 'version'
|
|
static route = { base: 'crates/v', pattern: ':crate' }
|
|
|
|
static examples = [
|
|
{
|
|
title: 'Crates.io',
|
|
namedParams: { crate: 'rustc-serialize' },
|
|
staticPreview: renderVersionBadge({ version: '0.3.24' }),
|
|
keywords,
|
|
},
|
|
]
|
|
|
|
transform(json) {
|
|
if (json.errors) {
|
|
throw new InvalidResponse({ prettyMessage: json.errors[0].detail })
|
|
}
|
|
return json.crate.max_stable_version
|
|
? json.crate.max_stable_version
|
|
: json.crate.max_version
|
|
}
|
|
|
|
async handle({ crate }) {
|
|
const json = await this.fetch({ crate })
|
|
const version = this.transform(json)
|
|
return renderVersionBadge({ version })
|
|
}
|
|
}
|