kopia lustrzana https://github.com/badgen/badgen.net
badge(chrome-web-store): update api fetching approach (#438)
* refactor: replace chrome-webstore with webextension-store-meta fix #431 * perf: improve parsing performance * perf: improve chrome-web-store start-up speedpull/441/head
rodzic
7d689b4ee5
commit
fcfba29746
|
@ -1,20 +0,0 @@
|
|||
name: Test Upstream Apis
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '7 */8 * * *'
|
||||
push:
|
||||
branches:
|
||||
- test-upstreams
|
||||
|
||||
jobs:
|
||||
triggers:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '14.x'
|
||||
- run: npm install chrome-webstore
|
||||
- run: node test/upstreams.js
|
|
@ -1,5 +1,5 @@
|
|||
import millify from 'millify'
|
||||
import webstore from 'chrome-webstore'
|
||||
import ChromeWebStore from 'webextension-store-meta/lib/chrome-web-store'
|
||||
import { version, versionColor, stars } from '../libs/utils'
|
||||
import { createBadgenHandler, PathArgs } from '../libs/create-badgen-handler'
|
||||
|
||||
|
@ -19,43 +19,44 @@ export default createBadgenHandler({
|
|||
})
|
||||
|
||||
async function handler ({ topic, id }: PathArgs) {
|
||||
const apiVersion = '20200914'
|
||||
const meta = await webstore.detail({ id, version: apiVersion })
|
||||
const chromeWebStore = await ChromeWebStore.load({ id })
|
||||
switch (topic) {
|
||||
case 'v':
|
||||
case 'v': {
|
||||
const v = chromeWebStore.version()
|
||||
return {
|
||||
subject: 'chrome web store',
|
||||
status: version(meta.version),
|
||||
color: versionColor(meta.version)
|
||||
status: version(v),
|
||||
color: versionColor(v)
|
||||
}
|
||||
}
|
||||
case 'users':
|
||||
return {
|
||||
subject: 'users',
|
||||
status: millify(parseInt(meta.users.replace(/,/g, ''))),
|
||||
status: millify(chromeWebStore.users()),
|
||||
color: 'green'
|
||||
}
|
||||
case 'price':
|
||||
return {
|
||||
subject: 'price',
|
||||
status: meta.price,
|
||||
status: `${chromeWebStore.price()} ${chromeWebStore.priceCurrency()}`,
|
||||
color: 'green'
|
||||
}
|
||||
case 'rating':
|
||||
return {
|
||||
subject: 'rating',
|
||||
status: `${Number(meta.rating.average).toFixed(2)}/5`,
|
||||
status: `${chromeWebStore.ratingValue().toFixed(2)}/5`,
|
||||
color: 'green'
|
||||
}
|
||||
case 'stars':
|
||||
return {
|
||||
subject: 'stars',
|
||||
status: stars(meta.rating.average),
|
||||
status: stars(chromeWebStore.ratingValue()),
|
||||
color: 'green'
|
||||
}
|
||||
case 'rating-count':
|
||||
return {
|
||||
subject: 'rating count',
|
||||
status: `${meta.rating.count} total`,
|
||||
status: `${chromeWebStore.ratingCount()} total`,
|
||||
color: 'green'
|
||||
}
|
||||
default:
|
||||
|
|
|
@ -3734,14 +3734,6 @@
|
|||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"chrome-webstore": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/chrome-webstore/-/chrome-webstore-1.4.1.tgz",
|
||||
"integrity": "sha512-Kvc/lHWs4j5XvPOzM/M8Ta8oz9qRaM/KyorOAoWEstCfxPNNIbmXtdZq/Btbqp+e1LFt1zDSjPvGAsew44+Uyg==",
|
||||
"requires": {
|
||||
"request-compose": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"ci-info": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
|
||||
|
@ -8292,11 +8284,6 @@
|
|||
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
|
||||
"dev": true
|
||||
},
|
||||
"request-compose": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/request-compose/-/request-compose-2.1.0.tgz",
|
||||
"integrity": "sha512-mIWvU9HA2whb/fHcqeQ0LQXAImCGISqUPyjuFF2rALhym2Fu4ebZGv7wxFA78rsJO/fn2OeEaK54TSjwSwRAFw=="
|
||||
},
|
||||
"require-directory": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||
|
@ -10085,6 +10072,71 @@
|
|||
"integrity": "sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==",
|
||||
"dev": true
|
||||
},
|
||||
"webextension-store-meta": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/webextension-store-meta/-/webextension-store-meta-1.0.2.tgz",
|
||||
"integrity": "sha512-OUnnDY8EQhvMV9+bpISOpvMr0P/AVlHhVzb8m+h6QfLhLtrbgrrl+Pyj5utHDeNYH4nWOkzJHpnyP3g2ZICcYw==",
|
||||
"requires": {
|
||||
"htmlparser2": "^5.0.0",
|
||||
"node-fetch": "^2.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"dom-serializer": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.1.0.tgz",
|
||||
"integrity": "sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ==",
|
||||
"requires": {
|
||||
"domelementtype": "^2.0.1",
|
||||
"domhandler": "^3.0.0",
|
||||
"entities": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"domelementtype": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz",
|
||||
"integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA=="
|
||||
},
|
||||
"domhandler": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz",
|
||||
"integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==",
|
||||
"requires": {
|
||||
"domelementtype": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"domutils": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.4.2.tgz",
|
||||
"integrity": "sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA==",
|
||||
"requires": {
|
||||
"dom-serializer": "^1.0.1",
|
||||
"domelementtype": "^2.0.1",
|
||||
"domhandler": "^3.3.0"
|
||||
}
|
||||
},
|
||||
"entities": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
|
||||
"integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ=="
|
||||
},
|
||||
"htmlparser2": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.0.tgz",
|
||||
"integrity": "sha512-/Cvz5RTj9q71kCL9No1u2jhFaAdoMtxpNy0YTwjmQB3iX2TZXfCojTm7tp3rM4NxcwaX1iAzvNgo8OFectXmrQ==",
|
||||
"requires": {
|
||||
"domelementtype": "^2.0.1",
|
||||
"domhandler": "^3.3.0",
|
||||
"domutils": "^2.4.2",
|
||||
"entities": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
|
||||
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"webidl-conversions": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
"badgen-icons": "^0.17.0",
|
||||
"byte-size": "^6.2.0",
|
||||
"cheerio": "^1.0.0-rc.3",
|
||||
"chrome-webstore": "^1.4.1",
|
||||
"date-fns": "^2.16.1",
|
||||
"got": "^10.7.0",
|
||||
"haxe-rpc-client": "^1.0.0",
|
||||
|
@ -44,6 +43,7 @@
|
|||
"serve-handler": "^6.1.3",
|
||||
"serve-marked": "^2.0.3",
|
||||
"url-parse": "^1.4.7",
|
||||
"webextension-store-meta": "^1.0.2",
|
||||
"yaml": "^1.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
const assert = require('assert').strict
|
||||
|
||||
const chromeWebStore = require('chrome-webstore')
|
||||
|
||||
testUpstreams([
|
||||
chromeWebStoreVersion,
|
||||
]).catch(err => {
|
||||
const { message, expected, actual } = err
|
||||
console.error({ message, expected, actual })
|
||||
process.exitCode = 1
|
||||
})
|
||||
|
||||
async function testUpstreams (tests) {
|
||||
for (const test of tests) {
|
||||
await test()
|
||||
}
|
||||
}
|
||||
|
||||
async function chromeWebStoreVersion () {
|
||||
const expected = '20200924'
|
||||
const actual = await chromeWebStore.version()
|
||||
|
||||
assert.equal(actual, expected, 'Chrome Web Store api version is bumped')
|
||||
}
|
Ładowanie…
Reference in New Issue