Compare commits

..

294 Commits

Author SHA1 Message Date
Paul Melnikow
332a496e84 Match unit test to value used by API 2020-09-22 15:57:24 -04:00
Paul Melnikow
5f28ac34cc [PyPI] When Python version classifiers are absent, fall back to requires_python 2020-09-22 15:54:16 -04:00
chris48s
484c652719 use HEAD ref in [github] fetchJsonFromRepo (#5589)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-22 18:15:27 +00:00
Thakur Karthik
aa171180e5 Convert [maintenance mastodon matrix mavencentral] classes to static props (#5588)
* Refactor jira,jitpack,jsdelivr,keybase service files

* refactor maintenance mastodon matric and maven-central service files

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-22 03:30:18 +00:00
Paul Melnikow
0067fed6f6 Work around DT conflict; bump TS and @types/styled-components (#5586)
@types/styled-components causes a conflict with @types/react-native. See DefinitelyTyped/DefinitelyTyped#33311.

Close #5294

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-22 03:21:54 +00:00
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
Caleb Cartwright
5a3064d0d4 convert some service classes to static fields, run [GitHubCommitsSince GitHubContributors GitHubDeployments GitHubDownloads GitHubFollowers] (#5585)
* refactor(githubcommitssince): convert to static fields

* refactor(githubcontributors): convert to static fields

* refactor(githubdeployments): convert to static fields

* refactor(githubdownloads): convert to static fields

* refactor(githubfollowers): convert to static fields
2020-09-21 11:25:15 -04:00
Caleb Cartwright
fa608e29d3 refactor(github): convert some clasess to static fields (#5556)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-20 20:17:22 +00:00
Caleb Cartwright
7712d26897 tests: add a validator for 0/timePeriod (#5583)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-20 19:58:54 +00:00
Caleb Cartwright
36395715a5 [GitHubHacktoberfest] 2020 (and beyond) (#5549)
* feat: GitHub Hacktoberfest 2020 (and beyond)

* chore: prettify

* refactor: convert to static fields

* refactor: fix spelling in pre-start message

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-20 18:40:47 +00:00
Joe Izzard
ff3acce7bb [WordPress] API Update (#5579)
* feat: updated to new WordPress API

Updated to the new WordPress API, and separated plugin and theme schemas for future expansion

* test: updated testing for new API

Updated some testing to work with the new API request

* feat: updated schema to require keys

Updated schema to require all the keys in the schema

* fix: remove duplicate requirement

The helper already includes required so we don't need to require it again

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* fix: remove duplicate requirement

The helper already includes required so we don't need to require it again

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-20 18:31:31 +00:00
dependabot-preview[bot]
e00c1c252c Build(deps-dev): bump lint-staged from 10.3.0 to 10.4.0 (#5563)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.3.0 to 10.4.0.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.3.0...v10.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-20 17:25:48 +00:00
chris48s
2c47d12745 bump approve-bot to 2.0.1 (#5578)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-09-20 12:15:58 -05:00
Jabbar Memon
b61fc8291c convert [homebrew hsts itunes jenkins jetbrains] classes to static props (#5582)
* 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

Co-authored-by: Jabbar Memon <jabbar@zoop.one>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-20 16:07:59 +00:00
Thakur Karthik
4c34b14b4a Refactor jira,jitpack,jsdelivr,keybase service files (#5581) 2020-09-20 15:44:47 +00:00
Caleb Cartwright
fc91038652 Fix [GitlabPipeline] not found repo service test (#5538)
* tests(GitlabPipelineStatus): fix not found service test

* docs: describe gitlab innaccessible message

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-19 20:08:23 +00:00
dependabot-preview[bot]
a4baeb786a Build(deps-dev): bump @types/node from 14.10.1 to 14.11.1 (#5572)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.10.1 to 14.11.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-19 19:29:36 +00:00
Thakur Karthik
c997a2aa5c refactor gitlab,gitter,hackage,hexpm service files (#5575)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-19 17:00:46 +00:00
dependabot-preview[bot]
c281683a61 Build(deps-dev): bump prettier from 2.1.1 to 2.1.2 (#5571)
Bumps [prettier](https://github.com/prettier/prettier) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.1.1...2.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-19 16:18:23 +00:00
dependabot-preview[bot]
f31b50adc7 Build(deps): bump moment from 2.27.0 to 2.28.0 (#5567)
Bumps [moment](https://github.com/moment/moment) from 2.27.0 to 2.28.0.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.27.0...2.28.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-19 16:09:02 +00:00
dependabot-preview[bot]
b13d2aa352 Build(deps-dev): bump got from 11.6.2 to 11.7.0 (#5561)
Bumps [got](https://github.com/sindresorhus/got) from 11.6.2 to 11.7.0.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v11.6.2...v11.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-19 15:58:58 +00:00
dependabot-preview[bot]
142cec1273 Build(deps): bump @sentry/node from 5.23.0 to 5.24.2 (#5565)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.23.0 to 5.24.2.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.23.0...5.24.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-19 15:49:07 +00:00
dependabot-preview[bot]
7845800f80 Build(deps): bump query-string from 6.13.1 to 6.13.2 (#5558)
Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.13.1 to 6.13.2.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v6.13.1...v6.13.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-19 10:29:31 -05:00
dependabot-preview[bot]
ce73281aaa Build(deps): bump simple-icons from 3.7.0 to 3.8.0 (#5564)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/3.7.0...3.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-19 10:17:37 -05:00
Pratapi Hemant
108a819c3a [GITHUB] Badge for total stars of an user / org (#5507)
* added badge for total stars of an user / org
* Added a transformJson method in graphql-base to handle partial data


Co-authored-by: Pratapi Hemant Patel <pratpatel@expedia.com>
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-09-19 12:07:23 +01:00
Caleb Cartwright
737254f4a5 convert some service classes to static props, run [gem gerrit] (#5553)
* refactor(gem): convert to static props

* refactor(gerrit): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-18 22:28:24 +00:00
Caleb Cartwright
6682b87efe convert some service classes to static props, run [f-droid fedora flathub] (#5552)
* refactor(f-droid): convert to static props

* refactor(fedora): convert to static props

* refactor(flathub): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-18 22:19:05 +00:00
Jonathan
c8eb99fc4c [Tokei] Implement a lines of code (LOC) badge (#5547)
* Implement LOC badge

* Apply suggestions from code review

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Fix tokei tests after API change

* Format the code

* Rename tokei service file

* Add comment about Tokei API behavior

* Document tokei badge behavior

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-09-17 22:34:15 -05:00
Caleb Cartwright
ab65b42f0b Adopt Code of Conduct (#5236)
* docs: adopt Contributor Covenant

* chore: make pretty with prettier!

* docs: add contact methods to CoC

* docs: update CoC contacts

* docs: update email badges

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-16 00:41:33 +00:00
Caleb Cartwright
614daef08f convert some service classes to static props, run [EclipseMarketplace Ecologi ElmPackage Endpoint] (#5544)
* refactor(eclipsemarketplace): convert to static props

* refactor(ecologi): convert to static props

* refactor(elmpackage): convert to static props

* refactor(endpoint): convert to static props
2020-09-15 11:46:27 +00:00
Caleb Cartwright
ac54dd3ced convert some service classes to static props, run [drone dub dynamic] (#5543)
* refactor(drone): convert to static props

* refactor(dub): convert to static props

* refactor(dynamic): convert to static props
2020-09-15 01:42:57 +00:00
Caleb Cartwright
0b31461af6 convert some service classes to static props, run [date david debian debug dependabot] (#5539)
* refactor(date): convert to static props

* refactor(david): convert to static props

* refactor(debian): convert to static props

* refactor(debug): convert to static props

* refactor(dependabot): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-14 21:54:22 +00:00
Caleb Cartwright
1d649fa702 convert some service classes to static props, run [depfu discourse docker] (#5540)
* refactor(depfu): convert to static props

* refactor(discourse): convert to static props

* refactor(docker): convert to static props
2020-09-14 21:44:55 +00:00
Pierre-Yves B
f1007a5ee2 Remove duplicate normalizeColor calls (#5534)
* Remove duplicate normalizeColor calls

* Clarify behaviour with comment
2020-09-13 22:11:22 +02:00
Pierre-Yves B
bf4fd96059 Remove camelcase dependency from badge-maker package (#5533) 2020-09-13 09:17:07 +02:00
Pierre-Yves B
3eadcf448f Add guidelines about including tokens in badge URLs (#5522)
* Add guidelines about including tokens in badge URLs

* Tweak wording

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-09-13 09:08:32 +02:00
dependabot-preview[bot]
932b3b56c5 Build(deps-dev): bump gatsby-plugin-page-creator from 2.3.22 to 2.3.27 (#5532)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.3.22 to 2.3.27.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.3.27/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 18:09:38 +00:00
dependabot-preview[bot]
07f4d67cea Build(deps-dev): bump gatsby from 2.24.53 to 2.24.57 (#5531)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.24.53 to 2.24.57.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.53...gatsby@2.24.57)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 17:57:11 +00:00
Caleb Cartwright
9f814fa3e2 convert some service classes to static props, run [cran crates ctan] (#5517)
* refactor(cran): convert to static props

* refactor(crates): convert to static props

* refactor(ctan): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 17:46:33 +00:00
Caleb Cartwright
bb6d2b5c78 convert some service classes to static props, run [cookbook coveralls cpan] (#5516)
* refactor(cookbook): convert to static props

* refactor(coveralls): convert to static props

* refactor(coverity): convert to static props

* refactor(cpan): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 17:39:01 +00:00
Caleb Cartwright
b7dcf58bd6 convert some service classes to static props, run [codefactor codeship conda continuousphp] (#5515)
* refactor(codefactor): convert to static props

* refactor(codeship): convert to static props

* refactor(conda): convert to static props

* refactor(continuousphp): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 17:17:19 +00:00
Caleb Cartwright
65295ddcdf convert some service classes to static props, run [clojars cocoapods] (#5513)
* refactor(clojars): convert to static props

* refactor(cocoapods): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 17:03:52 +00:00
Caleb Cartwright
005b3ba4ac convert some service classes to static props, run [codacy codeclimate codecov] (#5514)
* refactor(codacy): convert to static props

* refactor(codeclimate): convert to static props

* refactor(codecov): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 16:55:45 +00:00
dependabot-preview[bot]
55310c3ed0 Build(deps): bump @sentry/node from 5.22.3 to 5.23.0 (#5526)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.22.3 to 5.23.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.22.3...5.23.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 16:39:38 +00:00
Caleb Cartwright
bb2f827e00 convert some service classes to static props, run [ciibestpractices circleci cirrus] (#5511)
* refactor(ciibestpractices): convert to static props

* refactor(circleci): convert to static props

* refactor(cirrus): convert to static props

* chore: prettify

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 16:22:03 +00:00
Caleb Cartwright
a88302eafb convert some service classes to static props, run [cdnjs chromewebstore] (#5509)
* refactor(cdnjs): convert to static props

* refactor(chromewebstore): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 16:04:20 +00:00
Caleb Cartwright
1c01520515 test(coverity): fix failing service test (#5519)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 14:36:00 +00:00
Caleb Cartwright
9ef79889b0 test(criterion): fix failing service test (#5521)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 14:27:02 +00:00
dependabot-preview[bot]
83bfb069ee Build(deps-dev): bump husky from 4.2.5 to 4.3.0 (#5530)
Bumps [husky](https://github.com/typicode/husky) from 4.2.5 to 4.3.0.
- [Release notes](https://github.com/typicode/husky/releases)
- [Changelog](https://github.com/typicode/husky/blob/master/CHANGELOG.md)
- [Commits](https://github.com/typicode/husky/compare/v4.2.5...v4.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-12 13:39:51 +00:00
dependabot-preview[bot]
f12add001d Build(deps-dev): bump got from 11.6.0 to 11.6.2 (#5529)
Bumps [got](https://github.com/sindresorhus/got) from 11.6.0 to 11.6.2.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v11.6.0...v11.6.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 13:16:36 +00:00
dependabot-preview[bot]
b53cb879a9 Build(deps-dev): bump @types/enzyme from 3.10.5 to 3.10.6 (#5528)
Bumps [@types/enzyme](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/enzyme) from 3.10.5 to 3.10.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/enzyme)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-12 13:07:56 +00:00
dependabot-preview[bot]
e836a7b8b2 Build(deps-dev): bump @types/node from 14.6.4 to 14.10.1 (#5524)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.6.4 to 14.10.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-12 12:54:48 +00:00
dependabot-preview[bot]
235447e6cb Build(deps): bump simple-icons from 3.6.1 to 3.7.0 (#5523)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 3.6.1 to 3.7.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/3.6.1...3.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-12 12:43:11 +00:00
dependabot-preview[bot]
ba1d0435c8 Build(deps-dev): bump eslint-plugin-jsdoc from 30.3.1 to 30.4.2 (#5525)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 30.3.1 to 30.4.2.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v30.3.1...v30.4.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-12 12:00:33 +00:00
Pierre-Yves B
06dff040c6 Rework isCSSColor check (#5508)
* Rework isCSSColor check

* Expand tests and accept strings with whitespace

* Remove void(0) edge-case test
2020-09-12 12:04:41 +02:00
Caleb Cartwright
e626d64b4e convert some service classes to static props, run [ansible apm appveyor] (#5496)
* refactor(ansible): convert to static props

* refactor(apm): convert to static props

* refactor(appveyor): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-09 22:57:47 +00:00
Zoran Luledzija
939d748619 Add [Localizely] badges (#5472)
* Add Localizely badges for overall and per-language translation progress

* Update route config

* Update services names

* Update service logic according code review suggestions

* Update message for unauthorized access

* Rename service file name

* Remove Accept header

* Update example badges with real parameter values

* Update documentation with security warning

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
Co-authored-by: Pierre-Yves B <PyvesDev@gmail.com>
2020-09-09 19:09:04 +02:00
Caleb Cartwright
7e68644587 convert some service classes to static props, run [archlinux aur azuredevops] (#5500)
* refactor(archlinux): convert to static props

* refactor(aur): convert to static props

* refactor(azuredevops): convert to static props

* tests: fix AzDO Coverage service test

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-08 22:13:31 +00:00
Caleb Cartwright
e9b3a0a921 convert some service classes to static props, run [bitbucket bitrise bountysource] (#5502)
* refactor(bitbucket): convert to static props

* refactor(bitrise): convert to static props

* refactor(bountysource): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-08 22:03:12 +00:00
Caleb Cartwright
542e2cf407 convert some service classes to static props, run [beerpay bintray bit] (#5501)
* refactor(beerpay): convert to static props

* refactor(bintray): convert to static props

* refactor(bit): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-08 21:54:52 +00:00
Caleb Cartwright
1027c296ee convert some service classes to static props, run [bower bstats] (#5503)
* refactor(bower): convert to static props

* refactor(bstats): convert to static props

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-08 16:45:46 -05:00
Caleb Cartwright
70089bafba convert some service classes to static props, run [buildkite bundlephobia] (#5504)
* refactor(bugzilla): convert to static props

* refactor(buildkite): convert to static props

* refactor(bundlephobia): convert to static props
2020-09-08 21:37:40 +00:00
Pierre-Yves B
471f3f4ad1 Use black font when background color is too light (#5467)
* Use black font when background color is too light

* Tweak dark color

* Extract magic brightness numbers to constants

* Fix snapshot tests

* Switch threshold to 0.69
2020-09-07 19:07:28 +02:00
chris48s
38322e1412 redirect /endpoint with no query params to endpoint docs (#5137)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-06 17:21:58 +00:00
Cédric Luthi
6e88aee7c8 [Scoop] Add scoop badge service (#5081)
* [Scoop] Add scoop badge service

* Rename scoop.service.js into scoop-version.service.js

Also rename scoop.tester.js into scoop-version.tester.js

* Cache buckets file

* Fix test

* Improve regex to handle trailing slash

* Switch to static fields

Co-authored-by: PyvesB <PyvesDev@gmail.com>
2020-09-06 19:01:37 +02:00
chris48s
56a303df87 deprecate [ChromeWebStoreRating] badges (#5495)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-06 16:39:50 +00:00
Ben Ramsey
8082eeb47b fix(packagist): use default branch as indicated by Packagist (#5474)
Instead of assuming dev-master for the default branch, check the package
data from Packagist to see which branch is set as the default, and use
it.

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-06 14:08:12 +00:00
Pierre-Yves B
1009491b68 Fix externally hosted [Spiget] test (#5477)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-06 10:04:48 +00:00
dependabot-preview[bot]
2bc62926a3 Build(deps-dev): bump got from 11.5.2 to 11.6.0 (#5488)
Bumps [got](https://github.com/sindresorhus/got) from 11.5.2 to 11.6.0.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v11.5.2...v11.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-05 16:27:08 -05:00
dependabot-preview[bot]
3880e22e83 Build(deps-dev): bump @babel/register from 7.10.5 to 7.11.5 (#5487)
Bumps [@babel/register](https://github.com/babel/babel/tree/HEAD/packages/babel-register) from 7.10.5 to 7.11.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.11.5/packages/babel-register)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-05 21:07:30 +00:00
dependabot-preview[bot]
532a4eb665 Build(deps-dev): bump gatsby from 2.24.52 to 2.24.53 (#5486)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.24.52 to 2.24.53.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.52...gatsby@2.24.53)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-05 20:13:10 +00:00
dependabot-preview[bot]
d043000844 Build(deps-dev): bump @babel/core from 7.11.4 to 7.11.6 (#5485)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.11.4 to 7.11.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.11.6/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-05 20:05:30 +00:00
dependabot-preview[bot]
4690cd25b0 Build(deps-dev): bump @types/node from 14.6.2 to 14.6.4 (#5480)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.6.2 to 14.6.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-05 18:21:49 +00:00
dependabot-preview[bot]
a613ebd99e Build(deps-dev): bump styled-components from 5.1.1 to 5.2.0 (#5483)
Bumps [styled-components](https://github.com/styled-components/styled-components) from 5.1.1 to 5.2.0.
- [Release notes](https://github.com/styled-components/styled-components/releases)
- [Changelog](https://github.com/styled-components/styled-components/blob/master/CHANGELOG.md)
- [Commits](https://github.com/styled-components/styled-components/compare/v5.1.1...v5.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-05 18:06:29 +00:00
dependabot-preview[bot]
9abfe221a4 Build(deps-dev): bump @babel/polyfill from 7.10.4 to 7.11.5 (#5479)
Bumps [@babel/polyfill](https://github.com/babel/babel/tree/HEAD/packages/babel-polyfill) from 7.10.4 to 7.11.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.11.5/packages/babel-polyfill)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-05 17:57:25 +00:00
Pierre-Yves B
a0178f317c Deprecate [Codetally] service (#5478) 2020-09-05 16:23:37 +02:00
dependabot-preview[bot]
ff08c5d177 Build(deps-dev): bump lint-staged from 10.2.13 to 10.3.0 (#5492)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.2.13 to 10.3.0.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.2.13...v10.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-05 14:13:01 +00:00
dependabot-preview[bot]
244c18a572 Build(deps): bump pretty-bytes from 5.4.0 to 5.4.1 (#5490)
Bumps [pretty-bytes](https://github.com/sindresorhus/pretty-bytes) from 5.4.0 to 5.4.1.
- [Release notes](https://github.com/sindresorhus/pretty-bytes/releases)
- [Commits](https://github.com/sindresorhus/pretty-bytes/compare/v5.4.0...v5.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-05 14:00:08 +00:00
Thomas Cross
55e1d8f00c Add [Criterion] badge (#5471)
* add criterion shield service and tests

* remove error function.  replace with const statuses

* use shared const and formatting

* use commonjs/nodejs "module.exports"

* simplify badge generation

* leverage static fields, for newer version of node

* add documentation and contact links

* Update services/criterion/criterion.service.js

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/criterion/criterion.service.js

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* make criterion prettier

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
Co-authored-by: Pierre-Yves B <PyvesDev@gmail.com>
2020-09-05 15:49:43 +02:00
dependabot-preview[bot]
f7ba544a81 Build(deps): bump simple-icons from 3.6.0 to 3.6.1 (#5489)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 3.6.0 to 3.6.1.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/3.6.0...3.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-05 13:38:24 +00:00
dependabot-preview[bot]
07cf531ab1 Build(deps-dev): bump enzyme-adapter-react-16 from 1.15.3 to 1.15.4 (#5482)
Bumps [enzyme-adapter-react-16](https://github.com/enzymejs/enzyme/tree/HEAD/packages/enzyme-adapter-react-16) from 1.15.3 to 1.15.4.
- [Release notes](https://github.com/enzymejs/enzyme/releases)
- [Changelog](https://github.com/enzymejs/enzyme/blob/master/CHANGELOG.md)
- [Commits](https://github.com/enzymejs/enzyme/commits/enzyme-adapter-react-16@1.15.4/packages/enzyme-adapter-react-16)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-05 12:44:34 +00:00
dependabot-preview[bot]
cb5dcd175d Build(deps-dev): bump eslint-plugin-jsdoc from 30.3.0 to 30.3.1 (#5484)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 30.3.0 to 30.3.1.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v30.3.0...v30.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-05 12:17:33 +00:00
dependabot-preview[bot]
bcffe9133b Build(deps-dev): bump cypress from 5.0.0 to 5.1.0 (#5481)
Bumps [cypress](https://github.com/cypress-io/cypress) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v5.0.0...v5.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-05 11:52:56 +00:00
dependabot-preview[bot]
bf98260a4c Build(deps-dev): bump @types/node from 14.6.0 to 14.6.2 (#5464)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.6.0 to 14.6.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-01 21:28:39 +00:00
dependabot-preview[bot]
a949f31def Build(deps): bump pretty-bytes from 5.3.0 to 5.4.0 (#5462)
Bumps [pretty-bytes](https://github.com/sindresorhus/pretty-bytes) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/sindresorhus/pretty-bytes/releases)
- [Commits](https://github.com/sindresorhus/pretty-bytes/compare/v5.3.0...v5.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-01 21:19:30 +00:00
dependabot-preview[bot]
681489d10d Build(deps-dev): bump lint-staged from 10.2.11 to 10.2.13 (#5463)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.2.11 to 10.2.13.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.2.11...v10.2.13)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-31 13:52:34 +00:00
dependabot-preview[bot]
056e5e5b31 Build(deps-dev): bump eslint-plugin-jsdoc from 30.2.4 to 30.3.0 (#5461)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 30.2.4 to 30.3.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v30.2.4...v30.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-31 13:43:01 +00:00
dependabot-preview[bot]
d1d00128f8 Build(deps): bump simple-icons from 3.5.0 to 3.6.0 (#5465)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/3.5.0...3.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-31 06:37:52 +00:00
dependabot-preview[bot]
60d92cd5d6 Build(deps-dev): bump prettier from 2.0.5 to 2.1.1; test [pypi] (#5466)
* Build(deps-dev): bump prettier from 2.0.5 to 2.1.1

Bumps [prettier](https://github.com/prettier/prettier) from 2.0.5 to 2.1.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.0.5...2.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* update code formatting for new prettier version

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: chris48s <chris.shaw480@gmail.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2020-08-30 16:08:50 +01:00
dependabot-preview[bot]
8c50458285 Build(deps-dev): bump gatsby from 2.24.47 to 2.24.52 (#5459)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.24.47 to 2.24.52.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.47...gatsby@2.24.52)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2020-08-30 15:57:38 +01:00
Pierre-Yves B
2c329cdbb3 Update documentation about snapshot tests (#5468) 2020-08-29 21:28:27 +02:00
dependabot-preview[bot]
6880bc06f9 Build(deps): bump @sentry/node from 5.21.3 to 5.22.3 (#5458)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.21.3 to 5.22.3.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.21.3...5.22.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-08-29 11:39:42 -05:00
Pierre-Yves B
1047fd9c7e Remove badgerbadgerbadger from related projects and add poser (#5456) 2020-08-23 19:08:30 +02:00
dependabot-preview[bot]
a2e132d98f Build(deps): bump xpath from 0.0.27 to 0.0.29 (#5452)
Bumps [xpath](https://github.com/goto100/xpath) from 0.0.27 to 0.0.29.
- [Release notes](https://github.com/goto100/xpath/releases)
- [Commits](https://github.com/goto100/xpath/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-23 16:54:00 +00:00
dependabot-preview[bot]
5c0a9a3beb Build(deps-dev): bump cypress from 4.12.1 to 5.0.0 (#5447)
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.12.1 to 5.0.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.12.1...v5.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-23 16:38:14 +00:00
dependabot-preview[bot]
ada4bae12d Build(deps-dev): bump @babel/core from 7.11.1 to 7.11.4 (#5450)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.11.1 to 7.11.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.11.4/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-23 10:24:52 +00:00
dependabot-preview[bot]
c463e77da3 Build(deps-dev): bump @types/node from 14.0.27 to 14.6.0 (#5446)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.27 to 14.6.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-22 18:31:30 +00:00
dependabot-preview[bot]
106e2a1cf1 Build(deps): bump @sentry/node from 5.21.1 to 5.21.3 (#5453)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.21.1 to 5.21.3.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.21.1...5.21.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-22 18:22:10 +00:00
dependabot-preview[bot]
3c1b5a86f5 Build(deps-dev): bump @types/react-select from 3.0.16 to 3.0.19 (#5448)
Bumps [@types/react-select](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-select) from 3.0.16 to 3.0.19.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-select)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-22 18:13:42 +00:00
dependabot-preview[bot]
ab596a164f Build(deps-dev): bump node-mocks-http from 1.8.1 to 1.9.0 (#5445)
Bumps [node-mocks-http](https://github.com/howardabrams/node-mocks-http) from 1.8.1 to 1.9.0.
- [Release notes](https://github.com/howardabrams/node-mocks-http/releases)
- [Changelog](https://github.com/howardabrams/node-mocks-http/blob/master/HISTORY.md)
- [Commits](https://github.com/howardabrams/node-mocks-http/compare/v1.8.1...v1.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-22 18:04:01 +00:00
dependabot-preview[bot]
b3a5c9224e Build(deps-dev): bump @types/mocha from 8.0.2 to 8.0.3 (#5454)
Bumps [@types/mocha](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mocha) from 8.0.2 to 8.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-22 17:52:55 +00:00
dependabot-preview[bot]
ab3dc93776 Build(deps-dev): bump danger from 10.3.0 to 10.4.0 (#5444)
Bumps [danger](https://github.com/danger/danger-js) from 10.3.0 to 10.4.0.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/10.3.0...10.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-22 03:12:55 +00:00
dependabot-preview[bot]
47b55cf9e0 Build(deps): bump simple-icons from 3.4.1 to 3.5.0 (#5451)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 3.4.1 to 3.5.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/3.4.1...3.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-22 03:03:37 +00:00
dependabot-preview[bot]
aef6368390 Build(deps-dev): bump eslint-plugin-jsdoc from 30.2.2 to 30.2.4 (#5443)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 30.2.2 to 30.2.4.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v30.2.2...v30.2.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-08-22 01:44:49 +00:00
Sebastian Meyer
0d62406d0b feat: GithubWorkflowStatus event query string (#5442)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-19 23:09:24 +00:00
Paul Melnikow
7c226456fe Adopt static fields in [amo] and core (#5440)
Since we've upgraded production to Node 12 (#5436) we can finally adopt static fields!

This starts the process by updating core and one of the service families.
2020-08-19 14:49:29 -04:00
chris48s
0bcd7eef15 Run on node 12 in production, update test matrix (#5436)
* upgrade node/npm versions in package.json

* delete config for zeit now
zeit now is no more, vercel have decomissioned the now v1 platform

* upgrade to node 12 for (docker) self-hosting users

* update docs

* update test matrix
run tests on node 12 and node 14

* link to nodejs version support docs in package comment
we'll continue to tun the package tests on node 10
while its still maintained and drop in the next
major release

* update depcheck

* remove npm-install job
2020-08-18 19:28:58 +01:00
Owen Voke
4059bdcdfa feat: rename [OffsetEarth] to [Ecologi] (#5434)
* chore: update Offset Earth (Carbon) to Ecologi

* chore: update Offset Earth (Trees) to Ecologi

* chore: add redirect for Offset Earth (Carbon)

* chore: add redirect for Offset Earth (Trees)

* tests: fix pathPrefix in Offset Earth redirects

* chore: add redirect to Offset Earth filenames
2020-08-17 11:14:57 +02:00
chris48s
b9810b01e8 auto-close 'version bump only' gatsby deps (#5432)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-16 16:15:41 +01:00
dependabot-preview[bot]
41911ac53f Build(deps): bump @sentry/node from 5.20.1 to 5.21.1 (#5426)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.20.1 to 5.21.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.20.1...5.21.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-16 15:00:59 +00:00
dependabot-preview[bot]
abdd915de2 Build(deps-dev): bump nock from 13.0.3 to 13.0.4 (#5427)
Bumps [nock](https://github.com/nock/nock) from 13.0.3 to 13.0.4.
- [Release notes](https://github.com/nock/nock/releases)
- [Changelog](https://github.com/nock/nock/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nock/nock/compare/v13.0.3...v13.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-15 21:34:22 +00:00
kitsunyan
26e22e62b1 Migrate to the official F-Droid API (#5416)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-15 20:24:25 +00:00
dependabot-preview[bot]
957429113b Build(deps): bump emojic from 1.1.15 to 1.1.16 (#5423)
Bumps [emojic](https://github.com/IonicaBizau/emojic) from 1.1.15 to 1.1.16.
- [Release notes](https://github.com/IonicaBizau/emojic/releases)
- [Commits](https://github.com/IonicaBizau/emojic/commits/1.1.16)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-15 20:13:09 +00:00
dependabot-preview[bot]
3137dbdaab Build(deps): bump simple-icons from 3.4.0 to 3.4.1 (#5425)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/3.4.0...3.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-15 19:58:46 +00:00
dependabot-preview[bot]
a2a44a3699 Build(deps-dev): bump gatsby-plugin-page-creator from 2.3.19 to 2.3.22 (#5429)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.3.19 to 2.3.22.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.3.22/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-15 19:47:55 +00:00
dependabot-preview[bot]
c5e7c4c292 Build(deps-dev): bump gatsby from 2.24.35 to 2.24.47 (#5431)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.24.35 to 2.24.47.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.35...gatsby@2.24.47)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-15 19:33:16 +00:00
dependabot-preview[bot]
af66f652ed Build(deps-dev): bump start-server-and-test from 1.11.2 to 1.11.3 (#5420)
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 1.11.2 to 1.11.3.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v1.11.2...v1.11.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-15 19:25:40 +00:00
dependabot-preview[bot]
de4de4bf80 Build(deps-dev): bump @types/mocha from 8.0.1 to 8.0.2 (#5419)
Bumps [@types/mocha](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mocha) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-15 02:27:27 +00:00
dependabot-preview[bot]
7b3fde090f Build(deps-dev): bump eslint-plugin-react from 7.20.5 to 7.20.6 (#5424)
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.20.5 to 7.20.6.
- [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases)
- [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.20.5...v7.20.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-14 21:01:23 +00:00
dependabot-preview[bot]
95034b56ed Build(deps-dev): bump sinon from 9.0.2 to 9.0.3 (#5428)
Bumps [sinon](https://github.com/sinonjs/sinon) from 9.0.2 to 9.0.3.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v9.0.2...v9.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-14 20:53:33 +00:00
dependabot-preview[bot]
3ca0d2c9cf Build(deps-dev): bump eslint-plugin-sort-class-members (#5430)
Bumps [eslint-plugin-sort-class-members](https://github.com/bryanrsmith/eslint-plugin-sort-class-members) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/bryanrsmith/eslint-plugin-sort-class-members/releases)
- [Commits](https://github.com/bryanrsmith/eslint-plugin-sort-class-members/compare/v1.7.0...v1.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-14 20:41:08 +00:00
dependabot-preview[bot]
915ad86736 Build(deps-dev): bump eslint-plugin-jsdoc from 30.2.1 to 30.2.2 (#5422)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 30.2.1 to 30.2.2.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v30.2.1...v30.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-14 20:10:10 +00:00
dependabot-preview[bot]
c673eff3a6 Build(deps-dev): bump enzyme-adapter-react-16 from 1.15.2 to 1.15.3 (#5418)
Bumps [enzyme-adapter-react-16](https://github.com/enzymejs/enzyme/tree/HEAD/packages/enzyme-adapter-react-16) from 1.15.2 to 1.15.3.
- [Release notes](https://github.com/enzymejs/enzyme/releases)
- [Changelog](https://github.com/enzymejs/enzyme/blob/master/CHANGELOG.md)
- [Commits](https://github.com/enzymejs/enzyme/commits/enzyme-adapter-react-16@1.15.3/packages/enzyme-adapter-react-16)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-08-14 19:55:52 +00:00
Martynas Petuška
3dd163e2a7 [Bintray] Downloads (Bintray Versions renamed and not changed) (#5316)
* Bintray Downloads (Bintray Versions renamed and not changed)

* Tests fix

* Tests fix

* Tests fix

* Refactoring

* PR suggestions

* PR suggestions

* PR suggestions

Co-authored-by: Martynas Petuška <petuska.m@cambridgeassessment.org.uk>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-11 12:52:56 +00:00
Aaron Junker
f55f00cfa7 Add emoji for "Support Question" in config.yml (#5413)
Co-authored-by: Pierre-Yves B <PyvesDev@gmail.com>
2020-08-11 14:05:31 +02:00
alex4200
b97fce43c7 Add quickstart section to readme (#5370)
* Update README.md

Added sentence to make it more clear how to select and use a badge to add to a user's github repo.

* Update README.md

* Reformat

Co-authored-by: Pierre-Yves B <PyvesDev@gmail.com>
Co-authored-by: Paul Melnikow <email@paulmelnikow.com>
2020-08-10 22:37:53 -05:00
Pierre-Yves B
3a8528493a Update Node.js versions in README (#5410) 2020-08-09 08:51:34 +02:00
Pierre-Yves B
0b5067c412 Fix all remaining LGTM alerts (#5394) 2020-08-08 08:45:46 +02:00
dependabot-preview[bot]
e139264675 Build(deps-dev): bump concurrently from 5.2.0 to 5.3.0 (#5409)
Bumps [concurrently](https://github.com/kimmobrunfeldt/concurrently) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/kimmobrunfeldt/concurrently/releases)
- [Commits](https://github.com/kimmobrunfeldt/concurrently/compare/v5.2.0...v5.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-08 01:51:42 +00:00
dependabot-preview[bot]
0b5b75987a Build(deps-dev): bump nock from 13.0.2 to 13.0.3 (#5404)
Bumps [nock](https://github.com/nock/nock) from 13.0.2 to 13.0.3.
- [Release notes](https://github.com/nock/nock/releases)
- [Changelog](https://github.com/nock/nock/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nock/nock/compare/v13.0.2...v13.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-08 01:41:19 +00:00
dependabot-preview[bot]
c06318d128 Build(deps-dev): bump @babel/core from 7.11.0 to 7.11.1 (#5406)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.11.0 to 7.11.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.11.1/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-08 01:33:02 +00:00
dependabot-preview[bot]
d88b4c5cfb Build(deps-dev): bump @types/react-select from 3.0.15 to 3.0.16 (#5407)
Bumps [@types/react-select](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-select) from 3.0.15 to 3.0.16.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-select)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-08-07 20:25:13 -05:00
dependabot-preview[bot]
36e51f4971 Build(deps-dev): bump @types/react-helmet from 6.0.0 to 6.1.0 (#5398)
Bumps [@types/react-helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-helmet) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-08 01:02:39 +00:00
dependabot-preview[bot]
63d3a09bef Build(deps-dev): bump gatsby from 2.24.11 to 2.24.35 (#5403)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.24.11 to 2.24.35.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.11...gatsby@2.24.35)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-07 20:56:36 +00:00
dependabot-preview[bot]
1c6ef980ff Build(deps): bump simple-icons from 3.3.0 to 3.4.0 (#5400)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/3.3.0...3.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-07 20:48:44 +00:00
dependabot-preview[bot]
4f52f3950c Build(deps-dev): bump got from 11.5.1 to 11.5.2 (#5402)
Bumps [got](https://github.com/sindresorhus/got) from 11.5.1 to 11.5.2.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v11.5.1...v11.5.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-07 20:34:52 +00:00
dependabot-preview[bot]
6db80e57fb Build(deps-dev): bump eslint-plugin-jsdoc from 30.1.0 to 30.2.1 (#5408)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 30.1.0 to 30.2.1.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v30.1.0...v30.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-07 18:11:51 +00:00
dependabot-preview[bot]
4942ec82c7 Build(deps-dev): bump cypress from 4.11.0 to 4.12.1 (#5401)
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.11.0 to 4.12.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.11.0...v4.12.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-08-07 17:46:53 +00:00
Hrishikesh Patil
1e6acc830b [GitlabCoverage] Add badge for code coverage (#5262)
* Add base for GitLab code coverage badge

* Change examples to repos which have implemented code coverage reporting
in GitLab UI

* Add tests for Gitlab Coverage badge

* Fix test data that was not changed

* Update code according to new branch detection

Signed-off-by: Hrishikesh Patil <hrishikeshpatil.754@gmail.com>

* Update docs and examples, make branch required option that was missed in
previous commit

Signed-off-by: Hrishikesh Patil <hrishikeshpatil.754@gmail.com>

* Apply suggestions from PR discussion

Signed-off-by: Hrishikesh Patil <hrishikeshpatil.754@gmail.com>

* Remove default value of branch param

Signed-off-by: Hrishikesh Patil <hrishikeshpatil.754@gmail.com>

* Apply further discussed changes to service

Signed-off-by: Hrishikesh Patil <hrishikeshpatil.754@gmail.com>

* Fix tests that were failing

Signed-off-by: Hrishikesh Patil <hrishikeshpatil.754@gmail.com>

* Add fetch and transform functions

Signed-off-by: Hrishikesh Patil <hrishikeshpatil.754@gmail.com>

* Add examples and tests for custom job name

Signed-off-by: Hrishikesh Patil <hrishikeshpatil.754@gmail.com>

* Add finishing touches

Signed-off-by: Hrishikesh Patil <hrishikeshpatil.754@gmail.com>

* Change to a working example

Signed-off-by: Hrishikesh Patil <hrishikeshpatil.754@gmail.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-07 00:15:47 +00:00
chris48s
164e9ea737 add guidance about scraping and unofficial APIs (#5393) 2020-08-06 19:15:11 +01:00
Yash Totale
63a40ce1b1 Change [LGTM] alerts label (#5391) 2020-08-05 19:06:23 +01:00
Yash Totale
4b2a16b0c7 VS Code Marketplace Last Updated Badge added along with tests, run [VisualStudioMarketplace] (#5388)
* VS Code Marketplace Release Date Badge added along with tests

* VS Code Marketplace Last Updated Badge added along with tests

* made review changes

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-04 02:44:22 +00:00
dependabot-preview[bot]
69ef82903d Build(deps-dev): bump @babel/core from 7.10.5 to 7.11.0 (#5383)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.10.5 to 7.11.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.11.0/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-02 17:02:33 +00:00
dependabot-preview[bot]
2858189809 Build(deps-dev): bump portfinder from 1.0.27 to 1.0.28 (#5384)
Bumps [portfinder](https://github.com/http-party/node-portfinder) from 1.0.27 to 1.0.28.
- [Release notes](https://github.com/http-party/node-portfinder/releases)
- [Commits](https://github.com/http-party/node-portfinder/compare/v1.0.27...v1.0.28)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-02 16:53:33 +00:00
dependabot-preview[bot]
9204eea7e1 Build(deps-dev): bump @types/node from 14.0.25 to 14.0.27 (#5380)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.25 to 14.0.27.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-02 16:44:39 +00:00
dependabot-preview[bot]
7c81585ca6 Build(deps-dev): bump danger from 10.2.1 to 10.3.0 (#5382)
Bumps [danger](https://github.com/danger/danger-js) from 10.2.1 to 10.3.0.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/10.2.1...10.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-02 16:37:50 +00:00
dependabot-preview[bot]
afc9ccc0a0 Build(deps-dev): bump @types/react-select from 3.0.14 to 3.0.15 (#5379)
Bumps [@types/react-select](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-select) from 3.0.14 to 3.0.15.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-select)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-02 16:28:08 +00:00
dependabot-preview[bot]
b3f9f58a82 Build(deps): bump graphql-tag from 2.10.4 to 2.11.0 (#5378)
Bumps [graphql-tag](https://github.com/apollographql/graphql-tag) from 2.10.4 to 2.11.0.
- [Release notes](https://github.com/apollographql/graphql-tag/releases)
- [Changelog](https://github.com/apollographql/graphql-tag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/apollographql/graphql-tag/commits/v2.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-01 18:31:32 +00:00
dependabot-preview[bot]
ea24784b26 Build(deps): bump simple-icons from 3.2.0 to 3.3.0 (#5377)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/3.2.0...3.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-01 18:11:38 +00:00
dependabot-preview[bot]
65c54c22d2 Build(deps-dev): bump @types/mocha from 8.0.0 to 8.0.1 (#5376)
Bumps [@types/mocha](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mocha) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-01 17:57:36 +00:00
dependabot-preview[bot]
e0c3fd4364 Build(deps): [security] bump lodash from 4.17.15 to 4.17.19 (#5374)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. **This update includes security fixes.**
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-01 17:48:55 +00:00
dependabot-preview[bot]
babd32c98b Build(deps-dev): bump eslint-plugin-jsdoc from 30.0.3 to 30.1.0 (#5381)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 30.0.3 to 30.1.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v30.0.3...v30.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-08-01 04:46:23 +00:00
dependabot-preview[bot]
a70589d919 Build(deps-dev): bump eslint-plugin-react from 7.20.3 to 7.20.5 (#5375)
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.20.3 to 7.20.5.
- [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases)
- [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.20.3...v7.20.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-08-01 04:27:16 +00:00
kitsunyan
5a75ffaa99 Migrate to F-Droid API (#5362)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-30 00:16:24 +00:00
Kid
86a9ac27d0 Add [Flathub] badge (#5345)
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2020-07-29 17:59:22 +01:00
chris48s
f3d17ff435 bypass checkErrorResponse on [website] badge (#5347)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-26 15:44:31 +00:00
dependabot-preview[bot]
23f416b42a Build(deps): bump @sentry/node from 5.19.2 to 5.20.1 (#5361)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.19.2 to 5.20.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.19.2...5.20.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-26 01:43:16 +00:00
dependabot-preview[bot]
5d02a66796 Build(deps-dev): bump gatsby from 2.24.4 to 2.24.11 (#5360)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.24.4 to 2.24.11.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.4...gatsby@2.24.11)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-25 19:32:48 +00:00
dependabot-preview[bot]
b6213efac2 Build(deps-dev): bump gatsby-plugin-typescript from 2.4.15 to 2.4.16 (#5355)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.4.15 to 2.4.16.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.4.16/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-25 19:25:03 +00:00
dependabot-preview[bot]
89c9bd5db1 Build(deps-dev): bump gatsby-plugin-page-creator from 2.3.12 to 2.3.19 (#5354)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.3.12 to 2.3.19.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.3.19/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-25 19:17:33 +00:00
dependabot-preview[bot]
524f78f4f4 Build(deps-dev): bump eslint-plugin-jsdoc from 29.2.0 to 30.0.3 (#5352)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 29.2.0 to 30.0.3.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v29.2.0...v30.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-25 19:07:58 +00:00
Jules Sam. Randolph
d9cda5c2ff [npm] Support tags containing slashes (/) (#5367)
closes #5364
2020-07-25 18:57:15 +00:00
dependabot-preview[bot]
72c749c6b6 Build(deps-dev): bump jsdoc from 3.6.4 to 3.6.5 (#5356)
Bumps [jsdoc](https://github.com/jsdoc/jsdoc) from 3.6.4 to 3.6.5.
- [Release notes](https://github.com/jsdoc/jsdoc/releases)
- [Changelog](https://github.com/jsdoc/jsdoc/blob/3.6.5/CHANGES.md)
- [Commits](https://github.com/jsdoc/jsdoc/compare/3.6.4...3.6.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-25 09:58:17 +00:00
dependabot-preview[bot]
77d655ecc9 Build(deps): bump simple-icons from 3.1.0 to 3.2.0 (#5357)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/3.1.0...3.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-25 09:50:30 +00:00
dependabot-preview[bot]
44078775ca Build(deps-dev): bump @types/chai from 4.2.11 to 4.2.12 (#5359)
Bumps [@types/chai](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai) from 4.2.11 to 4.2.12.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-24 18:15:46 +00:00
dependabot-preview[bot]
b9438f91a4 Build(deps-dev): bump portfinder from 1.0.26 to 1.0.27 (#5358)
Bumps [portfinder](https://github.com/http-party/node-portfinder) from 1.0.26 to 1.0.27.
- [Release notes](https://github.com/http-party/node-portfinder/releases)
- [Commits](https://github.com/http-party/node-portfinder/compare/v1.0.26...v1.0.27)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-24 18:04:54 +00:00
dependabot-preview[bot]
dfa6862329 Build(deps-dev): bump cypress from 4.10.0 to 4.11.0 (#5353)
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.10.0 to 4.11.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.10.0...v4.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-24 17:34:31 +00:00
dependabot-preview[bot]
3600b9c6f7 Build(deps-dev): bump @types/node from 14.0.23 to 14.0.25 (#5351)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.23 to 14.0.25.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-24 17:17:16 +00:00
Pierre-Yves B
135b842946 Migrate [Discord] implementation to use bot token (#5346)
* Migrate [Discord] implementation to use bot token

* Rework authorization field creation

* Revert "Rework authorization field creation"

This reverts commit caf65bde5d.

* Add LGTM exclusion for hardcoded credentials
2020-07-24 18:04:12 +02:00
chris48s
c85512997c add 'aborted' as a valid build status (#5348)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-22 19:32:23 +00:00
dependabot-preview[bot]
cdb6bb1890 Build(deps-dev): bump @types/node from 14.0.22 to 14.0.23 (#5327)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.22 to 14.0.23.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-21 02:01:40 +00:00
dependabot-preview[bot]
b1841f288e Build(deps): bump @sentry/node from 5.19.1 to 5.19.2 (#5326)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.19.1 to 5.19.2.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.19.1...5.19.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-20 00:33:20 +00:00
chris48s
3f622f9ed9 convert branch to required param on [shippable] (#5344)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-19 20:58:18 +00:00
dependabot-preview[bot]
f46bbb914a Build(deps-dev): bump gatsby-plugin-typescript from 2.4.13 to 2.4.15 (#5330)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.4.13 to 2.4.15.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.4.15/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-19 17:03:07 +00:00
dependabot-preview[bot]
e186211a29 Build(deps-dev): bump @babel/register from 7.10.4 to 7.10.5 (#5334)
Bumps [@babel/register](https://github.com/babel/babel/tree/HEAD/packages/babel-register) from 7.10.4 to 7.10.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.5/packages/babel-register)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-19 16:53:37 +00:00
dependabot-preview[bot]
aa1fcb4c84 Build(deps-dev): bump @babel/core from 7.10.4 to 7.10.5 (#5332)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.10.4 to 7.10.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.5/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-19 16:45:10 +00:00
dependabot-preview[bot]
50f9c434e7 Build(deps-dev): bump gatsby from 2.24.2 to 2.24.4 (#5342)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.24.2 to 2.24.4.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.2...gatsby@2.24.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-18 20:42:52 +00:00
dependabot-preview[bot]
95ad4830cb Build(deps): bump simple-icons from 3.0.1 to 3.1.0 (#5337)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 3.0.1 to 3.1.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/3.0.1...3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-18 20:33:30 +00:00
dependabot-preview[bot]
cc5d4c07f1 Build(deps-dev): bump @types/mocha from 7.0.2 to 8.0.0 (#5333)
Bumps [@types/mocha](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mocha) from 7.0.2 to 8.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-18 20:22:19 +00:00
dependabot-preview[bot]
8930f3cf9c Build(deps-dev): bump tsd from 0.12.1 to 0.13.1 (#5325)
Bumps [tsd](https://github.com/SamVerschueren/tsd) from 0.12.1 to 0.13.1.
- [Release notes](https://github.com/SamVerschueren/tsd/releases)
- [Commits](https://github.com/SamVerschueren/tsd/compare/v0.12.1...v0.13.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-18 20:14:54 +00:00
dependabot-preview[bot]
02edc84a7c Build(deps-dev): bump start-server-and-test from 1.11.1 to 1.11.2 (#5336)
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 1.11.1 to 1.11.2.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v1.11.1...v1.11.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-18 08:53:01 +00:00
dependabot-preview[bot]
9d02d6f9d4 Build(deps-dev): bump got from 11.5.0 to 11.5.1 (#5338)
Bumps [got](https://github.com/sindresorhus/got) from 11.5.0 to 11.5.1.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v11.5.0...v11.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-18 08:32:43 +00:00
dependabot-preview[bot]
c131741128 Build(deps-dev): bump eslint-plugin-jsdoc from 29.1.3 to 29.2.0 (#5328)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 29.1.3 to 29.2.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v29.1.3...v29.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-17 17:20:24 +00:00
dependabot-preview[bot]
8196d18efb Build(deps): bump simple-icons from 2.18.0 to 3.0.1 (#5309)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.18.0 to 3.0.1.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.18.0...3.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2020-07-16 21:17:18 +01:00
dependabot-preview[bot]
dc61e831e0 Build(deps-dev): bump start-server-and-test from 1.11.0 to 1.11.1 (#5311)
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v1.11.0...v1.11.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-15 20:33:59 +00:00
chris48s
810efb14f9 Make branch a required param on bb/gitlab/travis-php (#5318) 2020-07-15 21:00:43 +01:00
dependabot-preview[bot]
5bc7c3e015 Build(deps-dev): bump @types/node from 14.0.14 to 14.0.22 (#5312)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.14 to 14.0.22.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: Paul Melnikow <github@paulmelnikow.com>
2020-07-14 03:56:31 +00:00
dependabot-preview[bot]
21a544351c Build(deps-dev): bump eslint-plugin-jsdoc from 28.5.1 to 29.1.3 (#5314)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 28.5.1 to 29.1.3.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v28.5.1...v29.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-14 03:39:18 +00:00
dependabot-preview[bot]
314751b6da Build(deps): bump @sentry/node from 5.18.1 to 5.19.1 (#5315)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.18.1 to 5.19.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.18.1...5.19.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-14 02:44:18 +00:00
chris48s
32ac819813 package 3.2.0 (#5319) 2020-07-13 20:32:36 +01:00
Evelyn Hathaway
c1ded757c7 feat: add accessible text alternative in when a graphic and link (#5289)
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2020-07-13 20:07:26 +01:00
dependabot-preview[bot]
4a592a905c Build(deps-dev): bump icedfrisby from 3.0.0 to 4.0.0 (#5303)
Bumps [icedfrisby](https://github.com/IcedFrisby/IcedFrisby) from 3.0.0 to 4.0.0.
- [Release notes](https://github.com/IcedFrisby/IcedFrisby/releases)
- [Changelog](https://github.com/IcedFrisby/IcedFrisby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/IcedFrisby/IcedFrisby/compare/3.0.0...4.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-11 14:18:31 +00:00
dependabot-preview[bot]
ba02d3b162 Build(deps): bump graphql from 14.6.0 to 14.7.0 (#5307)
Bumps [graphql](https://github.com/graphql/graphql-js) from 14.6.0 to 14.7.0.
- [Release notes](https://github.com/graphql/graphql-js/releases)
- [Commits](https://github.com/graphql/graphql-js/compare/v14.6.0...v14.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-11 06:22:36 +00:00
dependabot-preview[bot]
053a0ddbf0 Build(deps-dev): bump @types/react-select from 3.0.13 to 3.0.14 (#5304)
Bumps [@types/react-select](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-select) from 3.0.13 to 3.0.14.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-select)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-11 05:56:26 +00:00
dependabot-preview[bot]
6a0a87530c Build(deps): bump graphql-tag from 2.10.3 to 2.10.4 (#5299)
Bumps [graphql-tag](https://github.com/apollographql/graphql-tag) from 2.10.3 to 2.10.4.
- [Release notes](https://github.com/apollographql/graphql-tag/releases)
- [Changelog](https://github.com/apollographql/graphql-tag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/apollographql/graphql-tag/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-11 05:48:00 +00:00
dependabot-preview[bot]
1e63e37b71 Build(deps-dev): bump gatsby from 2.23.20 to 2.24.2 (#5301)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.23.20 to 2.24.2.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.23.20...gatsby@2.24.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-11 00:26:07 -05:00
dependabot-preview[bot]
ab8a735034 Build(deps-dev): bump got from 11.3.0 to 11.5.0 (#5306)
Bumps [got](https://github.com/sindresorhus/got) from 11.3.0 to 11.5.0.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v11.3.0...v11.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-10 22:42:11 +00:00
dependabot-preview[bot]
5007c84419 Build(deps-dev): bump cypress from 4.9.0 to 4.10.0 (#5300)
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.9.0 to 4.10.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.9.0...v4.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-10 17:06:08 +00:00
Paul Melnikow
8fa61ae164 Update Cloudflare access + remove OAuth app (#5295) 2020-07-08 19:12:22 -04:00
Pierre-Yves B
964ad08767 Prepare Discussions launch (#5288) 2020-07-06 09:34:49 +02:00
Caleb Cartwright
4514718d7b tests: increase website test timeout (#5286)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-06 02:11:18 +00:00
Caleb Cartwright
6042216e77 tests: fix ansible quality service tests (#5287) 2020-07-05 12:40:50 -05:00
dependabot-preview[bot]
f2e24055a9 Build(deps-dev): bump eslint-plugin-react from 7.20.0 to 7.20.3 (#5270)
* Build(deps-dev): bump eslint-plugin-react from 7.20.0 to 7.20.3

Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.20.0 to 7.20.3.
- [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases)
- [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.20.0...v7.20.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* chore: apply eslint tweaks for latest version

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: Caleb Cartwright <caleb.cartwright@outlook.com>
2020-07-05 02:46:15 +00:00
dependabot-preview[bot]
1ff0448dc4 Build(deps-dev): bump nock from 13.0.0 to 13.0.2 (#5274)
Bumps [nock](https://github.com/nock/nock) from 13.0.0 to 13.0.2.
- [Release notes](https://github.com/nock/nock/releases)
- [Changelog](https://github.com/nock/nock/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nock/nock/compare/v13.0.0...v13.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-04 17:01:10 +00:00
dependabot-preview[bot]
ed172e124e Build(deps-dev): bump tsd from 0.11.0 to 0.12.1 (#5272)
Bumps [tsd](https://github.com/SamVerschueren/tsd) from 0.11.0 to 0.12.1.
- [Release notes](https://github.com/SamVerschueren/tsd/releases)
- [Commits](https://github.com/SamVerschueren/tsd/compare/v0.11.0...v0.12.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-04 16:50:10 +00:00
dependabot-preview[bot]
9ca54a6e7f Build(deps-dev): bump @babel/core from 7.10.2 to 7.10.4 (#5273)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.10.2 to 7.10.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.4/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-04 16:40:41 +00:00
dependabot-preview[bot]
03b5a627c8 Build(deps-dev): bump @babel/polyfill from 7.10.1 to 7.10.4 (#5271)
Bumps [@babel/polyfill](https://github.com/babel/babel/tree/HEAD/packages/babel-polyfill) from 7.10.1 to 7.10.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.4/packages/babel-polyfill)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-04 15:58:34 +00:00
Hunter Kvalevog
95a0f66f76 Escape special characters in badge URL (#5263)
* Markdown: Encode spaces in badge URL as %20

* Revert "Markdown: Encode spaces in badge URL as %20"

This reverts commit f49945e9e9.

* Escape special characters in badge URL

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-04 15:40:58 +00:00
dependabot-preview[bot]
78048fe887 Build(deps-dev): bump @babel/register from 7.10.3 to 7.10.4 (#5269)
Bumps [@babel/register](https://github.com/babel/babel/tree/HEAD/packages/babel-register) from 7.10.3 to 7.10.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.4/packages/babel-register)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-04 15:27:00 +00:00
dependabot-preview[bot]
6740651f9a Build(deps-dev): bump babel-preset-gatsby from 0.4.12 to 0.5.1 (#5266)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.4.12 to 0.5.1.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.5.1/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-04 15:11:20 +00:00
dependabot-preview[bot]
27de6ca0ff Build(deps-dev): bump gatsby-plugin-typescript from 2.4.8 to 2.4.13 (#5267)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.4.8 to 2.4.13.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.4.13/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-04 10:02:24 -05:00
dependabot-preview[bot]
fc673df32e Build(deps-dev): bump gatsby-plugin-remove-trailing-slashes (#5268)
Bumps [gatsby-plugin-remove-trailing-slashes](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-remove-trailing-slashes) from 2.3.7 to 2.3.10.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-remove-trailing-slashes/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-remove-trailing-slashes@2.3.10/packages/gatsby-plugin-remove-trailing-slashes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-04 14:46:18 +00:00
dependabot-preview[bot]
1918dada8b Build(deps-dev): bump gatsby-plugin-catch-links from 2.3.7 to 2.3.10 (#5275)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.3.7 to 2.3.10.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.3.10/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-03 21:35:21 +00:00
dependabot-preview[bot]
52b29363cc Build(deps-dev): bump gatsby-plugin-styled-components (#5264)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.3.6 to 3.3.9.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.3.9/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-03 21:20:19 +00:00
dependabot-preview[bot]
3a9e176845 Build(deps-dev): bump gatsby-plugin-react-helmet from 3.3.6 to 3.3.9 (#5265)
Bumps [gatsby-plugin-react-helmet](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-react-helmet) from 3.3.6 to 3.3.9.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-react-helmet/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-react-helmet@3.3.9/packages/gatsby-plugin-react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-03 22:10:59 +01:00
dependabot-preview[bot]
828d4cc40a Build(deps-dev): bump gatsby from 2.23.11 to 2.23.20 (#5279)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.23.11 to 2.23.20.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.23.11...gatsby@2.23.20)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-03 18:15:13 +00:00
dependabot-preview[bot]
1b51ee644c Build(deps-dev): bump eslint-plugin-import from 2.21.2 to 2.22.0 (#5278)
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.21.2 to 2.22.0.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.21.2...v2.22.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-07-03 17:27:16 +00:00
dependabot-preview[bot]
670b825d20 Build(deps-dev): bump chai-datetime from 1.6.0 to 1.7.0 (#5276)
Bumps [chai-datetime](https://github.com/mguterl/chai-datetime) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/mguterl/chai-datetime/releases)
- [Commits](https://github.com/mguterl/chai-datetime/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-03 17:14:16 +00:00
Felix C. Stegerman
b4579adc44 [crates] recent_downloads can be null (#5237)
* crates: recent_downloads can be null

* crates: add test for recent_downloads = null
2020-06-27 20:44:48 +00:00
dependabot-preview[bot]
cde8254743 Build(deps-dev): bump gatsby-plugin-react-helmet from 3.3.4 to 3.3.6 (#5254)
Bumps [gatsby-plugin-react-helmet](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-react-helmet) from 3.3.4 to 3.3.6.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-react-helmet/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-react-helmet@3.3.6/packages/gatsby-plugin-react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-27 18:32:18 +00:00
dependabot-preview[bot]
029450a7c9 Build(deps-dev): bump gatsby-plugin-page-creator from 2.3.10 to 2.3.12 (#5258)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.3.10 to 2.3.12.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.3.12/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-27 16:46:32 +00:00
dependabot-preview[bot]
708e34d2fc Build(deps-dev): bump danger from 10.2.0 to 10.2.1 (#5253)
Bumps [danger](https://github.com/danger/danger-js) from 10.2.0 to 10.2.1.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/10.2.0...10.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-27 16:26:58 +00:00
dependabot-preview[bot]
7b744ceaef Build(deps-dev): bump gatsby-plugin-styled-components (#5252)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.3.4 to 3.3.6.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.3.6/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-27 06:16:29 +00:00
dependabot-preview[bot]
614c0894e2 Build(deps-dev): bump gatsby from 2.22.12 to 2.23.11 (#5250)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.22.12 to 2.23.11.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.22.12...gatsby@2.23.11)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-27 06:05:18 +00:00
dependabot-preview[bot]
cd32cdb124 Build(deps-dev): bump @types/react-modal from 3.10.5 to 3.10.6 (#5248)
Bumps [@types/react-modal](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-modal) from 3.10.5 to 3.10.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-modal)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-27 05:52:30 +00:00
dependabot-preview[bot]
17a904e086 Build(deps-dev): bump @babel/register from 7.10.1 to 7.10.3 (#5247)
Bumps [@babel/register](https://github.com/babel/babel/tree/HEAD/packages/babel-register) from 7.10.1 to 7.10.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.3/packages/babel-register)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-27 05:42:20 +00:00
dependabot-preview[bot]
10c538b86b Build(deps-dev): bump @types/node from 14.0.13 to 14.0.14 (#5246)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.13 to 14.0.14.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-27 05:24:15 +00:00
dependabot-preview[bot]
3ee0502a4a Build(deps-dev): bump babel-preset-gatsby from 0.4.10 to 0.4.12 (#5245)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.4.10 to 0.4.12.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.4.12/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-27 05:14:11 +00:00
dependabot-preview[bot]
b8d87c8a95 Build(deps): bump @sentry/node from 5.17.0 to 5.18.1 (#5244)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.17.0 to 5.18.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.17.0...5.18.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-27 05:05:28 +00:00
dependabot-preview[bot]
b957204d76 Build(deps-dev): bump gatsby-plugin-typescript from 2.4.6 to 2.4.8 (#5243)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.4.6 to 2.4.8.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.4.8/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-27 04:42:26 +00:00
dependabot-preview[bot]
71c2be59fe Build(deps-dev): bump eslint-plugin-jsdoc from 27.1.2 to 28.5.1 (#5249)
* Build(deps-dev): bump eslint-plugin-jsdoc from 27.1.2 to 28.5.1

Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 27.1.2 to 28.5.1.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v27.1.2...v28.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* don't run in typescript mode on backend code

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: chris48s <chris.shaw480@gmail.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-26 19:37:00 +00:00
dependabot-preview[bot]
79582dbddd Build(deps): bump simple-icons from 2.17.1 to 2.18.0 (#5256)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.17.1 to 2.18.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.17.1...2.18.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-26 19:16:55 +00:00
dependabot-preview[bot]
5195c0e9e7 Build(deps-dev): bump gatsby-plugin-catch-links from 2.3.5 to 2.3.7 (#5255)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.3.5 to 2.3.7.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.3.7/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-26 18:58:18 +00:00
dependabot-preview[bot]
b4c9c5978e Build(deps-dev): bump gatsby-plugin-remove-trailing-slashes (#5251)
Bumps [gatsby-plugin-remove-trailing-slashes](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-remove-trailing-slashes) from 2.3.5 to 2.3.7.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-remove-trailing-slashes/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-remove-trailing-slashes@2.3.7/packages/gatsby-plugin-remove-trailing-slashes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-26 18:48:18 +00:00
dependabot-preview[bot]
3d1e01b353 Build(deps-dev): bump cypress from 4.8.0 to 4.9.0 (#5257)
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.8.0 to 4.9.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.8.0...v4.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-26 16:44:20 +00:00
chris48s
270c29f757 auto-detect default branch on [github nycrc osslifecycle] (#5234)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-25 20:15:20 +00:00
Pierre-Yves B
9acc305d31 Handle [cpan] versions that aren't returned as strings (#5239) 2020-06-25 08:26:23 +02:00
Caleb Cartwright
f02df4f826 support custom manifest path for [GitHubManifest] and fix service tests (#5232)
feat: custom manifest path for GH Manifest + fix tests
2020-06-22 19:20:56 +01:00
chris48s
7a709acf01 fix failing [gitlab] service test (#5233)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-21 11:40:13 +00:00
dependabot-preview[bot]
e9a92c04aa Build(deps-dev): bump babel-preset-gatsby from 0.4.8 to 0.4.10 (#5228)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.4.8 to 0.4.10.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.4.10/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-20 11:02:47 -05:00
dependabot-preview[bot]
8922918507 Build(deps-dev): bump gatsby-plugin-page-creator from 2.3.9 to 2.3.10 (#5220)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.3.9 to 2.3.10.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.3.10/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-20 15:43:52 +00:00
dependabot-preview[bot]
7440e65552 Build(deps-dev): bump @types/node from 14.0.11 to 14.0.13 (#5224)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.11 to 14.0.13.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-20 15:31:19 +00:00
dependabot-preview[bot]
311b84737f Build(deps-dev): bump lint-staged from 10.2.10 to 10.2.11 (#5221)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.2.10 to 10.2.11.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.2.10...v10.2.11)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-20 15:19:46 +00:00
dependabot-preview[bot]
892e931219 Build(deps-dev): bump nock from 13.0.0-beta.5 to 13.0.0 (#5225)
Bumps [nock](https://github.com/nock/nock) from 13.0.0-beta.5 to 13.0.0.
- [Release notes](https://github.com/nock/nock/releases)
- [Changelog](https://github.com/nock/nock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nock/nock/compare/v13.0.0-beta.5...v13.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-19 17:29:05 +00:00
dependabot-preview[bot]
34e0038efb Build(deps): bump moment from 2.26.0 to 2.27.0 (#5222)
Bumps [moment](https://github.com/moment/moment) from 2.26.0 to 2.27.0.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.26.0...2.27.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-19 17:20:39 +00:00
dependabot-preview[bot]
48c2cd493f Build(deps): bump simple-icons from 2.16.0 to 2.17.1 (#5223)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.16.0 to 2.17.1.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.16.0...2.17.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-19 16:59:51 +00:00
dependabot-preview[bot]
2e6355a6de Build(deps-dev): bump eslint-plugin-import from 2.20.2 to 2.21.2 (#5229)
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.20.2 to 2.21.2.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.20.2...v2.21.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-19 16:07:21 +00:00
dependabot-preview[bot]
a50cb76ed0 Build(deps-dev): bump eslint-plugin-jsdoc from 27.0.6 to 27.1.2 (#5227)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 27.0.6 to 27.1.2.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v27.0.6...v27.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-19 15:53:58 +00:00
chris48s
dd958efae5 Community/sponsors page (#5155) 2020-06-17 19:11:14 +01:00
Pierre-Yves B
1639417a55 Fix [Twitch] Client-ID header (#5217) 2020-06-17 19:18:25 +02:00
Paul Melnikow
778b146d8e Update list of who has access to production resources (#5192)
This action item was requested at the ops team meeting.

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-14 20:09:04 +00:00
chris48s
1b460e2d29 fix failing [aur] service test (#5212)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-14 19:57:50 +00:00
chris48s
9e3b71a241 update [codeclimate] service tests/example (#5213)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-14 19:48:37 +00:00
dependabot-preview[bot]
0ef238ce9d Build(deps-dev): bump gatsby-plugin-page-creator from 2.3.7 to 2.3.9 (#5210)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.3.7 to 2.3.9.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.3.9/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-14 00:37:10 +00:00
dependabot-preview[bot]
785db7c4e7 Build(deps): bump query-string from 6.12.1 to 6.13.1 (#5209)
Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.12.1 to 6.13.1.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v6.12.1...v6.13.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-13 20:08:28 +00:00
dependabot-preview[bot]
924f967e5a Build(deps-dev): bump gatsby-plugin-react-helmet from 3.3.3 to 3.3.4 (#5211)
Bumps [gatsby-plugin-react-helmet](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-react-helmet) from 3.3.3 to 3.3.4.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-react-helmet/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-react-helmet@3.3.4/packages/gatsby-plugin-react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-13 19:42:16 +00:00
dependabot-preview[bot]
219cece5ac Build(deps-dev): bump gatsby-plugin-remove-trailing-slashes (#5208)
Bumps [gatsby-plugin-remove-trailing-slashes](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-remove-trailing-slashes) from 2.3.3 to 2.3.5.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-remove-trailing-slashes/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-remove-trailing-slashes@2.3.5/packages/gatsby-plugin-remove-trailing-slashes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-13 19:04:58 +00:00
dependabot-preview[bot]
a492de0db1 Build(deps-dev): bump mocha-junit-reporter from 1.23.3 to 2.0.0 (#5207)
Bumps [mocha-junit-reporter](https://github.com/michaelleeallen/mocha-junit-reporter) from 1.23.3 to 2.0.0.
- [Release notes](https://github.com/michaelleeallen/mocha-junit-reporter/releases)
- [Commits](https://github.com/michaelleeallen/mocha-junit-reporter/compare/v1.23.3...v2.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-13 18:55:04 +00:00
dependabot-preview[bot]
7ec67d9488 Build(deps-dev): bump lint-staged from 10.2.9 to 10.2.10 (#5206)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.2.9 to 10.2.10.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.2.9...v10.2.10)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-13 18:35:30 +00:00
dependabot-preview[bot]
a114830e6f Build(deps-dev): bump gatsby-plugin-catch-links from 2.3.4 to 2.3.5 (#5205)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.3.4 to 2.3.5.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.3.5/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-13 18:19:41 +00:00
dependabot-preview[bot]
f9fd064026 Build(deps-dev): bump gatsby-plugin-typescript from 2.4.4 to 2.4.6 (#5204)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.4.4 to 2.4.6.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.4.6/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-13 18:08:50 +00:00
dependabot-preview[bot]
7883a40985 Build(deps): bump @sentry/node from 5.16.1 to 5.17.0 (#5203)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.16.1 to 5.17.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.16.1...5.17.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-13 17:57:56 +00:00
dependabot-preview[bot]
fcffb4163b Build(deps): bump fast-xml-parser from 3.17.3 to 3.17.4 (#5199)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 3.17.3 to 3.17.4.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-12 23:30:44 +00:00
dependabot-preview[bot]
c86af9107c Build(deps-dev): bump nyc from 15.0.1 to 15.1.0 (#5202)
Bumps [nyc](https://github.com/istanbuljs/nyc) from 15.0.1 to 15.1.0.
- [Release notes](https://github.com/istanbuljs/nyc/releases)
- [Changelog](https://github.com/istanbuljs/nyc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/istanbuljs/nyc/compare/v15.0.1...v15.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-12 23:20:33 +00:00
dependabot-preview[bot]
644ef27a87 Build(deps-dev): bump react-helmet from 6.0.0 to 6.1.0 (#5198)
Bumps [react-helmet](https://github.com/nfl/react-helmet) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/nfl/react-helmet/releases)
- [Changelog](https://github.com/nfl/react-helmet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nfl/react-helmet/compare/6.0.0...6.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-12 22:47:16 +00:00
dependabot-preview[bot]
4479709788 Build(deps-dev): bump gatsby-plugin-styled-components (#5200)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.3.3 to 3.3.4.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.3.4/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-12 22:39:01 +00:00
dependabot-preview[bot]
9d70335127 Build(deps): bump chalk from 3.0.0 to 4.1.0 (#5195)
Bumps [chalk](https://github.com/chalk/chalk) from 3.0.0 to 4.1.0.
- [Release notes](https://github.com/chalk/chalk/releases)
- [Commits](https://github.com/chalk/chalk/compare/v3.0.0...v4.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-12 21:53:29 +00:00
dependabot-preview[bot]
1ebdc18934 Build(deps-dev): bump eslint-plugin-jsdoc from 27.0.4 to 27.0.6 (#5196)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 27.0.4 to 27.0.6.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v27.0.4...v27.0.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-12 15:46:57 +00:00
dependabot-preview[bot]
8c790d6804 Build(deps-dev): bump cypress from 4.7.0 to 4.8.0 (#5197)
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.7.0 to 4.8.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.7.0...v4.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-12 15:22:49 +00:00
chris48s
245ee798dc fix lockfile (#5193) 2020-06-11 19:43:02 +01:00
Pierre-Yves B
0fd557d7bb Implement [YouTube] badge (#5132)
* Implement [YouTube] badge

* Update production-hosting.md with account owner

* Add votes badge variant

* Add links to tests

* Switch to social badge style
2020-06-10 18:44:21 +02:00
Paul Melnikow
4582ea1c56 Avoid using racially linked language (#5190) 2020-06-09 02:28:53 +00:00
Joe Izzard
36e1d30631 [Reddit] New badge and additional testing (#5166)
* fix: added detection of private subs and aded a test

* test: added test for no subscriber info

* feat: added user-karma badge

* refactor: changed class name for testing

Changed the class name to allow testing the whole service with 'reddit'

* refactor: refactored code for code and output style

* refactor: change how variables are passed to be cleaner

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-09 02:15:07 +00:00
dependabot-preview[bot]
88ad5aac01 Build(deps): [security] bump graphql-playground-html (#5191)
Bumps [graphql-playground-html](https://github.com/graphcool/graphql-playground) from 1.6.20 to 1.6.25. **This update includes a security fix.**
- [Release notes](https://github.com/graphcool/graphql-playground/releases)
- [Commits](https://github.com/graphcool/graphql-playground/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-08 20:59:34 -05:00
kendell
4954e0fe21 Update simple-icons (#5189) 2020-06-08 21:08:37 +01:00
dependabot-preview[bot]
0fdc062e24 Build(deps): bump camelcase from 5.3.1 to 6.0.0 in /badge-maker (#5175)
Bumps [camelcase](https://github.com/sindresorhus/camelcase) from 5.3.1 to 6.0.0.
- [Release notes](https://github.com/sindresorhus/camelcase/releases)
- [Commits](https://github.com/sindresorhus/camelcase/compare/v5.3.1...v6.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 21:01:44 +00:00
dependabot-preview[bot]
47ebb31bd9 Build(deps-dev): bump gatsby-plugin-styled-components (#5181)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.3.2 to 3.3.3.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.3.3/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 16:15:36 +00:00
dependabot-preview[bot]
7f8f7b9e99 Build(deps): bump simple-icons from 2.14.0 to 2.15.0 (#5184)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.14.0 to 2.15.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.14.0...2.15.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 15:58:29 +00:00
dependabot-preview[bot]
0b90e5f864 Build(deps-dev): bump got from 11.1.4 to 11.3.0 (#5182)
Bumps [got](https://github.com/sindresorhus/got) from 11.1.4 to 11.3.0.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v11.1.4...v11.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 15:46:01 +00:00
chris48s
f08d9f5e56 run a smoke test for package with no shields.io deps installed (#5162)
run a smoke test for package with no shields.io deps installed
2020-06-06 16:33:27 +01:00
dependabot-preview[bot]
09693390c5 Build(deps-dev): bump @babel/core from 7.10.1 to 7.10.2 (#5180)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.10.1 to 7.10.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.2/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 04:04:07 +00:00
dependabot-preview[bot]
21b45dafb6 Build(deps-dev): bump gatsby-plugin-typescript from 2.4.3 to 2.4.4 (#5179)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.4.3 to 2.4.4.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.4.4/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 03:56:01 +00:00
dependabot-preview[bot]
52cb222dfc Build(deps): bump ioredis from 4.17.1 to 4.17.3 (#5176)
Bumps [ioredis](https://github.com/luin/ioredis) from 4.17.1 to 4.17.3.
- [Release notes](https://github.com/luin/ioredis/releases)
- [Changelog](https://github.com/luin/ioredis/blob/master/Changelog.md)
- [Commits](https://github.com/luin/ioredis/compare/v4.17.1...v4.17.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 03:26:19 +00:00
dependabot-preview[bot]
1b9b8a78ba Build(deps-dev): bump gatsby-plugin-react-helmet from 3.3.2 to 3.3.3 (#5173)
Bumps [gatsby-plugin-react-helmet](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-react-helmet) from 3.3.2 to 3.3.3.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-react-helmet/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-react-helmet@3.3.3/packages/gatsby-plugin-react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 03:17:07 +00:00
dependabot-preview[bot]
2f92a41fbe Build(deps-dev): bump @types/node from 14.0.5 to 14.0.11 (#5178)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.5 to 14.0.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 03:04:50 +00:00
dependabot-preview[bot]
45a82eb336 Build(deps-dev): bump gatsby-plugin-catch-links from 2.3.3 to 2.3.4 (#5172)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.3.3 to 2.3.4.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.3.4/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 02:52:13 +00:00
dependabot-preview[bot]
aa965ae198 Build(deps-dev): bump eslint-plugin-jsdoc from 26.0.0 to 27.0.4 (#5174)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 26.0.0 to 27.0.4.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v26.0.0...v27.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 02:32:21 +00:00
dependabot-preview[bot]
6caebdaf86 Build(deps-dev): bump babel-preset-gatsby from 0.4.7 to 0.4.8 (#5170)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.4.7 to 0.4.8.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.4.8/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 02:20:48 +00:00
dependabot-preview[bot]
dba6707e00 Build(deps): bump @sentry/node from 5.15.5 to 5.16.1 (#5171)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.15.5 to 5.16.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.15.5...5.16.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 02:10:12 +00:00
dependabot-preview[bot]
e370dccbdc Build(deps-dev): bump fetch-ponyfill from 6.1.0 to 6.1.1 (#5169)
Bumps [fetch-ponyfill](https://github.com/qubyte/fetch-ponyfill) from 6.1.0 to 6.1.1.
- [Release notes](https://github.com/qubyte/fetch-ponyfill/releases)
- [Changelog](https://github.com/qubyte/fetch-ponyfill/blob/master/HISTORY.md)
- [Commits](https://github.com/qubyte/fetch-ponyfill/compare/v6.1.0...v6.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 02:01:28 +00:00
dependabot-preview[bot]
206a9362c1 Build(deps-dev): bump lint-staged from 10.2.7 to 10.2.9 (#5168)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.2.7 to 10.2.9.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.2.7...v10.2.9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-06-06 01:50:48 +00:00
dependabot-preview[bot]
46f091aefd Build(deps): [security] bump websocket-extensions from 0.1.3 to 0.1.4 (#5167)
Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4. **This update includes a security fix.**
- [Release notes](https://github.com/faye/websocket-extensions-node/releases)
- [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-05 20:40:26 -05:00
Joe Izzard
56ae094afb doc: fixed the link to badge URL spec (#5164)
Co-authored-by: Pierre-Yves B <PyvesDev@gmail.com>
2020-06-04 19:12:13 +02:00
Joe Izzard
a17bb10662 Implement All Contributors Badge, run [GitHubAllContributors] (#5163)
* feat: added all-contributors badge and test

* Update services/github/github-all-contributors.service.js

Updated to schema to ensure the array always exists

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* fix: added branch to parameters

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-06-03 22:44:49 -05:00
328 changed files with 15744 additions and 12518 deletions

View File

@@ -96,32 +96,40 @@ run_package_tests: &run_package_tests
nvm install $NODE_VERSION
nvm use $NODE_VERSION
node --version
# install the shields.io dependencies
npm ci
# run the package tests
npm run test:package
npm run check-types:package
# delete the sheilds.io dependencies
rm -rf node_modules/
# run a smoke test (render a badge with the CLI)
# with only the package dependencies installed
cd badge-maker
npm link
badge cactus grown :green @flat
package_steps: &package_steps
steps:
- checkout
- run:
name: Install dependencies
name: Install node and npm
command: |
set +e
export NVM_DIR="/opt/circleci/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install v12
nvm install v14
nvm use v12
npm install -g npm
npm ci
environment:
CYPRESS_INSTALL_BINARY: 0
- run:
name: Check types
command: npm run check-types:package
# Run the package tests on each currently supported node version. See:
# https://github.com/badges/shields/blob/master/badge-maker/README.md#node-version-support
# https://nodejs.org/en/about/releases/
- run:
<<: *run_package_tests
@@ -129,6 +137,7 @@ package_steps: &package_steps
mocha_reporter: mocha-junit-reporter
MOCHA_FILE: junit/badge-maker/v10/results.xml
NODE_VERSION: v10
CYPRESS_INSTALL_BINARY: 0
name: Run package tests on Node 10
- run:
@@ -137,6 +146,7 @@ package_steps: &package_steps
mocha_reporter: mocha-junit-reporter
MOCHA_FILE: junit/badge-maker/v12/results.xml
NODE_VERSION: v12
CYPRESS_INSTALL_BINARY: 0
name: Run package tests on Node 12
- run:
@@ -145,53 +155,42 @@ package_steps: &package_steps
mocha_reporter: mocha-junit-reporter
MOCHA_FILE: junit/badge-maker/v14/results.xml
NODE_VERSION: v14
CYPRESS_INSTALL_BINARY: 0
name: Run package tests on Node 14
- store_test_results:
path: junit
jobs:
npm-install:
docker:
- image: circleci/node:10
steps:
- checkout
- run:
name: Install dependencies
command: npm ci
environment:
CYPRESS_INSTALL_BINARY: 0
main:
docker:
- image: circleci/node:10
- image: circleci/node:12
<<: *main_steps
main@node-12:
main@node-14:
docker:
- image: circleci/node:12
- image: circleci/node:14
<<: *main_steps
integration:
docker:
- image: circleci/node:10
- image: circleci/node:12
- image: redis
<<: *integration_steps
integration@node-12:
integration@node-14:
docker:
- image: circleci/node:12
- image: circleci/node:14
- image: redis
<<: *integration_steps
danger:
docker:
- image: circleci/node:10
- image: circleci/node:12
steps:
- checkout
@@ -211,7 +210,7 @@ jobs:
frontend:
docker:
- image: circleci/node:10
- image: circleci/node:12
steps:
- checkout
@@ -252,13 +251,13 @@ jobs:
services:
docker:
- image: circleci/node:10
- image: circleci/node:12
<<: *services_steps
services@node-12:
services@node-14:
docker:
- image: circleci/node:12
- image: circleci/node:14
<<: *services_steps
@@ -313,11 +312,11 @@ workflows:
filters:
branches:
ignore: gh-pages
- main@node-12:
- main@node-14:
filters:
branches:
ignore: gh-pages
- integration@node-12:
- integration@node-14:
filters:
branches:
ignore: gh-pages
@@ -335,7 +334,7 @@ workflows:
ignore:
- master
- gh-pages
- services@node-12:
- services@node-14:
filters:
branches:
ignore:

View File

@@ -16,6 +16,8 @@ parserOptions:
settings:
react:
version: '16.8'
jsdoc:
mode: jsdoc
plugins:
- chai-friendly

View File

@@ -1,17 +0,0 @@
---
name: ❓ Support Question
about: Ask a question about shields.io
labels: 'question'
---
:question: **Question**
<!--
Ask your question clearly and concisely.
#support on our [Discord](https://discordapp.com/invite/HjJCwm5)
is also a great place to ask questions and get help
-->
<!-- Love Shields? Please consider donating $10 to sustain our activities:
👉 https://opencollective.com/shields -->

4
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,4 @@
contact_links:
- name: ❓ Support Question
url: https://github.com/badges/shields/discussions
about: Ask a question about Shields.io

View File

@@ -5,6 +5,6 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: chris48s/approve-bot@1.0.0
- uses: chris48s/approve-bot@2.0.1
with:
github-token: '${{ secrets.GITHUB_TOKEN }}'

129
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,129 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
- Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
- The use of sexualized language or imagery, and sexual attention or
advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
![](https://img.shields.io/badge/conduct-%40shields.io-blue) or directly to [@calebcartwright](https://github.com/calebcartwright) ![](https://img.shields.io/badge/caleb-%40shields.io-blue) or [@paulmelnikow](https://github.com/paulmelnikow) ![](https://img.shields.io/badge/paul-%40shields.io-blue)
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

View File

@@ -49,8 +49,9 @@ simple changes, like badge additions. These are usually tagged with
Please review [these impeccable guidelines][code review guidelines].
You can monitor [issues][] and the [chat room][], and help other people who
have questions about contributing to Shields, or using it for their projects.
You can monitor [issues][], [discussions][] and the [chat room][], and help
other people who have questions about contributing to Shields, or using it
for their projects.
Feel free to reach out to one of the [maintainers][]
if you need help getting started.
@@ -58,6 +59,7 @@ if you need help getting started.
[service badge pr tag]: https://github.com/badges/shields/pulls?q=is%3Apr+is%3Aopen+label%3Aservice-badge
[code review guidelines]: https://kickstarter.engineering/a-guide-to-mindful-communication-in-code-reviews-48aab5282e5e
[issues]: https://github.com/badges/shields/issues
[discussions]: https://github.com/badges/shields/discussions
[chat room]: https://discordapp.com/invite/HjJCwm5
[maintainers]: https://github.com/badges/shields#project-leaders
@@ -86,9 +88,9 @@ We're also asking for [one-time \$10 donations](https://opencollective.com/shiel
There are three places to get help:
1. If you're new to the project, a good place to start is the [tutorial][].
2. If you need help getting started or implementing a change, [open an issue][]
2. If you need help getting started or implementing a change, [start a discussion][discussions]
with your question. We promise it's okay to do that. If there is already an
issue open for the feature you're working on, you can post there.
issue open for the feature you're working on, you can post there directly.
3. You can also join the [chat room][] and ask your question there.
[tutorial]: doc/TUTORIAL.md
@@ -96,11 +98,18 @@ There are three places to get help:
## Badge guidelines
- Shields.io hosts integrations for services which are primarily
used by developers or which are widely used by developers
used by developers or which are widely used by developers.
- The left-hand side of a badge should not advertise. It should be a lowercase _noun_
succinctly describing the meaning of the right-hand side.
- Except for badges using the `social` style, logos should be _turned off by
default_.
- Badges should not obtain data from undocumented or reverse-engineered API endpoints.
- Badges should not obtain data by scraping web pages - these are likely to break frequently.
Whereas API publishers are incentivised to maintain a stable platform for their users,
authors of web pages have no such incentive.
- Badges may require users to specify a token in the badge URL as long it is scoped only to
fetching information and doesn't expose any sensitive information. Generating a token with the
correct scope must be clearly documented.
## Badge URLs

View File

@@ -1,4 +1,4 @@
FROM node:10-alpine
FROM node:12-alpine
RUN mkdir -p /usr/src/app
RUN mkdir /usr/src/app/private

View File

@@ -70,10 +70,14 @@ This repo hosts:
[Make your own badges!][custom badges]
(Quick example: `https://img.shields.io/badge/left-right-f39f37`)
Browse a [complete list of badges][shields.io].
[custom badges]: http://shields.io/#your-badge
### Quickstart
Browse a [complete list of badges][shields.io] and locate a particular badge by using the search bar or by browsing the categories. Click on the badge to fill in required data elements for that badge type (like your username or repo) and optionally customize (label, colors etc.). And it's ready for use!
Use the button at the bottom to copy your badge url or snippet, which can then be added to places like your GitHub readme files or other web pages.
## Contributing
Shields is a community project. We invite your participation through issues
@@ -94,8 +98,8 @@ You can read a [tutorial on how to add a badge][tutorial].
## Development
1. Install Node 8 or later. You can use the [package manager][] of your choice.
Tests need to pass in Node 8 and 10.
1. Install Node 12 or later. You can use the [package manager][] of your choice.
Tests need to pass in Node 12 and 14.
2. Clone this repository.
3. Run `npm ci` to install the dependencies.
4. Run `npm start` to start the badge server and the frontend dev server.
@@ -124,8 +128,8 @@ Please report any Gitpod bugs, questions, or suggestions in issue
[Snapshot tests][] ensure we don't inadvertently make changes that affect the
SVG or JSON output. When deliberately changing the output, run
`SNAPSHOT_DRY=1 npm run test:js:server` to preview changes to the saved
snapshots, and `SNAPSHOT_UPDATE=1 npm run test:js:server` to update them.
`SNAPSHOT_DRY=1 npm run test:package` to preview changes to the saved
snapshots, and `SNAPSHOT_UPDATE=1 npm run test:package` to update them.
The server can be configured to use [Sentry][] ([configuration][sentry configuration]) and [Prometheus][] ([configuration][prometheus configuration]).
@@ -183,7 +187,6 @@ Maintainers:
- [calebcartwright](https://github.com/calebcartwright) (core team)
- [chris48s](https://github.com/chris48s) (core team)
- [Daniel15](https://github.com/Daniel15) (core team)
- [espadrine](https://github.com/espadrine) (core team)
- [paulmelnikow](https://github.com/paulmelnikow) (core team)
- [platan](https://github.com/platan) (core team)
- [PyvesB](https://github.com/PyvesB) (core team)
@@ -193,20 +196,20 @@ Operations:
- [calebcartwright](https://github.com/calebcartwright)
- [chris48s](https://github.com/chris48s)
- [espadrine](https://github.com/espadrine)
- [paulmelnikow](https://github.com/paulmelnikow)
- [PyvesB](https://github.com/PyvesB)
Alumni:
- [espadrine](https://github.com/espadrine)
- [olivierlacan](https://github.com/olivierlacan)
## Related projects
- [badgerbadgerbadger gem][gem]
- [poser PHP library][poser]
- [pybadges python library][pybadges]
[gem]: https://github.com/badges/badgerbadgerbadger
[poser]: https://github.com/badges/poser
[pybadges]: https://github.com/google/pybadges
## License
@@ -217,28 +220,6 @@ domain unless specified otherwise.
The assets in `logo/` are trademarks of their respective companies and are
under their terms and license.
## Contributors
## Community
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
<a href="https://github.com/badges/shields/graphs/contributors"><img src="https://opencollective.com/shields/contributors.svg?width=890" /></a>
## Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/shields#backer)]
<a href="https://opencollective.com/shields#backers" target="_blank"><img src="https://opencollective.com/shields/backers.svg?width=890"></a>
## Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/shields#sponsor)]
<a href="https://opencollective.com/shields/sponsor/0/website" target="_blank"><img src="https://opencollective.com/shields/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/shields/sponsor/1/website" target="_blank"><img src="https://opencollective.com/shields/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/shields/sponsor/2/website" target="_blank"><img src="https://opencollective.com/shields/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/shields/sponsor/3/website" target="_blank"><img src="https://opencollective.com/shields/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/shields/sponsor/4/website" target="_blank"><img src="https://opencollective.com/shields/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/shields/sponsor/5/website" target="_blank"><img src="https://opencollective.com/shields/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/shields/sponsor/6/website" target="_blank"><img src="https://opencollective.com/shields/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/shields/sponsor/7/website" target="_blank"><img src="https://opencollective.com/shields/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/shields/sponsor/8/website" target="_blank"><img src="https://opencollective.com/shields/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/shields/sponsor/9/website" target="_blank"><img src="https://opencollective.com/shields/sponsor/9/avatar.svg"></a>
Thanks to the people and companies who donate money, services or time to keep the project running. [https://shields.io/community](https://shields.io/community)

View File

@@ -1,127 +1,135 @@
exports['The badge generator SVG should match snapshot 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="90" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="45" height="20" fill="#555"/><rect x="45" width="45" height="20" fill="#4c1"/><rect width="90" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="235" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="235" y="140" transform="scale(.1)" textLength="350">cactus</text><text x="665" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="665" y="140" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20" role="img" aria-label="cactus: grown"><title>cactus: grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="90" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="45" height="20" fill="#555"/><rect x="45" width="45" height="20" fill="#4c1"/><rect width="90" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="235" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="235" y="140" transform="scale(.1)" fill="#fff" textLength="350">cactus</text><text aria-hidden="true" x="665" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="665" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "flat" template badge generation should match snapshots: message/label, no logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="90" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="45" height="20" fill="#0f0"/><rect x="45" width="45" height="20" fill="#b3e"/><rect width="90" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="235" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="235" y="140" transform="scale(.1)" textLength="350">cactus</text><text x="665" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="665" y="140" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20" role="img" aria-label="cactus: grown"><title>cactus: grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="90" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="45" height="20" fill="#0f0"/><rect x="45" width="45" height="20" fill="#b3e"/><rect width="90" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="235" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="235" y="140" transform="scale(.1)" fill="#fff" textLength="350">cactus</text><text aria-hidden="true" x="665" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="665" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "flat" template badge generation should match snapshots: message/label, with logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="107" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="107" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="62" height="20" fill="#0f0"/><rect x="62" width="45" height="20" fill="#b3e"/><rect width="107" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="405" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="405" y="140" transform="scale(.1)" textLength="350">cactus</text><text x="835" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="835" y="140" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="107" height="20" role="img" aria-label="cactus: grown"><title>cactus: grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="107" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="62" height="20" fill="#0f0"/><rect x="62" width="45" height="20" fill="#b3e"/><rect width="107" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text aria-hidden="true" x="405" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="405" y="140" transform="scale(.1)" fill="#fff" textLength="350">cactus</text><text aria-hidden="true" x="835" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="835" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "flat" template badge generation should match snapshots: message only, no logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="45" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="45" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="0" height="20" fill="#b3e"/><rect x="0" width="45" height="20" fill="#b3e"/><rect width="45" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="225" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="225" y="140" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="45" height="20" role="img" aria-label="grown"><title>grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="45" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="0" height="20" fill="#b3e"/><rect x="0" width="45" height="20" fill="#b3e"/><rect width="45" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="225" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="225" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "flat" template badge generation should match snapshots: message only, with logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="63" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="63" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="0" height="20" fill="#555"/><rect x="0" width="63" height="20" fill="#b3e"/><rect width="63" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="405" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="405" y="140" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="63" height="20" role="img" aria-label="grown"><title>grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="63" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="0" height="20" fill="#555"/><rect x="0" width="63" height="20" fill="#b3e"/><rect width="63" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text aria-hidden="true" x="405" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="405" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "flat" template badge generation should match snapshots: message only, with logo and labelColor 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="69" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="69" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="24" height="20" fill="#0f0"/><rect x="24" width="45" height="20" fill="#b3e"/><rect width="69" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="455" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="455" y="140" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="69" height="20" role="img" aria-label="grown"><title>grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="69" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="24" height="20" fill="#0f0"/><rect x="24" width="45" height="20" fill="#b3e"/><rect width="69" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text aria-hidden="true" x="455" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="455" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "flat" template badge generation should match snapshots: message/label, with links 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="90" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="45" height="20" fill="#0f0"/><rect x="45" width="45" height="20" fill="#b3e"/><rect width="90" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="235" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="235" y="140" transform="scale(.1)" textLength="350">cactus</text><text x="665" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="665" y="140" transform="scale(.1)" textLength="350">grown</text></g><a target="_blank" xlink:href="https://www.google.co.uk/"><rect width="90" height="20" fill="rgba(0,0,0,0)"/></a><a target="_blank" xlink:href="https://shields.io/"><rect width="45" height="20" fill="rgba(0,0,0,0)"/></a></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20" ><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="90" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="45" height="20" fill="#0f0"/><rect x="45" width="45" height="20" fill="#b3e"/><rect width="90" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><a target="_blank" xlink:href="https://shields.io/"><rect width="45" x="0" height="20" fill="rgba(0,0,0,0)" /><text aria-hidden="true" x="235" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="235" y="140" transform="scale(.1)" fill="#fff" textLength="350">cactus</text></a><a target="_blank" xlink:href="https://www.google.co.uk/"><rect width="45" x="45" height="20" fill="rgba(0,0,0,0)" /><text aria-hidden="true" x="665" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="665" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></a></g></svg>
`
exports['The badge generator "flat-square" template badge generation should match snapshots: message/label, no logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20"><g shape-rendering="crispEdges"><rect width="45" height="20" fill="#0f0"/><rect x="45" width="45" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="235" y="140" transform="scale(.1)" textLength="350">cactus</text><text x="665" y="140" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20" role="img" aria-label="cactus: grown"><title>cactus: grown</title><g shape-rendering="crispEdges"><rect width="45" height="20" fill="#0f0"/><rect x="45" width="45" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="235" y="140" transform="scale(.1)" fill="#fff" textLength="350">cactus</text><text x="665" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "flat-square" template badge generation should match snapshots: message/label, with logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="107" height="20"><g shape-rendering="crispEdges"><rect width="62" height="20" fill="#0f0"/><rect x="62" width="45" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="405" y="140" transform="scale(.1)" textLength="350">cactus</text><text x="835" y="140" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="107" height="20" role="img" aria-label="cactus: grown"><title>cactus: grown</title><g shape-rendering="crispEdges"><rect width="62" height="20" fill="#0f0"/><rect x="62" width="45" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="405" y="140" transform="scale(.1)" fill="#fff" textLength="350">cactus</text><text x="835" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "flat-square" template badge generation should match snapshots: message only, no logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="45" height="20"><g shape-rendering="crispEdges"><rect width="0" height="20" fill="#b3e"/><rect x="0" width="45" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="225" y="140" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="45" height="20" role="img" aria-label="grown"><title>grown</title><g shape-rendering="crispEdges"><rect width="0" height="20" fill="#b3e"/><rect x="0" width="45" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="225" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "flat-square" template badge generation should match snapshots: message only, with logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="63" height="20"><g shape-rendering="crispEdges"><rect width="0" height="20" fill="#555"/><rect x="0" width="63" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="405" y="140" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="63" height="20" role="img" aria-label="grown"><title>grown</title><g shape-rendering="crispEdges"><rect width="0" height="20" fill="#555"/><rect x="0" width="63" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="405" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "flat-square" template badge generation should match snapshots: message only, with logo and labelColor 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="69" height="20"><g shape-rendering="crispEdges"><rect width="24" height="20" fill="#0f0"/><rect x="24" width="45" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="455" y="140" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="69" height="20" role="img" aria-label="grown"><title>grown</title><g shape-rendering="crispEdges"><rect width="24" height="20" fill="#0f0"/><rect x="24" width="45" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="455" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "flat-square" template badge generation should match snapshots: message/label, with links 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20"><g shape-rendering="crispEdges"><rect width="45" height="20" fill="#0f0"/><rect x="45" width="45" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="235" y="140" transform="scale(.1)" textLength="350">cactus</text><text x="665" y="140" transform="scale(.1)" textLength="350">grown</text></g><a target="_blank" xlink:href="https://www.google.co.uk/"><rect width="90" height="20" fill="rgba(0,0,0,0)"/></a><a target="_blank" xlink:href="https://shields.io/"><rect width="45" height="20" fill="rgba(0,0,0,0)"/></a></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20" ><g shape-rendering="crispEdges"><rect width="45" height="20" fill="#0f0"/><rect x="45" width="45" height="20" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><a target="_blank" xlink:href="https://shields.io/"><rect width="45" x="0" height="20" fill="rgba(0,0,0,0)" /><text x="235" y="140" transform="scale(.1)" fill="#fff" textLength="350">cactus</text></a><a target="_blank" xlink:href="https://www.google.co.uk/"><rect width="45" x="45" height="20" fill="rgba(0,0,0,0)" /><text x="665" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></a></g></svg>
`
exports['The badge generator "plastic" template badge generation should match snapshots: message/label, no logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="18"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="90" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="45" height="18" fill="#0f0"/><rect x="45" width="45" height="18" fill="#b3e"/><rect width="90" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="235" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="235" y="130" transform="scale(.1)" textLength="350">cactus</text><text x="665" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="665" y="130" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="18" role="img" aria-label="cactus: grown"><title>cactus: grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="90" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="45" height="18" fill="#0f0"/><rect x="45" width="45" height="18" fill="#b3e"/><rect width="90" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="235" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="235" y="130" transform="scale(.1)" fill="#fff" textLength="350">cactus</text><text aria-hidden="true" x="665" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="665" y="130" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "plastic" template badge generation should match snapshots: message/label, with logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="107" height="18"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="107" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="62" height="18" fill="#0f0"/><rect x="62" width="45" height="18" fill="#b3e"/><rect width="107" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="2" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="405" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="405" y="130" transform="scale(.1)" textLength="350">cactus</text><text x="835" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="835" y="130" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="107" height="18" role="img" aria-label="cactus: grown"><title>cactus: grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="107" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="62" height="18" fill="#0f0"/><rect x="62" width="45" height="18" fill="#b3e"/><rect width="107" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="2" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text aria-hidden="true" x="405" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="405" y="130" transform="scale(.1)" fill="#fff" textLength="350">cactus</text><text aria-hidden="true" x="835" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="835" y="130" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "plastic" template badge generation should match snapshots: message only, no logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="45" height="18"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="45" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="0" height="18" fill="#b3e"/><rect x="0" width="45" height="18" fill="#b3e"/><rect width="45" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="225" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="225" y="130" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="45" height="18" role="img" aria-label="grown"><title>grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="45" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="0" height="18" fill="#b3e"/><rect x="0" width="45" height="18" fill="#b3e"/><rect width="45" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="225" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="225" y="130" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "plastic" template badge generation should match snapshots: message only, with logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="63" height="18"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="63" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="0" height="18" fill="#555"/><rect x="0" width="63" height="18" fill="#b3e"/><rect width="63" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="2" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="405" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="405" y="130" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="63" height="18" role="img" aria-label="grown"><title>grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="63" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="0" height="18" fill="#555"/><rect x="0" width="63" height="18" fill="#b3e"/><rect width="63" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="2" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text aria-hidden="true" x="405" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="405" y="130" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "plastic" template badge generation should match snapshots: message only, with logo and labelColor 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="69" height="18"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="69" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="24" height="18" fill="#0f0"/><rect x="24" width="45" height="18" fill="#b3e"/><rect width="69" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="2" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="455" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="455" y="130" transform="scale(.1)" textLength="350">grown</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="69" height="18" role="img" aria-label="grown"><title>grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="69" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="24" height="18" fill="#0f0"/><rect x="24" width="45" height="18" fill="#b3e"/><rect width="69" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="2" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text aria-hidden="true" x="455" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="455" y="130" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator "plastic" template badge generation should match snapshots: message/label, with links 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="18"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="90" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="45" height="18" fill="#0f0"/><rect x="45" width="45" height="18" fill="#b3e"/><rect width="90" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="235" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="235" y="130" transform="scale(.1)" textLength="350">cactus</text><text x="665" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="665" y="130" transform="scale(.1)" textLength="350">grown</text></g><a target="_blank" xlink:href="https://www.google.co.uk/"><rect width="90" height="18" fill="rgba(0,0,0,0)"/></a><a target="_blank" xlink:href="https://shields.io/"><rect width="45" height="18" fill="rgba(0,0,0,0)"/></a></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="18" ><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-color="#000" stop-opacity=".3"/><stop offset="1" stop-color="#000" stop-opacity=".5"/></linearGradient><clipPath id="r"><rect width="90" height="18" rx="4" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="45" height="18" fill="#0f0"/><rect x="45" width="45" height="18" fill="#b3e"/><rect width="90" height="18" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><a target="_blank" xlink:href="https://shields.io/"><rect width="45" x="0" height="18" fill="rgba(0,0,0,0)" /><text aria-hidden="true" x="235" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="235" y="130" transform="scale(.1)" fill="#fff" textLength="350">cactus</text></a><a target="_blank" xlink:href="https://www.google.co.uk/"><rect width="45" x="45" height="18" fill="rgba(0,0,0,0)" /><text aria-hidden="true" x="665" y="140" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="665" y="130" transform="scale(.1)" fill="#fff" textLength="350">grown</text></a></g></svg>
`
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message/label, no logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="147" height="28"><g shape-rendering="crispEdges"><rect width="74" height="28" fill="#0f0"/><rect x="74" width="73" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><text x="370" y="175" transform="scale(.1)" textLength="500">CACTUS</text><text x="1105" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="147" height="28" role="img" aria-label="CACTUS: GROWN"><title>CACTUS: GROWN</title><g shape-rendering="crispEdges"><rect width="74" height="28" fill="#0f0"/><rect x="74" width="73" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><text fill="#fff" x="370" y="175" transform="scale(.1)" textLength="500">CACTUS</text><text fill="#fff" x="1105" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g></svg>
`
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message/label, with logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="164" height="28"><g shape-rendering="crispEdges"><rect width="91" height="28" fill="#0f0"/><rect x="91" width="73" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><image x="9" y="7" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="540" y="175" transform="scale(.1)" textLength="500">CACTUS</text><text x="1275" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="164" height="28" role="img" aria-label="CACTUS: GROWN"><title>CACTUS: GROWN</title><g shape-rendering="crispEdges"><rect width="91" height="28" fill="#0f0"/><rect x="91" width="73" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><image x="9" y="7" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text fill="#fff" x="540" y="175" transform="scale(.1)" textLength="500">CACTUS</text><text fill="#fff" x="1275" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g></svg>
`
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message only, no logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="73" height="28"><g shape-rendering="crispEdges"><rect width="0" height="28" fill="#b3e"/><rect x="0" width="73" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><text x="365" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="73" height="28" role="img" aria-label="GROWN"><title>GROWN</title><g shape-rendering="crispEdges"><rect width="0" height="28" fill="#b3e"/><rect x="0" width="73" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><text fill="#fff" x="365" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g></svg>
`
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message only, with logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="91" height="28"><g shape-rendering="crispEdges"><rect width="0" height="28" fill="#555"/><rect x="0" width="91" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><image x="9" y="7" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="545" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="91" height="28" role="img" aria-label="GROWN"><title>GROWN</title><g shape-rendering="crispEdges"><rect width="0" height="28" fill="#555"/><rect x="0" width="91" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><image x="9" y="7" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text fill="#fff" x="545" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g></svg>
`
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message only, with logo and labelColor 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="105" height="28"><g shape-rendering="crispEdges"><rect width="32" height="28" fill="#0f0"/><rect x="32" width="73" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><image x="9" y="7" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="230" y="175" transform="scale(.1)" textLength="-60"></text><text x="685" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="105" height="28" role="img" aria-label="GROWN"><title>GROWN</title><g shape-rendering="crispEdges"><rect width="32" height="28" fill="#0f0"/><rect x="32" width="73" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><image x="9" y="7" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text fill="#fff" x="230" y="175" transform="scale(.1)" textLength="-60"></text><text fill="#fff" x="685" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g></svg>
`
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message/label, with links 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="147" height="28"><g shape-rendering="crispEdges"><rect width="74" height="28" fill="#0f0"/><rect x="74" width="73" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><text x="370" y="175" transform="scale(.1)" textLength="500">CACTUS</text><text x="1105" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g><a target="_blank" xlink:href="https://www.google.co.uk/"><rect width="147" height="28" fill="rgba(0,0,0,0)"/></a><a target="_blank" xlink:href="https://shields.io/"><rect width="74" height="28" fill="rgba(0,0,0,0)"/></a></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="147" height="28" ><g shape-rendering="crispEdges"><rect width="74" height="28" fill="#0f0"/><rect x="74" width="73" height="28" fill="#b3e"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><a target="_blank" xlink:href="https://shields.io/"><rect width="74" height="28" fill="rgba(0,0,0,0)"/><text fill="#fff" x="370" y="175" transform="scale(.1)" textLength="500">CACTUS</text></a><a target="_blank" xlink:href="https://www.google.co.uk/"><rect width="73" height="28" x="74" fill="rgba(0,0,0,0)"/><text fill="#fff" x="1105" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></a></g></svg>
`
exports['The badge generator "social" template badge generation should match snapshots: message/label, no logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="95" height="20"><style>a #llink:hover{fill:url(#b);stroke:#ccc}a #rlink:hover{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="47" height="19" rx="2"/><rect x="53.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="53" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M53.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><g fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><text x="235" y="150" fill="#fff" transform="scale(.1)" textLength="370">Cactus</text><text x="235" y="140" transform="scale(.1)" textLength="370">Cactus</text><text x="735" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><text id="rlink" x="735" y="140" transform="scale(.1)" textLength="330">grown</text></g><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="47" height="19" rx="2" /></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="95" height="20" role="img" aria-label="Cactus: grown"><title>Cactus: grown</title><style>a:hover #llink{fill:url(#b);stroke:#ccc}a:hover #rlink{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="47" height="19" rx="2"/><rect x="53.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="53" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M53.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><g aria-hidden="true" fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="47" height="19" rx="2" /><text aria-hidden="true" x="235" y="150" fill="#fff" transform="scale(.1)" textLength="370">Cactus</text><text x="235" y="140" transform="scale(.1)" textLength="370">Cactus</text><text aria-hidden="true" x="735" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><text id="rlink" x="735" y="140" transform="scale(.1)" textLength="330">grown</text></g></svg>
`
exports['The badge generator "social" template badge generation should match snapshots: message/label, with logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="112" height="20"><style>a #llink:hover{fill:url(#b);stroke:#ccc}a #rlink:hover{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="64" height="19" rx="2"/><rect x="70.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="70" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M70.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><g fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><text x="405" y="150" fill="#fff" transform="scale(.1)" textLength="370">Cactus</text><text x="405" y="140" transform="scale(.1)" textLength="370">Cactus</text><text x="905" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><text id="rlink" x="905" y="140" transform="scale(.1)" textLength="330">grown</text></g><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="64" height="19" rx="2" /></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="112" height="20" role="img" aria-label="Cactus: grown"><title>Cactus: grown</title><style>a:hover #llink{fill:url(#b);stroke:#ccc}a:hover #rlink{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="64" height="19" rx="2"/><rect x="70.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="70" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M70.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><g aria-hidden="true" fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="64" height="19" rx="2" /><text aria-hidden="true" x="405" y="150" fill="#fff" transform="scale(.1)" textLength="370">Cactus</text><text x="405" y="140" transform="scale(.1)" textLength="370">Cactus</text><text aria-hidden="true" x="905" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><text id="rlink" x="905" y="140" transform="scale(.1)" textLength="330">grown</text></g></svg>
`
exports['The badge generator "social" template badge generation should match snapshots: message only, no logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="59" height="20"><style>a #llink:hover{fill:url(#b);stroke:#ccc}a #rlink:hover{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="11" height="19" rx="2"/><rect x="17.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="17" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M17.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><g fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><text x="55" y="150" fill="#fff" transform="scale(.1)" textLength="10"></text><text x="55" y="140" transform="scale(.1)" textLength="10"></text><text x="375" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><text id="rlink" x="375" y="140" transform="scale(.1)" textLength="330">grown</text></g><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="11" height="19" rx="2" /></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="59" height="20" role="img" aria-label="grown"><title>grown</title><style>a:hover #llink{fill:url(#b);stroke:#ccc}a:hover #rlink{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="11" height="19" rx="2"/><rect x="17.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="17" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M17.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><g aria-hidden="true" fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="11" height="19" rx="2" /><text aria-hidden="true" x="55" y="150" fill="#fff" transform="scale(.1)" textLength="10"></text><text x="55" y="140" transform="scale(.1)" textLength="10"></text><text aria-hidden="true" x="375" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><text id="rlink" x="375" y="140" transform="scale(.1)" textLength="330">grown</text></g></svg>
`
exports['The badge generator "social" template badge generation should match snapshots: message only, with logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="73" height="20"><style>a #llink:hover{fill:url(#b);stroke:#ccc}a #rlink:hover{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="25" height="19" rx="2"/><rect x="31.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="31" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M31.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><g fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><text x="195" y="150" fill="#fff" transform="scale(.1)" textLength="10"></text><text x="195" y="140" transform="scale(.1)" textLength="10"></text><text x="515" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><text id="rlink" x="515" y="140" transform="scale(.1)" textLength="330">grown</text></g><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="25" height="19" rx="2" /></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="73" height="20" role="img" aria-label="grown"><title>grown</title><style>a:hover #llink{fill:url(#b);stroke:#ccc}a:hover #rlink{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="25" height="19" rx="2"/><rect x="31.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="31" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M31.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><g aria-hidden="true" fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="25" height="19" rx="2" /><text aria-hidden="true" x="195" y="150" fill="#fff" transform="scale(.1)" textLength="10"></text><text x="195" y="140" transform="scale(.1)" textLength="10"></text><text aria-hidden="true" x="515" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><text id="rlink" x="515" y="140" transform="scale(.1)" textLength="330">grown</text></g></svg>
`
exports['The badge generator "social" template badge generation should match snapshots: message only, with logo and labelColor 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="73" height="20"><style>a #llink:hover{fill:url(#b);stroke:#ccc}a #rlink:hover{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="25" height="19" rx="2"/><rect x="31.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="31" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M31.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><g fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><text x="195" y="150" fill="#fff" transform="scale(.1)" textLength="10"></text><text x="195" y="140" transform="scale(.1)" textLength="10"></text><text x="515" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><text id="rlink" x="515" y="140" transform="scale(.1)" textLength="330">grown</text></g><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="25" height="19" rx="2" /></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="73" height="20" role="img" aria-label="grown"><title>grown</title><style>a:hover #llink{fill:url(#b);stroke:#ccc}a:hover #rlink{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="25" height="19" rx="2"/><rect x="31.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="31" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M31.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><g aria-hidden="true" fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="25" height="19" rx="2" /><text aria-hidden="true" x="195" y="150" fill="#fff" transform="scale(.1)" textLength="10"></text><text x="195" y="140" transform="scale(.1)" textLength="10"></text><text aria-hidden="true" x="515" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><text id="rlink" x="515" y="140" transform="scale(.1)" textLength="330">grown</text></g></svg>
`
exports['The badge generator "social" template badge generation should match snapshots: message/label, with links 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="95" height="20"><style>a #llink:hover{fill:url(#b);stroke:#ccc}a #rlink:hover{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="47" height="19" rx="2"/><rect x="53.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="53" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M53.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><g fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><text x="235" y="150" fill="#fff" transform="scale(.1)" textLength="370">Cactus</text><text x="235" y="140" transform="scale(.1)" textLength="370">Cactus</text><text x="735" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><a target="_blank" xlink:href="https://www.google.co.uk/"><text id="rlink" x="735" y="140" transform="scale(.1)" textLength="330">grown</text></a></g><a target="_blank" xlink:href="https://shields.io/"><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="47" height="19" rx="2" /></a></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="95" height="20" ><style>a:hover #llink{fill:url(#b);stroke:#ccc}a:hover #rlink{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/><stop offset="1" stop-opacity=".1"/></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="47" height="19" rx="2"/><rect x="53.5" y="0.5" width="41" height="19" rx="2" fill="#fafafa"/><rect x="53" y="7.5" width="0.5" height="5" stroke="#fafafa"/><path d="M53.5 6.5 l-3 3v1 l3 3" stroke="d5d5d5" fill="#fafafa"/></g><g aria-hidden="false" fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><a target="_blank" xlink:href="https://shields.io/"><text aria-hidden="true" x="235" y="150" fill="#fff" transform="scale(.1)" textLength="370">Cactus</text><text x="235" y="140" transform="scale(.1)" textLength="370">Cactus</text><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="47" height="19" rx="2" /></a><a target="_blank" xlink:href="https://www.google.co.uk/"><rect width="42" x="53" height="20" fill="rgba(0,0,0,0)" /><text aria-hidden="true" x="735" y="150" fill="#fff" transform="scale(.1)" textLength="330">grown</text><text id="rlink" x="735" y="140" transform="scale(.1)" textLength="330">grown</text></a></g></svg>
`
exports['The badge generator badges with logos should always produce the same badge badge with logo 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="113" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="113" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="54" height="20" fill="#555"/><rect x="54" width="59" height="20" fill="#4c1"/><rect width="113" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text x="365" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="270">label</text><text x="365" y="140" transform="scale(.1)" textLength="270">label</text><text x="825" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="490">message</text><text x="825" y="140" transform="scale(.1)" textLength="490">message</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="113" height="20" role="img" aria-label="label: message"><title>label: message</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="113" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="54" height="20" fill="#555"/><rect x="54" width="59" height="20" fill="#4c1"/><rect width="113" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"/><text aria-hidden="true" x="365" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="270">label</text><text x="365" y="140" transform="scale(.1)" fill="#fff" textLength="270">label</text><text aria-hidden="true" x="825" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="490">message</text><text x="825" y="140" transform="scale(.1)" fill="#fff" textLength="490">message</text></g></svg>
`
exports['The badge generator text colors should use black text when the label color is light 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20" role="img" aria-label="cactus: grown"><title>cactus: grown</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="90" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="45" height="20" fill="#f3f3f3"/><rect x="45" width="45" height="20" fill="#000"/><rect width="90" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="235" y="150" fill="#ccc" fill-opacity=".3" transform="scale(.1)" textLength="350">cactus</text><text x="235" y="140" transform="scale(.1)" fill="#333" textLength="350">cactus</text><text aria-hidden="true" x="665" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">grown</text><text x="665" y="140" transform="scale(.1)" fill="#fff" textLength="350">grown</text></g></svg>
`
exports['The badge generator text colors should use black text when the message color is light 1'] = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="147" height="28" role="img" aria-label="CACTUS: GROWN"><title>CACTUS: GROWN</title><g shape-rendering="crispEdges"><rect width="74" height="28" fill="#000"/><rect x="74" width="73" height="28" fill="#e2ffe1"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><text fill="#fff" x="370" y="175" transform="scale(.1)" textLength="500">CACTUS</text><text fill="#333" x="1105" y="175" font-weight="bold" transform="scale(.1)" textLength="490">GROWN</text></g></svg>
`

View File

@@ -1,5 +1,9 @@
# Changelog
## 3.2.0
- Accessibility improvements: Help users of assistive technologies to read the badges when used inline
## 3.1.0
- Add TypeScript definitions

View File

@@ -1,15 +1,30 @@
'use strict'
const anafanafo = require('anafanafo')
const { brightness } = require('./color')
const fontFamily = 'font-family="Verdana,Geneva,DejaVu Sans,sans-serif"'
const socialFontFamily =
'font-family="Helvetica Neue,Helvetica,Arial,sans-serif"'
const brightnessThreshold = 0.69
function capitalize(s) {
return `${s.charAt(0).toUpperCase()}${s.slice(1)}`
}
function colorsForBackground(color) {
if (brightness(color) <= brightnessThreshold) {
return {
textColor: '#fff',
shadowColor: '#010101',
}
}
return {
textColor: '#333',
shadowColor: '#ccc',
}
}
function escapeXml(s) {
if (s === undefined || typeof s !== 'string') {
return undefined
@@ -39,6 +54,34 @@ function computeWidths({ label, message }) {
}
}
function createAccessibleText({ label, message }) {
const labelPrefix = label ? `${label}: ` : ''
return labelPrefix + message
}
function hasLinks({ links }) {
const [leftLink, rightLink] = links || []
const hasLeftLink = leftLink && leftLink.length
const hasRightLink = rightLink && rightLink.length
const hasLink = hasLeftLink && hasRightLink
return { hasLink, hasLeftLink, hasRightLink }
}
function shouldWrapBodyWithLink({ links }) {
const { hasLeftLink, hasRightLink } = hasLinks({ links })
return hasLeftLink && !hasRightLink
}
function renderAriaAttributes({ accessibleText, links }) {
const { hasLink } = hasLinks({ links })
return hasLink ? '' : `role="img" aria-label="${escapeXml(accessibleText)}"`
}
function renderTitle({ accessibleText, links }) {
const { hasLink } = hasLinks({ links })
return hasLink ? '' : `<title>${escapeXml(accessibleText)}</title>`
}
function renderLogo({
logo,
badgeHeight,
@@ -65,12 +108,32 @@ function renderLogo({
}
}
function renderLink({
link,
height,
textLength,
horizPadding,
leftMargin,
renderedText,
}) {
const rectHeight = height
const rectWidth = textLength + horizPadding * 2
const rectX = leftMargin > 1 ? leftMargin + 1 : 0
return `<a target="_blank" xlink:href="${escapeXml(link)}">
<rect width="${rectWidth}" x="${rectX}" height="${rectHeight}" fill="rgba(0,0,0,0)" />
${renderedText}
</a>`
}
function renderText({
leftMargin,
horizPadding = 0,
content,
link,
height,
verticalMargin = 0,
shadow = false,
color,
}) {
if (!content.length) {
return { renderedText: '', width: 0 }
@@ -86,47 +149,45 @@ function renderText({
const x = 10 * (leftMargin + 0.5 * textLength + horizPadding)
let renderedText = ''
const { textColor, shadowColor } = colorsForBackground(color)
if (shadow) {
renderedText = `<text x="${x}" y="${shadowMargin}" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="${outTextLength}">${escapedContent}</text>`
renderedText = `<text aria-hidden="true" x="${x}" y="${shadowMargin}" fill="${shadowColor}" fill-opacity=".3" transform="scale(.1)" textLength="${outTextLength}">${escapedContent}</text>`
}
renderedText += `<text x="${x}" y="${textMargin}" transform="scale(.1)" textLength="${outTextLength}">${escapedContent}</text>`
renderedText += `<text x="${x}" y="${textMargin}" transform="scale(.1)" fill="${textColor}" textLength="${outTextLength}">${escapedContent}</text>`
return {
renderedText,
renderedText: link
? renderLink({
link,
height,
textLength,
horizPadding,
leftMargin,
renderedText,
})
: renderedText,
width: textLength,
}
}
function renderLinks({
links: [leftLink, rightLink] = [],
leftWidth,
rightWidth,
height,
}) {
leftLink = escapeXml(leftLink)
rightLink = escapeXml(rightLink)
const hasLeftLink = leftLink && leftLink.length
const hasRightLink = rightLink && rightLink.length
const leftLinkWidth = hasRightLink ? leftWidth : leftWidth + rightWidth
function render({ link, width }) {
return `<a target="_blank" xlink:href="${link}"><rect width="${width}" height="${height}" fill="rgba(0,0,0,0)"/></a>`
}
return (
(hasRightLink
? render({ link: rightLink, width: leftWidth + rightWidth })
: '') +
(hasLeftLink ? render({ link: leftLink, width: leftLinkWidth }) : '')
)
}
function renderBadge({ links, leftWidth, rightWidth, height }, main) {
function renderBadge(
{ links, leftWidth, rightWidth, height, accessibleText },
main
) {
const width = leftWidth + rightWidth
const leftLink = escapeXml(links[0])
return `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="${width}" height="${height}">
${main}
${renderLinks({ links, leftWidth, rightWidth, height })}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="${width}" height="${height}" ${renderAriaAttributes(
{ links, accessibleText }
)}>
${renderTitle({ accessibleText, links })}
${
shouldWrapBodyWithLink({ links })
? `<a target="_blank" xlink:href="${leftLink}">${main}</a>`
: main
}
</svg>`
}
@@ -174,6 +235,8 @@ class Badge {
labelColor = '#555'
}
const [leftLink, rightLink] = links
labelColor = hasLabel || hasLogo ? labelColor : color
labelColor = escapeXml(labelColor)
color = escapeXml(color)
@@ -184,8 +247,11 @@ class Badge {
leftMargin: labelMargin,
horizPadding,
content: label,
link: !shouldWrapBodyWithLink({ links }) && leftLink,
height: this.constructor.height,
verticalMargin: this.constructor.verticalMargin,
shadow: this.constructor.shadow,
color: labelColor,
})
const leftWidth = hasLabel
@@ -205,8 +271,11 @@ class Badge {
leftMargin: messageMargin,
horizPadding,
content: message,
link: rightLink,
height: this.constructor.height,
verticalMargin: this.constructor.verticalMargin,
shadow: this.constructor.shadow,
color,
})
let rightWidth = messageWidth + 2 * horizPadding
@@ -216,12 +285,17 @@ class Badge {
const width = leftWidth + rightWidth
const accessibleText = createAccessibleText({ label, message })
this.links = links
this.leftWidth = leftWidth
this.rightWidth = rightWidth
this.width = width
this.labelColor = labelColor
this.color = color
this.label = label
this.message = message
this.accessibleText = accessibleText
this.renderedLogo = renderedLogo
this.renderedLabel = renderedLabel
this.renderedMessage = renderedMessage
@@ -255,6 +329,7 @@ class Plastic extends Badge {
links: this.links,
leftWidth: this.leftWidth,
rightWidth: this.rightWidth,
accessibleText: this.accessibleText,
height: this.constructor.height,
},
`
@@ -307,6 +382,7 @@ class Flat extends Badge {
links: this.links,
leftWidth: this.leftWidth,
rightWidth: this.rightWidth,
accessibleText: this.accessibleText,
height: this.constructor.height,
},
`
@@ -357,6 +433,7 @@ class FlatSquare extends Badge {
links: this.links,
leftWidth: this.leftWidth,
rightWidth: this.rightWidth,
accessibleText: this.accessibleText,
height: this.constructor.height,
},
`
@@ -437,8 +514,9 @@ function social({
let [leftLink, rightLink] = links
leftLink = escapeXml(leftLink)
rightLink = escapeXml(rightLink)
const hasLeftLink = leftLink && leftLink.length
const hasRightLink = rightLink && rightLink.length
const { hasLeftLink, hasRightLink, hasLink } = hasLinks({ links })
const accessibleText = createAccessibleText({ label, message })
function renderMessageBubble() {
const messageBubbleMainX = labelWidth + 6.5
@@ -450,16 +528,42 @@ function social({
`
}
function renderLabelText() {
const rect = `<rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="${labelWidth}" height="${internalHeight}" rx="2" />`
const shadow = `<text aria-hidden="true" x="${labelTextX}" y="150" fill="#fff" transform="scale(.1)" textLength="${labelTextLength}">${escapedLabel}</text>`
const text = `<text x="${labelTextX}" y="140" transform="scale(.1)" textLength="${labelTextLength}">${escapedLabel}</text>`
if (hasLeftLink && !shouldWrapBodyWithLink({ links })) {
return `
<a target="_blank" xlink:href="${leftLink}">
${shadow}
${text}
${rect}
</a>
`
}
return `
${rect}
${shadow}
${text}
`
}
function renderMessageText() {
const messageTextX = (labelWidth + messageWidth / 2 + 6) * 10
const messageTextLength = (messageWidth - 8) * 10
const escapedMessage = escapeXml(message)
const shadow = `<text x="${messageTextX}" y="150" fill="#fff" transform="scale(.1)" textLength="${messageTextLength}">${escapedMessage}</text>`
const rect = `<rect width="${messageWidth + 1}" x="${
labelWidth + 6
}" height="${internalHeight + 1}" fill="rgba(0,0,0,0)" />`
const shadow = `<text aria-hidden="true" x="${messageTextX}" y="150" fill="#fff" transform="scale(.1)" textLength="${messageTextLength}">${escapedMessage}</text>`
const text = `<text id="rlink" x="${messageTextX}" y="140" transform="scale(.1)" textLength="${messageTextLength}">${escapedMessage}</text>`
if (hasRightLink) {
return `
${shadow}
<a target="_blank" xlink:href="${rightLink}">${text}</a>
<a target="_blank" xlink:href="${rightLink}">
${rect}
${shadow}
${text}
</a>
`
}
return `
@@ -468,23 +572,16 @@ function social({
`
}
function renderLeftLink() {
const rect = `<rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="${labelWidth}" height="${internalHeight}" rx="2" />`
if (hasLeftLink) {
return `<a target="_blank" xlink:href="${leftLink}">${rect}</a>`
}
return rect
}
const badge = renderBadge(
{
links: [],
links,
leftWidth: labelWidth + 1,
rightWidth: hasMessage ? messageWidth + 6 : 0,
accessibleText,
height: externalHeight,
},
`
<style>a #llink:hover{fill:url(#b);stroke:#ccc}a #rlink:hover{fill:#4183c4}</style>
<style>a:hover #llink{fill:url(#b);stroke:#ccc}a:hover #rlink{fill:#4183c4}</style>
<linearGradient id="a" x2="0" y2="100%">
<stop offset="0" stop-color="#fcfcfc" stop-opacity="0"/>
<stop offset="1" stop-opacity=".1"/>
@@ -498,12 +595,10 @@ function social({
${hasMessage ? renderMessageBubble() : ''}
</g>
${renderedLogo}
<g fill="#333" text-anchor="middle" ${socialFontFamily} text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px">
<text x="${labelTextX}" y="150" fill="#fff" transform="scale(.1)" textLength="${labelTextLength}">${escapedLabel}</text>
<text x="${labelTextX}" y="140" transform="scale(.1)" textLength="${labelTextLength}">${escapedLabel}</text>
<g aria-hidden="${!hasLink}" fill="#333" text-anchor="middle" ${socialFontFamily} text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px">
${renderLabelText()}
${hasMessage ? renderMessageText() : ''}
</g>
${renderLeftLink()}
`
)
@@ -568,13 +663,47 @@ function forTheBadge({
color = escapeXml(color)
labelColor = escapeXml(labelColor)
let [leftLink, rightLink] = links
leftLink = escapeXml(leftLink)
rightLink = escapeXml(rightLink)
const { hasLeftLink, hasRightLink } = hasLinks({ links })
const accessibleText = createAccessibleText({ label, message })
function renderLabelText() {
const { textColor } = colorsForBackground(labelColor)
const labelTextX = ((labelWidth + totalLogoWidth) / 2) * 10
const labelTextLength = (labelWidth - (24 + totalLogoWidth)) * 10
const escapedLabel = escapeXml(label)
return `
<text x="${labelTextX}" y="175" transform="scale(.1)" textLength="${labelTextLength}">${escapedLabel}</text>
`
const text = `<text fill="${textColor}" x="${labelTextX}" y="175" transform="scale(.1)" textLength="${labelTextLength}">${escapedLabel}</text>`
if (hasLeftLink && !shouldWrapBodyWithLink({ links })) {
return `
<a target="_blank" xlink:href="${leftLink}">
<rect width="${leftWidth}" height="${height}" fill="rgba(0,0,0,0)"/>
${text}
</a>
`
}
return text
}
function renderMessageText() {
const { textColor } = colorsForBackground(color)
const text = `<text fill="${textColor}" x="${
(labelWidth + messageWidth / 2) * 10
}" y="175" font-weight="bold" transform="scale(.1)" textLength="${
(messageWidth - 24) * 10
}">
${escapeXml(message)}</text>`
if (hasRightLink) {
return `
<a target="_blank" xlink:href="${rightLink}">
<rect width="${rightWidth}" height="${height}" x="${labelWidth}" fill="rgba(0,0,0,0)"/>
${text}
</a>
`
}
return text
}
const badge = renderBadge(
@@ -582,6 +711,7 @@ function forTheBadge({
links,
leftWidth,
rightWidth,
accessibleText,
height,
},
`
@@ -592,12 +722,7 @@ function forTheBadge({
<g fill="#fff" text-anchor="middle" ${fontFamily} text-rendering="geometricPrecision" font-size="100">
${renderedLogo}
${hasLabel ? renderLabelText() : ''}
<text x="${
(labelWidth + messageWidth / 2) * 10
}" y="175" font-weight="bold" transform="scale(.1)" textLength="${
(messageWidth - 24) * 10
}">
${escapeXml(message)}</text>
${renderMessageText()}
</g>`
)
@@ -607,4 +732,10 @@ function forTheBadge({
return badge
}
module.exports = { plastic, flat, flatSquare, social, forTheBadge }
module.exports = {
plastic,
flat,
social,
'flat-square': flatSquare,
'for-the-badge': forTheBadge,
}

View File

@@ -1,6 +1,6 @@
'use strict'
const isCSSColor = require('is-css-color')
const cssColorConverter = require('css-color-converter')
// When updating these, be sure also to update the list in `badge-maker/README.md`.
const namedColors = {
@@ -37,6 +37,13 @@ function isHexColor(s = '') {
return hexColorRegex.test(s)
}
function isCSSColor(color) {
return (
typeof color === 'string' &&
typeof cssColorConverter(color.trim()).toRgbaArray() !== 'undefined'
)
}
function normalizeColor(color) {
if (color === undefined) {
return undefined
@@ -64,9 +71,20 @@ function toSvgColor(color) {
}
}
function brightness(color) {
if (color) {
const rgb = cssColorConverter(color).toRgbaArray()
if (rgb) {
return +((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 255000).toFixed(2)
}
}
return 0
}
module.exports = {
namedColors,
isHexColor,
normalizeColor,
toSvgColor,
brightness,
}

View File

@@ -1,7 +1,12 @@
'use strict'
const { test, given, forCases } = require('sazerac')
const { isHexColor, normalizeColor, toSvgColor } = require('./color')
const {
isHexColor,
normalizeColor,
toSvgColor,
brightness,
} = require('./color')
test(isHexColor, () => {
forCases([given('f00bae'), given('4c1'), given('ABC123')]).expect(true)
@@ -23,15 +28,35 @@ test(normalizeColor, () => {
given('4c1').expect('#4c1')
given('f00f00').expect('#f00f00')
given('ABC123').expect('#abc123')
given('#ccc').expect('#ccc')
given('#fffe').expect('#fffe')
given('#fffeffff').expect('#fffeffff')
given('#ABC123').expect('#abc123')
given('papayawhip').expect('papayawhip')
given('purple').expect('purple')
given(' blue ').expect(' blue ')
given('rgb(100%, 200%, 222%)').expect('rgb(100%, 200%, 222%)')
given('rgb(122, 200, 222)').expect('rgb(122, 200, 222)')
given('rgb(100%, 200, 222)').expect('rgb(100%, 200, 222)')
given('rgba(100, 20, 111, 1)').expect('rgba(100, 20, 111, 1)')
given('hsl(122, 200%, 222%)').expect('hsl(122, 200%, 222%)')
given('hsla(122, 200%, 222%, 1)').expect('hsla(122, 200%, 222%, 1)')
forCases([
given(),
given(''),
given('not-a-color'),
given('#ABCFGH'),
given('rgb(122, 200, 222, 1)'),
given('rgb(-100, 20, 111)'),
given('rgba(-100, 20, 111, 1.1)'),
given('hsl(122, 200, 222, 1)'),
given('hsl(122, 200, 222)'),
given('hsl(122, 200, 222%)'),
given(undefined),
given(null),
given(true),
given(1),
given(Math),
given([]),
given({}),
given(() => {}),
@@ -55,3 +80,12 @@ test(toSvgColor, () => {
given('lightgray').expect('#9f9f9f')
given('informational').expect('#007ec6')
})
test(brightness, () => {
given('white').expect(1)
given('black').expect(0)
given('#abc123').expect(0.66)
given('rgb(10, 5, 128)').expect(0.08)
given(undefined).expect(0)
given('not-a-color').expect(0)
})

View File

@@ -1,6 +1,5 @@
'use strict'
const camelcase = require('camelcase')
const { normalizeColor, toSvgColor } = require('./color')
const badgeRenderers = require('./badge-renderers')
@@ -24,28 +23,26 @@ module.exports = function makeBadge({
const [label, message] = text
color = normalizeColor(color)
labelColor = normalizeColor(labelColor)
// This ought to be the responsibility of the server, not `makeBadge`.
if (format === 'json') {
return JSON.stringify({
label,
message,
logoWidth,
color,
labelColor,
// Only call normalizeColor for the JSON case: this is handled
// internally by toSvgColor in the SVG case.
color: normalizeColor(color),
labelColor: normalizeColor(labelColor),
link: links,
name: label,
value: message,
})
}
const methodName = camelcase(template)
if (!(methodName in badgeRenderers)) {
const render = badgeRenderers[template]
if (!render) {
throw new Error(`Unknown template: '${template}'`)
}
const render = badgeRenderers[methodName]
logoWidth = +logoWidth || (logo ? 14 : 0)

View File

@@ -560,4 +560,30 @@ describe('The badge generator', function () {
snapshot(svg)
})
})
describe('text colors', function () {
it('should use black text when the label color is light', function () {
snapshot(
makeBadge({
text: ['cactus', 'grown'],
format: 'svg',
template: 'flat',
color: '#000',
labelColor: '#f3f3f3',
})
)
})
it('should use black text when the message color is light', function () {
snapshot(
makeBadge({
text: ['cactus', 'grown'],
format: 'svg',
template: 'for-the-badge',
color: '#e2ffe1',
labelColor: '#000',
})
)
})
})
})

View File

@@ -1,6 +1,6 @@
{
"name": "badge-maker",
"version": "3.1.0",
"version": "3.2.0",
"description": "Shields.io badge library",
"keywords": [
"GitHub",
@@ -36,8 +36,7 @@
},
"dependencies": {
"anafanafo": "^1.0.0",
"camelcase": "^5.3.1",
"is-css-color": "^1.0.0"
"css-color-converter": "^1.1.1"
},
"scripts": {
"test": "echo 'Run tests from parent dir'; false"

View File

@@ -64,8 +64,6 @@ public:
fetchLimit: 'FETCH_LIMIT'
shieldsProductionHerokuHacks: 'SHIELDS_PRODUCTION_HEROKU_HACKS'
private:
azure_devops_token: 'AZURE_DEVOPS_TOKEN'
bintray_user: 'BINTRAY_USER'
@@ -74,6 +72,7 @@ private:
bitbucket_password: 'BITBUCKET_PASS'
bitbucket_server_username: 'BITBUCKET_SERVER_USER'
bitbucket_server_password: 'BITBUCKET_SERVER_PASS'
discord_bot_token: 'DISCORD_BOT_TOKEN'
drone_token: 'DRONE_TOKEN'
gh_client_id: 'GH_CLIENT_ID'
gh_client_secret: 'GH_CLIENT_SECRET'
@@ -98,3 +97,4 @@ private:
wheelmap_token: 'WHEELMAP_TOKEN'
influx_username: 'INFLUX_USERNAME'
influx_password: 'INFLUX_PASSWORD'
youtube_api_key: 'YOUTUBE_API_KEY'

View File

@@ -36,6 +36,4 @@ public:
fetchLimit: '10MB'
shieldsProductionHerokuHacks: false
private: {}

View File

@@ -1,5 +1,6 @@
private:
# These are the keys which are set on the production servers.
discord_bot_token: ...
gh_client_id: ...
gh_client_secret: ...
redis_url: ...
@@ -10,3 +11,4 @@ private:
twitch_client_id: ...
twitch_client_secret: ...
wheelmap_token: ...
youtube_api_key: ...

View File

@@ -8,3 +8,4 @@ private:
twitch_client_id: '...'
twitch_client_secret: '...'
wheelmap_token: '...'
youtube_api_key: '...'

View File

@@ -146,9 +146,11 @@ class AuthHelper {
)
}
get _bearerAuthHeader() {
_bearerAuthHeader(bearerKey) {
const { _pass: pass } = this
return this.isConfigured ? { Authorization: `Bearer ${pass}` } : undefined
return this.isConfigured
? { Authorization: `${bearerKey} ${pass}` }
: undefined
}
static _mergeHeaders(requestParams, headers) {
@@ -168,9 +170,15 @@ class AuthHelper {
}
}
withBearerAuthHeader(requestParams) {
withBearerAuthHeader(
requestParams,
bearerKey = 'Bearer' // lgtm [js/hardcoded-credentials]
) {
return this._withAnyAuth(requestParams, requestParams =>
this.constructor._mergeHeaders(requestParams, this._bearerAuthHeader)
this.constructor._mergeHeaders(
requestParams,
this._bearerAuthHeader(bearerKey)
)
)
}

View File

@@ -46,6 +46,9 @@ class BaseGraphqlService extends BaseService {
* and custom error messages e.g: `{ 404: 'package not found' }`.
* This can be used to extend or override the
* [default](https://github.com/badges/shields/blob/master/core/base-service/check-error-response.js#L5)
* @param {Function} [attrs.transformJson=data => data] Function which takes the raw json and transforms it before
* further procesing. In case of multiple query in a single graphql call and few of them
* throw error, partial data might be used ignoring the error.
* @param {Function} [attrs.transformErrors=defaultTransformErrors]
* Function which takes an errors object from a GraphQL
* response and returns an instance of ShieldsRuntimeError.
@@ -61,6 +64,7 @@ class BaseGraphqlService extends BaseService {
variables = {},
options = {},
httpErrorMessages = {},
transformJson = data => data,
transformErrors = defaultTransformErrors,
}) {
const mergedOptions = {
@@ -74,7 +78,7 @@ class BaseGraphqlService extends BaseService {
options: mergedOptions,
errorMessages: httpErrorMessages,
})
const json = this._parseJson(buffer)
const json = transformJson(this._parseJson(buffer))
if (json.errors) {
const exception = transformErrors(json.errors)
if (exception instanceof ShieldsRuntimeError) {

View File

@@ -12,15 +12,8 @@ const dummySchema = Joi.object({
}).required()
class DummyGraphqlService extends BaseGraphqlService {
static get category() {
return 'cat'
}
static get route() {
return {
base: 'foo',
}
}
static category = 'cat'
static route = { base: 'foo' }
async handle() {
const { requiredString } = await this._requestGraphql({

View File

@@ -10,15 +10,8 @@ const dummySchema = Joi.object({
}).required()
class DummyJsonService extends BaseJsonService {
static get category() {
return 'cat'
}
static get route() {
return {
base: 'foo',
}
}
static category = 'cat'
static route = { base: 'foo' }
async handle() {
const { requiredString } = await this._requestJson({

View File

@@ -15,15 +15,8 @@ const schema = Joi.object({
}).required()
class DummySvgScrapingService extends BaseSvgScrapingService {
static get category() {
return 'cat'
}
static get route() {
return {
base: 'foo',
}
}
static category = 'cat'
static route = { base: 'foo' }
async handle() {
return this._requestSvg({
@@ -123,9 +116,7 @@ describe('BaseSvgScrapingService', function () {
it('allows overriding the valueMatcher', async function () {
class WithValueMatcher extends BaseSvgScrapingService {
static get route() {
return {}
}
static route = {}
async handle() {
return this._requestSvg({

View File

@@ -10,15 +10,8 @@ const dummySchema = Joi.object({
}).required()
class DummyXmlService extends BaseXmlService {
static get category() {
return 'cat'
}
static get route() {
return {
base: 'foo',
}
}
static category = 'cat'
static route = { base: 'foo' }
async handle() {
const { requiredString } = await this._requestXml({
@@ -57,9 +50,7 @@ describe('BaseXmlService', function () {
it('forwards options to _sendAndCacheRequest', async function () {
class WithCustomOptions extends BaseXmlService {
static get route() {
return {}
}
static route = {}
async handle() {
const { requiredString } = await this._requestXml({

View File

@@ -10,15 +10,8 @@ const dummySchema = Joi.object({
}).required()
class DummyYamlService extends BaseYamlService {
static get category() {
return 'cat'
}
static get route() {
return {
base: 'foo',
}
}
static category = 'cat'
static route = { base: 'foo' }
async handle() {
const { requiredString } = await this._requestYaml({

View File

@@ -90,9 +90,7 @@ class BaseService {
throw new Error(`Category not set for ${this.name}`)
}
static get isDeprecated() {
return false
}
static isDeprecated = false
/**
* Route to mount this service on
@@ -114,14 +112,12 @@ class BaseService {
* credentials to the request. For example:
* - `{ options: { auth: this.authHelper.basicAuth } }`
* - `{ options: { headers: this.authHelper.bearerAuthHeader } }`
* - `{ options: { qs: { token: this.authHelper.pass } } }`
* - `{ options: { qs: { token: this.authHelper._pass } } }`
*
* @abstract
* @type {module:core/base-service/base~Auth}
*/
static get auth() {
return undefined
}
static auth = undefined
/**
* Array of Example objects describing example URLs for this service.
@@ -139,9 +135,7 @@ class BaseService {
* @abstract
* @type {module:core/base-service/base~Example[]}
*/
static get examples() {
return []
}
static examples = []
static get _cacheLength() {
const cacheLengths = {
@@ -160,9 +154,7 @@ class BaseService {
*
* @type {module:core/base-service/base~DefaultBadgeData}
*/
static get defaultBadgeData() {
return {}
}
static defaultBadgeData = {}
static render(props) {
throw new Error(`render() function not implemented for ${this.name}`)
@@ -228,9 +220,7 @@ class BaseService {
return checkErrorResponse(errorMessages)({ buffer, res })
}
static get enabledMetrics() {
return []
}
static enabledMetrics = []
static isMetricEnabled(metricName) {
return this.enabledMetrics.includes(metricName)

View File

@@ -29,32 +29,19 @@ const queryParamSchema = Joi.object({
.required()
class DummyService extends BaseService {
static get category() {
return 'other'
}
static category = 'other'
static route = { base: 'foo', pattern: ':namedParamA', queryParamSchema }
static get route() {
return {
base: 'foo',
pattern: ':namedParamA',
queryParamSchema,
}
}
static examples = [
{
pattern: ':world',
namedParams: { world: 'World' },
staticPreview: this.render({ namedParamA: 'foo', queryParamA: 'bar' }),
keywords: ['hello'],
},
]
static get examples() {
return [
{
pattern: ':world',
namedParams: { world: 'World' },
staticPreview: this.render({ namedParamA: 'foo', queryParamA: 'bar' }),
keywords: ['hello'],
},
]
}
static get defaultBadgeData() {
return { label: 'cat', namedLogo: 'appveyor' }
}
static defaultBadgeData = { label: 'cat', namedLogo: 'appveyor' }
static render({ namedParamA, queryParamA }) {
return {
@@ -68,9 +55,7 @@ class DummyService extends BaseService {
}
class DummyServiceWithServiceResponseSizeMetricEnabled extends DummyService {
static get enabledMetrics() {
return [MetricNames.SERVICE_RESPONSE_SIZE]
}
static enabledMetrics = [MetricNames.SERVICE_RESPONSE_SIZE]
}
describe('BaseService', function () {
@@ -124,9 +109,7 @@ describe('BaseService', function () {
})
class WithRoute extends BaseService {
static get route() {
return {}
}
static route = {}
}
it('Should throw if handle() is not overridden', function () {
return expect(WithRoute.invoke({}, {}, {})).to.be.rejectedWith(
@@ -567,12 +550,10 @@ describe('BaseService', function () {
})
describe('auth', function () {
class AuthService extends DummyService {
static get auth() {
return {
passKey: 'myci_pass',
serviceKey: 'myci',
isRequired: true,
}
static auth = {
passKey: 'myci_pass',
serviceKey: 'myci',
isRequired: true,
}
async handle() {

View File

@@ -26,33 +26,17 @@ function deprecatedService(attrs) {
)
return class DeprecatedService extends BaseService {
static get name() {
return name
? `Deprecated${name}`
: `Deprecated${camelcase(route.base.replace(/\//g, '_'), {
pascalCase: true,
})}`
}
static name = name
? `Deprecated${name}`
: `Deprecated${camelcase(route.base.replace(/\//g, '_'), {
pascalCase: true,
})}`
static get category() {
return category
}
static get isDeprecated() {
return true
}
static get route() {
return route
}
static get examples() {
return examples
}
static get defaultBadgeData() {
return { label }
}
static category = category
static isDeprecated = true
static route = route
static examples = examples
static defaultBadgeData = { label }
async handle() {
throw new Deprecated({ prettyMessage: message })

View File

@@ -107,6 +107,20 @@ function handleRequest(cacheHeaderConfig, handlerOptions) {
} = handlerOptions
return (queryParams, match, end, ask) => {
/*
This is here for legacy reasons. The badge server and frontend used to live
on two different servers. When we merged them there was a conflict so we
did this to avoid moving the endpoint docs to another URL.
Never ever do this again.
*/
if (match[0] === '/endpoint' && Object.keys(queryParams).length === 0) {
ask.res.statusCode = 301
ask.res.setHeader('Location', '/endpoint/')
ask.res.end()
return
}
const reqTime = new Date()
// `defaultCacheLengthSeconds` can be overridden by

View File

@@ -3,28 +3,12 @@
const BaseJsonService = require('../base-json')
class GoodServiceOne extends BaseJsonService {
static get category() {
return 'build'
}
static get route() {
return {
base: 'good',
pattern: 'one',
}
}
static category = 'build'
static route = { base: 'good', pattern: 'one' }
}
class GoodServiceTwo extends BaseJsonService {
static get category() {
return 'build'
}
static get route() {
return {
base: 'good',
pattern: 'two',
}
}
static category = 'build'
static route = { base: 'good', pattern: 'two' }
}
module.exports = [GoodServiceOne, GoodServiceTwo]

View File

@@ -3,16 +3,8 @@
const BaseJsonService = require('../base-json')
class GoodService extends BaseJsonService {
static get category() {
return 'build'
}
static get route() {
return {
base: 'it/is',
pattern: 'good',
}
}
static category = 'build'
static route = { base: 'it/is', pattern: 'good' }
}
module.exports = GoodService

View File

@@ -3,28 +3,12 @@
const BaseJsonService = require('../base-json')
class GoodServiceOne extends BaseJsonService {
static get category() {
return 'build'
}
static get route() {
return {
base: 'good',
pattern: 'one',
}
}
static category = 'build'
static route = { base: 'good', pattern: 'one' }
}
class GoodServiceTwo extends BaseJsonService {
static get category() {
return 'build'
}
static get route() {
return {
base: 'good',
pattern: 'two',
}
}
static category = 'build'
static route = { base: 'good', pattern: 'two' }
}
module.exports = { GoodServiceOne, GoodServiceTwo }

View File

@@ -41,27 +41,15 @@ module.exports = function redirector(attrs) {
} = Joi.attempt(attrs, attrSchema, `Redirector for ${attrs.route.base}`)
return class Redirector extends BaseService {
static get name() {
if (name) {
return name
} else {
return `${camelcase(route.base.replace(/\//g, '_'), {
pascalCase: true,
})}Redirect`
}
}
static name =
name ||
`${camelcase(route.base.replace(/\//g, '_'), {
pascalCase: true,
})}Redirect`
static get category() {
return category
}
static get isDeprecated() {
return true
}
static get route() {
return route
}
static category = category
static isDeprecated = true
static route = route
static register({ camp, metricInstance }, { rasterUrl }) {
const { regex, captureNames } = prepareRoute({

View File

@@ -20,12 +20,12 @@ function setRoutes({ rateLimit }, { server, metricInstance }) {
const ipRateLimit = new RateLimit({
// Exclude IPs for GitHub Camo, determined experimentally by running e.g.
// `curl --insecure -u ":shields-secret" https://s0.shields-server.com/sys/rate-limit`
whitelist: /^(?:192\.30\.252\.\d+)|(?:140\.82\.115\.\d+)$/,
safelist: /^(?:192\.30\.252\.\d+)|(?:140\.82\.115\.\d+)$/,
})
const badgeTypeRateLimit = new RateLimit({ maxHitsPerPeriod: 3000 })
const refererRateLimit = new RateLimit({
maxHitsPerPeriod: 300,
whitelist: /^https?:\/\/shields\.io\/$/,
safelist: /^https?:\/\/shields\.io\/$/,
})
server.handle((req, res, next) => {

View File

@@ -10,7 +10,7 @@ module.exports = class RateLimit {
this.maxHitsPerPeriod = options.maxHitsPerPeriod || 500
this.banned = new Set()
this.bannedUrls = new Set()
this.whitelist = options.whitelist || /(?!)/ // Matches nothing by default.
this.safelist = options.safelist || /(?!)/ // Matches nothing by default.
this.interval = setInterval(this.resetHits.bind(this), this.period * 1000)
}
@@ -29,7 +29,7 @@ module.exports = class RateLimit {
const hitsInCurrentPeriod = this.hits.get(reqParam) || 0
if (
reqParam != null &&
!this.whitelist.test(reqParam) &&
!this.safelist.test(reqParam) &&
hitsInCurrentPeriod > this.maxHitsPerPeriod
) {
this.banned.add(reqParam)

View File

@@ -148,13 +148,13 @@ const publicConfigSchema = Joi.object({
rateLimit: Joi.boolean().required(),
handleInternalErrors: Joi.boolean().required(),
fetchLimit: Joi.string().regex(/^[0-9]+(b|kb|mb|gb|tb)$/i),
shieldsProductionHerokuHacks: Joi.boolean(),
}).required()
const privateConfigSchema = Joi.object({
azure_devops_token: Joi.string(),
bintray_user: Joi.string(),
bintray_apikey: Joi.string(),
discord_bot_token: Joi.string(),
drone_token: Joi.string(),
gh_client_id: Joi.string(),
gh_client_secret: Joi.string(),
@@ -180,6 +180,7 @@ const privateConfigSchema = Joi.object({
wheelmap_token: Joi.string(),
influx_username: Joi.string(),
influx_password: Joi.string(),
youtube_api_key: Joi.string(),
}).required()
const privateMetricsInfluxConfigSchema = privateConfigSchema.append({
influx_username: Joi.string().required(),
@@ -391,8 +392,6 @@ class Server {
rasterUrl: config.public.rasterUrl,
private: config.private,
public: config.public,
shieldsProductionHerokuHacks:
config.public.shieldsProductionHerokuHacks,
}
)
)

View File

@@ -25,7 +25,7 @@ and learn about the [Github workflow](http://try.github.io/).
#### Node, NPM
Node 10 or later is required. If you don't already have them,
Node 12 or later is required. If you don't already have them,
install node and npm: https://nodejs.org/en/download/
### Setup a dev install
@@ -116,17 +116,10 @@ const { BaseService } = require('..')
// (3)
module.exports = class Example extends BaseService {
// (4)
static get category() {
return 'build'
}
static category = 'build'
// (5)
static get route() {
return {
base: 'example',
pattern: ':text',
}
}
static route = { base: 'example', pattern: ':text' }
// (6)
async handle({ text }) {
@@ -151,7 +144,7 @@ Description of the code:
number of named parameters. These are converted into
regular expressions by [`path-to-regexp`][path-to-regexp].
Because a service instance won't be created until it's time to handle a request, the route and other metadata must be obtained by examining the classes themselves. [That's why they're marked `static`.][static]
- There is additional documentation on conventions for [designing badge URLs](badge-urls)
- There is additional documentation on conventions for [designing badge URLs](./badge-urls.md)
6. All badges must implement the `async handle()` function that receives parameters to render the badge. Parameters of `handle()` will match the name defined in `route()` Because we're capturing a single variable called `text` our function signature is `async handle({ text })`. `async` is needed to let JavaScript do other things while we are waiting for result from external API. Although in this simple case, we don't make any external calls. Our `handle()` function should return an object with 3 properties:
- `label`: the text on the left side of the badge
- `message`: the text on the right side of the badge - here we are passing through the parameter we captured in the route regex
@@ -194,22 +187,13 @@ const schema = Joi.object({
// (5)
module.exports = class GemVersion extends BaseJsonService {
// (6)
static get category() {
return 'version'
}
static category = 'version'
// (7)
static get route() {
return {
base: 'gem/v',
pattern: ':gem',
}
}
static route = { base: 'gem/v', pattern: ':gem' }
// (8)
static get defaultBadgeData() {
return { label: 'gem' }
}
static defaultBadgeData = { label: 'gem' }
// (11)
static render({ version }) {
@@ -298,23 +282,19 @@ Once we have implemented our badge, we can add it to the index so that users can
module.exports = class GemVersion extends BaseJsonService {
// ...
static get category() {
// (1)
return 'version'
}
// (1)
static category = 'version'
static get examples() {
// (2)
return [
{
// (3)
title: 'Gem',
namedParams: { gem: 'formatador' },
staticPreview: this.render({ version: '2.1.0' }),
keywords: ['ruby'],
},
]
}
// (2)
static examples = [
{
// (3)
title: 'Gem',
namedParams: { gem: 'formatador' },
staticPreview: this.render({ version: '2.1.0' }),
keywords: ['ruby'],
},
]
}
```

View File

@@ -1,5 +1,12 @@
# Production hosting
Production hosting is managed by the Shields ops team:
- [calebcartwright](https://github.com/calebcartwright)
- [chris48s](https://github.com/chris48s)
- [paulmelnikow](https://github.com/paulmelnikow)
- [PyvesB](https://github.com/PyvesB)
[![operations issues](https://img.shields.io/github/issues/badges/shields/operations.svg?label=open%20operations%20issues)][operations issues]
[#ops chat room][ops discord]
@@ -9,21 +16,26 @@
| Component | Subcomponent | People with access |
| ----------------------------- | ------------------------------- | ------------------------------------------------------------------------------------------ |
| Badge servers | Account owner | @espadrine |
| Badge servers | ssh, logs | @espadrine |
| Badge servers | Deployment | @espadrine, @paulmelnikow |
| Badge servers | Admin endpoints | @espadrine, @paulmelnikow |
| shields-production-us | Account owner | @paulmelnikow |
| shields-production-us | Full access | @calebcartwright, @chris48s, @paulmelnikow, @pyvesb |
| shields-production-us | Access management | @calebcartwright, @chris48s, @paulmelnikow, @pyvesb |
| Compose.io Redis | Account owner | @paulmelnikow |
| Compose.io Redis | Account access | @paulmelnikow |
| Compose.io Redis | Database connection credentials | @espadrine, @paulmelnikow |
| Compose.io Redis | Database connection credentials | @calebcartwright, @chris48s, @paulmelnikow, @pyvesb |
| Zeit Now | Team owner | @paulmelnikow |
| Zeit Now | Team members | @paulmelnikow, @chris48s, @calebcartwright, @platan |
| Raster server | Full access as team members | @paulmelnikow, @chris48s, @calebcartwright, @platan |
| shields-server.com redirector | Full access as team members | @paulmelnikow, @chris48s, @calebcartwright, @platan |
| Cloudflare | Account owner | @espadrine |
| Cloudflare | Admin access | @espadrine, @paulmelnikow |
| GitHub | OAuth app | @espadrine ([could be transferred to the badges org][oauth transfer]) |
| Legacy badge servers | Account owner | @espadrine |
| Legacy badge servers | ssh, logs | @espadrine |
| Legacy badge servers | Deployment | @espadrine, @paulmelnikow |
| Legacy badge servers | Admin endpoints | @espadrine, @paulmelnikow |
| Cloudflare (CDN) | Account owner | @espadrine |
| Cloudflare (CDN) | Access management | @espadrine |
| Cloudflare (CDN) | Admin access | @calebcartwright, @chris48s, @espadrine, @paulmelnikow, @PyvesB |
| Twitch | OAuth app | @PyvesB |
| Discord | OAuth app | @PyvesB |
| YouTube | Account owner | @PyvesB |
| OpenStreetMap (for Wheelmap) | Account owner | @paulmelnikow |
| DNS | Account owner | @olivierlacan |
| DNS | Read-only account access | @espadrine, @paulmelnikow, @chris48s |
@@ -52,7 +64,6 @@ Shields has mercifully little persistent state:
[github auth admin endpoint]: https://github.com/badges/shields/blob/master/services/github/auth/admin.js
[request cache]: https://github.com/badges/shields/blob/master/core/base-service/legacy-request-handler.js#L29-L30
[regular-update cache]: https://github.com/badges/shields/blob/master/core/legacy/regular-update.js
[oauth transfer]: https://developer.github.com/apps/managing-oauth-apps/transferring-ownership-of-an-oauth-app/
## Configuration

View File

@@ -17,9 +17,7 @@ Legacy services look like:
```js
module.exports = class ExampleService extends LegacyService {
static get category() {
return 'build'
}
static category = 'build'
static registerLegacyRouteHandler({ camp, cache }) {
camp.route(
@@ -101,12 +99,7 @@ tests are passing, though.
const BaseJsonService = require('../base-json')
class ExampleDownloads extends BaseJsonService {
static get route() {
return {
base: 'example/d',
pattern: ':param1/:param2',
}
}
static route = { base: 'example/d', pattern: ':param1/:param2' }
static defaultBadgeData() {
return { label: 'downloads' } // or whatever

View File

@@ -2,7 +2,7 @@
## Installation
You will need Node 10 or later, which you can install using a
You will need Node 12 or later, which you can install using a
[package manager][].
On Ubuntu / Debian:

View File

@@ -105,6 +105,15 @@ self-hosted Shields installation access to private repositories hosted on bitbuc
Bitbucket badges use basic auth. Provide a username and password to give your
self-hosted Shields installation access to a private Bitbucket Server instance.
### Discord
Using a token for Dicsord is optional but will allow higher API rates.
- `DISCORD_BOT_TOKEN` (yml: `discord_bot_token`)
Register an application in the [Discord developer console](https://discord.com/developers).
To obtain a token, simply create a bot for your application.
### Drone
- `DRONE_ORIGINS` (yml: `public.services.drone.authorizedOrigins`)
@@ -228,6 +237,16 @@ displayed on your profile page.
[wheelmap token]: http://classic.wheelmap.org/en/users/sign_in
### YouTube
- `YOUTUBE_API_KEY` (yml: `private.youtube_api_key`)
The YouTube API requires authentication. To obtain an API key,
log in to a Google account, go to the [credentials page][youtube credentials],
and create an API key for the YouTube Data API v3.
[youtube credentials]: https://console.developers.google.com/apis/credentials
## Error reporting
- `SENTRY_DSN` (yml: `private.sentry_dsn`)

View File

@@ -86,7 +86,7 @@ export function constructPath({
namedParams: { [k: string]: string }
}): { path: string; isComplete: boolean } {
let isComplete = true
const path = tokens
let path = tokens
.map(token => {
if (typeof token === 'string') {
return token.trim()
@@ -104,6 +104,7 @@ export function constructPath({
}
})
.join('')
path = encodeURI(path)
return { path, isComplete }
}

View File

@@ -28,6 +28,8 @@ const inputs = [
export default function DynamicBadgeMaker({
baseUrl = document.location.href,
}: {
baseUrl: string
}): JSX.Element {
const [values, setValues] = useState<State>({
datatype: '',

View File

@@ -73,6 +73,7 @@ export default function Footer({ baseUrl }: { baseUrl: string }): JSX.Element {
</p>
<p>
<SpacedA href="/community">Community</SpacedA>
<SpacedA href="https://status.shields.io/">Status</SpacedA>
<SpacedA href="https://metrics.shields.io">Metrics</SpacedA>
<SpacedA href="https://github.com/badges/shields">GitHub</SpacedA>

View File

@@ -7,6 +7,8 @@ type State = Record<StateKey, string>
export default function StaticBadgeMaker({
baseUrl = document.location.href,
}: {
baseUrl: string
}): JSX.Element {
const [values, setValues] = useState<State>({
label: '',

View File

@@ -45,7 +45,11 @@ function quoteAsciiDocAttribute(attr: string | null): string {
if (attr == null) {
return 'None'
} else {
const withQuotesEscaped = attr.replace(/"/g, '\\"')
// String values are prepared and returned to users who want to include their badge
// in an AsciiDoc document. We're not using the value in any actual processing, so
// no need to perform proper sanitization. We simply escape quotes, as mandated by
// http://asciidoc.org/userguide.html#X21
const withQuotesEscaped = attr.replace(/"/g, '\\"') // lgtm [js/incomplete-sanitization]
return `"${withQuotesEscaped}"`
}
}

View File

@@ -0,0 +1,129 @@
import React from 'react'
import styled from 'styled-components'
import { baseUrl } from '../constants'
import Meta from '../components/meta'
import Header from '../components/header'
import Footer from '../components/footer'
import { BaseFont, GlobalStyle, H3 } from '../components/common'
const MainContainer = styled(BaseFont)`
text-align: center;
`
const SponsorContainer = styled.div`
display: block;
max-width: 600px;
margin: 0 auto;
text-align: left;
padding-top: 20px;
`
export default function SponsorsPage(): JSX.Element {
return (
<MainContainer>
<GlobalStyle />
<Meta />
<Header />
<H3>Community</H3>
<SponsorContainer>
Shields.io is possible thanks to the people and companies who donate
money, services or time to keep the project running.
</SponsorContainer>
<SponsorContainer>
<h4>Sponsors</h4>
These companies help us by donating their services to shields:
<ul style={{ listStyleType: 'none' }}>
<li>
<a href="https://www.heroku.com/">
<img
alt="heroku logo"
height="80"
src="/images/heroku-logotype-horizontal-purple.svg"
/>
</a>
</li>
<li>
<a href="https://nodeping.com/">
<img alt="nodeping logo" height="80" src="/images/nodeping.svg" />
</a>
</li>
<li>
<a href="https://sentry.io/">
<img
alt="sentry logo"
height="80"
src="/images/sentry-logo-black.svg"
/>
</a>
</li>
</ul>
💵 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" />
</p>
</SponsorContainer>
<SponsorContainer>
<h4>Backers</h4>
💵 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" />
</p>
</SponsorContainer>
<SponsorContainer>
<h4>Contributors</h4>
🙏 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" />
</p>
</SponsorContainer>
<SponsorContainer>
Shields is helped by these companies which provide a free plan for
their product or service:
<ul>
<li>
<a href="https://coveralls.io/">Coveralls</a>
</li>
<li>
<a href="https://circleci.com/">CircleCI</a>
</li>
<li>
<a href="https://www.cloudflare.com/">Cloudflare</a>
</li>
<li>
<a href="https://discord.com/">Discord</a>
</li>
<li>
<a href="https://github.com/">GitHub</a>
</li>
<li>
<a href="https://lgtm.com/">LGTM</a>
</li>
<li>
<a href="https://www.netlify.com/">Netlify</a>
</li>
<li>
<a href="https://uptimerobot.com/">Uptime Robot</a>
</li>
</ul>
</SponsorContainer>
<Footer baseUrl={baseUrl} />
</MainContainer>
)
}

View File

@@ -43,7 +43,7 @@ const JsonExampleBlock = styled.code<JsonExampleBlockProps>`
white-space: pre;
`
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any, react/prop-types
function JsonExample({ data }: { [k: string]: any }): JSX.Element {
return (
<JsonExampleBlock>{JSON.stringify(data, undefined, 2)}</JsonExampleBlock>

View File

@@ -12,8 +12,7 @@ function scrollToElementId(id) {
export function onRouteUpdate({ location: { hash } }) {
if (hash) {
if (!redirectLegacyRoutes()) {
window.setTimeout(() => scrollToElementId(hash), 10)
}
redirectLegacyRoutes()
window.setTimeout(() => scrollToElementId(hash), 10)
}
}

View File

@@ -1,7 +1,11 @@
'use strict'
const Joi = require('@hapi/joi')
const { toSvgColor } = require('../badge-maker/lib/color')
const {
toSvgColor,
brightness,
normalizeColor,
} = require('../badge-maker/lib/color')
const coalesce = require('../core/base-service/coalesce')
const { svg2base64 } = require('./svg-helpers')
const logos = require('./load-logos')()
@@ -16,6 +20,8 @@ const logoAliases = {
stackoverflow: 'stack-overflow',
tfs: 'azure-devops',
}
const lightThreshold = 0.4
const darkThreshold = 0.6
function prependPrefix(s, prefix) {
if (s === undefined) {
@@ -67,27 +73,12 @@ function getShieldsIcon({ name, color }) {
}
}
function brightness({ r, g, b }) {
return +((r * 299 + g * 587 + b * 114) / 255000).toFixed(2)
}
const hexColorRegex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i
function hexToRgb(hex) {
const result = hexColorRegex.exec(hex)
return {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16),
}
}
function getSimpleIconStyle({ icon, style }) {
const { hex } = icon
if (style !== 'social' && brightness(hexToRgb(hex)) <= 0.4) {
if (style !== 'social' && brightness(normalizeColor(hex)) <= lightThreshold) {
return 'light'
}
if (style === 'social' && brightness(hexToRgb(hex)) >= 0.6) {
if (style === 'social' && brightness(normalizeColor(hex)) >= darkThreshold) {
return 'dark'
}
return 'default'

View File

@@ -1,11 +0,0 @@
{
"version": 1,
"name": "shields",
"env": {
"PERSISTENCE_DIR": "/tmp/persistence"
},
"type": "npm",
"engines": {
"node": "8.x"
}
}

14958
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -23,46 +23,47 @@
},
"dependencies": {
"@hapi/joi": "^17.1.1",
"@sentry/node": "^5.15.5",
"@renovate/pep440": "^0.4.1",
"@sentry/node": "^5.24.2",
"@shields_io/camp": "^18.0.0",
"badge-maker": "file:badge-maker",
"bytes": "^3.1.0",
"camelcase": "^5.3.1",
"@shields_io/camp": "^18.0.0",
"chai-as-promised": "^7.1.1",
"chalk": "^3.0.0",
"chalk": "^4.1.0",
"check-node-version": "^4.0.3",
"chrome-web-store-item-property": "~1.2.0",
"config": "^3.3.1",
"cross-env": "^7.0.2",
"decamelize": "^3.2.0",
"dotenv": "^8.2.0",
"emojic": "^1.1.15",
"emojic": "^1.1.16",
"escape-string-regexp": "^4.0.0",
"fast-xml-parser": "^3.17.3",
"fast-xml-parser": "^3.17.4",
"fsos": "^1.1.6",
"badge-maker": "file:badge-maker",
"glob": "^7.1.6",
"graphql": "^14.6.0",
"graphql-tag": "^2.10.3",
"ioredis": "4.17.1",
"graphql": "^14.7.0",
"graphql-tag": "^2.11.0",
"ioredis": "4.17.3",
"joi-extension-semver": "4.1.1",
"js-yaml": "^3.14.0",
"jsonpath": "~1.0.2",
"lodash.countby": "^4.6.0",
"lodash.groupby": "^4.6.0",
"lodash.times": "^4.3.2",
"moment": "^2.26.0",
"moment": "^2.28.0",
"node-env-flag": "^0.1.0",
"parse-link-header": "^1.0.1",
"path-to-regexp": "^5.0.0",
"pretty-bytes": "^5.3.0",
"pretty-bytes": "^5.4.1",
"priorityqueuejs": "^2.0.0",
"prom-client": "^11.5.3",
"query-string": "^6.12.1",
"query-string": "^6.13.2",
"request": "~2.88.2",
"semver": "~7.3.2",
"simple-icons": "2.14.0",
"simple-icons": "3.8.0",
"xmldom": "~0.2.1",
"xpath": "~0.0.27"
"xpath": "~0.0.29"
},
"scripts": {
"coverage:test:core": "nyc npm run test:core",
@@ -96,8 +97,9 @@
"test": "run-s --silent --continue-on-error lint test:frontend test:package test:core test:entrypoint check-types:package check-types:frontend prettier:check",
"check-types:package": "tsd badge-maker",
"check-types:frontend": "tsc --noEmit --project .",
"depcheck": "check-node-version --node \">= 10.0\"",
"postinstall": "run-s --silent depcheck",
"depcheck": "check-node-version --node \">= 12.0\"",
"fix-issue-5294": "rimraf node_modules/@types/react-native",
"postinstall": "run-s --silent depcheck fix-issue-5294",
"prebuild": "run-s --silent depcheck",
"features": "node scripts/export-supported-features-cli.js > supported-features.json",
"defs": "node scripts/export-service-definitions-cli.js > service-definitions.yml",
@@ -141,96 +143,96 @@
]
},
"devDependencies": {
"@babel/core": "^7.10.1",
"@babel/polyfill": "^7.10.1",
"@babel/register": "7.10.1",
"@babel/core": "^7.11.6",
"@babel/polyfill": "^7.11.5",
"@babel/register": "7.11.5",
"@mapbox/react-click-to-select": "^2.2.0",
"@types/chai": "^4.2.11",
"@types/chai": "^4.2.12",
"@types/chai-enzyme": "^0.6.7",
"@types/enzyme": "^3.10.5",
"@types/enzyme": "^3.10.6",
"@types/lodash.debounce": "^4.0.6",
"@types/lodash.groupby": "^4.6.6",
"@types/mocha": "^7.0.2",
"@types/node": "^14.0.5",
"@types/react-helmet": "^6.0.0",
"@types/react-modal": "^3.10.5",
"@types/react-select": "^3.0.13",
"@types/styled-components": "4.1.8",
"@types/mocha": "^8.0.3",
"@types/node": "^14.11.1",
"@types/react-helmet": "^6.1.0",
"@types/react-modal": "^3.10.6",
"@types/react-select": "^3.0.19",
"@types/styled-components": "5.1.3",
"@typescript-eslint/eslint-plugin": "^2.34.0",
"@typescript-eslint/parser": "^2.34.0",
"babel-plugin-inline-react-svg": "^1.1.1",
"babel-plugin-istanbul": "^6.0.0",
"babel-preset-gatsby": "^0.4.7",
"babel-preset-gatsby": "^0.5.1",
"caller": "^1.0.1",
"chai": "^4.1.2",
"chai-datetime": "^1.6.0",
"chai-datetime": "^1.7.0",
"chai-enzyme": "^1.0.0-beta.1",
"chai-string": "^1.4.0",
"cheerio": "^1.0.0-rc.3",
"child-process-promise": "^2.2.1",
"clipboard-copy": "^3.1.0",
"concurrently": "^5.2.0",
"cypress": "^4.7.0",
"danger": "^10.2.0",
"concurrently": "^5.3.0",
"cypress": "^5.1.0",
"danger": "^10.4.0",
"danger-plugin-no-test-shortcuts": "^2.0.0",
"deepmerge": "^4.2.2",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.2",
"enzyme-adapter-react-16": "^1.15.4",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.11.0",
"eslint-config-standard": "^14.1.1",
"eslint-config-standard-react": "^9.2.0",
"eslint-plugin-chai-friendly": "^0.6.0",
"eslint-plugin-cypress": "^2.11.1",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-jsdoc": "^26.0.0",
"eslint-plugin-import": "^2.22.0",
"eslint-plugin-jsdoc": "^30.4.2",
"eslint-plugin-mocha": "^6.3.0",
"eslint-plugin-no-extension-in-require": "^0.2.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-react": "^7.20.0",
"eslint-plugin-react": "^7.20.6",
"eslint-plugin-react-hooks": "^2.5.1",
"eslint-plugin-sort-class-members": "^1.7.0",
"eslint-plugin-sort-class-members": "^1.8.0",
"eslint-plugin-standard": "^4.0.1",
"fetch-ponyfill": "^6.1.0",
"fetch-ponyfill": "^6.1.1",
"form-data": "^3.0.0",
"fs-readfile-promise": "^3.0.1",
"gatsby": "2.22.12",
"gatsby-plugin-catch-links": "^2.3.3",
"gatsby-plugin-page-creator": "^2.3.7",
"gatsby-plugin-react-helmet": "^3.3.2",
"gatsby-plugin-remove-trailing-slashes": "^2.3.3",
"gatsby-plugin-styled-components": "^3.3.2",
"gatsby-plugin-typescript": "^2.4.3",
"got": "11.1.4",
"gatsby": "2.24.57",
"gatsby-plugin-catch-links": "^2.3.10",
"gatsby-plugin-page-creator": "^2.3.27",
"gatsby-plugin-react-helmet": "^3.3.9",
"gatsby-plugin-remove-trailing-slashes": "^2.3.10",
"gatsby-plugin-styled-components": "^3.3.9",
"gatsby-plugin-typescript": "^2.4.16",
"got": "11.7.0",
"humanize-string": "^2.1.0",
"husky": "^4.2.5",
"icedfrisby": "3.0.0",
"husky": "^4.3.0",
"icedfrisby": "4.0.0",
"icedfrisby-nock": "^2.0.0",
"is-png": "^2.0.0",
"is-svg": "^4.2.1",
"js-yaml-loader": "^1.2.2",
"jsdoc": "^3.6.4",
"lint-staged": "^10.2.7",
"jsdoc": "^3.6.5",
"lint-staged": "^10.4.0",
"lodash.debounce": "^4.0.8",
"lodash.difference": "^4.5.0",
"minimist": "^1.2.5",
"mocha": "^7.2.0",
"mocha-env-reporter": "^4.0.0",
"mocha-junit-reporter": "^1.23.3",
"mocha-junit-reporter": "^2.0.0",
"mocha-yaml-loader": "^1.0.3",
"nock": "13.0.0-beta.5",
"node-mocks-http": "^1.8.1",
"nock": "13.0.4",
"node-mocks-http": "^1.9.0",
"nodemon": "^2.0.4",
"npm-run-all": "^4.1.5",
"nyc": "^15.0.1",
"nyc": "^15.1.0",
"opn-cli": "^5.0.0",
"portfinder": "^1.0.26",
"prettier": "2.0.5",
"portfinder": "^1.0.28",
"prettier": "2.1.2",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-error-overlay": "^6.0.7",
"react-helmet": "^6.0.0",
"react-helmet": "^6.1.0",
"react-modal": "^3.11.2",
"react-pose": "^4.0.10",
"react-select": "^3.1.0",
@@ -239,19 +241,19 @@
"require-hacker": "^3.0.1",
"rimraf": "^3.0.2",
"sazerac": "^2.0.0",
"sinon": "^9.0.2",
"sinon": "^9.0.3",
"sinon-chai": "^3.5.0",
"snap-shot-it": "^7.9.3",
"start-server-and-test": "1.11.0",
"styled-components": "^5.1.1",
"start-server-and-test": "1.11.3",
"styled-components": "^5.2.0",
"tmp": "0.2.1",
"tsd": "^0.11.0",
"tsd": "^0.13.1",
"ts-mocha": "^7.0.0",
"typescript": "^3.8.3"
"typescript": "^4.0.3"
},
"engines": {
"node": "^10.16.3",
"npm": "^6.11.3"
"node": "^12.18.3",
"npm": "^6.14.7"
},
"babel": {
"plugins": [

View File

@@ -18,9 +18,7 @@ const schema = Joi.object({
}).required()
class BaseAmoService extends BaseJsonService {
static get defaultBadgeData() {
return { label: 'mozilla add-on' }
}
static defaultBadgeData = { label: 'mozilla add-on' }
async fetch({ addonId }) {
return this._requestJson({

View File

@@ -14,32 +14,20 @@ const documentation = `
`
class AmoWeeklyDownloads extends BaseAmoService {
static get category() {
return 'downloads'
}
static category = 'downloads'
static route = { base: 'amo/dw', pattern: ':addonId' }
static get route() {
return {
base: 'amo/dw',
pattern: ':addonId',
}
}
static examples = [
{
title: 'Mozilla Add-on',
namedParams: { addonId: 'dustman' },
staticPreview: this.render({ downloads: 120 }),
keywords,
documentation,
},
]
static get examples() {
return [
{
title: 'Mozilla Add-on',
namedParams: { addonId: 'dustman' },
staticPreview: this.render({ downloads: 120 }),
keywords,
documentation,
},
]
}
static get defaultBadgeData() {
return { label: 'downloads' }
}
static defaultBadgeData = { label: 'downloads' }
static render({ downloads }) {
return {

View File

@@ -5,35 +5,25 @@ const { floorCount: floorCountColor } = require('../color-formatters')
const { BaseAmoService, keywords } = require('./amo-base')
module.exports = class AmoRating extends BaseAmoService {
static get category() {
return 'rating'
}
static category = 'rating'
static route = { base: 'amo', pattern: ':format(stars|rating)/:addonId' }
static get route() {
return {
base: 'amo',
pattern: ':format(stars|rating)/:addonId',
}
}
static get examples() {
return [
{
title: 'Mozilla Add-on',
pattern: 'rating/:addonId',
namedParams: { addonId: 'dustman' },
staticPreview: this.render({ format: 'rating', rating: 4 }),
keywords,
},
{
title: 'Mozilla Add-on',
pattern: 'stars/:addonId',
namedParams: { addonId: 'dustman' },
staticPreview: this.render({ format: 'stars', rating: 4 }),
keywords,
},
]
}
static examples = [
{
title: 'Mozilla Add-on',
pattern: 'rating/:addonId',
namedParams: { addonId: 'dustman' },
staticPreview: this.render({ format: 'rating', rating: 4 }),
keywords,
},
{
title: 'Mozilla Add-on',
pattern: 'stars/:addonId',
namedParams: { addonId: 'dustman' },
staticPreview: this.render({ format: 'stars', rating: 4 }),
keywords,
},
]
static render({ format, rating }) {
rating = Math.round(rating)

View File

@@ -4,33 +4,19 @@ const { metric } = require('../text-formatters')
const { BaseAmoService, keywords } = require('./amo-base')
module.exports = class AmoUsers extends BaseAmoService {
static get category() {
return 'downloads'
}
static category = 'downloads'
static route = { base: 'amo/users', pattern: ':addonId' }
static get route() {
return {
base: 'amo/users',
pattern: ':addonId',
}
}
static examples = [
{
title: 'Mozilla Add-on',
namedParams: { addonId: 'dustman' },
staticPreview: this.render({ users: 750 }),
keywords,
},
]
static get examples() {
return [
{
title: 'Mozilla Add-on',
namedParams: { addonId: 'dustman' },
staticPreview: this.render({ users: 750 }),
keywords,
},
]
}
static get defaultBadgeData() {
return {
label: 'users',
}
}
static defaultBadgeData = { label: 'users' }
static render({ users }) {
return {

View File

@@ -4,27 +4,17 @@ const { renderVersionBadge } = require('../version')
const { BaseAmoService, keywords } = require('./amo-base')
module.exports = class AmoVersion extends BaseAmoService {
static get category() {
return 'version'
}
static category = 'version'
static route = { base: 'amo/v', pattern: ':addonId' }
static get route() {
return {
base: 'amo/v',
pattern: ':addonId',
}
}
static get examples() {
return [
{
title: 'Mozilla Add-on',
namedParams: { addonId: 'dustman' },
staticPreview: renderVersionBadge({ version: '2.1.0' }),
keywords,
},
]
}
static examples = [
{
title: 'Mozilla Add-on',
namedParams: { addonId: 'dustman' },
staticPreview: renderVersionBadge({ version: '2.1.0' }),
keywords,
},
]
async handle({ addonId }) {
const data = await this.fetch({ addonId })

View File

@@ -19,32 +19,20 @@ class AnsibleGalaxyContent extends BaseJsonService {
}
module.exports = class AnsibleGalaxyContentQualityScore extends AnsibleGalaxyContent {
static get category() {
return 'analysis'
}
static category = 'analysis'
static route = { base: 'ansible/quality', pattern: ':projectId' }
static get route() {
return {
base: 'ansible/quality',
pattern: ':projectId',
}
}
static get examples() {
return [
{
title: 'Ansible Quality Score',
namedParams: {
projectId: '432',
},
staticPreview: this.render({ qualityScore: 4.125 }),
static examples = [
{
title: 'Ansible Quality Score',
namedParams: {
projectId: '432',
},
]
}
staticPreview: this.render({ qualityScore: 4.125 }),
},
]
static get defaultBadgeData() {
return { label: 'quality' }
}
static defaultBadgeData = { label: 'quality' }
static render({ qualityScore }) {
return {

View File

@@ -7,6 +7,10 @@ t.create('quality score (valid)')
.get('/432.json')
.expectBadge({ label: 'quality', message: nonNegativeInteger })
t.create('quality score (not found)')
t.create('quality score (project not found)')
.get('/0101.json')
.expectBadge({ label: 'quality', message: 'not found' })
t.create('quality score (no score available)')
.get('/2504.json')
.expectBadge({ label: 'quality', message: 'no score available' })

View File

@@ -27,30 +27,18 @@ class AnsibleGalaxyRole extends BaseJsonService {
}
class AnsibleGalaxyRoleDownloads extends AnsibleGalaxyRole {
static get category() {
return 'downloads'
}
static category = 'downloads'
static route = { base: 'ansible/role/d', pattern: ':roleId' }
static get route() {
return {
base: 'ansible/role/d',
pattern: ':roleId',
}
}
static examples = [
{
title: 'Ansible Role',
namedParams: { roleId: '3078' },
staticPreview: this.render({ downloads: 76 }),
},
]
static get examples() {
return [
{
title: 'Ansible Role',
namedParams: { roleId: '3078' },
staticPreview: this.render({ downloads: 76 }),
},
]
}
static get defaultBadgeData() {
return { label: 'role downloads' }
}
static defaultBadgeData = { label: 'role downloads' }
static render({ downloads }) {
return {
@@ -66,32 +54,20 @@ class AnsibleGalaxyRoleDownloads extends AnsibleGalaxyRole {
}
class AnsibleGalaxyRoleName extends AnsibleGalaxyRole {
static get category() {
return 'other'
}
static category = 'other'
static route = { base: 'ansible/role', pattern: ':roleId' }
static get route() {
return {
base: 'ansible/role',
pattern: ':roleId',
}
}
static examples = [
{
title: 'Ansible Role',
namedParams: { roleId: '3078' },
staticPreview: this.render({
name: 'ansible-roles.sublimetext3_packagecontrol',
}),
},
]
static get examples() {
return [
{
title: 'Ansible Role',
namedParams: { roleId: '3078' },
staticPreview: this.render({
name: 'ansible-roles.sublimetext3_packagecontrol',
}),
},
]
}
static get defaultBadgeData() {
return { label: 'role' }
}
static defaultBadgeData = { label: 'role' }
static render({ name }) {
return { message: name, color: 'blue' }

View File

@@ -20,9 +20,7 @@ const schema = Joi.object({
})
class BaseAPMService extends BaseJsonService {
static get defaultBadgeData() {
return { label: 'apm' }
}
static defaultBadgeData = { label: 'apm' }
async fetch({ packageName }) {
return this._requestJson({
@@ -34,31 +32,19 @@ class BaseAPMService extends BaseJsonService {
}
class APMDownloads extends BaseAPMService {
static get category() {
return 'downloads'
}
static category = 'downloads'
static route = { base: 'apm/dm', pattern: ':packageName' }
static get route() {
return {
base: 'apm/dm',
pattern: ':packageName',
}
}
static examples = [
{
title: 'APM',
namedParams: { packageName: 'vim-mode' },
staticPreview: this.render({ downloads: '60043' }),
keywords,
},
]
static get examples() {
return [
{
title: 'APM',
namedParams: { packageName: 'vim-mode' },
staticPreview: this.render({ downloads: '60043' }),
keywords,
},
]
}
static get defaultBadgeData() {
return { label: 'downloads' }
}
static defaultBadgeData = { label: 'downloads' }
static render({ downloads }) {
return { message: metric(downloads), color: 'green' }
@@ -71,27 +57,17 @@ class APMDownloads extends BaseAPMService {
}
class APMVersion extends BaseAPMService {
static get category() {
return 'version'
}
static category = 'version'
static route = { base: 'apm/v', pattern: ':packageName' }
static get route() {
return {
base: 'apm/v',
pattern: ':packageName',
}
}
static get examples() {
return [
{
title: 'APM',
namedParams: { packageName: 'vim-mode' },
staticPreview: this.render({ version: '0.6.0' }),
keywords,
},
]
}
static examples = [
{
title: 'APM',
namedParams: { packageName: 'vim-mode' },
staticPreview: this.render({ version: '0.6.0' }),
keywords,
},
]
static render({ version }) {
return renderVersionBadge({ version })
@@ -110,31 +86,19 @@ class APMVersion extends BaseAPMService {
}
class APMLicense extends BaseAPMService {
static get category() {
return 'license'
}
static category = 'license'
static route = { base: 'apm/l', pattern: ':packageName' }
static get route() {
return {
base: 'apm/l',
pattern: ':packageName',
}
}
static examples = [
{
title: 'APM',
namedParams: { packageName: 'vim-mode' },
staticPreview: this.render({ license: 'MIT' }),
keywords,
},
]
static get examples() {
return [
{
title: 'APM',
namedParams: { packageName: 'vim-mode' },
staticPreview: this.render({ license: 'MIT' }),
keywords,
},
]
}
static get defaultBadgeData() {
return { label: 'license' }
}
static defaultBadgeData = { label: 'license' }
static render({ license }) {
return renderLicenseBadge({ license })

View File

@@ -21,9 +21,7 @@ const schema = Joi.object({
}).required()
module.exports = class AppVeyorBase extends BaseJsonService {
static get category() {
return 'build'
}
static category = 'build'
async fetch({ user, repo, branch }) {
let url = `https://ci.appveyor.com/api/projects/${user}/${repo}`

View File

@@ -4,26 +4,22 @@ const { renderBuildStatusBadge } = require('../build-status')
const AppVeyorBase = require('./appveyor-base')
module.exports = class AppVeyorBuild extends AppVeyorBase {
static get route() {
return this.buildRoute('appveyor/build')
}
static route = this.buildRoute('appveyor/build')
static get examples() {
return [
{
title: 'AppVeyor',
pattern: ':user/:repo',
namedParams: { user: 'gruntjs', repo: 'grunt' },
staticPreview: this.render({ status: 'success' }),
},
{
title: 'AppVeyor branch',
pattern: ':user/:repo/:branch',
namedParams: { user: 'gruntjs', repo: 'grunt', branch: 'master' },
staticPreview: this.render({ status: 'success' }),
},
]
}
static examples = [
{
title: 'AppVeyor',
pattern: ':user/:repo',
namedParams: { user: 'gruntjs', repo: 'grunt' },
staticPreview: this.render({ status: 'success' }),
},
{
title: 'AppVeyor branch',
pattern: ':user/:repo/:branch',
namedParams: { user: 'gruntjs', repo: 'grunt', branch: 'master' },
staticPreview: this.render({ status: 'success' }),
},
]
static render({ status }) {
return renderBuildStatusBadge({ status })

View File

@@ -5,38 +5,34 @@ const { NotFound } = require('..')
const AppVeyorBase = require('./appveyor-base')
module.exports = class AppVeyorJobBuild extends AppVeyorBase {
static get route() {
return {
base: 'appveyor/job/build',
pattern: ':user/:repo/:job/:branch*',
}
static route = {
base: 'appveyor/job/build',
pattern: ':user/:repo/:job/:branch*',
}
static get examples() {
return [
{
title: 'AppVeyor Job',
pattern: ':user/:repo/:job',
namedParams: {
user: 'wpmgprostotema',
repo: 'voicetranscoder',
job: 'Linux',
},
staticPreview: renderBuildStatusBadge({ status: 'success' }),
static examples = [
{
title: 'AppVeyor Job',
pattern: ':user/:repo/:job',
namedParams: {
user: 'wpmgprostotema',
repo: 'voicetranscoder',
job: 'Linux',
},
{
title: 'AppVeyor Job branch',
pattern: ':user/:repo/:job/:branch',
namedParams: {
user: 'wpmgprostotema',
repo: 'voicetranscoder',
job: 'Windows',
branch: 'master',
},
staticPreview: renderBuildStatusBadge({ status: 'success' }),
staticPreview: renderBuildStatusBadge({ status: 'success' }),
},
{
title: 'AppVeyor Job branch',
pattern: ':user/:repo/:job/:branch',
namedParams: {
user: 'wpmgprostotema',
repo: 'voicetranscoder',
job: 'Windows',
branch: 'master',
},
]
}
staticPreview: renderBuildStatusBadge({ status: 'success' }),
},
]
transform({ data, jobName }) {
if (!('build' in data)) {

View File

@@ -37,72 +37,68 @@ const commonPreviewProps = {
}
module.exports = class AppVeyorTests extends AppVeyorBase {
static get route() {
return {
...this.buildRoute('appveyor/tests'),
queryParamSchema: testResultQueryParamSchema,
}
static route = {
...this.buildRoute('appveyor/tests'),
queryParamSchema: testResultQueryParamSchema,
}
static get examples() {
return [
{
title: 'AppVeyor tests',
pattern: ':user/:repo',
namedParams: {
user: 'NZSmartie',
repo: 'coap-net-iu0to',
},
staticPreview: this.render(commonPreviewProps),
documentation,
static examples = [
{
title: 'AppVeyor tests',
pattern: ':user/:repo',
namedParams: {
user: 'NZSmartie',
repo: 'coap-net-iu0to',
},
{
title: 'AppVeyor tests (branch)',
pattern: ':user/:repo/:branch',
namedParams: {
user: 'NZSmartie',
repo: 'coap-net-iu0to',
branch: 'master',
},
staticPreview: this.render(commonPreviewProps),
documentation,
staticPreview: this.render(commonPreviewProps),
documentation,
},
{
title: 'AppVeyor tests (branch)',
pattern: ':user/:repo/:branch',
namedParams: {
user: 'NZSmartie',
repo: 'coap-net-iu0to',
branch: 'master',
},
{
title: 'AppVeyor tests (compact)',
pattern: ':user/:repo',
namedParams: {
user: 'NZSmartie',
repo: 'coap-net-iu0to',
},
queryParams: { compact_message: null },
staticPreview: this.render({
...commonPreviewProps,
isCompact: true,
}),
documentation,
staticPreview: this.render(commonPreviewProps),
documentation,
},
{
title: 'AppVeyor tests (compact)',
pattern: ':user/:repo',
namedParams: {
user: 'NZSmartie',
repo: 'coap-net-iu0to',
},
{
title: 'AppVeyor tests with custom labels',
pattern: ':user/:repo',
namedParams: {
user: 'NZSmartie',
repo: 'coap-net-iu0to',
},
queryParams: {
passed_label: 'good',
failed_label: 'bad',
skipped_label: 'n/a',
},
staticPreview: this.render({
...commonPreviewProps,
passedLabel: 'good',
failedLabel: 'bad',
skippedLabel: 'n/a',
}),
documentation,
queryParams: { compact_message: null },
staticPreview: this.render({
...commonPreviewProps,
isCompact: true,
}),
documentation,
},
{
title: 'AppVeyor tests with custom labels',
pattern: ':user/:repo',
namedParams: {
user: 'NZSmartie',
repo: 'coap-net-iu0to',
},
]
}
queryParams: {
passed_label: 'good',
failed_label: 'bad',
skipped_label: 'n/a',
},
staticPreview: this.render({
...commonPreviewProps,
passedLabel: 'good',
failedLabel: 'bad',
skippedLabel: 'n/a',
}),
documentation,
},
]
static get defaultBadgeData() {
return {

View File

@@ -9,34 +9,25 @@ const schema = Joi.object({
}).required()
module.exports = class ArchLinux extends BaseJsonService {
static get category() {
return 'version'
static category = 'version'
static route = {
base: 'archlinux/v',
pattern: ':repository/:architecture/:packageName',
}
static get route() {
return {
base: 'archlinux/v',
pattern: ':repository/:architecture/:packageName',
}
}
static get examples() {
return [
{
title: 'Arch Linux package',
namedParams: {
architecture: 'x86_64',
repository: 'core',
packageName: 'pacman',
},
staticPreview: renderVersionBadge({ version: '5.1.3' }),
static examples = [
{
title: 'Arch Linux package',
namedParams: {
architecture: 'x86_64',
repository: 'core',
packageName: 'pacman',
},
]
}
staticPreview: renderVersionBadge({ version: '5.1.3' }),
},
]
static get defaultBadgeData() {
return { label: 'arch linux' }
}
static defaultBadgeData = { label: 'arch linux' }
async handle({ repository, architecture, packageName }) {
const data = await this._requestJson({

View File

@@ -25,9 +25,7 @@ const aurSchema = Joi.object({
}).required()
class BaseAurService extends BaseJsonService {
static get defaultBadgeData() {
return { label: 'aur' }
}
static defaultBadgeData = { label: 'aur' }
static _validate(data, schema) {
if (data.resultcount === 0) {
@@ -51,30 +49,18 @@ class BaseAurService extends BaseJsonService {
}
class AurLicense extends BaseAurService {
static get category() {
return 'license'
}
static category = 'license'
static route = { base: 'aur/license', pattern: ':packageName' }
static get route() {
return {
base: 'aur/license',
pattern: ':packageName',
}
}
static examples = [
{
title: 'AUR license',
namedParams: { packageName: 'android-studio' },
staticPreview: this.render({ license: 'Apache' }),
},
]
static get examples() {
return [
{
title: 'AUR license',
namedParams: { packageName: 'android-studio' },
staticPreview: this.render({ license: 'Apache' }),
},
]
}
static get defaultBadgeData() {
return { label: 'license' }
}
static defaultBadgeData = { label: 'license' }
static render({ license }) {
return { message: license, color: 'blue' }
@@ -97,30 +83,19 @@ class AurLicense extends BaseAurService {
}
class AurVotes extends BaseAurService {
static get category() {
return 'rating'
}
static category = 'rating'
static get route() {
return {
base: 'aur/votes',
pattern: ':packageName',
}
}
static route = { base: 'aur/votes', pattern: ':packageName' }
static get examples() {
return [
{
title: 'AUR votes',
namedParams: { packageName: 'dropbox' },
staticPreview: this.render({ votes: '2280' }),
},
]
}
static examples = [
{
title: 'AUR votes',
namedParams: { packageName: 'dropbox' },
staticPreview: this.render({ votes: '2280' }),
},
]
static get defaultBadgeData() {
return { label: 'votes' }
}
static defaultBadgeData = { label: 'votes' }
static render({ votes }) {
return {
@@ -136,26 +111,17 @@ class AurVotes extends BaseAurService {
}
class AurVersion extends BaseAurService {
static get category() {
return 'version'
}
static category = 'version'
static get route() {
return {
base: 'aur/version',
pattern: ':packageName',
}
}
static route = { base: 'aur/version', pattern: ':packageName' }
static get examples() {
return [
{
title: 'AUR version',
namedParams: { packageName: 'visual-studio-code-bin' },
staticPreview: this.render({ version: '1.34.0-2', outOfDate: null }),
},
]
}
static examples = [
{
title: 'AUR version',
namedParams: { packageName: 'visual-studio-code-bin' },
staticPreview: this.render({ version: '1.34.0-2', outOfDate: null }),
},
]
static render({ version, outOfDate }) {
const color = outOfDate === null ? 'blue' : 'orange'
@@ -172,30 +138,19 @@ class AurVersion extends BaseAurService {
}
class AurMaintainer extends BaseAurService {
static get category() {
return 'other'
}
static category = 'other'
static get route() {
return {
base: 'aur/maintainer',
pattern: ':packageName',
}
}
static route = { base: 'aur/maintainer', pattern: ':packageName' }
static get examples() {
return [
{
title: 'AUR maintainer',
namedParams: { packageName: 'google-chrome' },
staticPreview: this.render({ maintainer: 'luzifer' }),
},
]
}
static examples = [
{
title: 'AUR maintainer',
namedParams: { packageName: 'google-chrome' },
staticPreview: this.render({ maintainer: 'luzifer' }),
},
]
static get defaultBadgeData() {
return { label: 'maintainer', color: 'blue' }
}
static defaultBadgeData = { label: 'maintainer', color: 'blue' }
static render({ maintainer }) {
return { message: maintainer }

View File

@@ -52,7 +52,26 @@ t.create('license (valid)')
.expectBadge({ label: 'license', message: 'MIT' })
t.create('license (no license)')
.get('/license/dns-zone-blacklist-git.json')
.get('/license/vscodium-bin.json')
.intercept(nock =>
nock('https://aur.archlinux.org')
.get('/rpc.php')
.query({
type: 'info',
arg: 'vscodium-bin',
})
.reply(200, {
resultcount: 1,
results: {
License: null,
NumVotes: 1,
Version: '1',
OutOfDate: null,
Maintainer: null,
LastModified: 1,
},
})
)
.expectBadge({ label: 'license', message: 'not specified' })
t.create('license (package not found)')

View File

@@ -34,76 +34,70 @@ const documentation = `
`
module.exports = class AzureDevOpsBuild extends BaseSvgScrapingService {
static get category() {
return 'build'
static category = 'build'
static route = {
base: 'azure-devops/build',
pattern: ':organization/:projectId/:definitionId/:branch*',
queryParamSchema,
}
static get route() {
return {
base: 'azure-devops/build',
pattern: ':organization/:projectId/:definitionId/:branch*',
queryParamSchema,
}
}
static get examples() {
return [
{
title: 'Azure DevOps builds',
pattern: ':organization/:projectId/:definitionId',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '2',
},
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
static examples = [
{
title: 'Azure DevOps builds',
pattern: ':organization/:projectId/:definitionId',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '2',
},
{
title: 'Azure DevOps builds (branch)',
pattern: ':organization/:projectId/:definitionId/:branch',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '2',
branch: 'master',
},
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
},
{
title: 'Azure DevOps builds (branch)',
pattern: ':organization/:projectId/:definitionId/:branch',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '2',
branch: 'master',
},
{
title: 'Azure DevOps builds (stage)',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '5',
},
queryParams: {
stage: 'Successful Stage',
},
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
},
{
title: 'Azure DevOps builds (stage)',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '5',
},
{
title: 'Azure DevOps builds (job)',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '5',
},
queryParams: {
stage: 'Successful Stage',
job: 'Successful Job',
},
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
queryParams: {
stage: 'Successful Stage',
},
]
}
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
},
{
title: 'Azure DevOps builds (job)',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '5',
},
queryParams: {
stage: 'Successful Stage',
job: 'Successful Job',
},
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
},
]
async handle(
{ organization, projectId, definitionId, branch },

View File

@@ -47,50 +47,42 @@ const buildCodeCoverageSchema = Joi.object({
}).required()
module.exports = class AzureDevOpsCoverage extends AzureDevOpsBase {
static get category() {
return 'coverage'
static category = 'coverage'
static route = {
base: 'azure-devops/coverage',
pattern: ':organization/:project/:definitionId/:branch*',
}
static get route() {
return {
base: 'azure-devops/coverage',
pattern: ':organization/:project/:definitionId/:branch*',
}
}
static get examples() {
return [
{
title: 'Azure DevOps coverage',
pattern: ':organization/:project/:definitionId',
namedParams: {
organization: 'swellaby',
project: 'opensource',
definitionId: '25',
},
staticPreview: this.render({ coverage: 100 }),
keywords,
documentation,
static examples = [
{
title: 'Azure DevOps coverage',
pattern: ':organization/:project/:definitionId',
namedParams: {
organization: 'swellaby',
project: 'opensource',
definitionId: '25',
},
{
title: 'Azure DevOps coverage (branch)',
pattern: ':organization/:project/:definitionId/:branch',
namedParams: {
organization: 'swellaby',
project: 'opensource',
definitionId: '25',
branch: 'master',
},
staticPreview: this.render({ coverage: 100 }),
keywords,
documentation,
staticPreview: this.render({ coverage: 100 }),
keywords,
documentation,
},
{
title: 'Azure DevOps coverage (branch)',
pattern: ':organization/:project/:definitionId/:branch',
namedParams: {
organization: 'swellaby',
project: 'opensource',
definitionId: '25',
branch: 'master',
},
]
}
staticPreview: this.render({ coverage: 100 }),
keywords,
documentation,
},
]
static get defaultBadgeData() {
return { label: 'coverage' }
}
static defaultBadgeData = { label: 'coverage' }
static render({ coverage }) {
return {

View File

@@ -5,7 +5,7 @@ const t = (module.exports = require('../tester').createServiceTester())
const org = 'swellaby'
const project = 'opensource'
const linuxDefinitionId = 21
const linuxDefinitionId = 25
const macDefinitionId = 26
const windowsDefinitionId = 24
const nonExistentDefinitionId = 234421

View File

@@ -23,39 +23,29 @@ const documentation = `
`
module.exports = class AzureDevOpsRelease extends BaseSvgScrapingService {
static get category() {
return 'build'
static category = 'build'
static route = {
base: 'azure-devops/release',
pattern: ':organization/:projectId/:definitionId/:environmentId',
}
static get route() {
return {
base: 'azure-devops/release',
pattern: ':organization/:projectId/:definitionId/:environmentId',
}
}
static get examples() {
return [
{
title: 'Azure DevOps releases',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '1',
environmentId: '1',
},
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
static examples = [
{
title: 'Azure DevOps releases',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '1',
environmentId: '1',
},
]
}
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
},
]
static get defaultBadgeData() {
return {
label: 'deployment',
}
}
static defaultBadgeData = { label: 'deployment' }
async handle({ organization, projectId, definitionId, environmentId }) {
// Microsoft documentation: ?

View File

@@ -62,103 +62,95 @@ const buildTestResultSummarySchema = Joi.object({
}).required()
module.exports = class AzureDevOpsTests extends AzureDevOpsBase {
static get category() {
return 'build'
static category = 'build'
static route = {
base: 'azure-devops/tests',
pattern: ':organization/:project/:definitionId/:branch*',
queryParamSchema: testResultQueryParamSchema,
}
static get route() {
return {
base: 'azure-devops/tests',
pattern: ':organization/:project/:definitionId/:branch*',
queryParamSchema: testResultQueryParamSchema,
}
}
static examples = [
{
title: 'Azure DevOps tests',
pattern: ':organization/:project/:definitionId',
namedParams: {
organization: 'azuredevops-powershell',
project: 'azuredevops-powershell',
definitionId: '1',
},
staticPreview: this.render({
passed: 20,
failed: 1,
skipped: 1,
total: 22,
}),
...commonAttrs,
},
{
title: 'Azure DevOps tests (branch)',
pattern: ':organization/:project/:definitionId/:branch',
namedParams: {
organization: 'azuredevops-powershell',
project: 'azuredevops-powershell',
definitionId: '1',
branch: 'master',
},
staticPreview: this.render({
passed: 20,
failed: 1,
skipped: 1,
total: 22,
}),
...commonAttrs,
},
{
title: 'Azure DevOps tests (compact)',
pattern: ':organization/:project/:definitionId',
namedParams: {
organization: 'azuredevops-powershell',
project: 'azuredevops-powershell',
definitionId: '1',
},
queryParams: {
compact_message: null,
},
staticPreview: this.render({
passed: 20,
failed: 1,
skipped: 1,
total: 22,
isCompact: true,
}),
...commonAttrs,
},
{
title: 'Azure DevOps tests with custom labels',
pattern: ':organization/:project/:definitionId',
namedParams: {
organization: 'azuredevops-powershell',
project: 'azuredevops-powershell',
definitionId: '1',
},
queryParams: {
passed_label: 'good',
failed_label: 'bad',
skipped_label: 'n/a',
},
staticPreview: this.render({
passed: 20,
failed: 1,
skipped: 1,
total: 22,
passedLabel: 'good',
failedLabel: 'bad',
skippedLabel: 'n/a',
}),
...commonAttrs,
},
]
static get examples() {
return [
{
title: 'Azure DevOps tests',
pattern: ':organization/:project/:definitionId',
namedParams: {
organization: 'azuredevops-powershell',
project: 'azuredevops-powershell',
definitionId: '1',
},
staticPreview: this.render({
passed: 20,
failed: 1,
skipped: 1,
total: 22,
}),
...commonAttrs,
},
{
title: 'Azure DevOps tests (branch)',
pattern: ':organization/:project/:definitionId/:branch',
namedParams: {
organization: 'azuredevops-powershell',
project: 'azuredevops-powershell',
definitionId: '1',
branch: 'master',
},
staticPreview: this.render({
passed: 20,
failed: 1,
skipped: 1,
total: 22,
}),
...commonAttrs,
},
{
title: 'Azure DevOps tests (compact)',
pattern: ':organization/:project/:definitionId',
namedParams: {
organization: 'azuredevops-powershell',
project: 'azuredevops-powershell',
definitionId: '1',
},
queryParams: {
compact_message: null,
},
staticPreview: this.render({
passed: 20,
failed: 1,
skipped: 1,
total: 22,
isCompact: true,
}),
...commonAttrs,
},
{
title: 'Azure DevOps tests with custom labels',
pattern: ':organization/:project/:definitionId',
namedParams: {
organization: 'azuredevops-powershell',
project: 'azuredevops-powershell',
definitionId: '1',
},
queryParams: {
passed_label: 'good',
failed_label: 'bad',
skipped_label: 'n/a',
},
staticPreview: this.render({
passed: 20,
failed: 1,
skipped: 1,
total: 22,
passedLabel: 'good',
failedLabel: 'bad',
skippedLabel: 'n/a',
}),
...commonAttrs,
},
]
}
static get defaultBadgeData() {
return { label: 'tests' }
}
static defaultBadgeData = { label: 'tests' }
static render({
passed,

View File

@@ -8,32 +8,18 @@ const schema = Joi.object({
}).required()
module.exports = class Beerpay extends BaseJsonService {
static get category() {
return 'funding'
}
static category = 'funding'
static route = { base: 'beerpay', pattern: ':user/:project' }
static get route() {
return {
base: 'beerpay',
pattern: ':user/:project',
}
}
static examples = [
{
title: 'Beerpay',
namedParams: { user: 'hashdog', project: 'scrapfy-chrome-extension' },
staticPreview: this.render({ totalAmount: 10 }),
},
]
static get examples() {
return [
{
title: 'Beerpay',
namedParams: { user: 'hashdog', project: 'scrapfy-chrome-extension' },
staticPreview: this.render({ totalAmount: 10 }),
},
]
}
static get defaultBadgeData() {
return {
label: 'beerpay',
}
}
static defaultBadgeData = { label: 'beerpay' }
static render({ totalAmount }) {
return {

View File

@@ -0,0 +1,115 @@
'use strict'
const Joi = require('@hapi/joi')
const { metric } = require('../text-formatters')
const { downloadCount } = require('../color-formatters')
const { BaseJsonService } = require('..')
const schema = Joi.object({
totalDownloads: Joi.number().required(),
}).required()
const versionSchema = Joi.object({
name: Joi.string().required(),
}).required()
const documentation = `
<p>
These badges utilize unofficial Bintray APIs to retrieve download data. <br />
As such, they may be unstable or intermittently unavailable.
</p>`
module.exports = class BintrayDownloads extends BaseJsonService {
static category = 'downloads'
static route = {
base: 'bintray',
pattern: ':interval(dt)/:subject/:repo/:packageName/:version*',
}
static auth = {
userKey: 'bintray_user',
passKey: 'bintray_apikey',
authorizedOrigins: ['https://bintray.com'],
}
static examples = [
{
title: 'Bintray',
staticPreview: this.render({ downloads: 69000 }),
namedParams: {
interval: 'dt',
subject: 'asciidoctor',
repo: 'maven',
packageName: 'asciidoctorj',
},
documentation,
},
{
title: 'Bintray (latest)',
staticPreview: this.render({ version: 'latest', downloads: 69000 }),
namedParams: {
interval: 'dt',
subject: 'asciidoctor',
repo: 'maven',
packageName: 'asciidoctorj',
version: 'latest',
},
documentation,
},
{
title: 'Bintray (version)',
staticPreview: this.render({ version: '1.6.0', downloads: 69000 }),
namedParams: {
interval: 'dt',
subject: 'asciidoctor',
repo: 'maven',
packageName: 'asciidoctorj',
version: '1.6.0',
},
documentation,
},
]
static defaultBadgeData = { label: 'downloads' }
static render({ version, downloads }) {
return {
label: version ? `downloads@${version}` : 'downloads',
message: metric(downloads),
color: downloadCount(downloads),
}
}
async fetch({ subject, repo, packageName, version }) {
let actualVersion = version
if (version === 'latest') {
actualVersion = (
await this._requestJson(
this.authHelper.withBasicAuth({
schema: versionSchema,
url: `https://bintray.com/api/v1/packages/${subject}/${repo}/${packageName}/versions/_latest`,
})
)
).name
}
return this._requestJson(
this.authHelper.withBasicAuth({
schema,
url: actualVersion
? `https://bintray.com/api/ui/version/${subject}/${repo}/${packageName}/${actualVersion}/total_downloads`
: `https://bintray.com/api/ui/package/${subject}/${repo}/${packageName}/total_downloads`,
})
)
}
async handle({ version, subject, repo, packageName }) {
const { totalDownloads } = await this.fetch({
subject,
repo,
packageName,
version,
})
return this.constructor.render({ version, downloads: totalDownloads })
}
}

View File

@@ -0,0 +1,47 @@
'use strict'
const { expect } = require('chai')
const nock = require('nock')
const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers')
const BintrayDownloads = require('./bintray-downloads.service')
describe('BintrayDownloads', function () {
describe('auth', function () {
cleanUpNockAfterEach()
const user = 'admin'
const pass = 'password'
const config = {
private: {
bintray_user: user,
bintray_apikey: pass,
},
}
it('sends the auth information as configured', async function () {
const scope = nock('https://bintray.com')
.get('/api/ui/package/asciidoctor/maven/asciidoctorj/total_downloads')
// This ensures that the expected credentials are actually being sent with the HTTP request.
// Without this the request wouldn't match and the test would fail.
.basicAuth({ user, pass })
.reply(200, {
totalDownloads: 69,
})
expect(
await BintrayDownloads.invoke(defaultContext, config, {
interval: 'dt',
subject: 'asciidoctor',
repo: 'maven',
packageName: 'asciidoctorj',
})
).to.deep.equal({
color: 'yellowgreen',
label: 'downloads',
message: '69',
})
scope.done()
})
})
})

View File

@@ -0,0 +1,32 @@
'use strict'
const { isMetric } = require('../test-validators')
const t = (module.exports = require('../tester').createServiceTester())
t.create('downloads')
.get('/dt/asciidoctor/maven/asciidoctorj.json')
.expectBadge({
label: 'downloads',
message: isMetric,
})
t.create('downloads (not found)')
.get('/dt/asciidoctor/maven/not-a-real-package.json')
.expectBadge({
label: 'downloads',
message: 'not found',
})
t.create('downloads (mocked)')
.get('/dt/asciidoctor/maven/asciidoctorj.json')
.intercept(nock =>
nock('https://bintray.com')
.get('/api/ui/package/asciidoctor/maven/asciidoctorj/total_downloads')
.reply(200, {
totalDownloads: 420,
})
)
.expectBadge({
label: 'downloads',
message: '420',
})

View File

@@ -10,43 +10,29 @@ const schema = Joi.object()
})
.required()
module.exports = class Bintray extends BaseJsonService {
static get category() {
return 'version'
module.exports = class BintrayVersion extends BaseJsonService {
static category = 'version'
static route = { base: 'bintray/v', pattern: ':subject/:repo/:packageName' }
static auth = {
userKey: 'bintray_user',
passKey: 'bintray_apikey',
authorizedOrigins: ['https://bintray.com'],
}
static get route() {
return {
base: 'bintray/v',
pattern: ':subject/:repo/:packageName',
}
}
static get auth() {
return {
userKey: 'bintray_user',
passKey: 'bintray_apikey',
authorizedOrigins: ['https://bintray.com'],
}
}
static get examples() {
return [
{
title: 'Bintray',
staticPreview: renderVersionBadge({ version: '1.6.0' }),
namedParams: {
subject: 'asciidoctor',
repo: 'maven',
packageName: 'asciidoctorj',
},
static examples = [
{
title: 'Bintray',
staticPreview: renderVersionBadge({ version: '1.6.0' }),
namedParams: {
subject: 'asciidoctor',
repo: 'maven',
packageName: 'asciidoctorj',
},
]
}
},
]
static get defaultBadgeData() {
return { label: 'bintray' }
}
static defaultBadgeData = { label: 'bintray' }
async fetch({ subject, repo, packageName }) {
// https://bintray.com/docs/api/#_get_version

View File

@@ -3,9 +3,9 @@
const { expect } = require('chai')
const nock = require('nock')
const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers')
const Bintray = require('./bintray.service')
const BintrayVersion = require('./bintray-version.service')
describe('Bintray', function () {
describe('BintrayVersion', function () {
describe('auth', function () {
cleanUpNockAfterEach()
@@ -29,7 +29,7 @@ describe('Bintray', function () {
})
expect(
await Bintray.invoke(defaultContext, config, {
await BintrayVersion.invoke(defaultContext, config, {
subject: 'asciidoctor',
repo: 'maven',
packageName: 'asciidoctorj',

View File

@@ -13,31 +13,22 @@ const collectionSchema = Joi.object({
}).required()
module.exports = class BitComponents extends BaseJsonService {
static get category() {
return 'other'
static category = 'other'
static route = {
base: 'bit/collection/total-components',
pattern: ':owner/:collection',
}
static get route() {
return {
base: 'bit/collection/total-components',
pattern: ':owner/:collection',
}
}
static examples = [
{
title: 'bit',
namedParams: { owner: 'ramda', collection: 'ramda' },
staticPreview: this.render({ count: 330 }),
keywords: ['components'],
},
]
static get examples() {
return [
{
title: 'bit',
namedParams: { owner: 'ramda', collection: 'ramda' },
staticPreview: this.render({ count: 330 }),
keywords: ['components'],
},
]
}
static get defaultBadgeData() {
return { label: 'components' }
}
static defaultBadgeData = { label: 'components' }
static render({ count }) {
return { message: metric(count), color: downloadCount(count) }

View File

@@ -14,37 +14,22 @@ function issueClassGenerator(raw) {
const badgeSuffix = raw ? '' : ' open'
return class BitbucketIssues extends BaseJsonService {
static get name() {
return `BitbucketIssues${raw ? 'Raw' : ''}`
}
static name = `BitbucketIssues${raw ? 'Raw' : ''}`
static category = 'issue-tracking'
static route = { base: `bitbucket/${routePrefix}`, pattern: ':user/:repo' }
static get category() {
return 'issue-tracking'
}
static get route() {
return {
base: `bitbucket/${routePrefix}`,
pattern: ':user/:repo',
}
}
static get examples() {
return [
{
title: 'Bitbucket open issues',
namedParams: {
user: 'atlassian',
repo: 'python-bitbucket',
},
staticPreview: this.render({ issues: 33 }),
static examples = [
{
title: 'Bitbucket open issues',
namedParams: {
user: 'atlassian',
repo: 'python-bitbucket',
},
]
}
staticPreview: this.render({ issues: 33 }),
},
]
static get defaultBadgeData() {
return { label: 'issues' }
}
static defaultBadgeData = { label: 'issues' }
static render({ issues }) {
return {

View File

@@ -2,7 +2,7 @@
const Joi = require('@hapi/joi')
const { renderBuildStatusBadge } = require('../build-status')
const { BaseJsonService } = require('..')
const { BaseJsonService, redirector } = require('..')
const bitbucketPipelinesSchema = Joi.object({
values: Joi.array()
@@ -25,45 +25,26 @@ const bitbucketPipelinesSchema = Joi.object({
.required(),
}).required()
module.exports = class BitbucketPipelines extends BaseJsonService {
static get category() {
return 'build'
class BitbucketPipelines extends BaseJsonService {
static category = 'build'
static route = {
base: 'bitbucket/pipelines',
pattern: ':user/:repo/:branch+',
}
static get route() {
return {
base: 'bitbucket/pipelines',
pattern: ':user/:repo/:branch*',
}
}
static get examples() {
return [
{
title: 'Bitbucket Pipelines',
pattern: ':user/:repo',
namedParams: {
user: 'atlassian',
repo: 'adf-builder-javascript',
},
staticPreview: this.render({ status: 'SUCCESSFUL' }),
static examples = [
{
title: 'Bitbucket Pipelines',
namedParams: {
user: 'atlassian',
repo: 'adf-builder-javascript',
branch: 'task/SECO-2168',
},
{
title: 'Bitbucket Pipelines branch',
pattern: ':user/:repo/:branch',
namedParams: {
user: 'atlassian',
repo: 'adf-builder-javascript',
branch: 'task/SECO-2168',
},
staticPreview: this.render({ status: 'SUCCESSFUL' }),
},
]
}
staticPreview: this.render({ status: 'SUCCESSFUL' }),
},
]
static get defaultBadgeData() {
return { label: 'build' }
}
static defaultBadgeData = { label: 'build' }
static render({ status }) {
return renderBuildStatusBadge({ status: status.toLowerCase() })
@@ -99,7 +80,23 @@ module.exports = class BitbucketPipelines extends BaseJsonService {
}
async handle({ user, repo, branch }) {
const data = await this.fetch({ user, repo, branch: branch || 'master' })
const data = await this.fetch({ user, repo, branch })
return this.constructor.render({ status: this.constructor.transform(data) })
}
}
const BitbucketPipelinesRedirector = redirector({
category: 'build',
route: {
base: 'bitbucket/pipelines',
pattern: ':user/:repo',
},
transformPath: ({ user, repo }) =>
`/bitbucket/pipelines/${user}/${repo}/master`,
dateAdded: new Date('2020-07-12'),
})
module.exports = {
BitbucketPipelines,
BitbucketPipelinesRedirector,
}

View File

@@ -1,7 +1,12 @@
'use strict'
const { isBuildStatus } = require('../build-status')
const t = (module.exports = require('../tester').createServiceTester())
const { ServiceTester } = require('../tester')
const t = (module.exports = new ServiceTester({
id: 'BitbucketPipelines',
title: 'Bitbucket Pipelines',
pathPrefix: '/bitbucket/pipelines',
}))
function bitbucketApiResponse(status) {
return JSON.stringify({
@@ -20,15 +25,8 @@ function bitbucketApiResponse(status) {
})
}
t.create('master build result (valid)')
.get('/atlassian/adf-builder-javascript.json')
.expectBadge({
label: 'build',
message: isBuildStatus,
})
t.create('master build result (not found)')
.get('/atlassian/not-a-repo.json')
.get('/atlassian/not-a-repo/master.json')
.expectBadge({ label: 'build', message: 'not found' })
t.create('branch build result (valid)')
@@ -47,7 +45,7 @@ t.create('branch build result (never built)')
.expectBadge({ label: 'build', message: 'never built' })
t.create('build result (passing)')
.get('/atlassian/adf-builder-javascript.json')
.get('/atlassian/adf-builder-javascript/master.json')
.intercept(nock =>
nock('https://api.bitbucket.org')
.get(/^\/2.0\/.*/)
@@ -56,7 +54,7 @@ t.create('build result (passing)')
.expectBadge({ label: 'build', message: 'passing' })
t.create('build result (failing)')
.get('/atlassian/adf-builder-javascript.json')
.get('/atlassian/adf-builder-javascript/master.json')
.intercept(nock =>
nock('https://api.bitbucket.org')
.get(/^\/2.0\/.*/)
@@ -65,7 +63,7 @@ t.create('build result (failing)')
.expectBadge({ label: 'build', message: 'failing' })
t.create('build result (error)')
.get('/atlassian/adf-builder-javascript.json')
.get('/atlassian/adf-builder-javascript/master.json')
.intercept(nock =>
nock('https://api.bitbucket.org')
.get(/^\/2.0\/.*/)
@@ -74,7 +72,7 @@ t.create('build result (error)')
.expectBadge({ label: 'build', message: 'error' })
t.create('build result (stopped)')
.get('/atlassian/adf-builder-javascript.json')
.get('/atlassian/adf-builder-javascript/master.json')
.intercept(nock =>
nock('https://api.bitbucket.org')
.get(/^\/2.0\/.*/)
@@ -83,7 +81,7 @@ t.create('build result (stopped)')
.expectBadge({ label: 'build', message: 'stopped' })
t.create('build result (expired)')
.get('/atlassian/adf-builder-javascript.json')
.get('/atlassian/adf-builder-javascript/master.json')
.intercept(nock =>
nock('https://api.bitbucket.org')
.get(/^\/2.0\/.*/)
@@ -92,10 +90,16 @@ t.create('build result (expired)')
.expectBadge({ label: 'build', message: 'expired' })
t.create('build result (unexpected status)')
.get('/atlassian/adf-builder-javascript.json')
.get('/atlassian/adf-builder-javascript/master.json')
.intercept(nock =>
nock('https://api.bitbucket.org')
.get(/^\/2.0\/.*/)
.reply(200, bitbucketApiResponse('NEW_AND_UNEXPECTED'))
)
.expectBadge({ label: 'build', message: 'invalid response data' })
t.create('build result no branch redirect')
.get('/atlassian/adf-builder-javascript.svg')
.expectRedirect(
'/bitbucket/pipelines/atlassian/adf-builder-javascript/master.svg'
)

View File

@@ -25,47 +25,35 @@ function pullRequestClassGenerator(raw) {
const badgeSuffix = raw ? '' : ' open'
return class BitbucketPullRequest extends BaseJsonService {
static get name() {
return `BitbucketPullRequest${raw ? 'Raw' : ''}`
static name = `BitbucketPullRequest${raw ? 'Raw' : ''}`
static category = 'issue-tracking'
static route = {
base: `bitbucket/${routePrefix}`,
pattern: `:user/:repo`,
queryParamSchema,
}
static get category() {
return 'issue-tracking'
}
static get route() {
return {
base: `bitbucket/${routePrefix}`,
pattern: `:user/:repo`,
queryParamSchema,
}
}
static get examples() {
return [
{
title: 'Bitbucket open pull requests',
namedParams: {
user: 'atlassian',
repo: 'python-bitbucket',
},
staticPreview: this.render({ prs: 22 }),
static examples = [
{
title: 'Bitbucket open pull requests',
namedParams: {
user: 'atlassian',
repo: 'python-bitbucket',
},
{
title: 'Bitbucket Server open pull requests',
namedParams: {
user: 'foo',
repo: 'bar',
},
queryParams: { server: 'https://bitbucket.mydomain.net' },
staticPreview: this.render({ prs: 42 }),
staticPreview: this.render({ prs: 22 }),
},
{
title: 'Bitbucket Server open pull requests',
namedParams: {
user: 'foo',
repo: 'bar',
},
]
}
queryParams: { server: 'https://bitbucket.mydomain.net' },
staticPreview: this.render({ prs: 42 }),
},
]
static get defaultBadgeData() {
return { label: 'pull requests' }
}
static defaultBadgeData = { label: 'pull requests' }
static render({ prs }) {
return {

View File

@@ -13,34 +13,23 @@ const queryParamSchema = Joi.object({
}).required()
module.exports = class Bitrise extends BaseJsonService {
static get category() {
return 'build'
static category = 'build'
static route = {
base: 'bitrise',
pattern: ':appId/:branch?',
queryParamSchema,
}
static get route() {
return {
base: 'bitrise',
pattern: ':appId/:branch?',
queryParamSchema,
}
}
static examples = [
{
title: 'Bitrise',
namedParams: { appId: 'cde737473028420d', branch: 'master' },
queryParams: { token: 'GCIdEzacE4GW32jLVrZb7A' },
staticPreview: this.render({ status: 'success' }),
},
]
static get examples() {
return [
{
title: 'Bitrise',
namedParams: { appId: 'cde737473028420d', branch: 'master' },
queryParams: { token: 'GCIdEzacE4GW32jLVrZb7A' },
staticPreview: this.render({ status: 'success' }),
},
]
}
static get defaultBadgeData() {
return {
label: 'bitrise',
}
}
static defaultBadgeData = { label: 'bitrise' }
static render({ status }) {
const color = {

View File

@@ -8,30 +8,18 @@ const { BaseJsonService } = require('..')
const schema = Joi.object({ activity_total: nonNegativeInteger })
module.exports = class Bountysource extends BaseJsonService {
static get category() {
return 'funding'
}
static category = 'funding'
static route = { base: 'bountysource/team', pattern: ':team/activity' }
static get route() {
return {
base: 'bountysource/team',
pattern: ':team/activity',
}
}
static examples = [
{
title: 'Bountysource',
namedParams: { team: 'mozilla-core' },
staticPreview: this.render({ total: 53000 }),
},
]
static get examples() {
return [
{
title: 'Bountysource',
namedParams: { team: 'mozilla-core' },
staticPreview: this.render({ total: 53000 }),
},
]
}
static get defaultBadgeData() {
return { label: 'bounties' }
}
static defaultBadgeData = { label: 'bounties' }
static render({ total }) {
return {

View File

@@ -4,30 +4,18 @@ const { renderLicenseBadge } = require('../licenses')
const BaseBowerService = require('./bower-base')
module.exports = class BowerLicense extends BaseBowerService {
static get category() {
return 'license'
}
static category = 'license'
static route = { base: 'bower/l', pattern: ':packageName' }
static get route() {
return {
base: 'bower/l',
pattern: ':packageName',
}
}
static examples = [
{
title: 'Bower',
namedParams: { packageName: 'bootstrap' },
staticPreview: renderLicenseBadge({ licenses: ['MIT'] }),
},
]
static get examples() {
return [
{
title: 'Bower',
namedParams: { packageName: 'bootstrap' },
staticPreview: renderLicenseBadge({ licenses: ['MIT'] }),
},
]
}
static get defaultBadgeData() {
return { label: 'license' }
}
static defaultBadgeData = { label: 'license' }
async handle({ packageName }) {
const data = await this.fetch({ packageName })

View File

@@ -10,37 +10,24 @@ const queryParamSchema = Joi.object({
}).required()
class BowerVersion extends BaseBowerService {
static get category() {
return 'version'
}
static category = 'version'
static route = { base: 'bower/v', pattern: ':packageName', queryParamSchema }
static get route() {
return {
base: 'bower/v',
pattern: ':packageName',
queryParamSchema,
}
}
static examples = [
{
title: 'Bower Version',
namedParams: { packageName: 'bootstrap' },
staticPreview: renderVersionBadge({ version: '4.2.1' }),
},
{
title: 'Bower Version (including pre-releases)',
namedParams: { packageName: 'bootstrap' },
queryParams: { include_prereleases: null },
staticPreview: renderVersionBadge({ version: '4.2.1' }),
},
]
static get examples() {
return [
{
title: 'Bower Version',
namedParams: { packageName: 'bootstrap' },
staticPreview: renderVersionBadge({ version: '4.2.1' }),
},
{
title: 'Bower Version (including pre-releases)',
namedParams: { packageName: 'bootstrap' },
queryParams: { include_prereleases: null },
staticPreview: renderVersionBadge({ version: '4.2.1' }),
},
]
}
static get defaultBadgeData() {
return { label: 'bower' }
}
static defaultBadgeData = { label: 'bower' }
async handle({ packageName }, queryParams) {
const data = await this.fetch({ packageName })

View File

@@ -9,35 +9,20 @@ const schema = Joi.array()
.required()
module.exports = class BStatsPlayers extends BaseJsonService {
static get category() {
return 'other'
}
static category = 'other'
static route = { base: 'bstats/players', pattern: ':pluginid' }
static get route() {
return {
base: 'bstats/players',
pattern: ':pluginid',
}
}
static get examples() {
return [
{
title: 'bStats Players',
namedParams: {
pluginid: '1',
},
staticPreview: this.render({ players: 74299 }),
static examples = [
{
title: 'bStats Players',
namedParams: {
pluginid: '1',
},
]
}
staticPreview: this.render({ players: 74299 }),
},
]
static get defaultBadgeData() {
return {
label: 'players',
color: 'blue',
}
}
static defaultBadgeData = { label: 'players', color: 'blue' }
static render({ players }) {
return {

View File

@@ -9,35 +9,20 @@ const schema = Joi.array()
.required()
module.exports = class BStatsServers extends BaseJsonService {
static get category() {
return 'other'
}
static category = 'other'
static route = { base: 'bstats/servers', pattern: ':pluginid' }
static get route() {
return {
base: 'bstats/servers',
pattern: ':pluginid',
}
}
static get examples() {
return [
{
title: 'bStats Servers',
namedParams: {
pluginid: '1',
},
staticPreview: this.render({ servers: 57479 }),
static examples = [
{
title: 'bStats Servers',
namedParams: {
pluginid: '1',
},
]
}
staticPreview: this.render({ servers: 57479 }),
},
]
static get defaultBadgeData() {
return {
label: 'servers',
color: 'blue',
}
}
static defaultBadgeData = { label: 'servers', color: 'blue' }
static render({ servers }) {
return {

View File

@@ -27,51 +27,38 @@ const documentation = `
`
module.exports = class Bugzilla extends BaseJsonService {
static get category() {
return 'issue-tracking'
}
static category = 'issue-tracking'
static route = { base: 'bugzilla', pattern: ':bugNumber', queryParamSchema }
static get route() {
return {
base: 'bugzilla',
pattern: ':bugNumber',
queryParamSchema,
}
}
static get examples() {
return [
{
title: 'Bugzilla bug status (Mozilla)',
namedParams: {
bugNumber: '996038',
},
staticPreview: this.render({
bugNumber: 996038,
status: 'FIXED',
resolution: '',
}),
documentation,
static examples = [
{
title: 'Bugzilla bug status (Mozilla)',
namedParams: {
bugNumber: '996038',
},
{
title: 'Bugzilla bug status (non-Mozilla)',
namedParams: {
bugNumber: '545424',
},
queryParams: { baseUrl: 'https://bugs.eclipse.org/bugs' },
staticPreview: this.render({
bugNumber: 545424,
status: 'RESOLVED',
resolution: 'FIXED',
}),
documentation,
staticPreview: this.render({
bugNumber: 996038,
status: 'FIXED',
resolution: '',
}),
documentation,
},
{
title: 'Bugzilla bug status (non-Mozilla)',
namedParams: {
bugNumber: '545424',
},
]
}
queryParams: { baseUrl: 'https://bugs.eclipse.org/bugs' },
staticPreview: this.render({
bugNumber: 545424,
status: 'RESOLVED',
resolution: 'FIXED',
}),
documentation,
},
]
static get defaultBadgeData() {
return { label: 'bugzilla' }
}
static defaultBadgeData = { label: 'bugzilla' }
static getDisplayStatus({ status, resolution }) {
let displayStatus =

View File

@@ -22,9 +22,11 @@ const redStatuses = [
]
const otherStatuses = [
'aborted',
'building',
'canceled',
'cancelled',
'created',
'expired',
'initiated',
'no builds',

View File

@@ -10,42 +10,30 @@ const schema = Joi.object({
}).required()
module.exports = class Buildkite extends BaseJsonService {
static get category() {
return 'build'
}
static category = 'build'
static route = { base: 'buildkite', pattern: ':identifier/:branch*' }
static get route() {
return {
base: 'buildkite',
pattern: ':identifier/:branch*',
}
}
static get examples() {
return [
{
title: 'Buildkite',
pattern: ':identifier',
namedParams: {
identifier: '3826789cf8890b426057e6fe1c4e683bdf04fa24d498885489',
},
staticPreview: renderBuildStatusBadge({ status: 'passing' }),
static examples = [
{
title: 'Buildkite',
pattern: ':identifier',
namedParams: {
identifier: '3826789cf8890b426057e6fe1c4e683bdf04fa24d498885489',
},
{
title: 'Buildkite (branch)',
pattern: ':identifier/:branch',
namedParams: {
identifier: '3826789cf8890b426057e6fe1c4e683bdf04fa24d498885489',
branch: 'master',
},
staticPreview: renderBuildStatusBadge({ status: 'passing' }),
staticPreview: renderBuildStatusBadge({ status: 'passing' }),
},
{
title: 'Buildkite (branch)',
pattern: ':identifier/:branch',
namedParams: {
identifier: '3826789cf8890b426057e6fe1c4e683bdf04fa24d498885489',
branch: 'master',
},
]
}
staticPreview: renderBuildStatusBadge({ status: 'passing' }),
},
]
static get defaultBadgeData() {
return { label: 'build' }
}
static defaultBadgeData = { label: 'build' }
async fetch({ identifier, branch }) {
const url = `https://badge.buildkite.com/${identifier}.json`

View File

@@ -13,72 +13,61 @@ const schema = Joi.object({
const keywords = ['node', 'bundlephobia']
module.exports = class Bundlephobia extends BaseJsonService {
static get category() {
return 'size'
static category = 'size'
static route = {
base: 'bundlephobia',
pattern: ':format(min|minzip)/:scope(@[^/]+)?/:packageName/:version?',
}
static get route() {
return {
base: 'bundlephobia',
pattern: ':format(min|minzip)/:scope(@[^/]+)?/:packageName/:version?',
}
}
static examples = [
{
title: 'npm bundle size',
pattern: ':format(min|minzip)/:packageName',
namedParams: {
format: 'min',
packageName: 'react',
},
staticPreview: this.render({ format: 'min', size: 6652 }),
keywords,
},
{
title: 'npm bundle size (scoped)',
pattern: ':format(min|minzip)/:scope/:packageName',
namedParams: {
format: 'min',
scope: '@cycle',
packageName: 'core',
},
staticPreview: this.render({ format: 'min', size: 3562 }),
keywords,
},
{
title: 'npm bundle size (version)',
pattern: ':format(min|minzip)/:packageName/:version',
namedParams: {
format: 'min',
packageName: 'react',
version: '15.0.0',
},
staticPreview: this.render({ format: 'min', size: 20535 }),
keywords,
},
{
title: 'npm bundle size (scoped version)',
pattern: ':format(min|minzip)/:scope/:packageName/:version',
namedParams: {
format: 'min',
scope: '@cycle',
packageName: 'core',
version: '7.0.0',
},
staticPreview: this.render({ format: 'min', size: 3562 }),
keywords,
},
]
static get examples() {
return [
{
title: 'npm bundle size',
pattern: ':format(min|minzip)/:packageName',
namedParams: {
format: 'min',
packageName: 'react',
},
staticPreview: this.render({ format: 'min', size: 6652 }),
keywords,
},
{
title: 'npm bundle size (scoped)',
pattern: ':format(min|minzip)/:scope/:packageName',
namedParams: {
format: 'min',
scope: '@cycle',
packageName: 'core',
},
staticPreview: this.render({ format: 'min', size: 3562 }),
keywords,
},
{
title: 'npm bundle size (version)',
pattern: ':format(min|minzip)/:packageName/:version',
namedParams: {
format: 'min',
packageName: 'react',
version: '15.0.0',
},
staticPreview: this.render({ format: 'min', size: 20535 }),
keywords,
},
{
title: 'npm bundle size (scoped version)',
pattern: ':format(min|minzip)/:scope/:packageName/:version',
namedParams: {
format: 'min',
scope: '@cycle',
packageName: 'core',
version: '7.0.0',
},
staticPreview: this.render({ format: 'min', size: 3562 }),
keywords,
},
]
}
static get defaultBadgeData() {
return {
label: 'bundlephobia',
color: 'informational',
}
}
static defaultBadgeData = { label: 'bundlephobia', color: 'informational' }
static render({ format, size }) {
const label = format === 'min' ? 'minified size' : 'minzipped size'

View File

@@ -10,29 +10,17 @@ const cdnjsSchema = Joi.object({
}).required()
module.exports = class Cdnjs extends BaseJsonService {
static get category() {
return 'version'
}
static category = 'version'
static route = { base: 'cdnjs/v', pattern: ':library' }
static get route() {
return {
base: 'cdnjs/v',
pattern: ':library',
}
}
static examples = [
{
namedParams: { library: 'jquery' },
staticPreview: this.render({ version: '1.5.2' }),
},
]
static get examples() {
return [
{
namedParams: { library: 'jquery' },
staticPreview: this.render({ version: '1.5.2' }),
},
]
}
static get defaultBadgeData() {
return { label: 'cdnjs' }
}
static defaultBadgeData = { label: 'cdnjs' }
static render({ version }) {
return renderVersionBadge({ version })

Some files were not shown because too many files have changed in this diff Show More