Skip to content
Snippets Groups Projects
Select Git revision
  • 377a0362a7287ecd62569ebc85bf7a0eea4fa76a
  • master default protected
  • gh-pages
  • dependabot/npm_and_yarn/nock-14.0.5
  • dependabot/npm_and_yarn/react-19.1.0
  • dependabot/npm_and_yarn/react-dom-19.1.0
  • server-2025-02-01-6100669a
  • server-2024-11-01-87cba042
  • server-2024-10-01-6875b7c8
  • dependabot/npm_and_yarn/path-to-regexp-8.2.0
  • server-2024-09-01-3d52575c
  • daily-tests-gha2
  • daily-tests-gha
  • server-2023-12-01-92d8fb8e
  • server-2023-11-01-a80c93fd
  • server-2023-10-01-31096085
  • coc-v2
  • server-2023-09-01-8edc3810
  • server-2023-08-01-75858a03
  • server-2023-07-01-02183d8d
  • test-9317
  • server-2025-07-01
  • 5.0.2
  • 5.0.1
  • 5.0.0
  • server-2025-06-01
  • server-2025-05-01
  • server-2025-04-03
  • server-2025-03-02
  • server-2025-03-01
  • server-2025-02-02
  • server-2025-01-01
  • server-2024-12-01
  • server-2024-11-02
  • 4.1.0
  • server-2024-09-25
  • server-2024-09-02
  • server-2024-08-01
  • server-2024-07-01
  • 4.0.0
  • server-2024-06-01
41 results

pub-points.service.js

Blame
  • user avatar
    Jeevan Chandra Joshi authored and GitHub committed
    * add PUB points badge
    
    * update PUB points badge
    
    * update PUB points badge
    
    Co-authored-by: default avatarrepo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
    377a0362
    History
    pub-points.service.js 1.51 KiB
    import Joi from 'joi'
    import { floorCount } from '../color-formatters.js'
    import { BaseJsonService } from '../index.js'
    import { nonNegativeInteger } from '../validators.js'
    
    const documentation = `<p>A measure of quality. This includes several dimensions of quality such as code style, platform support, and maintainability.</p>`
    
    const keywords = ['dart', 'flutter']
    
    const schema = Joi.object({
      grantedPoints: nonNegativeInteger,
      maxPoints: nonNegativeInteger,
    }).required()
    
    const title = 'Pub Points'
    
    export default class PubPoints extends BaseJsonService {
      static category = 'rating'
    
      static route = { base: 'pub/points', pattern: ':packageName' }
    
      static examples = [
        {
          title,
          keywords,
          documentation,
          namedParams: { packageName: 'analysis_options' },
          staticPreview: this.render({ grantedPoints: 120, maxPoints: 130 }),
        },
      ]
    
      static defaultBadgeData = { label: 'points' }
    
      static render({ grantedPoints, maxPoints }) {
        return {
          label: 'points',
          message: `${grantedPoints}/${maxPoints}`,
          color: floorCount((grantedPoints / maxPoints) * 100, 40, 60, 80),
        }
      }
    
      async fetch({ packageName }) {
        return this._requestJson({
          schema,
          url: `https://pub.dev/api/packages/${packageName}/score`,
        })
      }
    
      async handle({ packageName }) {
        const score = await this.fetch({ packageName })
        const grantedPoints = score.grantedPoints
        const maxPoints = score.maxPoints
        return this.constructor.render({ grantedPoints, maxPoints })
      }
    }