Compare commits
1 Commits
test-9317
...
missing-sp
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d60bca325f |
5
.github/scripts/deploy-review-app.sh
vendored
5
.github/scripts/deploy-review-app.sh
vendored
@@ -10,11 +10,12 @@ org="shields-io"
|
||||
# This will fail if $PR_NUMBER is not a valid PR
|
||||
pr_json=$(curl --fail "https://api.github.com/repos/badges/shields/pulls/$PR_NUMBER")
|
||||
|
||||
# Checkout the PR branch
|
||||
# Attempt to apply the PR diff to the target branch
|
||||
# This will fail if it does not merge cleanly
|
||||
git config user.name "actions[bot]"
|
||||
git config user.email "actions@users.noreply.github.com"
|
||||
git fetch origin "pull/$PR_NUMBER/head:pr-$PR_NUMBER"
|
||||
git checkout "pr-$PR_NUMBER"
|
||||
git merge "pr-$PR_NUMBER"
|
||||
|
||||
# If the app does not already exist, create it
|
||||
if ! flyctl status --app "$app"; then
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Integration@node 18
|
||||
name: Integration@node 17
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, reopened, synchronize]
|
||||
@@ -8,7 +8,7 @@ on:
|
||||
- 'dependabot/**'
|
||||
|
||||
jobs:
|
||||
test-integration-18:
|
||||
test-integration-17:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
PAT_EXISTS: ${{ secrets.GH_PAT != '' }}
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
- name: Setup
|
||||
uses: ./.github/actions/setup
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 17
|
||||
env:
|
||||
NPM_CONFIG_ENGINE_STRICT: 'false'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Main@node 18
|
||||
name: Main@node 17
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, reopened, synchronize]
|
||||
@@ -8,7 +8,7 @@ on:
|
||||
- 'dependabot/**'
|
||||
|
||||
jobs:
|
||||
test-main-18:
|
||||
test-main-17:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -17,7 +17,7 @@ jobs:
|
||||
- name: Setup
|
||||
uses: ./.github/actions/setup
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 17
|
||||
env:
|
||||
NPM_CONFIG_ENGINE_STRICT: 'false'
|
||||
|
||||
7
.github/workflows/test-package-cli.yml
vendored
7
.github/workflows/test-package-cli.yml
vendored
@@ -17,9 +17,11 @@ jobs:
|
||||
matrix:
|
||||
include:
|
||||
- node: '14'
|
||||
engine-strict: 'false'
|
||||
- node: '16'
|
||||
engine-strict: 'false'
|
||||
- node: '18'
|
||||
- node: '20'
|
||||
engine-strict: 'true'
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
@@ -30,6 +32,9 @@ jobs:
|
||||
node-version: ${{ matrix.node }}
|
||||
|
||||
- name: Install dependencies
|
||||
env:
|
||||
CYPRESS_INSTALL_BINARY: 0
|
||||
NPM_CONFIG_ENGINE_STRICT: ${{ matrix.engine-strict }}
|
||||
run: |
|
||||
cd badge-maker
|
||||
npm install
|
||||
|
||||
2
.github/workflows/test-package-lib.yml
vendored
2
.github/workflows/test-package-lib.yml
vendored
@@ -19,8 +19,6 @@ jobs:
|
||||
engine-strict: 'true'
|
||||
- node: '18'
|
||||
engine-strict: 'false'
|
||||
- node: '20'
|
||||
engine-strict: 'false'
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
name: Services@node 18
|
||||
name: Services@node 17
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, edited, reopened, synchronize]
|
||||
|
||||
jobs:
|
||||
test-services-18:
|
||||
test-services-17:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -14,7 +14,7 @@ jobs:
|
||||
- name: Setup
|
||||
uses: ./.github/actions/setup
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 17
|
||||
env:
|
||||
NPM_CONFIG_ENGINE_STRICT: 'false'
|
||||
|
||||
@@ -48,7 +48,7 @@ describe('BaseGraphqlService', function () {
|
||||
expect(requestFetcher).to.have.been.calledOnceWith(
|
||||
'http://example.com/graphql',
|
||||
{
|
||||
body: '{"query":"{\\n requiredString\\n}","variables":{}}',
|
||||
body: '{"query":"{\\n requiredString\\n}\\n","variables":{}}',
|
||||
headers: { Accept: 'application/json' },
|
||||
method: 'POST',
|
||||
}
|
||||
@@ -80,7 +80,7 @@ describe('BaseGraphqlService', function () {
|
||||
expect(requestFetcher).to.have.been.calledOnceWith(
|
||||
'http://example.com/graphql',
|
||||
{
|
||||
body: '{"query":"{\\n requiredString\\n}","variables":{}}',
|
||||
body: '{"query":"{\\n requiredString\\n}\\n","variables":{}}',
|
||||
headers: { Accept: 'application/json' },
|
||||
method: 'POST',
|
||||
searchParams: { queryParam: 123 },
|
||||
|
||||
@@ -35,13 +35,7 @@ const FeatureList = [
|
||||
description: (
|
||||
<>
|
||||
Render badges in your own application using our{' '}
|
||||
<a
|
||||
href="https://www.npmjs.com/package/badge-maker"
|
||||
rel="noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
NPM library
|
||||
</a>
|
||||
<a href="https://www.npmjs.com/package/badge-maker">NPM library</a>
|
||||
<br />
|
||||
<code>npm install badge-maker</code>
|
||||
</>
|
||||
@@ -52,11 +46,7 @@ const FeatureList = [
|
||||
description: (
|
||||
<>
|
||||
Host a shields instance behind your firewall with our{' '}
|
||||
<a
|
||||
href="https://registry.hub.docker.com/r/shieldsio/shields/"
|
||||
rel="noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
<a href="https://registry.hub.docker.com/r/shieldsio/shields/">
|
||||
docker image
|
||||
</a>
|
||||
<br />
|
||||
@@ -69,14 +59,8 @@ const FeatureList = [
|
||||
description: (
|
||||
<>
|
||||
Please consider{' '}
|
||||
<a
|
||||
href="https://opencollective.com/shields"
|
||||
rel="noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
donating
|
||||
</a>{' '}
|
||||
to sustain our activities
|
||||
<a href="https://opencollective.com/shields">donating</a> to sustain our
|
||||
activities
|
||||
</>
|
||||
),
|
||||
},
|
||||
|
||||
@@ -26,21 +26,3 @@
|
||||
html[data-theme="dark"] .docusaurus-highlight-code-line {
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.opencollective-image {
|
||||
color-scheme: initial;
|
||||
}
|
||||
|
||||
/*
|
||||
TODO: remove these two styles when
|
||||
we can upgrade to docusaurus-theme-openapi@0.6.5
|
||||
*/
|
||||
|
||||
div.api-code-tab-group {
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
div.api-code-tab-group button.api-code-tab {
|
||||
width: unset;
|
||||
}
|
||||
|
||||
@@ -22,10 +22,7 @@ Shields.io is possible thanks to the people and companies who donate money, serv
|
||||
💵 These organisations help keep shields running by donating on OpenCollective. Your organisation can support this project by <a href="https://opencollective.com/shields#sponsor">becoming a sponsor </a>. Your logo will show up here with a link to your website.
|
||||
|
||||
<p>
|
||||
<object
|
||||
data="https://opencollective.com/shields/sponsors.svg?avatarHeight=80&width=600"
|
||||
class="opencollective-image"
|
||||
></object>
|
||||
<object data="https://opencollective.com/shields/sponsors.svg?avatarHeight=80&width=600" />
|
||||
</p>
|
||||
|
||||
## Backers
|
||||
@@ -33,10 +30,7 @@ Shields.io is possible thanks to the people and companies who donate money, serv
|
||||
💵 Thank you to all our backers who help keep shields running by donating on OpenCollective. You can support this project by <a href="https://opencollective.com/shields#backer">becoming a backer</a>.
|
||||
|
||||
<p>
|
||||
<object
|
||||
data="https://opencollective.com/shields/backers.svg?width=600"
|
||||
class="opencollective-image">
|
||||
</object>
|
||||
<object data="https://opencollective.com/shields/backers.svg?width=600" />
|
||||
</p>
|
||||
|
||||
## Contributors
|
||||
@@ -44,10 +38,7 @@ Shields.io is possible thanks to the people and companies who donate money, serv
|
||||
🙏 This project exists thanks to all the nice people who contribute their time to work on the project.
|
||||
|
||||
<p>
|
||||
<object
|
||||
data="https://opencollective.com/shields/contributors.svg?width=600"
|
||||
class="opencollective-image"
|
||||
></object>
|
||||
<object data="https://opencollective.com/shields/contributors.svg?width=600" />
|
||||
</p>
|
||||
|
||||
✨ Shields is helped by these companies which provide a free plan for their product or service:
|
||||
|
||||
@@ -27,7 +27,7 @@ export default function Home() {
|
||||
const { siteConfig } = useDocusaurusContext()
|
||||
return (
|
||||
<Layout
|
||||
description="Concise, consistent, and legible badges"
|
||||
description="Description will go into a meta tag in <head />"
|
||||
title={`${siteConfig.title}`}
|
||||
>
|
||||
<HomepageHeader />
|
||||
|
||||
1354
package-lock.json
generated
1354
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
32
package.json
32
package.json
@@ -23,7 +23,7 @@
|
||||
"dependencies": {
|
||||
"@renovate/pep440": "^1.0.0",
|
||||
"@renovatebot/ruby-semver": "^2.1.11",
|
||||
"@sentry/node": "^7.56.0",
|
||||
"@sentry/node": "^7.54.0",
|
||||
"@shields_io/camp": "^18.1.2",
|
||||
"@xmldom/xmldom": "0.8.8",
|
||||
"badge-maker": "file:badge-maker",
|
||||
@@ -38,11 +38,11 @@
|
||||
"decamelize": "^3.2.0",
|
||||
"emojic": "^1.1.17",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"fast-xml-parser": "^4.2.5",
|
||||
"glob": "^10.3.0",
|
||||
"fast-xml-parser": "^4.2.4",
|
||||
"glob": "^10.2.7",
|
||||
"global-agent": "^3.0.0",
|
||||
"got": "^13.0.0",
|
||||
"graphql": "16.7.1",
|
||||
"graphql": "^15.6.1",
|
||||
"graphql-tag": "^2.12.6",
|
||||
"joi": "17.9.2",
|
||||
"joi-extension-semver": "5.0.0",
|
||||
@@ -61,8 +61,8 @@
|
||||
"prom-client": "^14.2.0",
|
||||
"qs": "^6.11.2",
|
||||
"query-string": "^8.1.0",
|
||||
"semver": "~7.5.3",
|
||||
"simple-icons": "9.2.0",
|
||||
"semver": "~7.5.0",
|
||||
"simple-icons": "9.0.0",
|
||||
"webextension-store-meta": "^1.0.5",
|
||||
"xpath": "~0.0.32"
|
||||
},
|
||||
@@ -143,10 +143,10 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/core": "^2.0.0",
|
||||
"@easyops-cn/docusaurus-search-local": "^0.35.0",
|
||||
"@easyops-cn/docusaurus-search-local": "^0.33.6",
|
||||
"@mdx-js/react": "^1.6.21",
|
||||
"@typescript-eslint/parser": "^5.58.0",
|
||||
"c8": "^8.0.0",
|
||||
"c8": "^7.13.0",
|
||||
"caller": "^1.1.0",
|
||||
"chai": "^4.3.7",
|
||||
"chai-as-promised": "^7.1.1",
|
||||
@@ -155,16 +155,16 @@
|
||||
"child-process-promise": "^2.2.1",
|
||||
"clsx": "^1.1.1",
|
||||
"concurrently": "^8.2.0",
|
||||
"cypress": "^12.15.0",
|
||||
"cypress": "^12.14.0",
|
||||
"cypress-wait-for-stable-dom": "^0.1.0",
|
||||
"danger": "^11.2.6",
|
||||
"deepmerge": "^4.3.1",
|
||||
"docusaurus-preset-openapi": "0.6.4",
|
||||
"eslint": "8.43.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-prettier": "^8.8.0",
|
||||
"eslint-config-standard": "17.1.0",
|
||||
"eslint-config-standard-jsx": "11.0.0",
|
||||
"eslint-config-standard-react": "13.0.0",
|
||||
"eslint-config-standard": "^16.0.3",
|
||||
"eslint-config-standard-jsx": "^10.0.0",
|
||||
"eslint-config-standard-react": "^11.0.1",
|
||||
"eslint-plugin-chai-friendly": "^0.7.2",
|
||||
"eslint-plugin-cypress": "^2.13.3",
|
||||
"eslint-plugin-icedfrisby": "^0.1.0",
|
||||
@@ -173,7 +173,7 @@
|
||||
"eslint-plugin-mocha": "^10.1.0",
|
||||
"eslint-plugin-no-extension-in-require": "^0.2.0",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-promise": "6.1.1",
|
||||
"eslint-plugin-promise": "^5.2.0",
|
||||
"eslint-plugin-react": "^7.32.2",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"eslint-plugin-sort-class-members": "^1.18.0",
|
||||
@@ -203,12 +203,12 @@
|
||||
"rimraf": "^5.0.1",
|
||||
"sazerac": "^2.0.0",
|
||||
"simple-git-hooks": "^2.8.1",
|
||||
"sinon": "^15.2.0",
|
||||
"sinon": "^15.1.0",
|
||||
"sinon-chai": "^3.7.0",
|
||||
"snap-shot-it": "^7.9.10",
|
||||
"start-server-and-test": "2.0.0",
|
||||
"tsd": "^0.28.1",
|
||||
"url": "^0.11.1"
|
||||
"url": "^0.11.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^16.13.0",
|
||||
|
||||
@@ -3,9 +3,11 @@ import { redirector } from '../index.js'
|
||||
import { BaseAmoService, keywords } from './amo-base.js'
|
||||
|
||||
const documentation = `
|
||||
Previously \`amo/d\` provided a “total downloads” badge. However,
|
||||
[updates to the v3 API](https://github.com/badges/shields/issues/3079)
|
||||
only give us weekly downloads. The route \`amo/d\` redirects to \`amo/dw\`.
|
||||
<p>
|
||||
Previously <code>amo/d</code> provided a “total downloads” badge. However,
|
||||
<a href="https://github.com/badges/shields/issues/3079">updates to the v3 API</a> only
|
||||
give us weekly downloads. The route <code>amo/d</code> redirects to <code>amo/dw</code>.
|
||||
</p>
|
||||
`
|
||||
|
||||
class AmoWeeklyDownloads extends BaseAmoService {
|
||||
|
||||
@@ -9,20 +9,23 @@ const queryParamSchema = Joi.object({
|
||||
})
|
||||
|
||||
const documentation = `
|
||||
A badge requires three pieces of information:
|
||||
\`ORGANIZATION\`, \`PROJECT_ID\` and \`DEFINITION_ID\`.
|
||||
|
||||
To start, edit your build definition and look at the url:
|
||||
|
||||
<p>
|
||||
A badge requires three pieces of information: <code>ORGANIZATION</code>,
|
||||
<code>PROJECT_ID</code> and <code>DEFINITION_ID</code>.
|
||||
</p>
|
||||
<p>
|
||||
To start, edit your build definition and look at the url:
|
||||
</p>
|
||||
<img
|
||||
src="https://user-images.githubusercontent.com/3749820/47259976-e2d9ec80-d4b2-11e8-92cc-7c81089a7a2c.png"
|
||||
alt="ORGANIZATION is after the dev.azure.com part, PROJECT_NAME is right after that, DEFINITION_ID is at the end after the id= part." />
|
||||
|
||||
Then use the Azure DevOps REST API to translate the
|
||||
\`PROJECT_NAME\` to a \`PROJECT_ID\`.
|
||||
|
||||
Navigate to \`https://dev.azure.com/ORGANIZATION/_apis/projects/PROJECT_NAME\`
|
||||
|
||||
<p>
|
||||
Then use the Azure DevOps REST API to translate the
|
||||
<code>PROJECT_NAME</code> to a <code>PROJECT_ID</code>.
|
||||
</p>
|
||||
<p>
|
||||
Navigate to <code>https://dev.azure.com/ORGANIZATION/_apis/projects/PROJECT_NAME</code>
|
||||
</p>
|
||||
<img
|
||||
src="https://user-images.githubusercontent.com/3749820/47266325-1d846900-d535-11e8-9211-2ee72fb91877.png"
|
||||
alt="PROJECT_ID is in the id property of the API response." />
|
||||
|
||||
@@ -4,22 +4,25 @@ import AzureDevOpsBase from './azure-devops-base.js'
|
||||
import { keywords } from './azure-devops-helpers.js'
|
||||
|
||||
const documentation = `
|
||||
To obtain your own badge, you need to get 3 pieces of information:
|
||||
\`ORGANIZATION\`, \`PROJECT_ID\` and \`DEFINITION_ID\`.
|
||||
|
||||
First, you need to select your build definition and look at the url:
|
||||
|
||||
<p>
|
||||
To obtain your own badge, you need to get 3 pieces of information:
|
||||
<code>ORGANIZATION</code>, <code>PROJECT</code> and <code>DEFINITION_ID</code>.
|
||||
</p>
|
||||
<p>
|
||||
First, you need to select your build definition and look at the url:
|
||||
</p>
|
||||
<img
|
||||
src="https://user-images.githubusercontent.com/3749820/47259976-e2d9ec80-d4b2-11e8-92cc-7c81089a7a2c.png"
|
||||
alt="ORGANIZATION is after the dev.azure.com part, PROJECT is right after that, DEFINITION_ID is at the end after the id= part." />
|
||||
|
||||
Your badge will then have the form:
|
||||
\`https://img.shields.io/azure-devops/coverage/ORGANIZATION/PROJECT/DEFINITION_ID.svg\`.
|
||||
|
||||
Optionally, you can specify a named branch:
|
||||
\`https://img.shields.io/azure-devops/coverage/ORGANIZATION/PROJECT/DEFINITION_ID/NAMED_BRANCH.svg\`.
|
||||
<p>
|
||||
Your badge will then have the form:
|
||||
<code>https://img.shields.io/azure-devops/coverage/ORGANIZATION/PROJECT/DEFINITION_ID.svg</code>.
|
||||
</p>
|
||||
<p>
|
||||
Optionally, you can specify a named branch:
|
||||
<code>https://img.shields.io/azure-devops/coverage/ORGANIZATION/PROJECT/DEFINITION_ID/NAMED_BRANCH.svg</code>.
|
||||
</p>
|
||||
`
|
||||
|
||||
const buildCodeCoverageSchema = Joi.object({
|
||||
coverageData: Joi.array()
|
||||
.items(
|
||||
|
||||
@@ -3,18 +3,21 @@ import { BaseSvgScrapingService } from '../index.js'
|
||||
import { keywords, fetch } from './azure-devops-helpers.js'
|
||||
|
||||
const documentation = `
|
||||
To obtain your own badge, you need to get 4 pieces of information:
|
||||
\`ORGANIZATION\`, \`PROJECT_ID\`, \`DEFINITION_ID\` and \`ENVIRONMENT_ID\`.
|
||||
|
||||
First, you need to enable badges for each required environments in the options of your release definition.
|
||||
Once you have save the change, look at badge url:
|
||||
|
||||
<p>
|
||||
To obtain your own badge, you need to get 4 pieces of information:
|
||||
<code>ORGANIZATION</code>, <code>PROJECT_ID</code>, <code>DEFINITION_ID</code> and <code>ENVIRONMENT_ID</code>.
|
||||
</p>
|
||||
<p>
|
||||
First, you need to enable badges for each required environments in the options of your release definition.
|
||||
Once you have save the change, look at badge url:
|
||||
</p>
|
||||
<img
|
||||
src="https://user-images.githubusercontent.com/3749820/47266694-7f939d00-d53a-11e8-9224-c2371dd2d0c9.png"
|
||||
alt="ORGANIZATION is after the dev.azure.com part, PROJECT_ID is after the badge part, DEFINITION_ID and ENVIRONMENT_ID are right after that." />
|
||||
|
||||
Your badge will then have the form:
|
||||
\`https://img.shields.io/vso/release/ORGANIZATION/PROJECT_ID/DEFINITION_ID/ENVIRONMENT_ID.svg\`.
|
||||
<p>
|
||||
Your badge will then have the form:
|
||||
<code>https://img.shields.io/vso/release/ORGANIZATION/PROJECT_ID/DEFINITION_ID/ENVIRONMENT_ID.svg</code>.
|
||||
</p>
|
||||
`
|
||||
|
||||
export default class AzureDevOpsRelease extends BaseSvgScrapingService {
|
||||
|
||||
@@ -21,21 +21,24 @@ const commonAttrs = {
|
||||
compact_message: null,
|
||||
},
|
||||
documentation: `
|
||||
To obtain your own badge, you need to get 3 pieces of information:
|
||||
\`ORGANIZATION\`, \`PROJECT_ID\`, \`DEFINITION_ID\`.
|
||||
|
||||
First, you need to select your build definition and look at the url:
|
||||
|
||||
<p>
|
||||
To obtain your own badge, you need to get 3 pieces of information:
|
||||
<code>ORGANIZATION</code>, <code>PROJECT</code> and <code>DEFINITION_ID</code>.
|
||||
</p>
|
||||
<p>
|
||||
First, you need to select your build definition and look at the url:
|
||||
</p>
|
||||
<img
|
||||
src="https://user-images.githubusercontent.com/3749820/47259976-e2d9ec80-d4b2-11e8-92cc-7c81089a7a2c.png"
|
||||
alt="ORGANIZATION is after the dev.azure.com part, PROJECT is right after that, DEFINITION_ID is at the end after the id= part." />
|
||||
|
||||
Your badge will then have the form:
|
||||
\`https://img.shields.io/azure-devops/tests/ORGANIZATION/PROJECT/DEFINITION_ID.svg\`.
|
||||
|
||||
Optionally, you can specify a named branch:
|
||||
\`https://img.shields.io/azure-devops/tests/ORGANIZATION/PROJECT/DEFINITION_ID/NAMED_BRANCH.svg\`.
|
||||
|
||||
<p>
|
||||
Your badge will then have the form:
|
||||
<code>https://img.shields.io/azure-devops/tests/ORGANIZATION/PROJECT/DEFINITION_ID.svg</code>.
|
||||
</p>
|
||||
<p>
|
||||
Optionally, you can specify a named branch:
|
||||
<code>https://img.shields.io/azure-devops/tests/ORGANIZATION/PROJECT/DEFINITION_ID/NAMED_BRANCH.svg</code>.
|
||||
</p>
|
||||
${commonDocumentation}
|
||||
`,
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ export default class DockerStars extends BaseJsonService {
|
||||
}
|
||||
|
||||
async handle({ user, repo }) {
|
||||
const resp = await this.fetch({ user, repo })
|
||||
return this.constructor.render({ stars: resp.star_count })
|
||||
const { star_count } = await this.fetch({ user, repo })
|
||||
return this.constructor.render({ stars: star_count })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,9 +78,9 @@ const description = `<p>
|
||||
<tr>
|
||||
<td><code>namedLogo</code></td>
|
||||
<td>
|
||||
Default: none. One of the named logos supported by Shields
|
||||
or <a href="https://simpleicons.org/">simple-icons</a>. Can be
|
||||
overridden by the query string.
|
||||
Default: none. One of the named logos supported by Shields or
|
||||
<a href="https://simpleicons.org/">simple-icons</a>. Can be overridden
|
||||
by the query string.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
@@ -65,8 +65,8 @@ class FactorioModPortalLatestVersion extends BaseFactorioModPortalService {
|
||||
}
|
||||
|
||||
async handle({ modName }) {
|
||||
const resp = await this.fetch({ modName })
|
||||
return this.constructor.render({ version: resp.latest_release.version })
|
||||
const { latest_release } = await this.fetch({ modName })
|
||||
return this.constructor.render({ version: latest_release.version })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,8 +94,8 @@ class FactorioModPortalFactorioVersion extends BaseFactorioModPortalService {
|
||||
}
|
||||
|
||||
async handle({ modName }) {
|
||||
const resp = await this.fetch({ modName })
|
||||
const version = resp.latest_release.info_json.factorio_version
|
||||
const { latest_release } = await this.fetch({ modName })
|
||||
const version = latest_release.info_json.factorio_version
|
||||
return this.constructor.render({ version })
|
||||
}
|
||||
}
|
||||
@@ -114,25 +114,23 @@ class FactorioModPortalLastUpdated extends BaseFactorioModPortalService {
|
||||
title: 'Factorio Mod Portal mod',
|
||||
namedParams: { modName: 'rso-mod' },
|
||||
staticPreview: this.render({
|
||||
lastUpdated: new Date(),
|
||||
last_updated: new Date(),
|
||||
}),
|
||||
},
|
||||
]
|
||||
|
||||
static defaultBadgeData = { label: 'last updated' }
|
||||
|
||||
static render({ lastUpdated }) {
|
||||
static render({ last_updated }) {
|
||||
return {
|
||||
message: formatDate(lastUpdated),
|
||||
color: age(lastUpdated),
|
||||
message: formatDate(last_updated),
|
||||
color: age(last_updated),
|
||||
}
|
||||
}
|
||||
|
||||
async handle({ modName }) {
|
||||
const resp = await this.fetch({ modName })
|
||||
return this.constructor.render({
|
||||
lastUpdated: resp.latest_release.released_at,
|
||||
})
|
||||
const { latest_release } = await this.fetch({ modName })
|
||||
return this.constructor.render({ last_updated: latest_release.released_at })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,20 +148,20 @@ class FactorioModPortalDownloads extends BaseFactorioModPortalService {
|
||||
title: 'Factorio Mod Portal mod downloads',
|
||||
namedParams: { modName: 'rso-mod' },
|
||||
staticPreview: this.render({
|
||||
downloads: 1694763,
|
||||
downloads_count: 1694763,
|
||||
}),
|
||||
},
|
||||
]
|
||||
|
||||
static defaultBadgeData = { label: 'downloads' }
|
||||
|
||||
static render({ downloads }) {
|
||||
return renderDownloadsBadge({ downloads })
|
||||
static render({ downloads_count }) {
|
||||
return renderDownloadsBadge({ downloads: downloads_count })
|
||||
}
|
||||
|
||||
async handle({ modName }) {
|
||||
const resp = await this.fetch({ modName })
|
||||
return this.constructor.render({ downloads: resp.downloads_count })
|
||||
const { downloads_count } = await this.fetch({ modName })
|
||||
return this.constructor.render({ downloads_count })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,11 +5,12 @@ import { fetchJsonFromRepo } from './github-common-fetch.js'
|
||||
import { documentation as commonDocumentation } from './github-helpers.js'
|
||||
|
||||
const documentation = `
|
||||
The All Contributors service allows you to recognize all your project
|
||||
contributors, including those that don't push code. See
|
||||
[https://allcontributors.org](https://allcontributors.org)
|
||||
for more information.
|
||||
|
||||
<p>
|
||||
The All Contributors service allows you to recognize all your project
|
||||
contributors, including those that don't push code. See
|
||||
<a href="https://allcontributors.org">https://allcontributors.org</a>
|
||||
for more information.
|
||||
</p>
|
||||
${commonDocumentation}
|
||||
`
|
||||
|
||||
|
||||
@@ -10,24 +10,31 @@ import {
|
||||
} from './github-helpers.js'
|
||||
|
||||
const documentation = `
|
||||
This badge is designed for projects hosted on GitHub which are
|
||||
participating in
|
||||
[Hacktoberfest](https://hacktoberfest.digitalocean.com),
|
||||
an initiative to encourage participating in open-source projects. The
|
||||
badge can be added to the project readme to encourage potential
|
||||
contributors to review the suggested issues and to celebrate the
|
||||
contributions that have already been made.
|
||||
The badge displays three pieces of information:
|
||||
<p>
|
||||
This badge is designed for projects hosted on GitHub which are
|
||||
participating in
|
||||
<a href="https://hacktoberfest.digitalocean.com">Hacktoberfest</a>,
|
||||
an initiative to encourage participating in open-source projects. The
|
||||
badge can be added to the project readme to encourage potential
|
||||
contributors to review the suggested issues and to celebrate the
|
||||
contributions that have already been made.
|
||||
The badge displays three pieces of information:
|
||||
<ul>
|
||||
<li>
|
||||
The number of suggested issues. By default this will count open
|
||||
issues with the <strong>hacktoberfest</strong> label, however you
|
||||
can pick a different label (e.g.
|
||||
<code>?suggestion_label=good%20first%20issue</code>).
|
||||
</li>
|
||||
<li>
|
||||
The number of pull requests opened in October. This excludes any
|
||||
PR with the <strong>invalid</strong> label.
|
||||
</li>
|
||||
<li>The number of days left of October.</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
- The number of suggested issues. By default this will count open
|
||||
issues with the <strong>hacktoberfest</strong> label, however you
|
||||
can pick a different label (e.g.
|
||||
\`?suggestion_label=good%20first%20issue\`).
|
||||
- The number of pull requests opened in October. This excludes any
|
||||
PR with the <strong>invalid</strong> label.
|
||||
- The number of days left of October.
|
||||
|
||||
${githubDocumentation}
|
||||
${githubDocumentation}
|
||||
`
|
||||
|
||||
const schema = Joi.object({
|
||||
|
||||
@@ -2,10 +2,12 @@ import { colorScale } from '../color-formatters.js'
|
||||
import { InvalidResponse, NotFound } from '../index.js'
|
||||
|
||||
const documentation = `
|
||||
If your GitHub badge errors, it might be because you hit GitHub's rate limits.
|
||||
You can increase Shields.io's rate limit by
|
||||
[adding the Shields GitHub application](https://img.shields.io/github-auth)
|
||||
using your GitHub account.
|
||||
<p>
|
||||
If your GitHub badge errors, it might be because you hit GitHub's rate limits.
|
||||
You can increase Shields.io's rate limit by
|
||||
<a href="https://img.shields.io/github-auth">adding the Shields GitHub
|
||||
application</a> using your GitHub account.
|
||||
</p>
|
||||
`
|
||||
|
||||
function issueStateColor(s) {
|
||||
|
||||
@@ -10,25 +10,33 @@ import { documentation as githubDocumentation } from './github-helpers.js'
|
||||
const keywords = ['pipfile']
|
||||
|
||||
const documentation = `
|
||||
[Pipenv](https://github.com/pypa/pipenv) is a dependency
|
||||
manager for Python which manages a
|
||||
[virtualenv](https://virtualenv.pypa.io/en/latest/) for
|
||||
projects. It adds/removes packages from your \`Pipfile\` as
|
||||
you install/uninstall packages and generates the ever-important
|
||||
\`Pipfile.lock\`, which can be checked in to source control
|
||||
in order to produce deterministic builds.
|
||||
<p>
|
||||
<a href="https://github.com/pypa/pipenv">Pipenv</a> is a dependency
|
||||
manager for Python which manages a
|
||||
<a href="https://virtualenv.pypa.io/en/latest/">virtualenv</a> for
|
||||
projects. It adds/removes packages from your <code>Pipfile</code> as
|
||||
you install/uninstall packages and generates the ever-important
|
||||
<code>Pipfile.lock</code>, which can be checked in to source control
|
||||
in order to produce deterministic builds.
|
||||
</p>
|
||||
|
||||
The GitHub Pipenv badges are intended for applications using Pipenv
|
||||
which are hosted on GitHub.
|
||||
<p>
|
||||
The GitHub Pipenv badges are intended for applications using Pipenv
|
||||
which are hosted on GitHub.
|
||||
</p>
|
||||
|
||||
When \`Pipfile.lock\` is checked in, the <strong>GitHub Pipenv
|
||||
locked dependency version</strong> badge displays the locked version of
|
||||
a dependency listed in \`[packages]\` or
|
||||
\`[dev-packages]\` (or any of their transitive dependencies).
|
||||
<p>
|
||||
When <code>Pipfile.lock</code> is checked in, the <strong>GitHub Pipenv
|
||||
locked dependency version</strong> badge displays the locked version of
|
||||
a dependency listed in <code>[packages]</code> or
|
||||
<code>[dev-packages]</code> (or any of their transitive dependencies).
|
||||
</p>
|
||||
|
||||
Usually a Python version is specified in the \`Pipfile\`, which
|
||||
\`pipenv lock\` then places in \`Pipfile.lock\`.
|
||||
The <strong>GitHub Pipenv Python version</strong> badge displays that version.
|
||||
<p>
|
||||
Usually a Python version is specified in the <code>Pipfile</code>, which
|
||||
<code>pipenv lock</code> then places in <code>Pipfile.lock</code>. The
|
||||
<strong>GitHub Pipenv Python version</strong> badge displays that version.
|
||||
</p>
|
||||
|
||||
${githubDocumentation}
|
||||
`
|
||||
|
||||
@@ -2,7 +2,6 @@ import Joi from 'joi'
|
||||
import { optionalUrl, nonNegativeInteger } from '../validators.js'
|
||||
import { metric } from '../text-formatters.js'
|
||||
import GitLabBase from './gitlab-base.js'
|
||||
import { documentation } from './gitlab-helper.js'
|
||||
|
||||
const schema = Joi.object({
|
||||
forks_count: nonNegativeInteger,
|
||||
@@ -12,6 +11,13 @@ const queryParamSchema = Joi.object({
|
||||
gitlab_url: optionalUrl,
|
||||
}).required()
|
||||
|
||||
const documentation = `
|
||||
<p>
|
||||
You may use your GitLab Project Id (e.g. 278964) or your Project Path (e.g. gitlab-org/gitlab ).
|
||||
Note that only internet-accessible GitLab instances are supported, for example https://jihulab.com, https://gitlab.gnome.org, or https://gitlab.com/.
|
||||
</p>
|
||||
`
|
||||
|
||||
export default class GitlabForks extends GitLabBase {
|
||||
static category = 'social'
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
const documentation = `
|
||||
You may use your GitLab Project Id (e.g. 278964) or your Project Path (e.g.
|
||||
[gitlab-org/gitlab](https://gitlab.com/gitlab-org/gitlab) ).
|
||||
Note that only internet-accessible GitLab instances are supported, for example
|
||||
[https://jihulab.com](https://jihulab.com),
|
||||
[https://gitlab.gnome.org](https://gitlab.gnome.org), or
|
||||
[https://gitlab.com](https://gitlab.com).
|
||||
<p>
|
||||
You may use your GitLab Project Id (e.g. 278964) or your Project Path (e.g.
|
||||
<a href="https://gitlab.com/gitlab-org/gitlab" target="_blank" >gitlab-org/gitlab</a> ).
|
||||
Note that only internet-accessible GitLab instances are supported, for example
|
||||
<a href="https://jihulab.com" target="_blank" >https://jihulab.com</a>,
|
||||
<a href="https://gitlab.gnome.org" target="_blank" >https://gitlab.gnome.org</a>, or
|
||||
<a href="https://gitlab.com" target="_blank" >https://gitlab.com</a>.
|
||||
</p>
|
||||
`
|
||||
|
||||
function httpErrorsFor(notFoundMessage = 'project not found') {
|
||||
|
||||
@@ -2,7 +2,6 @@ import Joi from 'joi'
|
||||
import { optionalUrl, nonNegativeInteger } from '../validators.js'
|
||||
import { metric } from '../text-formatters.js'
|
||||
import GitLabBase from './gitlab-base.js'
|
||||
import { documentation } from './gitlab-helper.js'
|
||||
|
||||
const schema = Joi.object({
|
||||
star_count: nonNegativeInteger,
|
||||
@@ -12,6 +11,13 @@ const queryParamSchema = Joi.object({
|
||||
gitlab_url: optionalUrl,
|
||||
}).required()
|
||||
|
||||
const documentation = `
|
||||
<p>
|
||||
You may use your GitLab Project Id (e.g. 278964) or your Project Path (e.g. gitlab-org/gitlab ).
|
||||
Note that only internet-accessible GitLab instances are supported, for example https://jihulab.com, https://gitlab.gnome.org, or https://gitlab.com/.
|
||||
</p>
|
||||
`
|
||||
|
||||
export default class GitlabStars extends GitLabBase {
|
||||
static category = 'social'
|
||||
|
||||
|
||||
@@ -6,14 +6,17 @@ const schema = Joi.object({
|
||||
}).required()
|
||||
|
||||
const documentation = `
|
||||
[\`Strict-Transport-Security\` is an HTTP response header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security)
|
||||
that signals that browsers should only access the site using HTTPS.
|
||||
|
||||
For a higher level of security, it's possible for a domain owner to
|
||||
[preload this behavior into participating web browsers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security#Preloading_Strict_Transport_Security).
|
||||
Chromium maintains the [HSTS preload list](https://www.chromium.org/hsts), which
|
||||
is the de facto standard that has been adopted by several browsers.
|
||||
This service checks a domain's status in that list.
|
||||
<p>
|
||||
<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security">
|
||||
<code>Strict-Transport-Security</code> is an HTTP response header</a> that signals that browsers should
|
||||
only access the site using HTTPS.
|
||||
</p>
|
||||
<p>
|
||||
For a higher level of security, it's possible for a domain owner to
|
||||
<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security#Preloading_Strict_Transport_Security">preload
|
||||
this behavior into participating web browsers</a>. Chromium maintains the <a href="https://www.chromium.org/hsts">HSTS preload list</a>, which
|
||||
is the de facto standard that has been adopted by several browsers. This service checks a domain's status in that list.
|
||||
</p>
|
||||
`
|
||||
|
||||
export default class HSTS extends BaseJsonService {
|
||||
|
||||
@@ -23,9 +23,11 @@ const schema = Joi.object({
|
||||
}).required()
|
||||
|
||||
const documentation = `
|
||||
To get the \`Sprint ID\`, go to your Backlog view in your project,
|
||||
right click on your sprint name and get the value of
|
||||
\`data-sprint-id\`.
|
||||
<p>
|
||||
To get the <code>Sprint ID</code>, go to your Backlog view in your project,
|
||||
right click on your sprint name and get the value of
|
||||
<code>data-sprint-id</code>.
|
||||
</p>
|
||||
`
|
||||
|
||||
export default class JiraSprint extends BaseJsonService {
|
||||
|
||||
@@ -13,11 +13,9 @@ const queryParamSchema = Joi.object({
|
||||
}).required()
|
||||
|
||||
const documentation = `
|
||||
To find your user id, you can use [this tool](https://prouser123.me/misc/mastodon-userid-lookup.html).
|
||||
|
||||
Alternatively you can make a request to \`https://your.mastodon.server/.well-known/webfinger?resource=acct:<user>@<domain>\`
|
||||
|
||||
Failing that, you can also visit your profile page, where your user ID will be in the header in a tag like this: \`<link href='https://your.mastodon.server/api/salmon/<your-user-id>' rel='salmon'>\`
|
||||
<p>To find your user id, you can use <a link target="_blank" href="https://prouser123.me/misc/mastodon-userid-lookup.html">this tool</a>.</p><br>
|
||||
<p>Alternatively you can make a request to <code>https://your.mastodon.server/.well-known/webfinger?resource=acct:{user}@{domain}</code></p>
|
||||
<p>Failing that, you can also visit your profile page, where your user ID will be in the header in a tag like this: <code><link href='https://your.mastodon.server/api/salmon/{your-user-id}' rel='salmon'></code></p>
|
||||
`
|
||||
|
||||
export default class MastodonFollow extends BaseJsonService {
|
||||
|
||||
@@ -26,17 +26,21 @@ const queryParamSchema = Joi.object({
|
||||
}).required()
|
||||
|
||||
const documentation = `
|
||||
The [Mozilla HTTP Observatory](https://observatory.mozilla.org)
|
||||
is a set of tools to analyze your website
|
||||
and inform you if you are utilizing the many available methods to secure it.
|
||||
|
||||
By default the scan result is hidden from the public result list.
|
||||
You can activate the publication of the scan result
|
||||
by setting the \`publish\` parameter.
|
||||
|
||||
The badge returns a cached site result if the site has been scanned anytime in the previous 24 hours.
|
||||
If you need to force invalidating the cache,
|
||||
you can to do it manually through the [Mozilla Observatory Website](https://observatory.mozilla.org)
|
||||
<p>
|
||||
The <a href="https://observatory.mozilla.org">Mozilla HTTP Observatory</a>
|
||||
is a set of tools to analyze your website
|
||||
and inform you if you are utilizing the many available methods to secure it.
|
||||
</p>
|
||||
<p>
|
||||
By default the scan result is hidden from the public result list.
|
||||
You can activate the publication of the scan result
|
||||
by setting the <code>publish</code> parameter.
|
||||
</p>
|
||||
<p>
|
||||
The badge returns a cached site result if the site has been scanned anytime in the previous 24 hours.
|
||||
If you need to force invalidating the cache,
|
||||
you can to do it manually through the <a href="https://observatory.mozilla.org">Mozilla Observatory Website</a>
|
||||
</p>
|
||||
`
|
||||
|
||||
export default class MozillaObservatory extends BaseJsonService {
|
||||
|
||||
@@ -23,11 +23,11 @@ const pkgJSONSchema = Joi.object({
|
||||
}).optional(),
|
||||
}).required()
|
||||
|
||||
const documentation = `
|
||||
Create a code coverage badge, based on thresholds stored in a
|
||||
[.nycrc config file](https://github.com/istanbuljs/nyc#common-configuration-options)
|
||||
on GitHub.
|
||||
`
|
||||
const documentation = `<p>
|
||||
Create a code coverage badge, based on thresholds stored in a
|
||||
<a href="https://github.com/istanbuljs/nyc#common-configuration-options">.nycrc config file</a>
|
||||
on GitHub.
|
||||
</p>`
|
||||
|
||||
const validThresholds = ['branches', 'lines', 'functions']
|
||||
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
import { BaseService, InvalidResponse } from '../index.js'
|
||||
|
||||
const documentation = `
|
||||
OSS Lifecycle is an initiative started by Netflix to classify open-source projects into lifecycles
|
||||
and clearly identify which projects are active and which ones are retired. To enable this badge,
|
||||
simply create an OSSMETADATA tagging file at the root of your GitHub repository containing a
|
||||
single line similar to the following: \`osslifecycle=active\`. Other suggested values are
|
||||
\`osslifecycle=maintenance\` and \`osslifecycle=archived\`. A working example
|
||||
can be viewed on the [OSS Tracker repository](https://github.com/Netflix/osstracker).
|
||||
<p>
|
||||
OSS Lifecycle is an initiative started by Netflix to classify open-source projects into lifecycles
|
||||
and clearly identify which projects are active and which ones are retired. To enable this badge,
|
||||
simply create an OSSMETADATA tagging file at the root of your GitHub repository containing a
|
||||
single line similar to the following: <code>osslifecycle=active</code>. Other suggested values are
|
||||
<code>osslifecycle=maintenance</code> and <code>osslifecycle=archived</code>. A working example
|
||||
can be viewed on the <a href="https://github.com/Netflix/osstracker">OSS Tracker repository</a>.
|
||||
</p>
|
||||
`
|
||||
|
||||
export default class OssTracker extends BaseService {
|
||||
|
||||
@@ -6,8 +6,10 @@ const schema = Joi.object({
|
||||
}).required()
|
||||
|
||||
const pingpongDocumentation = `
|
||||
To see more details about this badge and obtain your api key, visit
|
||||
[https://my.pingpong.one/integrations/badge-status/](https://my.pingpong.one/integrations/badge-status/)
|
||||
<p>
|
||||
To see more details about this badge and obtain your api key, visit
|
||||
<a href="https://my.pingpong.one/integrations/badge-status/" target="_blank">https://my.pingpong.one/integrations/badge-status/</a>
|
||||
</p>
|
||||
`
|
||||
|
||||
export default class PingPongStatus extends BaseJsonService {
|
||||
|
||||
@@ -7,8 +7,10 @@ const schema = Joi.object({
|
||||
}).required()
|
||||
|
||||
const pingpongDocumentation = `
|
||||
To see more details about this badge and obtain your api key, visit
|
||||
[https://my.pingpong.one/integrations/badge-status/](https://my.pingpong.one/integrations/badge-status/)
|
||||
<p>
|
||||
To see more details about this badge and obtain your api key, visit
|
||||
<a href="https://my.pingpong.one/integrations/badge-uptime/" target="_blank">https://my.pingpong.one/integrations/badge-uptime/</a>
|
||||
</p>
|
||||
`
|
||||
|
||||
export default class PingPongUptime extends BaseJsonService {
|
||||
|
||||
@@ -4,13 +4,14 @@ import { coveragePercentage } from '../color-formatters.js'
|
||||
import { BaseJsonService, InvalidResponse } from '../index.js'
|
||||
|
||||
const documentation = `
|
||||
You must specify the read-only API token from the POEditor account to which the project belongs.
|
||||
|
||||
As per [the POEditor API documentation](https://poeditor.com/docs/api)
|
||||
|
||||
> All requests to the API must contain the parameter api_token.
|
||||
> You can get a read-only key from your POEditor account.
|
||||
> You'll find it in [My Account > API Access](https://poeditor.com/account/api).
|
||||
<p>
|
||||
You must specify the read-only API token from the POEditor account to which the project belongs.
|
||||
</p>
|
||||
<p>
|
||||
As per <a href="https://poeditor.com/docs/api">the POEditor API documentation</a>,
|
||||
<q>all requests to the API must contain the parameter api_token. You can get a read-only key from your POEditor account.
|
||||
You'll find it in <a href="https://poeditor.com/account/api">My Account > API Access</a>.</q>
|
||||
</p>
|
||||
`
|
||||
|
||||
const schema = Joi.object({
|
||||
|
||||
@@ -40,7 +40,7 @@ const frameworkNameMap = {
|
||||
const documentation = `
|
||||
<p>
|
||||
This service currently support the following Frameworks: <br/>
|
||||
${Object.values(frameworkNameMap).map(obj => ` <strong>${obj.name}</strong>`)}
|
||||
${Object.values(frameworkNameMap).map(obj => `<strong>${obj.name}</strong>`)}
|
||||
</p>
|
||||
`
|
||||
export default class PypiFrameworkVersion extends PypiBase {
|
||||
|
||||
@@ -30,8 +30,6 @@ export default class RedditSubredditSubscribers extends BaseJsonService {
|
||||
},
|
||||
]
|
||||
|
||||
static _cacheLength = 7200
|
||||
|
||||
static defaultBadgeData = {
|
||||
label: 'reddit',
|
||||
namedLogo: 'reddit',
|
||||
|
||||
@@ -31,8 +31,6 @@ export default class RedditUserKarma extends BaseJsonService {
|
||||
},
|
||||
]
|
||||
|
||||
static _cacheLength = 7200
|
||||
|
||||
static defaultBadgeData = {
|
||||
label: 'reddit karma',
|
||||
namedLogo: 'reddit',
|
||||
|
||||
@@ -8,11 +8,14 @@ const queryParamSchema = Joi.object({
|
||||
}).required()
|
||||
|
||||
const documentation = `
|
||||
The [Security Headers](https://securityheaders.com/)
|
||||
provide an easy mechanism to analyze HTTP response headers and
|
||||
give information on how to deploy missing headers.
|
||||
|
||||
The scan result will be hidden from the public result list and follow redirects will be on too.
|
||||
<p>
|
||||
The <a href="https://securityheaders.com/">Security Headers</a>
|
||||
provide an easy mechanism to analyze HTTP response headers and
|
||||
give information on how to deploy missing headers.
|
||||
</p>
|
||||
<p>
|
||||
The scan result will be hidden from the public result list and follow redirects will be on too.
|
||||
</p>
|
||||
`
|
||||
|
||||
export default class SecurityHeaders extends BaseService {
|
||||
|
||||
@@ -8,17 +8,20 @@ const schema = Joi.object({
|
||||
}).required()
|
||||
|
||||
const documentation = `
|
||||
The \`provider\` is the domain name of git host.
|
||||
If no TLD is provided, \`.com\` will be added.
|
||||
For example, setting \`gitlab\` or \`bitbucket.org\` as the
|
||||
provider also works.
|
||||
|
||||
Tokei will automatically count all files with a recognized extension. It will
|
||||
automatically ignore files and folders in \`.ignore\` files. If you
|
||||
want to ignore files or folders specifically for tokei, add them to the
|
||||
\`.tokeignore\` in the root of your repository. See
|
||||
[https://github.com/XAMPPRocky/tokei#excluding-folders](https://github.com/XAMPPRocky/tokei#excluding-folders)
|
||||
for more info.
|
||||
<p>
|
||||
The <code>provider</code> is the domain name of git host.
|
||||
If no TLD is provided, <code>.com</code> will be added.
|
||||
For example, setting <code>gitlab</code> or <code>bitbucket.org</code> as the
|
||||
provider also works.
|
||||
<br><br>
|
||||
Tokei will automatically count all files with a recognized extension. It will
|
||||
automatically ignore files and folders in <code>.ignore</code> files. If you
|
||||
want to ignore files or folders specifically for tokei, add them to the
|
||||
<code>.tokeignore</code> in the root of your repository.
|
||||
See
|
||||
<a href="https://github.com/XAMPPRocky/tokei#excluding-folders">https://github.com/XAMPPRocky/tokei#excluding-folders</a>
|
||||
for more info.
|
||||
</p>
|
||||
`
|
||||
|
||||
export default class Tokei extends BaseJsonService {
|
||||
|
||||
@@ -18,6 +18,24 @@ export class TravisComBuild extends BaseSvgScrapingService {
|
||||
}
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'Travis (.org)',
|
||||
pattern: ':user/:repo',
|
||||
namedParams: { user: 'rust-lang', repo: 'rust' },
|
||||
staticPreview: {
|
||||
message: 'passing',
|
||||
color: 'brightgreen',
|
||||
},
|
||||
},
|
||||
{
|
||||
title: 'Travis (.org) branch',
|
||||
pattern: ':user/:repo/:branch',
|
||||
namedParams: { user: 'rust-lang', repo: 'rust', branch: 'master' },
|
||||
staticPreview: {
|
||||
message: 'passing',
|
||||
color: 'brightgreen',
|
||||
},
|
||||
},
|
||||
{
|
||||
title: 'Travis (.com)',
|
||||
pattern: 'com/:user/:repo',
|
||||
|
||||
@@ -10,18 +10,23 @@ import { BaseService } from '../index.js'
|
||||
import trace from '../../core/base-service/trace.js'
|
||||
|
||||
const documentation = `
|
||||
The badge is of the form
|
||||
\`https://img.shields.io/website/PROTOCOL/URLREST.svg\`.
|
||||
|
||||
The whole URL is obtained by concatenating the \`PROTOCOL\`
|
||||
(\`http\` or \`https\`, for example) with the
|
||||
\`URLREST\` (separating them with \`://\`).
|
||||
|
||||
The existence of a specific path on the server can be checked by appending
|
||||
a path after the domain name, e.g.
|
||||
\`https://img.shields.io/website/http/www.website.com/path/to/page.html.svg\`.
|
||||
|
||||
The messages and colors for the up and down states can also be customized.
|
||||
<p>
|
||||
The badge is of the form
|
||||
<code>https://img.shields.io/website/PROTOCOL/URLREST.svg</code>.
|
||||
</p>
|
||||
<p>
|
||||
The whole URL is obtained by concatenating the <code>PROTOCOL</code>
|
||||
(<code>http</code> or <code>https</code>, for example) with the
|
||||
<code>URLREST</code> (separating them with <code>://</code>).
|
||||
</p>
|
||||
<p>
|
||||
The existence of a specific path on the server can be checked by appending
|
||||
a path after the domain name, e.g.
|
||||
<code>https://img.shields.io/website/http/www.website.com/path/to/page.html.svg</code>.
|
||||
</p>
|
||||
<p>
|
||||
The messages and colors for the up and down states can also be customized.
|
||||
</p>
|
||||
`
|
||||
|
||||
const urlQueryParamSchema = Joi.object({
|
||||
|
||||
@@ -4,8 +4,8 @@ import { metric } from '../text-formatters.js'
|
||||
import { nonNegativeInteger } from '../validators.js'
|
||||
|
||||
const documentation = `
|
||||
By using the YouTube badges provided by Shields.io, you are agreeing to be bound by the YouTube Terms of Service.
|
||||
These can be found here: [https://www.youtube.com/t/terms](https://www.youtube.com/t/terms)`
|
||||
<p>By using the YouTube badges provided by Shields.io, you are agreeing to be bound by the YouTube Terms of Service. These can be found here:
|
||||
<a target="_blank" href="https://www.youtube.com/t/terms">https://www.youtube.com/t/terms</a></p>`
|
||||
|
||||
const schema = Joi.object({
|
||||
pageInfo: Joi.object({
|
||||
|
||||
Reference in New Issue
Block a user