Compare commits

...

299 Commits

Author SHA1 Message Date
github-actions[bot]
e140f1ddbd Changelog for Release server-2024-01-01 (#9863)
* Update Changelog

* Update CHANGELOG.md

* prettier

---------

Co-authored-by: release[bot] <actions@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
Co-authored-by: chris48s <git@chris-shaw.dev>
2024-01-01 10:15:22 +00:00
chris48s
8d7258b344 migrate some services from examples to openApi (#9856) 2023-12-31 19:39:00 +00:00
Pierre-Yves Bigourdan
66af65c9e2 migrate examples to openApi part 32; affects [azuredevops youtube] (#9861)
* migrate some services from examples to openApi

* Use testResultOpenApiQueryParams instead of redefining queryParams
2023-12-31 16:46:01 +00:00
chris48s
880c1fb49c call [docker] with auth (#9803)
* allow user to set dockerhub credentials

* add withJwtAuth function to AuthHelper

* use withJwtAuth in DockerHub badges

* add unit tests for JWT auth

* use auth when calling docker cloud

* refactor and assert fetch helpers call withJwtAuth

* store token for a max duration (defaults to 1 hour)

* tangent: update test example
2023-12-31 14:55:18 +00:00
chris48s
bfa712469a migrate some services from examples to openApi part 28; affects [aur cran mastodon matrix npmstat nyc thunderstore twitter] (#9855)
* migrate some services from examples to openApi

* always use capitals in period/interval description
2023-12-31 14:14:57 +00:00
Pierre-Yves Bigourdan
04254e5905 Ensure social category badges are rendered with social style and logo; affects [gitlab keybase lemmy modrinth thunderstore twitch] gist github reddit (#9859)
* Ensure social category badges are rendered with social style and logo

* Fix Twitch auth test
2023-12-31 14:08:55 +00:00
dependabot[bot]
17d04f73be chore(deps): bump got from 13.0.0 to 14.0.0 (#9775)
Bumps [got](https://github.com/sindresorhus/got) from 13.0.0 to 14.0.0.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v13.0.0...v14.0.0)

---
updated-dependencies:
- dependency-name: got
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-30 19:24:43 +00:00
chris48s
01de8910cd deploy on node 20 (#9799)
* deploy on node 20

* use appropriate npm versions for each node version
2023-12-30 19:03:34 +00:00
Pierre-Yves Bigourdan
3300e4a09d Small [YouTube] cleanup (#9860) 2023-12-30 18:07:08 +00:00
chris48s
700566ff26 add description to interval enums (#9854) 2023-12-30 17:38:48 +00:00
chris48s
e548414edd convert 'style' param to enum (#9853)
* convert 'style' param to enum

* update test
2023-12-30 17:38:42 +00:00
chris48s
7404d4e207 increase page size for github release badge by semver (#9818) 2023-12-30 17:38:36 +00:00
chris48s
10bf39632a migrate examples to openApi part 26; affects [gitlab] (#9752)
* replace failing 'other' test with a mock

* update pipeline/coverage 'not found' tests

* migrate gitlab from examples to openApi

* eat own tail
2023-12-30 17:38:31 +00:00
dependabot[bot]
7d7efaec22 chore(deps-dev): bump @easyops-cn/docusaurus-search-local (#9847)
Bumps [@easyops-cn/docusaurus-search-local](https://github.com/easyops-cn/docusaurus-search-local) from 0.39.0 to 0.40.1.
- [Release notes](https://github.com/easyops-cn/docusaurus-search-local/releases)
- [Changelog](https://github.com/easyops-cn/docusaurus-search-local/blob/master/docusaurus-search-local/CHANGELOG.md)
- [Commits](https://github.com/easyops-cn/docusaurus-search-local/compare/v0.39.0...v0.40.1)

---
updated-dependencies:
- dependency-name: "@easyops-cn/docusaurus-search-local"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-29 12:52:25 +00:00
dependabot[bot]
66ca8830fe chore(deps): bump simple-icons from 10.3.0 to 10.4.0 (#9849)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 10.3.0 to 10.4.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/10.3.0...10.4.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-29 12:49:18 +00:00
dependabot[bot]
979361dfb6 chore(deps-dev): bump cypress from 13.6.1 to 13.6.2 (#9850)
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.6.1 to 13.6.2.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.6.1...v13.6.2)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-29 12:37:10 +00:00
dependabot[bot]
3e6d412bf7 chore(deps-dev): bump @typescript-eslint/parser from 6.15.0 to 6.16.0 (#9851)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.15.0 to 6.16.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.16.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-29 12:36:53 +00:00
dependabot[bot]
f476b2f3a8 chore(deps-dev): bump tsd from 0.30.0 to 0.30.1 (#9848)
Bumps [tsd](https://github.com/tsdjs/tsd) from 0.30.0 to 0.30.1.
- [Release notes](https://github.com/tsdjs/tsd/releases)
- [Commits](https://github.com/tsdjs/tsd/compare/v0.30.0...v0.30.1)

---
updated-dependencies:
- dependency-name: tsd
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-29 12:36:40 +00:00
Pierre-Yves Bigourdan
4ba86170a7 migrate some services from examples to openApi (#9841) 2023-12-28 12:57:58 +00:00
chris48s
9628fc4642 migrate some services from examples to openApi (#9737) 2023-12-24 20:35:04 +00:00
chris48s
5024688bc3 migrate examples to openApi part 23; affects [wordpress] (#9732)
* migrate some services from examples to openApi

* whoops. missed a spot
2023-12-24 20:29:08 +00:00
Pierre-Yves Bigourdan
5676ec5b81 Fix typo in queryParams documentation (#9840) 2023-12-24 20:28:25 +00:00
chris48s
86581e6ddd migrate some services from examples to openApi (#9749) 2023-12-24 20:26:58 +00:00
chris48s
bd288db3a4 migrate examples to openApi part 18; affects [conda feedz gem openvsx readthedocs] github (#9607)
* migrate some services from examples to openApi

* fixup which --> variant param rename

* improve descriptions

* migrate gem version

* improve descriptions for ruby gems

* standardise on packageName for all conda badges
2023-12-23 18:19:15 +00:00
chris48s
188c34d7c2 migrate some services from examples to openApi (#9716) 2023-12-23 18:12:18 +00:00
chris48s
6ec8c7e06f migrate some services from examples to openApi (#9731) 2023-12-23 18:12:13 +00:00
chris48s
8abb365bbf migrate examples to openApi part 20: TUTORIAL.md (#9713)
* migrate examples to openApi part 20: TUTORIAL.md

* various tweaks

* Update doc/TUTORIAL.md

Co-authored-by: Pierre-Yves Bigourdan <10694593+PyvesB@users.noreply.github.com>

---------

Co-authored-by: Pierre-Yves Bigourdan <10694593+PyvesB@users.noreply.github.com>
2023-12-23 00:27:21 +00:00
chris48s
595a9a90b7 link to mterczynski.pl/joi-schema-generator in validation docs (#9700) 2023-12-23 00:20:10 +00:00
Joe Clack
d0bdb8244c [Thunderstore] Add Thunderstore Badges (#9782)
* add base for thunderstore services

* badge service and corresponding tester for thunderstore download count

* badge service and corresponding tester for thunderstore latest package version

* fix HTML

* use stable package-metrics endpoint

* remove erroneous statement from docs

* remove `namedLogo` from default badge data on both services

* follow route naming conventions

* use `[x].json` for test assertions

* use existing version pattern

* document service `handle` return-type more narrowly

* use consistent test formatting

* add base for thunderstore services

* badge service and corresponding tester for thunderstore download count

* badge service and corresponding tester for thunderstore latest package version

* fix HTML

* use stable package-metrics endpoint

* remove erroneous statement from docs

* remove `namedLogo` from default badge data on both services

* follow route naming conventions

* use `[x].json` for test assertions

* use existing version pattern

* document service `handle` return-type more narrowly

* use consistent test formatting

* plural-ise base thunderstore docs

* don't require unused attributes

* declare BaseThunderstoreService abstract, add docstring

* add thunderstoreGreen static variable

* add thunderstore likes service

---------

Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2023-12-22 14:29:03 +00:00
chris48s
2de7e8f856 migrate examples to openApi part 19; affects [azuredevops codacy greasyfork jenkinsplugininstalls jetbrains osslifecycle travis visualstudio] and librariesio, uptimerobot (#9610)
* migrate some services from examples to openApi

* improve azure devops description
2023-12-22 13:25:50 +00:00
chris48s
b71f812b68 migrate examples to openApi part 17; affects [buildkite cii codeship crates jsdelivr npms] and bundlephobia (#9584)
* update crates service test

* migrate some services from examples to openApi

* migrate crates from examples to openApi, improve titles

* explain what hd,hw,hm,hy actually mean

* improve descriptions
2023-12-22 13:25:38 +00:00
dependabot[bot]
9456e441ea chore(deps): bump @renovatebot/ruby-semver from 3.0.21 to 3.0.22 (#9828)
Bumps [@renovatebot/ruby-semver](https://github.com/renovatebot/ruby-semver) from 3.0.21 to 3.0.22.
- [Release notes](https://github.com/renovatebot/ruby-semver/releases)
- [Changelog](https://github.com/renovatebot/ruby-semver/blob/main/.releaserc.json)
- [Commits](https://github.com/renovatebot/ruby-semver/compare/3.0.21...3.0.22)

---
updated-dependencies:
- dependency-name: "@renovatebot/ruby-semver"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-22 13:24:55 +00:00
dependabot[bot]
1cc8d5387c chore(deps-dev): bump prism-react-renderer from 2.3.0 to 2.3.1 (#9834)
Bumps [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/FormidableLabs/prism-react-renderer/releases)
- [Commits](https://github.com/FormidableLabs/prism-react-renderer/compare/prism-react-renderer@2.3.0...prism-react-renderer@2.3.1)

---
updated-dependencies:
- dependency-name: prism-react-renderer
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-22 13:18:31 +00:00
dependabot[bot]
1af3dfe687 chore(deps): bump simple-icons from 10.2.0 to 10.3.0 (#9832)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/10.2.0...10.3.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-22 13:13:47 +00:00
dependabot[bot]
0c4001043d chore(deps): bump xpath from 0.0.33 to 0.0.34 (#9835)
Bumps [xpath](https://github.com/goto100/xpath) from 0.0.33 to 0.0.34.
- [Commits](https://github.com/goto100/xpath/commits)

---
updated-dependencies:
- dependency-name: xpath
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-22 13:12:30 +00:00
dependabot[bot]
657a146a8e chore(deps): bump @renovatebot/pep440 from 3.0.14 to 3.0.17 (#9836)
Bumps [@renovatebot/pep440](https://github.com/renovatebot/pep440) from 3.0.14 to 3.0.17.
- [Release notes](https://github.com/renovatebot/pep440/releases)
- [Changelog](https://github.com/renovatebot/pep440/blob/main/.releaserc.json)
- [Commits](https://github.com/renovatebot/pep440/compare/3.0.14...3.0.17)

---
updated-dependencies:
- dependency-name: "@renovatebot/pep440"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-22 13:12:08 +00:00
dependabot[bot]
ffb18a10fc chore(deps-dev): bump eslint from 8.55.0 to 8.56.0 (#9827)
Bumps [eslint](https://github.com/eslint/eslint) from 8.55.0 to 8.56.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.55.0...v8.56.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-22 13:08:14 +00:00
dependabot[bot]
1e938d42ea chore(deps-dev): bump open-cli from 7.2.0 to 8.0.0 (#9833)
Bumps [open-cli](https://github.com/sindresorhus/open-cli) from 7.2.0 to 8.0.0.
- [Release notes](https://github.com/sindresorhus/open-cli/releases)
- [Commits](https://github.com/sindresorhus/open-cli/compare/v7.2.0...v8.0.0)

---
updated-dependencies:
- dependency-name: open-cli
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-22 13:05:50 +00:00
dependabot[bot]
c8ba2c2e16 chore(deps-dev): bump tsd from 0.29.0 to 0.30.0 (#9831)
Bumps [tsd](https://github.com/tsdjs/tsd) from 0.29.0 to 0.30.0.
- [Release notes](https://github.com/tsdjs/tsd/releases)
- [Commits](https://github.com/tsdjs/tsd/compare/v0.29.0...v0.30.0)

---
updated-dependencies:
- dependency-name: tsd
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-22 13:05:14 +00:00
dependabot[bot]
5975e6f3ea chore(deps-dev): bump @typescript-eslint/parser from 6.14.0 to 6.15.0 (#9830)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.14.0 to 6.15.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.15.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-22 13:04:39 +00:00
dependabot[bot]
9a9c8b2359 chore(deps): bump prom-client from 15.0.0 to 15.1.0 (#9829)
Bumps [prom-client](https://github.com/siimon/prom-client) from 15.0.0 to 15.1.0.
- [Release notes](https://github.com/siimon/prom-client/releases)
- [Changelog](https://github.com/siimon/prom-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/siimon/prom-client/compare/v15.0.0...v15.1.0)

---
updated-dependencies:
- dependency-name: prom-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-22 13:04:21 +00:00
dependabot[bot]
d685669fa8 chore(deps): bump @sentry/node from 7.88.0 to 7.91.0 (#9825)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.88.0 to 7.91.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.88.0...7.91.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-22 13:03:41 +00:00
Fatpandac
6e581b7acf Add [Raycast] Badge (#9801)
* feat: add Raycast extension installs Badge

* fix: capitalize the first letter

* fix: change to use the offical public API

* fix: change category to downloads
2023-12-20 16:28:41 +00:00
dependabot[bot]
c44e8c4cce chore(deps): bump actions/upload-artifact from 3 to 4 (#9821)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-19 20:16:54 +00:00
CanisHelix
8f1f787ceb [GITEA] add new gitea service (release/languages) (#9781)
* add gitea service based on gitlab

* update gitea to use mocks

* add gitea release test

* move tests to use public repo on codeberg and fixes

* add pagination, update tests to live, set gitea_url as required

* add auth test (wip)

* fix base auth test

* fix required optionalUrl, remove default, assume semver from firstpage

* update example to use stable repository
2023-12-18 12:39:17 +00:00
dependabot[bot]
2814de2ecd chore(deps): bump @renovatebot/ruby-semver from 3.0.19 to 3.0.21 (#9807)
Bumps [@renovatebot/ruby-semver](https://github.com/renovatebot/ruby-semver) from 3.0.19 to 3.0.21.
- [Release notes](https://github.com/renovatebot/ruby-semver/releases)
- [Changelog](https://github.com/renovatebot/ruby-semver/blob/main/.releaserc.json)
- [Commits](https://github.com/renovatebot/ruby-semver/compare/3.0.19...3.0.21)

---
updated-dependencies:
- dependency-name: "@renovatebot/ruby-semver"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 20:56:54 +00:00
dependabot[bot]
dce0b9e765 chore(deps-dev): bump eslint-plugin-import from 2.29.0 to 2.29.1 (#9809)
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.29.0 to 2.29.1.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.29.0...v2.29.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 20:49:52 +00:00
dependabot[bot]
2424d4270b chore(deps): bump simple-icons from 10.1.0 to 10.2.0 (#9812)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 10.1.0 to 10.2.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/10.1.0...10.2.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 20:46:25 +00:00
dependabot[bot]
03e8bebaaa chore(deps-dev): bump @easyops-cn/docusaurus-search-local (#9815)
Bumps [@easyops-cn/docusaurus-search-local](https://github.com/easyops-cn/docusaurus-search-local) from 0.38.1 to 0.39.0.
- [Release notes](https://github.com/easyops-cn/docusaurus-search-local/releases)
- [Changelog](https://github.com/easyops-cn/docusaurus-search-local/blob/master/docusaurus-search-local/CHANGELOG.md)
- [Commits](https://github.com/easyops-cn/docusaurus-search-local/compare/v0.38.1...v0.39.0)

---
updated-dependencies:
- dependency-name: "@easyops-cn/docusaurus-search-local"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 20:45:51 +00:00
dependabot[bot]
5b286f1f68 chore(deps-dev): bump node-mocks-http from 1.13.0 to 1.14.0 (#9813)
Bumps [node-mocks-http](https://github.com/howardabrams/node-mocks-http) from 1.13.0 to 1.14.0.
- [Release notes](https://github.com/howardabrams/node-mocks-http/releases)
- [Changelog](https://github.com/eugef/node-mocks-http/blob/master/HISTORY.md)
- [Commits](https://github.com/howardabrams/node-mocks-http/compare/v1.13.0...v.1.14.0)

---
updated-dependencies:
- dependency-name: node-mocks-http
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 20:44:48 +00:00
dependabot[bot]
2a2f3bf977 chore(deps): bump @renovatebot/pep440 from 3.0.12 to 3.0.14 (#9811)
Bumps [@renovatebot/pep440](https://github.com/renovatebot/pep440) from 3.0.12 to 3.0.14.
- [Release notes](https://github.com/renovatebot/pep440/releases)
- [Changelog](https://github.com/renovatebot/pep440/blob/main/.releaserc.json)
- [Commits](https://github.com/renovatebot/pep440/compare/3.0.12...3.0.14)

---
updated-dependencies:
- dependency-name: "@renovatebot/pep440"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 20:44:02 +00:00
dependabot[bot]
c876f45789 chore(deps): bump @sentry/node from 7.86.0 to 7.88.0 (#9810)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.86.0 to 7.88.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.86.0...7.88.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 20:35:05 +00:00
dependabot[bot]
0036a1dfb2 chore(deps-dev): bump @typescript-eslint/parser from 6.13.2 to 6.14.0 (#9808)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.13.2 to 6.14.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.14.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 20:34:34 +00:00
dependabot[bot]
68a2961390 chore(deps-dev): bump eslint-plugin-jsdoc from 46.9.0 to 46.9.1 (#9806)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.9.0 to 46.9.1.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.9.0...v46.9.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 20:34:20 +00:00
dependabot[bot]
bb254053ea chore(deps-dev): bump prettier from 3.1.0 to 3.1.1 (#9814)
Bumps [prettier](https://github.com/prettier/prettier) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.1.0...3.1.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 20:34:06 +00:00
chris48s
cee41f5818 improve documentation for [dynamicxml] service (#9798) 2023-12-13 19:54:21 +00:00
Huan
57ba623fd6 Add [NpmStatDownloads] Badge (#9783)
* feat: add npm downloads (by author) badge

* Update services/npm-stat/npm-stat-downloads.service.js

Co-authored-by: chris48s <chris48s@users.noreply.github.com>

* test: add test cases for NpmStatDownloads helper getTotalDownloads

* refactor: using dayjs to get from && until date string

* feat: remove support of dt

---------

Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2023-12-12 19:19:22 +00:00
Sigurd Meldgaard
407fe39e6e [pub] Use official version endpoint for pub-service (#9802)
* Use official version endpoint for pub-service

* run prettier

* Update schema

* make services a required property

---------

Co-authored-by: chris48s <git@chris-shaw.dev>
2023-12-12 19:17:17 +00:00
chris48s
78f83249fa fix typo in docs (#9804) 2023-12-11 19:05:11 +00:00
dependabot[bot]
7d391b4277 chore(deps-dev): bump eslint-config-prettier from 9.0.0 to 9.1.0 (#9788)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 9.0.0 to 9.1.0.
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v9.0.0...v9.1.0)

---
updated-dependencies:
- dependency-name: eslint-config-prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-10 11:53:38 +00:00
dependabot[bot]
b73a704b63 chore(deps): bump simple-icons from 10.0.0 to 10.1.0 (#9795)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 10.0.0 to 10.1.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/10.0.0...10.1.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-10 11:47:43 +00:00
dependabot[bot]
f110e485d0 chore(deps-dev): bump danger from 11.3.0 to 11.3.1 (#9790)
Bumps [danger](https://github.com/danger/danger-js) from 11.3.0 to 11.3.1.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/11.3.0...11.3.1)

---
updated-dependencies:
- dependency-name: danger
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-10 11:42:40 +00:00
dependabot[bot]
b3039abeda chore(deps-dev): bump @typescript-eslint/parser from 6.13.1 to 6.13.2 (#9791)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.13.1 to 6.13.2.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.13.2/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-10 11:41:56 +00:00
dependabot[bot]
1c2e67d913 chore(deps-dev): bump lint-staged from 15.1.0 to 15.2.0 (#9789)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 15.1.0 to 15.2.0.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/master/CHANGELOG.md)
- [Commits](https://github.com/okonet/lint-staged/compare/v15.1.0...v15.2.0)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-10 11:41:39 +00:00
dependabot[bot]
f693a6e567 chore(deps-dev): bump nodemon from 3.0.1 to 3.0.2 (#9792)
Bumps [nodemon](https://github.com/remy/nodemon) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.0.1...v3.0.2)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-10 11:40:41 +00:00
dependabot[bot]
2ad636d8b9 chore(deps-dev): bump cypress from 13.6.0 to 13.6.1 (#9793)
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.6.0 to 13.6.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.6.0...v13.6.1)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-10 11:40:14 +00:00
dependabot[bot]
72f7b7b551 chore(deps-dev): bump eslint from 8.54.0 to 8.55.0 (#9794)
Bumps [eslint](https://github.com/eslint/eslint) from 8.54.0 to 8.55.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.54.0...v8.55.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-10 11:39:58 +00:00
dependabot[bot]
3decd57855 chore(deps): bump @sentry/node from 7.84.0 to 7.86.0 (#9796)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.84.0 to 7.86.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.84.0...7.86.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-10 11:39:41 +00:00
chris48s
b8819746c1 stop linking to twitter (#9685) 2023-12-09 18:55:27 +00:00
chris48s
de86924d7d cache weblate badges for longer (#9786) 2023-12-06 20:10:31 +00:00
Joshua Newton
f6e40a600e [Discourse] Update schema keys to use plural form (topic_count -> topics_count) (#9778)
* Discourse: Update schema to use plural keys

(e.g. topic_count -> topics_countN)

* Revert "Discourse: Update schema to use plural keys"

This reverts commit 4073a17aaa.

* `discourse.service.js`: Add `Joi.alternatives` plural schema

* `discourse.service.js`: Update func to be plural-agnostic

Previously, for e.g. 'topic', the call to the `DiscourseMetricIntegrationFactory` function supplied both 'topics' and 'topic_count'. And, we now need to check for 'topics_count' as well. To cover all three string variations, why not supply only 'topic' to the function, then selectively add the 's' on a case-by-case basis.

((Note: I've preserved the old metricName variable as to minimize the diff here and make my changes clearer.))

* `discourse.tester.js`: Add second `data` case

* Address Prettier linting warnings
2023-12-06 19:54:39 +00:00
chris48s
57820b2eb9 cache some badges for longer (#9785) 2023-12-06 18:42:06 +00:00
chris48s
45bb786147 log 429s to sentry (attempt 2); affects [dynamic endpoint uptimerobot weblate opencollective discord github] (#9546)
* log to sentry if upstream service responds with 429

* allow services to decide which error(s) to log, default to 429

* don't log 429s from endpoint or dynamic badges

* supress 429s from uptime robot badges

* supress 429s from weblate if not calling default server

* cache opencollective badges for longer

* cache discord badges for longer

* cache github workflow badges for longer
2023-12-04 13:37:58 +00:00
chris48s
791e635408 migrate examples to openApi part 15; affects [pingpong polymart spiget] (#9561)
* migrate some services from examples to openApi

also move common pingpong bits into a base class

* improve descriptions
2023-12-04 13:25:56 +00:00
dependabot[bot]
3ca60917b4 chore(deps-dev): bump @easyops-cn/docusaurus-search-local (#9771)
Bumps [@easyops-cn/docusaurus-search-local](https://github.com/easyops-cn/docusaurus-search-local) from 0.36.0 to 0.38.1.
- [Release notes](https://github.com/easyops-cn/docusaurus-search-local/releases)
- [Changelog](https://github.com/easyops-cn/docusaurus-search-local/blob/master/docusaurus-search-local/CHANGELOG.md)
- [Commits](https://github.com/easyops-cn/docusaurus-search-local/compare/v0.36.0...v0.38.1)

---
updated-dependencies:
- dependency-name: "@easyops-cn/docusaurus-search-local"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-04 13:11:35 +00:00
chris48s
3eb4959163 migrate examples to openApi part 14; affects [azuredevops discord netlify opencollective pub ros visualstudio] (#9560)
* migrate some services from examples to openApi

* migrate pub version

* improve pub descriptions
2023-12-04 13:09:37 +00:00
dependabot[bot]
0bda253fe4 chore(deps): bump @sentry/node from 7.81.1 to 7.84.0 (#9772)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.81.1 to 7.84.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.81.1...7.84.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-04 13:00:29 +00:00
dependabot[bot]
113074aa92 chore(deps-dev): bump nock from 13.3.8 to 13.4.0 (#9773)
Bumps [nock](https://github.com/nock/nock) from 13.3.8 to 13.4.0.
- [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.3.8...v13.4.0)

---
updated-dependencies:
- dependency-name: nock
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-04 13:00:25 +00:00
dependabot[bot]
e7784ac2d6 chore(deps-dev): bump @typescript-eslint/parser from 6.12.0 to 6.13.1 (#9774)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.12.0 to 6.13.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.13.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-04 13:00:20 +00:00
chris48s
5d1ddbc3fe migrate examples to openApi part 13; affects [curseforge date fedora hsts modrinth ore] (#9499)
* migrate some services from examples to openApi

* improve and de-dupe service titles

* improve ore description
2023-12-04 12:53:21 +00:00
github-actions[bot]
be6598623e Changelog for Release server-2023-12-04 (#9779)
* Update Changelog

* Update CHANGELOG.md

---------

Co-authored-by: release[bot] <actions@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2023-12-04 12:46:13 +00:00
chris48s
1c073cbe7d update website docs, migrate examples to openapi (#9612) 2023-12-02 23:13:04 +00:00
dependabot[bot]
9118ba8d24 chore(deps): bump simple-icons from 9.20.0 to 10.0.0 (#9768)
* chore(deps): bump simple-icons from 9.20.0 to 10.0.0

Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.20.0 to 10.0.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.20.0...10.0.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

* simple icons 10 blog post

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: chris48s <git@chris-shaw.dev>
2023-11-29 19:19:04 +00:00
dependabot[bot]
206a58a731 chore(deps): bump @renovatebot/ruby-semver from 3.0.18 to 3.0.19 (#9761)
Bumps [@renovatebot/ruby-semver](https://github.com/renovatebot/ruby-semver) from 3.0.18 to 3.0.19.
- [Release notes](https://github.com/renovatebot/ruby-semver/releases)
- [Changelog](https://github.com/renovatebot/ruby-semver/blob/main/.releaserc.json)
- [Commits](https://github.com/renovatebot/ruby-semver/compare/3.0.18...3.0.19)

---
updated-dependencies:
- dependency-name: "@renovatebot/ruby-semver"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-29 19:13:29 +00:00
dependabot[bot]
a7d6442abd chore(deps-dev): bump prism-react-renderer from 2.2.0 to 2.3.0 (#9758)
Bumps [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/FormidableLabs/prism-react-renderer/releases)
- [Commits](https://github.com/FormidableLabs/prism-react-renderer/compare/prism-react-renderer@2.2.0...prism-react-renderer@2.3.0)

---
updated-dependencies:
- dependency-name: prism-react-renderer
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-29 18:59:18 +00:00
dependabot[bot]
dca72ef5b2 chore(deps): bump @renovatebot/pep440 from 3.0.11 to 3.0.12 (#9760)
Bumps [@renovatebot/pep440](https://github.com/renovatebot/pep440) from 3.0.11 to 3.0.12.
- [Release notes](https://github.com/renovatebot/pep440/releases)
- [Changelog](https://github.com/renovatebot/pep440/blob/main/.releaserc.json)
- [Commits](https://github.com/renovatebot/pep440/compare/3.0.11...3.0.12)

---
updated-dependencies:
- dependency-name: "@renovatebot/pep440"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-29 18:50:29 +00:00
dependabot[bot]
b01e15c7dd chore(deps): bump @sentry/node from 7.80.1 to 7.81.1 (#9756)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.80.1 to 7.81.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.80.1...7.81.1)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-29 18:49:48 +00:00
dependabot[bot]
5ccc7bd3bb chore(deps-dev): bump eslint from 8.53.0 to 8.54.0 (#9759)
Bumps [eslint](https://github.com/eslint/eslint) from 8.53.0 to 8.54.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.53.0...v8.54.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-29 18:48:23 +00:00
dependabot[bot]
0068bd7138 chore(deps-dev): bump cypress from 13.5.1 to 13.6.0 (#9762)
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.5.1 to 13.6.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.5.1...v13.6.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-29 18:47:37 +00:00
dependabot[bot]
7169bb970a chore(deps-dev): bump @typescript-eslint/parser from 6.11.0 to 6.12.0 (#9763)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.11.0 to 6.12.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.12.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-29 18:47:08 +00:00
chris48s
3cefd28e0c move from @renovate/pep440 to @renovatebot/pep440 (#9614) 2023-11-19 19:44:03 +00:00
chris48s
083b36c0a1 deprecate/fix [ansible] galaxy services (#9648)
* deprecate ansible galaxy collection name

* deprecate ansible galaxy quality score

* deprecate ansible role name and legacy downloads, add new downloads
2023-11-19 19:33:09 +00:00
chris48s
19b50a66a6 call [pepy] with auth (#9748) 2023-11-19 19:24:56 +00:00
chris48s
5ad1e35101 fix [GitHubCommitActivity] service tests (#9736) 2023-11-19 19:24:11 +00:00
dependabot[bot]
a7e6f15e5e chore(deps-dev): bump prettier from 3.0.3 to 3.1.0 (#9745)
* chore(deps-dev): bump prettier from 3.0.3 to 3.1.0

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

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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

* update formatting

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: chris48s <git@chris-shaw.dev>
2023-11-19 19:13:15 +00:00
dependabot[bot]
c4d7c84523 chore(deps): bump simple-icons from 9.19.1 to 9.20.0 (#9743)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.19.1 to 9.20.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.19.1...9.20.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-19 18:51:50 +00:00
dependabot[bot]
fd4b4c62b6 chore(deps-dev): bump prism-react-renderer from 2.1.0 to 2.2.0 (#9746)
Bumps [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/FormidableLabs/prism-react-renderer/releases)
- [Commits](https://github.com/FormidableLabs/prism-react-renderer/compare/prism-react-renderer@2.1.0...prism-react-renderer@2.2.0)

---
updated-dependencies:
- dependency-name: prism-react-renderer
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-19 18:51:04 +00:00
dependabot[bot]
d9a68e35d9 chore(deps-dev): bump lint-staged from 15.0.2 to 15.1.0 (#9742)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 15.0.2 to 15.1.0.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/master/CHANGELOG.md)
- [Commits](https://github.com/okonet/lint-staged/compare/v15.0.2...v15.1.0)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-19 18:41:36 +00:00
dependabot[bot]
9421bc48ca chore(deps-dev): bump start-server-and-test from 2.0.2 to 2.0.3 (#9740)
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v2.0.2...v2.0.3)

---
updated-dependencies:
- dependency-name: start-server-and-test
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-19 18:41:16 +00:00
dependabot[bot]
355ca66f2f chore(deps-dev): bump cypress from 13.5.0 to 13.5.1 (#9741)
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.5.0 to 13.5.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.5.0...v13.5.1)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-19 18:40:59 +00:00
dependabot[bot]
b543d075f7 chore(deps-dev): bump @typescript-eslint/parser from 6.10.0 to 6.11.0 (#9747)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.10.0 to 6.11.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.11.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-19 18:40:45 +00:00
dependabot[bot]
c109cf545d chore(deps): bump @sentry/node from 7.80.0 to 7.80.1 (#9744)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.80.0 to 7.80.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.80.0...7.80.1)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-19 18:40:33 +00:00
dependabot[bot]
c2fafc9fac chore(deps): bump actions/github-script from 6 to 7 (#9738)
Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 7.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-14 19:36:12 +00:00
chris48s
3512c89054 migrate examples to openApi part 12; affects [GitHub Gist] (#9500)
* migrate some services from examples to openApi

* improve and de-dupe service titles

* improve description
2023-11-13 14:30:26 +00:00
dependabot[bot]
8f921a4078 chore(deps): bump @renovatebot/ruby-semver from 3.0.16 to 3.0.18 (#9734)
Bumps [@renovatebot/ruby-semver](https://github.com/renovatebot/ruby-semver) from 3.0.16 to 3.0.18.
- [Release notes](https://github.com/renovatebot/ruby-semver/releases)
- [Changelog](https://github.com/renovatebot/ruby-semver/blob/main/.releaserc.json)
- [Commits](https://github.com/renovatebot/ruby-semver/compare/3.0.16...3.0.18)

---
updated-dependencies:
- dependency-name: "@renovatebot/ruby-semver"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13 14:10:36 +00:00
dependabot[bot]
57ffa7a456 chore(deps): bump simple-icons from 9.19.0 to 9.19.1 (#9725)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.19.0 to 9.19.1.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.19.0...9.19.1)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13 13:59:33 +00:00
dependabot[bot]
cc02b015d3 chore(deps-dev): bump cypress from 13.4.0 to 13.5.0 (#9723)
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.4.0 to 13.5.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.4.0...v13.5.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13 13:49:59 +00:00
dependabot[bot]
8fa0adb77f chore(deps-dev): bump @typescript-eslint/parser from 6.9.1 to 6.10.0 (#9722)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.9.1 to 6.10.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.10.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13 13:49:53 +00:00
dependabot[bot]
6153d1f15c chore(deps-dev): bump start-server-and-test from 2.0.1 to 2.0.2 (#9721)
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v2.0.1...v2.0.2)

---
updated-dependencies:
- dependency-name: start-server-and-test
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13 13:49:46 +00:00
dependabot[bot]
f2e2b0a197 chore(deps-dev): bump eslint from 8.52.0 to 8.53.0 (#9720)
Bumps [eslint](https://github.com/eslint/eslint) from 8.52.0 to 8.53.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.52.0...v8.53.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13 13:49:39 +00:00
dependabot[bot]
a7db57e03b chore(deps): bump @sentry/node from 7.77.0 to 7.80.0 (#9719)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.77.0 to 7.80.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.77.0...7.80.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13 13:49:34 +00:00
dependabot[bot]
9d46340b3e chore(deps-dev): bump eslint-plugin-jsdoc from 46.8.2 to 46.9.0 (#9726)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.8.2 to 46.9.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.8.2...v46.9.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13 13:49:12 +00:00
chris48s
bde30b2589 add meaningful descriptions including keywords (#9715) 2023-11-08 19:49:20 +00:00
dependabot[bot]
3ea96c31c0 chore(deps-dev): bump sinon from 17.0.0 to 17.0.1 (#9710)
Bumps [sinon](https://github.com/sinonjs/sinon) from 17.0.0 to 17.0.1.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v17.0.0...v17.0.1)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-03 19:14:39 +00:00
dependabot[bot]
8411c34ad4 chore(deps-dev): bump @typescript-eslint/parser from 6.9.0 to 6.9.1 (#9709)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.9.0 to 6.9.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.9.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-03 19:14:37 +00:00
dependabot[bot]
9b1021520d chore(deps-dev): bump nock from 13.3.6 to 13.3.8 (#9707)
Bumps [nock](https://github.com/nock/nock) from 13.3.6 to 13.3.8.
- [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.3.6...v13.3.8)

---
updated-dependencies:
- dependency-name: nock
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-03 19:14:34 +00:00
dependabot[bot]
c20d0185cd chore(deps-dev): bump cypress from 13.3.3 to 13.4.0 (#9708)
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.3.3 to 13.4.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.3.3...v13.4.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-03 19:14:30 +00:00
dependabot[bot]
385c999d75 chore(deps): bump @sentry/node from 7.75.1 to 7.77.0 (#9711)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.75.1 to 7.77.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.75.1...7.77.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-03 19:14:25 +00:00
github-actions[bot]
ecac34c258 Changelog for Release server-2023-11-01 (#9705)
* Update Changelog

* Update CHANGELOG.md

---------

Co-authored-by: release[bot] <actions@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2023-11-01 20:55:22 +00:00
chris48s
cab0286608 migrate examples to openApi part 16; affects [gitlabrelease swagger] (#9565)
* convert gitlab release from examples to openApi

* convert swagger from examples to openApi

* DRY up enums (1)

* DRY up enums (2)
2023-11-01 20:33:44 +00:00
dependabot[bot]
646f7f21db chore(deps): bump @renovatebot/ruby-semver from 3.0.15 to 3.0.16 (#9689)
Bumps [@renovatebot/ruby-semver](https://github.com/renovatebot/ruby-semver) from 3.0.15 to 3.0.16.
- [Release notes](https://github.com/renovatebot/ruby-semver/releases)
- [Changelog](https://github.com/renovatebot/ruby-semver/blob/main/.releaserc.json)
- [Commits](https://github.com/renovatebot/ruby-semver/compare/3.0.15...3.0.16)

---
updated-dependencies:
- dependency-name: "@renovatebot/ruby-semver"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 17:45:57 +00:00
dependabot[bot]
8b77c8571c chore(deps): bump simple-icons from 9.18.0 to 9.19.0 (#9697)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.18.0 to 9.19.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.18.0...9.19.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 17:37:34 +00:00
dependabot[bot]
6a52e25dee chore(deps-dev): bump eslint-plugin-import from 2.28.1 to 2.29.0 (#9690)
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.28.1 to 2.29.0.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.28.1...v2.29.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 17:30:07 +00:00
dependabot[bot]
a976e265bf chore(deps-dev): bump @typescript-eslint/parser from 6.8.0 to 6.9.0 (#9691)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.8.0 to 6.9.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.9.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 17:29:53 +00:00
dependabot[bot]
167e7b14f7 chore(deps-dev): bump eslint from 8.51.0 to 8.52.0 (#9692)
Bumps [eslint](https://github.com/eslint/eslint) from 8.51.0 to 8.52.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.51.0...v8.52.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 17:29:40 +00:00
dependabot[bot]
7698dabe74 chore(deps-dev): bump sinon from 16.1.3 to 17.0.0 (#9694)
Bumps [sinon](https://github.com/sinonjs/sinon) from 16.1.3 to 17.0.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v16.1.3...v17.0.0)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 17:29:29 +00:00
dependabot[bot]
7bd1d4fb75 chore(deps): bump @sentry/node from 7.74.1 to 7.75.1 (#9695)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.74.1 to 7.75.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.74.1...7.75.1)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 17:29:11 +00:00
dependabot[bot]
d4b7735e86 chore(deps-dev): bump cypress from 13.3.2 to 13.3.3 (#9696)
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.3.2 to 13.3.3.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.3.2...v13.3.3)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 17:29:09 +00:00
dependabot[bot]
b1c2265230 chore(deps-dev): bump crypto-js from 4.1.1 to 4.2.0 (#9686)
Bumps [crypto-js](https://github.com/brix/crypto-js) from 4.1.1 to 4.2.0.
- [Commits](https://github.com/brix/crypto-js/compare/4.1.1...4.2.0)

---
updated-dependencies:
- dependency-name: crypto-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-26 17:57:49 +00:00
dependabot[bot]
7f4cb41e68 chore(deps): bump actions/setup-node from 3 to 4 (#9682)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-26 17:57:07 +00:00
chris48s
61cd2082fc twitter --> X (#9678) 2023-10-24 18:46:10 +00:00
dependabot[bot]
a10e93d567 chore(deps-dev): bump @babel/traverse from 7.22.5 to 7.23.2 (#9665)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.5 to 7.23.2.
- [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.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 19:35:18 +00:00
dependabot[bot]
31e0254051 chore(deps): bump simple-icons from 9.17.0 to 9.18.0 (#9675)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.17.0 to 9.18.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.17.0...9.18.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 19:23:41 +00:00
dependabot[bot]
417a1c3e7e chore(deps-dev): bump cypress from 13.3.1 to 13.3.2 (#9674)
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.3.1 to 13.3.2.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.3.1...v13.3.2)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 19:13:14 +00:00
dependabot[bot]
6da5a68a97 chore(deps): bump smol-toml from 1.1.2 to 1.1.3 (#9669)
Bumps [smol-toml](https://github.com/squirrelchat/smol-toml) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/squirrelchat/smol-toml/releases)
- [Commits](https://github.com/squirrelchat/smol-toml/compare/v1.1.2...v1.1.3)

---
updated-dependencies:
- dependency-name: smol-toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 19:07:14 +00:00
dependabot[bot]
8fe11ad9a5 chore(deps-dev): bump nock from 13.3.4 to 13.3.6 (#9676)
Bumps [nock](https://github.com/nock/nock) from 13.3.4 to 13.3.6.
- [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.3.4...v13.3.6)

---
updated-dependencies:
- dependency-name: nock
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 18:58:41 +00:00
dependabot[bot]
7df0098a64 chore(deps): bump @sentry/node from 7.74.0 to 7.74.1 (#9668)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.74.0 to 7.74.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.74.0...7.74.1)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 18:57:59 +00:00
dependabot[bot]
e7968bd6cc chore(deps-dev): bump lint-staged from 14.0.1 to 15.0.2 (#9673)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 14.0.1 to 15.0.2.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/master/CHANGELOG.md)
- [Commits](https://github.com/okonet/lint-staged/compare/v14.0.1...v15.0.2)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 18:57:29 +00:00
dependabot[bot]
b8bbe7bba9 chore(deps-dev): bump concurrently from 8.2.1 to 8.2.2 (#9672)
Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 8.2.1 to 8.2.2.
- [Release notes](https://github.com/open-cli-tools/concurrently/releases)
- [Commits](https://github.com/open-cli-tools/concurrently/compare/v8.2.1...v8.2.2)

---
updated-dependencies:
- dependency-name: concurrently
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 18:56:59 +00:00
dependabot[bot]
d253a45070 chore(deps-dev): bump @typescript-eslint/parser from 6.7.5 to 6.8.0 (#9670)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.7.5 to 6.8.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.8.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 18:56:44 +00:00
dependabot[bot]
87790f226f chore(deps-dev): bump sinon from 16.1.0 to 16.1.3 (#9671)
Bumps [sinon](https://github.com/sinonjs/sinon) from 16.1.0 to 16.1.3.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v16.1.0...v16.1.3)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 18:56:25 +00:00
hymbz
6f2c0a22e9 fix greasyfork 404 bug (#9632) 2023-10-16 18:45:09 +00:00
dependabot[bot]
8e868cda4e chore(deps): bump @actions/github from 5.1.1 to 6.0.0 in /.github/actions/docusaurus-swizzled-warning (#9657)
* chore(deps): bump @actions/github

Bumps [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github) from 5.1.1 to 6.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github)

---
updated-dependencies:
- dependency-name: "@actions/github"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

* run action on node20

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: chris48s <git@chris-shaw.dev>
2023-10-15 16:47:29 +00:00
dependabot[bot]
6ff81c1784 chore(deps): bump simple-icons from 9.16.1 to 9.17.0 (#9653)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.16.1 to 9.17.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.16.1...9.17.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-15 16:36:52 +00:00
dependabot[bot]
c585f4eecc chore(deps-dev): bump nock from 13.3.3 to 13.3.4 (#9650)
Bumps [nock](https://github.com/nock/nock) from 13.3.3 to 13.3.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.3.3...v13.3.4)

---
updated-dependencies:
- dependency-name: nock
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-15 16:25:29 +00:00
dependabot[bot]
11f9735d95 chore(deps-dev): bump cypress from 13.3.0 to 13.3.1 (#9651)
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.3.0 to 13.3.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.3.0...v13.3.1)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-15 16:25:02 +00:00
dependabot[bot]
520fcda548 chore(deps): bump prom-client from 14.2.0 to 15.0.0 (#9652)
Bumps [prom-client](https://github.com/siimon/prom-client) from 14.2.0 to 15.0.0.
- [Release notes](https://github.com/siimon/prom-client/releases)
- [Changelog](https://github.com/siimon/prom-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/siimon/prom-client/compare/v14.2.0...v15.0.0)

---
updated-dependencies:
- dependency-name: prom-client
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-15 16:23:58 +00:00
dependabot[bot]
4c43ffb70a chore(deps-dev): bump @typescript-eslint/parser from 6.7.4 to 6.7.5 (#9654)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.7.4 to 6.7.5.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.7.5/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-15 16:22:33 +00:00
dependabot[bot]
5120cc0b79 chore(deps-dev): bump eslint from 8.50.0 to 8.51.0 (#9655)
Bumps [eslint](https://github.com/eslint/eslint) from 8.50.0 to 8.51.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.50.0...v8.51.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-15 16:21:45 +00:00
dependabot[bot]
7d02104ddb chore(deps): bump @sentry/node from 7.73.0 to 7.74.0 (#9656)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-15 16:21:31 +00:00
Kurt McKee
9874db7841 Fix several typos (#9658) 2023-10-13 15:40:57 +00:00
dependabot[bot]
164209a4b1 chore(deps-dev): bump @typescript-eslint/parser from 6.7.3 to 6.7.4 (#9642)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.7.3 to 6.7.4.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.7.4/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-09 16:30:44 +00:00
dependabot[bot]
72e6421d6a chore(deps-dev): bump eslint-plugin-sort-class-members (#9641)
Bumps [eslint-plugin-sort-class-members](https://github.com/bryanrsmith/eslint-plugin-sort-class-members) from 1.18.0 to 1.19.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.18.0...v1.19.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-sort-class-members
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-09 16:30:31 +00:00
dependabot[bot]
1fd625ec7d chore(deps-dev): bump sinon from 16.0.0 to 16.1.0 (#9640)
Bumps [sinon](https://github.com/sinonjs/sinon) from 16.0.0 to 16.1.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v16.0.0...v16.1.0)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-09 16:30:18 +00:00
dependabot[bot]
58a1176bbc chore(deps): bump @sentry/node from 7.72.0 to 7.73.0 (#9643)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.72.0 to 7.73.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.72.0...7.73.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-08 22:26:34 +00:00
dependabot[bot]
075ead0f9b chore(deps): bump simple-icons from 9.16.0 to 9.16.1 (#9638)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.16.0 to 9.16.1.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.16.0...9.16.1)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-07 20:52:43 +00:00
dependabot[bot]
4784a9b553 chore(deps): bump joi from 17.10.2 to 17.11.0 (#9639)
Bumps [joi](https://github.com/hapijs/joi) from 17.10.2 to 17.11.0.
- [Commits](https://github.com/hapijs/joi/compare/v17.10.2...v17.11.0)

---
updated-dependencies:
- dependency-name: joi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-07 20:49:02 +00:00
Bartosz Gałek
685421f890 Hacktoberfest 2023 support - resolves #9636 (#9637) 2023-10-05 17:17:39 +00:00
chris48s
7749c5e8fe switch to fixed OpenCollective images (#9615) 2023-10-04 18:24:41 +01:00
github-actions[bot]
01d15a27c3 Changelog for Release server-2023-10-02 (#9635)
* Update Changelog

* Update CHANGELOG.md

---------

Co-authored-by: release[bot] <actions@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2023-10-02 17:19:33 +00:00
dependabot[bot]
90965617bd chore(deps): bump fast-xml-parser from 4.3.0 to 4.3.2 (#9634)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 4.3.0 to 4.3.2.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v4.3.0...v4.3.2)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 16:20:48 +00:00
dependabot[bot]
3cc1c618b2 chore(deps-dev): bump cypress from 13.2.0 to 13.3.0 (#9619)
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.2.0 to 13.3.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.2.0...v13.3.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 16:13:34 +00:00
dependabot[bot]
41ecb5f9c5 chore(deps-dev): bump prism-react-renderer from 2.0.6 to 2.1.0 (#9620)
Bumps [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer) from 2.0.6 to 2.1.0.
- [Release notes](https://github.com/FormidableLabs/prism-react-renderer/releases)
- [Commits](https://github.com/FormidableLabs/prism-react-renderer/compare/prism-react-renderer@2.0.6...prism-react-renderer@2.1.0)

---
updated-dependencies:
- dependency-name: prism-react-renderer
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 16:12:53 +00:00
dependabot[bot]
ea3673f21a chore(deps): bump simple-icons from 9.15.0 to 9.16.0 (#9624)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.15.0 to 9.16.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.15.0...9.16.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 16:11:13 +00:00
dependabot[bot]
e0fdbccba4 chore(deps-dev): bump rimraf from 5.0.1 to 5.0.5 (#9625)
Bumps [rimraf](https://github.com/isaacs/rimraf) from 5.0.1 to 5.0.5.
- [Changelog](https://github.com/isaacs/rimraf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v5.0.1...v5.0.5)

---
updated-dependencies:
- dependency-name: rimraf
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 16:00:49 +00:00
dependabot[bot]
68916125f6 chore(deps): bump @sentry/node from 7.70.0 to 7.72.0 (#9618)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.70.0 to 7.72.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.70.0...7.72.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 16:00:10 +00:00
dependabot[bot]
4eac445b5a chore(deps-dev): bump eslint-plugin-mocha from 10.1.0 to 10.2.0 (#9623)
Bumps [eslint-plugin-mocha](https://github.com/lo1tuma/eslint-plugin-mocha) from 10.1.0 to 10.2.0.
- [Release notes](https://github.com/lo1tuma/eslint-plugin-mocha/releases)
- [Changelog](https://github.com/lo1tuma/eslint-plugin-mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/lo1tuma/eslint-plugin-mocha/compare/10.1.0...10.2.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 15:59:24 +00:00
dependabot[bot]
238899b026 chore(deps-dev): bump eslint from 8.49.0 to 8.50.0 (#9622)
Bumps [eslint](https://github.com/eslint/eslint) from 8.49.0 to 8.50.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.49.0...v8.50.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 15:59:04 +00:00
dependabot[bot]
f946b5ce2c chore(deps-dev): bump @typescript-eslint/parser from 6.7.2 to 6.7.3 (#9621)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.7.2 to 6.7.3.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.7.3/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 15:58:23 +00:00
dependabot[bot]
983e8664ca chore(deps-dev): bump danger from 11.2.8 to 11.3.0 (#9616)
Bumps [danger](https://github.com/danger/danger-js) from 11.2.8 to 11.3.0.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/11.2.8...11.3.0)

---
updated-dependencies:
- dependency-name: danger
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 15:57:56 +00:00
dependabot[bot]
90e6615d19 chore(deps): bump glob from 10.3.6 to 10.3.10 (#9617)
Bumps [glob](https://github.com/isaacs/node-glob) from 10.3.6 to 10.3.10.
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v10.3.6...v10.3.10)

---
updated-dependencies:
- dependency-name: glob
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 15:57:31 +00:00
dependabot[bot]
9a282d985b chore(deps-dev): bump chai from 4.3.8 to 4.3.10 (#9627)
Bumps [chai](https://github.com/chaijs/chai) from 4.3.8 to 4.3.10.
- [Release notes](https://github.com/chaijs/chai/releases)
- [Changelog](https://github.com/chaijs/chai/blob/4.x.x/History.md)
- [Commits](https://github.com/chaijs/chai/compare/v4.3.8...v4.3.10)

---
updated-dependencies:
- dependency-name: chai
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-29 23:26:24 +00:00
dependabot[bot]
4d1ecea20d chore(deps): bump get-func-name from 2.0.0 to 2.0.2 (#9613)
Bumps [get-func-name](https://github.com/chaijs/get-func-name) from 2.0.0 to 2.0.2.
- [Release notes](https://github.com/chaijs/get-func-name/releases)
- [Commits](https://github.com/chaijs/get-func-name/commits/v2.0.2)

---
updated-dependencies:
- dependency-name: get-func-name
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-28 08:45:14 +00:00
chris48s
70d22c3532 add python package total downloads from [pepy] badge (#9564) 2023-09-26 23:46:00 +00:00
chris48s
afc2f9093a sync docusaurus plugin versions (#9608)
* check docusaurus plugin version in CI

add CI check that fails if
docusaurus plugins are out of sync with core

* bump plugins

* provide upgrade advice
2023-09-25 13:00:49 +00:00
dependabot[bot]
2a417804d5 chore(deps): bump glob from 10.3.4 to 10.3.6 (#9606)
Bumps [glob](https://github.com/isaacs/node-glob) from 10.3.4 to 10.3.6.
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v10.3.4...v10.3.6)

---
updated-dependencies:
- dependency-name: glob
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 19:06:10 +00:00
dependabot[bot]
d9d64105e9 chore(deps): bump docker/setup-buildx-action from 2 to 3 (#9587)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 19:04:11 +00:00
dependabot[bot]
0760c64cdb chore(deps): bump docker/login-action from 2 to 3 (#9586)
Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 19:03:58 +00:00
dependabot[bot]
3f19f4f0bf chore(deps): bump docker/build-push-action from 4 to 5 (#9585)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 19:03:43 +00:00
dependabot[bot]
d5ffeda10a chore(deps): bump dayjs from 1.11.9 to 1.11.10 (#9598)
Bumps [dayjs](https://github.com/iamkun/dayjs) from 1.11.9 to 1.11.10.
- [Release notes](https://github.com/iamkun/dayjs/releases)
- [Changelog](https://github.com/iamkun/dayjs/blob/v1.11.10/CHANGELOG.md)
- [Commits](https://github.com/iamkun/dayjs/compare/v1.11.9...v1.11.10)

---
updated-dependencies:
- dependency-name: dayjs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 19:01:27 +00:00
dependabot[bot]
7a1d36f707 chore(deps): bump @renovatebot/ruby-semver from 3.0.13 to 3.0.15 (#9605)
Bumps [@renovatebot/ruby-semver](https://github.com/renovatebot/ruby-semver) from 3.0.13 to 3.0.15.
- [Release notes](https://github.com/renovatebot/ruby-semver/releases)
- [Changelog](https://github.com/renovatebot/ruby-semver/blob/main/.releaserc.json)
- [Commits](https://github.com/renovatebot/ruby-semver/compare/3.0.13...3.0.15)

---
updated-dependencies:
- dependency-name: "@renovatebot/ruby-semver"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 19:00:37 +00:00
dependabot[bot]
7509b4ab37 chore(deps): bump joi from 17.10.1 to 17.10.2 (#9595)
Bumps [joi](https://github.com/hapijs/joi) from 17.10.1 to 17.10.2.
- [Commits](https://github.com/hapijs/joi/compare/v17.10.1...v17.10.2)

---
updated-dependencies:
- dependency-name: joi
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:54:06 +00:00
dependabot[bot]
c04775b779 chore(deps): bump simple-icons from 9.14.0 to 9.15.0 (#9602)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.14.0 to 9.15.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.14.0...9.15.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:53:08 +00:00
dependabot[bot]
eb647cc887 chore(deps-dev): bump @docusaurus/core from 2.4.1 to 2.4.3 (#9600)
Bumps [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus) from 2.4.1 to 2.4.3.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v2.4.3/packages/docusaurus)

---
updated-dependencies:
- dependency-name: "@docusaurus/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:52:56 +00:00
dependabot[bot]
5b586fe882 chore(deps-dev): bump eslint-plugin-jsdoc from 46.8.0 to 46.8.2 (#9596)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.8.0 to 46.8.2.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.8.0...v46.8.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:50:39 +00:00
dependabot[bot]
535892cedf chore(deps): bump graphql from 16.8.0 to 16.8.1 (#9592)
Bumps [graphql](https://github.com/graphql/graphql-js) from 16.8.0 to 16.8.1.
- [Release notes](https://github.com/graphql/graphql-js/releases)
- [Commits](https://github.com/graphql/graphql-js/compare/v16.8.0...v16.8.1)

---
updated-dependencies:
- dependency-name: graphql
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:50:06 +00:00
dependabot[bot]
37d6afe4aa chore(deps): bump fast-xml-parser from 4.2.7 to 4.3.0 (#9593)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 4.2.7 to 4.3.0.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v4.2.7...v4.3.0)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:47:49 +00:00
dependabot[bot]
5d8f2ab1a8 chore(deps): bump @sentry/node from 7.69.0 to 7.70.0 (#9597)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.69.0 to 7.70.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.69.0...7.70.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:42:21 +00:00
dependabot[bot]
3f1e32ab9e chore(deps-dev): bump start-server-and-test from 2.0.0 to 2.0.1 (#9599)
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: start-server-and-test
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:42:08 +00:00
dependabot[bot]
860218b7e4 chore(deps-dev): bump @typescript-eslint/parser from 6.7.0 to 6.7.2 (#9603)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.7.0 to 6.7.2.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.7.2/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:41:42 +00:00
dependabot[bot]
8a1a36e19c chore(deps-dev): bump eslint-plugin-cypress from 2.14.0 to 2.15.1 (#9604)
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 2.14.0 to 2.15.1.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v2.14.0...v2.15.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-cypress
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:41:14 +00:00
chris48s
dd97ee6ea5 migrate examples to openApi part 10 (#9466)
* empty commit

* convert examples to openApi
2023-09-20 18:41:38 +00:00
chris48s
6047241891 migrate examples to openApi part 9; affects [bowerlicense conda freecodecamp galaxytoolshed jenkins-plugin npmtypedefinitions puppetforge] (#9465)
* migrate some services from examples to openApi

* update freecodecamp test/example

* improve and de-dupe service titles
2023-09-20 18:38:56 +00:00
dependabot[bot]
48049b3fab chore(deps-dev): bump @easyops-cn/docusaurus-search-local (#9570)
Bumps [@easyops-cn/docusaurus-search-local](https://github.com/easyops-cn/docusaurus-search-local) from 0.35.0 to 0.36.0.
- [Release notes](https://github.com/easyops-cn/docusaurus-search-local/releases)
- [Changelog](https://github.com/easyops-cn/docusaurus-search-local/blob/master/docusaurus-search-local/CHANGELOG.md)
- [Commits](https://github.com/easyops-cn/docusaurus-search-local/compare/v0.35.0...v0.36.0)

---
updated-dependencies:
- dependency-name: "@easyops-cn/docusaurus-search-local"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-17 10:22:42 +00:00
dependabot[bot]
2d25f96de0 chore(deps): bump simple-icons from 9.13.0 to 9.14.0 (#9576)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.13.0 to 9.14.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.13.0...9.14.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-17 10:13:53 +00:00
chris48s
b44741c8b6 fix review apps (#9582)
* tell fly to use dockerfile

* scale to 1 instance after deploy
2023-09-17 11:13:11 +01:00
dependabot[bot]
4683e1beaf chore(deps-dev): bump url from 0.11.1 to 0.11.3 (#9572)
Bumps [url](https://github.com/defunctzombie/node-url) from 0.11.1 to 0.11.3.
- [Commits](https://github.com/defunctzombie/node-url/compare/v0.11.1...v0.11.3)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-17 09:10:51 +00:00
dependabot[bot]
cb04cb9e6e chore(deps-dev): bump @typescript-eslint/parser from 6.6.0 to 6.7.0 (#9571)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.6.0 to 6.7.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.7.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-17 08:57:41 +00:00
dependabot[bot]
2fbeab60b4 chore(deps-dev): bump eslint from 8.48.0 to 8.49.0 (#9577)
Bumps [eslint](https://github.com/eslint/eslint) from 8.48.0 to 8.49.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.48.0...v8.49.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-17 08:56:45 +00:00
dependabot[bot]
ce734a0f1f chore(deps): bump @sentry/node from 7.68.0 to 7.69.0 (#9578)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.68.0 to 7.69.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.68.0...7.69.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-17 08:56:27 +00:00
dependabot[bot]
89968f871c chore(deps-dev): bump cypress from 13.1.0 to 13.2.0 (#9575)
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.1.0 to 13.2.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.1.0...v13.2.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-17 08:55:52 +00:00
dependabot[bot]
5731e9edfb chore(deps): bump @actions/core (#9579)
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.10.0 to 1.10.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-17 08:55:30 +00:00
dependabot[bot]
5d4e3945da chore(deps-dev): bump eslint-plugin-jsdoc from 46.5.1 to 46.8.0 (#9573)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.5.1 to 46.8.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.5.1...v46.8.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-17 08:55:03 +00:00
dependabot[bot]
bb7cf3c065 chore(deps-dev): bump sinon from 15.2.0 to 16.0.0 (#9574)
Bumps [sinon](https://github.com/sinonjs/sinon) from 15.2.0 to 16.0.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v15.2.0...v16.0.0)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-17 08:54:48 +00:00
chris48s
c2bbe97fcf deprecate [redmine] plugin rating badges (#9568)
* deprecate [redmine] badges

* Update services/redmine/redmine.service.js

* Update services/redmine/redmine.service.js

---------

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2023-09-17 08:16:09 +01:00
Prashant Rawat
48458206f9 fix mismatch in documentation and examples given in tutorial (#9580) 2023-09-17 07:04:56 +00:00
chris48s
f53e478b0b fix [aur] service tests (#9566) 2023-09-11 23:08:23 +00:00
chris48s
f545553945 fix [bower] version badge (#9567)
* fix [bower] version badge

* update tests
2023-09-11 23:08:01 +00:00
jNullj
e8b4467609 Add [PythonVersionFromToml] shield (#9516)
* Add PythonVersionFromToml

Added new shield per issue #9410
The shield display required python versions for packages based on pyproject.toml

* Add tests for PythonVersionFromToml

* Improve docs for tests regex

* Improve title and description

Rename and updated description to bring into focus that only PEP 621 complaint pyproject.toml files are supported.

Solves review https://github.com/badges/shields/pull/9516#discussion_r1310648023

* replace complex regex with @renovate/pep440

solves review https://github.com/badges/shields/pull/9516#discussion_r1310648881
2023-09-10 12:18:16 +00:00
Prashant Rawat
015b5b02d0 Add [dub] score badge service (#9549)
* add dub score badge service

* add examples for isWithinRange test validator

* use Joi to validate range instead of regex

* change labels to lowercase
2023-09-10 11:41:23 +00:00
dependabot[bot]
d2e299dc35 chore(deps): bump simple-icons from 9.12.0 to 9.13.0 (#9557)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.12.0 to 9.13.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.12.0...9.13.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-10 11:08:37 +00:00
dependabot[bot]
bfd13ec45f chore(deps-dev): bump @typescript-eslint/parser from 6.5.0 to 6.6.0 (#9556)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.5.0 to 6.6.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.6.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-10 10:57:10 +00:00
dependabot[bot]
d43d9e96e9 chore(deps): bump @sentry/node from 7.66.0 to 7.68.0 (#9555)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.66.0 to 7.68.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.66.0...7.68.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-10 10:56:41 +00:00
dependabot[bot]
8ec6563f7b chore(deps): bump actions/checkout from 3 to 4 (#9550)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-10 10:56:15 +00:00
github-actions[bot]
6e793f1159 Changelog for Release server-2023-09-04 (#9548)
* Update Changelog

* Update CHANGELOG.md

---------

Co-authored-by: release[bot] <actions@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2023-09-04 12:45:26 +00:00
dependabot[bot]
0f2ad6d542 chore(deps): bump @sentry/node from 7.64.0 to 7.66.0 (#9539)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.64.0 to 7.66.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.64.0...7.66.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 11:42:06 +00:00
dependabot[bot]
4c95273142 chore(deps): bump joi from 17.9.2 to 17.10.1 (#9534)
Bumps [joi](https://github.com/hapijs/joi) from 17.9.2 to 17.10.1.
- [Commits](https://github.com/hapijs/joi/compare/v17.9.2...v17.10.1)

---
updated-dependencies:
- dependency-name: joi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 10:27:25 +00:00
dependabot[bot]
014fd9b00b chore(deps): bump @renovatebot/ruby-semver from 3.0.10 to 3.0.13 (#9540)
Bumps [@renovatebot/ruby-semver](https://github.com/renovatebot/ruby-semver) from 3.0.10 to 3.0.13.
- [Release notes](https://github.com/renovatebot/ruby-semver/releases)
- [Changelog](https://github.com/renovatebot/ruby-semver/blob/main/.releaserc.json)
- [Commits](https://github.com/renovatebot/ruby-semver/compare/3.0.10...3.0.13)

---
updated-dependencies:
- dependency-name: "@renovatebot/ruby-semver"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 10:25:46 +00:00
dependabot[bot]
bd171f4a37 chore(deps): bump simple-icons from 9.11.0 to 9.12.0 (#9535)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.11.0 to 9.12.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.11.0...9.12.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 10:25:11 +00:00
dependabot[bot]
762feb7b7f chore(deps-dev): bump eslint-plugin-jsdoc from 46.5.0 to 46.5.1 (#9537)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.5.0 to 46.5.1.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.5.0...v46.5.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 10:21:41 +00:00
dependabot[bot]
a7605abb6c chore(deps): bump glob from 10.3.3 to 10.3.4 (#9532)
Bumps [glob](https://github.com/isaacs/node-glob) from 10.3.3 to 10.3.4.
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v10.3.3...v10.3.4)

---
updated-dependencies:
- dependency-name: glob
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 10:20:59 +00:00
dependabot[bot]
e30a0ac3b9 chore(deps-dev): bump tsd from 0.28.1 to 0.29.0 (#9536)
Bumps [tsd](https://github.com/SamVerschueren/tsd) from 0.28.1 to 0.29.0.
- [Release notes](https://github.com/SamVerschueren/tsd/releases)
- [Commits](https://github.com/SamVerschueren/tsd/compare/v0.28.1...v0.29.0)

---
updated-dependencies:
- dependency-name: tsd
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 10:18:08 +00:00
dependabot[bot]
4496bda83a chore(deps-dev): bump @typescript-eslint/parser from 6.4.1 to 6.5.0 (#9538)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.4.1 to 6.5.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.5.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 10:16:34 +00:00
dependabot[bot]
ccc5ec761e chore(deps-dev): bump eslint from 8.47.0 to 8.48.0 (#9530)
Bumps [eslint](https://github.com/eslint/eslint) from 8.47.0 to 8.48.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.47.0...v8.48.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 10:15:49 +00:00
dependabot[bot]
c35d467abc chore(deps-dev): bump prettier from 3.0.2 to 3.0.3 (#9533)
Bumps [prettier](https://github.com/prettier/prettier) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 10:15:37 +00:00
dependabot[bot]
04a2488b56 chore(deps-dev): bump cypress from 12.17.4 to 13.1.0 (#9531)
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.17.4 to 13.1.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.4...v13.1.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 10:15:19 +00:00
chris48s
0bc512707f migrate examples to openApi part 7; affects [reuse sourceforge sourcegraph spack stackexchange testspace treeware twitch] (#9464)
* migrate some services from examples to openApi

* capitalize all words in sourceforge titles
2023-09-04 11:02:05 +01:00
chris48s
d1798167cc Fix [testspace] badges (#9525)
* empty commit

* force ipv4 for testspace
2023-09-04 09:46:39 +00:00
chris48s
75affcac13 fix rSt code example (#9528)
* fix rSt code example

* update tests
2023-09-04 09:45:56 +00:00
Pierre-Yves Bigourdan
1d9a6b0f80 Point to security policy in README (#9544)
* Point to security policy in README

* Fix typo
2023-09-02 22:41:09 +00:00
Arun
7e762e7ae9 Fix commands injection in Github workflow (#9542) 2023-09-02 09:35:05 +00:00
chris48s
2c0737592b migrate examples to openApi part 8; affects [ubuntu uptimerobot vaadin vcpkg visualstudiomarketplace wheelmap] (#9463)
* migrate some services from examples to openApi

* improve and de-dupe service titles
2023-08-31 20:31:11 +00:00
Piepmatz
170d29efcc Add dynamic TOML support via [DynamicToml] Service (#9517)
* exported BaseTomlService

* added dynamic-toml service

* added dynamic-toml tester

* fixed dynamic-toml tests
2023-08-30 17:38:57 +00:00
chris48s
e8157100b8 migrate examples to openApi part 11: enums; affects [codefactor conda depfu homebrew jsdelivr reddit sourceforge testspace vaadin github] (#9437)
* WIP enums

* WIP moar enums

* add a helper function for extracting enum from route pattern

* add enum schemas to services

* review and improve service names

* convert some more services with enums

* review and improve service names

* fix issue/pull request detail
2023-08-30 16:14:18 +00:00
chris48s
fdeda3e3f9 Revert "log an error to sentry if an upstream service responds with 429 Too Many Requests (#9505)" (#9523)
This reverts commit 53537822de.
2023-08-29 18:57:42 +00:00
chris48s
1ee176e034 cache [pypi] downloads for longer (#9522) 2023-08-29 18:32:58 +00:00
chris48s
53537822de log an error to sentry if an upstream service responds with 429 Too Many Requests (#9505)
* log an error to sentry if an upstream service responds with 429 Too Many Requests

* fix tests
2023-08-27 20:37:56 +00:00
jNullj
94a148b399 Docs: update TUTORIAL.md add BaseTomlService (#9518)
In the docs at TUTORIAL.md the new base service BaseTomlService was missing in the list of base services.
2023-08-27 11:15:10 +00:00
dependabot[bot]
09a55aba46 chore(deps): bump simple-icons from 9.10.0 to 9.11.0 (#9513)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.10.0 to 9.11.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.10.0...9.11.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-25 14:37:43 +00:00
dependabot[bot]
2fe799e463 chore(deps-dev): bump lint-staged from 14.0.0 to 14.0.1 (#9509)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 14.0.0 to 14.0.1.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v14.0.0...v14.0.1)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-25 14:20:48 +00:00
dependabot[bot]
ed611f3138 chore(deps-dev): bump @typescript-eslint/parser from 6.4.0 to 6.4.1 (#9511)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.4.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-25 14:20:30 +00:00
dependabot[bot]
8bbb224771 chore(deps-dev): bump chai from 4.3.7 to 4.3.8 (#9512)
Bumps [chai](https://github.com/chaijs/chai) from 4.3.7 to 4.3.8.
- [Release notes](https://github.com/chaijs/chai/releases)
- [Changelog](https://github.com/chaijs/chai/blob/4.x.x/History.md)
- [Commits](https://github.com/chaijs/chai/compare/v4.3.7...v4.3.8)

---
updated-dependencies:
- dependency-name: chai
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-25 14:19:53 +00:00
dependabot[bot]
96899ec0ca chore(deps-dev): bump concurrently from 8.2.0 to 8.2.1 (#9507)
Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 8.2.0 to 8.2.1.
- [Release notes](https://github.com/open-cli-tools/concurrently/releases)
- [Commits](https://github.com/open-cli-tools/concurrently/compare/v8.2.0...v8.2.1)

---
updated-dependencies:
- dependency-name: concurrently
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-25 14:19:27 +00:00
dependabot[bot]
779bb0988b chore(deps-dev): bump eslint-plugin-jsdoc from 46.4.6 to 46.5.0 (#9510)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.4.6 to 46.5.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.4.6...v46.5.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-25 14:19:06 +00:00
dependabot[bot]
833f3de3c6 chore(deps): bump smol-toml from 1.1.1 to 1.1.2 (#9508)
Bumps [smol-toml](https://github.com/squirrelchat/smol-toml) from 1.1.1 to 1.1.2.
- [Release notes](https://github.com/squirrelchat/smol-toml/releases)
- [Commits](https://github.com/squirrelchat/smol-toml/compare/v1.1.1...v1.1.2)

---
updated-dependencies:
- dependency-name: smol-toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-25 14:18:52 +00:00
Tom Heaton
223f423b21 Replace localhost with domain in example link. (#9506)
Replace localhost with domain in example link.
2023-08-25 11:18:07 +00:00
chris48s
384fa4d38f [twitter] --> x (#9496) 2023-08-23 19:51:18 +00:00
Prashant Rawat
865e8a0a01 use defaultBadgeData as object instead of function in tutorial docs (#9502) 2023-08-23 18:52:21 +00:00
Prashant Rawat
531d2acf5c add docstrings for website status service (#9495) 2023-08-21 11:10:06 +00:00
chris48s
4f67ab7a09 migrate examples to openApi part5; affects [itunes jetbrains jitpack keybase lemmy luarocks maintenance openvsx] (#9431)
* migrate some services from examples to openApi

* improve and de-dupe service titles

* revert changes to jsdelivr

* Update services/jetbrains/jetbrains-downloads.service.js

Co-authored-by: Pierre-Yves Bigourdan <10694593+PyvesB@users.noreply.github.com>

---------

Co-authored-by: Pierre-Yves Bigourdan <10694593+PyvesB@users.noreply.github.com>
2023-08-21 11:16:01 +01:00
chris48s
6823d38ddf migrate examples to openApi part 4; affects [ecologi elm flathub gem gitter GithubTotalDiscussions greasyfork hackage hackernews homebrew] (#9430)
* migrate some services from examples to openApi

* improve and de-dupe service titles

* revert changes to homebrew
2023-08-21 10:08:27 +00:00
CRIMX
ad359a260c [bundlejs] add badge for the npm package size (#9055)
* feat(service): add bundlejs

* refactor: implement first hit timeout pattern

* refactor: update http error message

* test(bundlejs): remove timeout

* refactor(bundlejs): move exports to query params

* refactor(bundlejs): show errors as timeout only

* test(bundlejs): add timeout and 404 mock
2023-08-20 18:39:39 +00:00
chris48s
8f76982e1c Switch [OpenCollective] badges to use GraphQL and auth (#9387)
* [OpenCollective] update opencollective to api v2 (#9346)

* update opencollective to api v2

* fix tests

* fix: do not filter by accountType for opencollective/all

* remove 404

* remove required in schema

* cnt -> count

* keep by-tier code as-is

---------

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>

* allow calling OpenCollective api with an auth token

* add test for opencollective auth

* cache OpenCollective badges for longer

---------

Co-authored-by: xxchan <xxchan22f@gmail.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2023-08-20 18:24:38 +00:00
chris48s
692829f91c migrate examples to openApi part 6; affects [opencollective opm ossf powershell pub pypi reddit repology] (#9462)
* migrate some services from examples to openApi

* improve and de-dupe service titles
2023-08-19 04:33:27 +00:00
dependabot[bot]
1b792f0772 chore(deps-dev): bump eslint-plugin-import from 2.28.0 to 2.28.1 (#9492)
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.28.0 to 2.28.1.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.28.0...v2.28.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-19 03:40:04 +00:00
jNullj
7d44ebf910 devops: Add ci warning for swizzled docusaurus components (#9467)
* devops: Add ci warning for swizzled docusaurus components

Add new action and workflow that runs on new dependabot PR.
The action checks changes in components of docusaurus-theme-openapi  that are swizzled and warns maintainers to review those changes.
For more info see badges/shields#9287

Solves badges/shields#9287

* Fix table formating

* Fix order

* handle missing patch cases

* fix missing fetch in node16

* fix typo

* fix typo

* changed from diff parse to json usage

* fix keys issues

* fix parent dependency version check

* Apply suggestions from code review - Improve description and text format

Co-authored-by: chris48s <chris48s@users.noreply.github.com>

* Fix comment table format

* fix type

* Add docusaurus-swizzled-warning to dependabot

* refactor: remove node-fetch and use octokit insted

* improve code readability

* fix type

* change pull_request_target to pull_request

* Improve action log

Change core.debug to core.info so it always shows and not only when in debug.

* Log old and new version

Log old and new versions for the Docusaurus swizzled component changes warning workflow.

---------

Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2023-08-18 21:08:34 +00:00
dependabot[bot]
44f9417e29 chore(deps): bump graphql from 16.7.1 to 16.8.0 (#9482)
Bumps [graphql](https://github.com/graphql/graphql-js) from 16.7.1 to 16.8.0.
- [Release notes](https://github.com/graphql/graphql-js/releases)
- [Commits](https://github.com/graphql/graphql-js/compare/v16.7.1...v16.8.0)

---
updated-dependencies:
- dependency-name: graphql
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18 18:47:33 +00:00
dependabot[bot]
75fe62d864 chore(deps): bump simple-icons from 9.9.0 to 9.10.0 (#9485)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.9.0 to 9.10.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.9.0...9.10.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18 18:46:25 +00:00
dependabot[bot]
0ba57f1d24 chore(deps-dev): bump nock from 13.3.2 to 13.3.3 (#9481)
Bumps [nock](https://github.com/nock/nock) from 13.3.2 to 13.3.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.3.2...v13.3.3)

---
updated-dependencies:
- dependency-name: nock
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18 18:45:19 +00:00
dependabot[bot]
20099beb73 chore(deps-dev): bump @typescript-eslint/parser from 6.3.0 to 6.4.0 (#9483)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.4.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18 18:08:34 +00:00
dependabot[bot]
b958cd050b chore(deps-dev): bump lint-staged from 13.2.3 to 14.0.0 (#9491)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 13.2.3 to 14.0.0.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v13.2.3...v14.0.0)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18 18:08:02 +00:00
dependabot[bot]
4757a4f6c6 chore(deps): bump pg from 8.11.2 to 8.11.3 (#9487)
Bumps [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) from 8.11.2 to 8.11.3.
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.11.3/packages/pg)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18 18:03:13 +00:00
dependabot[bot]
61978f8df0 chore(deps-dev): bump eslint-plugin-react from 7.33.1 to 7.33.2 (#9489)
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.33.1 to 7.33.2.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.33.1...v7.33.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18 18:02:50 +00:00
dependabot[bot]
54f943ec48 chore(deps-dev): bump node-mocks-http from 1.12.2 to 1.13.0 (#9488)
Bumps [node-mocks-http](https://github.com/howardabrams/node-mocks-http) from 1.12.2 to 1.13.0.
- [Release notes](https://github.com/howardabrams/node-mocks-http/releases)
- [Changelog](https://github.com/eugef/node-mocks-http/blob/master/HISTORY.md)
- [Commits](https://github.com/howardabrams/node-mocks-http/compare/v1.12.2...v1.13.0)

---
updated-dependencies:
- dependency-name: node-mocks-http
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18 18:02:27 +00:00
dependabot[bot]
f75b4f41d8 chore(deps-dev): bump cypress from 12.17.3 to 12.17.4 (#9490)
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.17.3 to 12.17.4.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.3...v12.17.4)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18 18:01:39 +00:00
dependabot[bot]
72beb61f92 chore(deps): bump @sentry/node from 7.63.0 to 7.64.0 (#9484)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.63.0 to 7.64.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.63.0...7.64.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18 18:01:24 +00:00
dependabot[bot]
aed31a31d3 chore(deps-dev): bump prettier from 3.0.1 to 3.0.2 (#9486)
Bumps [prettier](https://github.com/prettier/prettier) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.0.1...3.0.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18 18:00:37 +00:00
chris48s
478b1083f2 migrate examples to openApi part 3; affects [conan cookbook coverity cpan debian docker docsrs dub eclipse] (#9429)
* migrate some services from examples to openApi

* improve and de-dupe service titles

* revert changes to depfu
2023-08-17 20:32:01 +00:00
jNullj
61b8446189 Add TOML support with BaseTomlService (#9438)
* Add TOML support with [BaseTomlService]

Add base toml service to enable fetch of toml files
Add spec file for the new toml service for automated testing
This was added to allow a new way to retrive python version from pyproject.toml as described in issue #9410

* Fix typo

Co-authored-by: chris48s <chris48s@users.noreply.github.com>

* refactor: improve code readability

solve code review https://github.com/badges/shields/pull/9438#discussion_r1291503340

---------

Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2023-08-16 20:12:21 +00:00
confused_techie
d73a5ebb1a [Pulsar] Add Pulsar Badges for Stargazers & Downloads (#8767)
* Added pulsar-edit Downloads & Stargazers

* Manage colour similar to how Docker Badges do

* Fixed typo in colour

* Or it seems no other (not found) tests check colour, likely overrided elsewhere

* Remove usage of 'Edit'

* errorMessages => httpErrors && downloads => dt

---------

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2023-08-15 08:34:55 +00:00
Sandro Marques
96e9e130de Add [CurseForge] badges (#9252)
* add curseforge downloads badge

* Add more [CurseForge] badges

Adds the following badges:
 - /curseforge/dt/:projectId (downloads)
 - /curseforge/game-versions/:projectId (game versions)
 - /curseforge/v/:projectId (version)

The following secret:
 - CURSEFORGE_API_KEY (yml: private.curseforge_api_key)

* Remove default logo from badges

* Linter fixes

* Rename `errorMessages` to `httpErrors`

* Remove namedLogo from ModrinthGameVersions badge

* Remove namedLogo from ModrinthVersion badge

* Remove namedLogo from ModrinthFollowers badge

---------

Co-authored-by: Minecraftschurli <minecraftschurli@gmail.com>
Co-authored-by: Pierre-Yves Bigourdan <10694593+PyvesB@users.noreply.github.com>
2023-08-13 18:00:40 +00:00
dependabot[bot]
c7810a791f chore(deps-dev): bump eslint from 8.46.0 to 8.47.0 (#9473)
Bumps [eslint](https://github.com/eslint/eslint) from 8.46.0 to 8.47.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.46.0...v8.47.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-12 22:20:35 +00:00
chris48s
d8480a66c4 update npm prune command (#9470) 2023-08-12 21:46:03 +00:00
chris48s
e4dcec6864 remove obsolete entries from dependabot.yml (#9469) 2023-08-12 21:42:02 +00:00
chris48s
9212427b1a output DockerHub digest in publish-docker-next workflow (#9471) 2023-08-12 16:40:35 -05:00
chris48s
e9b3b505b3 delete close-bot (#9468) 2023-08-11 15:31:13 +00:00
dependabot[bot]
b075b6fa9c chore(deps): bump camelcase from 7.0.1 to 8.0.0 (#9460)
Bumps [camelcase](https://github.com/sindresorhus/camelcase) from 7.0.1 to 8.0.0.
- [Release notes](https://github.com/sindresorhus/camelcase/releases)
- [Commits](https://github.com/sindresorhus/camelcase/compare/v7.0.1...v8.0.0)

---
updated-dependencies:
- dependency-name: camelcase
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-11 15:25:55 +00:00
Prashant Rawat
a94115fbb0 Add docstrings for version service (#9411)
* add docstrings for version service

* replace curly quotes with single quotes

* use @example to write sample use cases

* update descriptions

* update jsdoc for rangeStart function
2023-08-11 15:09:33 +00:00
dependabot[bot]
d19d62890a chore(deps): bump simple-icons from 9.8.0 to 9.9.0 (#9459)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.8.0 to 9.9.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.8.0...9.9.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-11 14:42:58 +00:00
dependabot[bot]
52ca2cd5da chore(deps-dev): bump @typescript-eslint/parser from 6.2.1 to 6.3.0 (#9461)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.2.1 to 6.3.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.3.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-11 14:32:51 +00:00
dependabot[bot]
0dcfb5c2a6 chore(deps): bump @sentry/node from 7.61.1 to 7.63.0 (#9458)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.61.1 to 7.63.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.61.1...7.63.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-11 14:32:40 +00:00
dependabot[bot]
6ef8d3869a chore(deps-dev): bump eslint-plugin-jsdoc from 46.4.5 to 46.4.6 (#9457)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.4.5 to 46.4.6.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.4.5...v46.4.6)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-11 14:32:28 +00:00
dependabot[bot]
90cfb906e9 chore(deps-dev): bump eslint-plugin-cypress from 2.13.3 to 2.14.0 (#9456)
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 2.13.3 to 2.14.0.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v2.13.3...v2.14.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-cypress
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-11 14:32:16 +00:00
dependabot[bot]
47a7209bbe chore(deps): bump @renovatebot/ruby-semver from 2.1.12 to 3.0.10 (#9446)
Bumps [@renovatebot/ruby-semver](https://github.com/renovatebot/ruby-semver) from 2.1.12 to 3.0.10.
- [Release notes](https://github.com/renovatebot/ruby-semver/releases)
- [Changelog](https://github.com/renovatebot/ruby-semver/blob/main/.releaserc.json)
- [Commits](https://github.com/renovatebot/ruby-semver/compare/2.1.12...3.0.10)

---
updated-dependencies:
- dependency-name: "@renovatebot/ruby-semver"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-10 19:11:25 +00:00
chris48s
0ffa3669b3 deploy on node 18 (#9385)
* deploy on node 18, run tests on node 20

* run test-bug-run-badge on node 18

* you missed a spot

* ..and another
2023-08-10 18:40:17 +00:00
chris48s
b2f47a3303 migrate examples to openApi part 2; affects [archlinux bitcomponents bountysource cdnjs chrome clearlydefined clojars cocoapods coincap] (#9428)
* convert an example that doesn't matter

* migrate some services from examples to openApi

* improve and de-dupe service titles

* revert changes to codefactor
2023-08-08 23:57:47 +00:00
dependabot[bot]
7d966ab6bd chore(deps-dev): bump eslint-config-prettier from 8.9.0 to 9.0.0 (#9451)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 8.9.0 to 9.0.0.
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v8.9.0...v9.0.0)

---
updated-dependencies:
- dependency-name: eslint-config-prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 15:14:37 +00:00
dependabot[bot]
e37e6b693a chore(deps): bump pg from 8.11.1 to 8.11.2 (#9442)
Bumps [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) from 8.11.1 to 8.11.2.
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.11.2/packages/pg)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2023-08-07 15:11:45 +00:00
dependabot[bot]
9c729ec93e chore(deps): bump @sentry/node from 7.60.1 to 7.61.1 (#9445)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.60.1 to 7.61.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.60.1...7.61.1)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 15:08:38 +00:00
dependabot[bot]
4c45a3479f chore(deps-dev): bump danger from 11.2.7 to 11.2.8 (#9443)
Bumps [danger](https://github.com/danger/danger-js) from 11.2.7 to 11.2.8.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/11.2.7...11.2.8)

---
updated-dependencies:
- dependency-name: danger
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 15:08:20 +00:00
dependabot[bot]
9123ca6f37 chore(deps): bump simple-icons from 9.7.0 to 9.8.0 (#9450)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 9.7.0 to 9.8.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/9.7.0...9.8.0)

---
updated-dependencies:
- dependency-name: simple-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 15:07:16 +00:00
chris48s
c586960ce8 allow calling [github] without auth (#9427)
* allow calling [github] without auth

* set a default for authType, fix broken tests
2023-08-07 14:51:18 +00:00
dependabot[bot]
01e1189d4a chore(deps-dev): bump @typescript-eslint/parser from 6.2.0 to 6.2.1 (#9448)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.2.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 14:51:04 +00:00
dependabot[bot]
088e5001ca chore(deps-dev): bump cypress from 12.17.2 to 12.17.3 (#9449)
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.17.2 to 12.17.3.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.2...v12.17.3)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 14:50:12 +00:00
dependabot[bot]
942d539cfd chore(deps-dev): bump eslint-plugin-react from 7.33.0 to 7.33.1 (#9447)
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.33.0 to 7.33.1.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.33.0...v7.33.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 14:50:06 +00:00
dependabot[bot]
b44eaa1b79 chore(deps-dev): bump prettier from 3.0.0 to 3.0.1 (#9444)
Bumps [prettier](https://github.com/prettier/prettier) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.0.0...3.0.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 14:50:02 +00:00
dependabot[bot]
47109630e6 chore(deps-dev): bump eslint from 8.45.0 to 8.46.0 (#9441)
Bumps [eslint](https://github.com/eslint/eslint) from 8.45.0 to 8.46.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.45.0...v8.46.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 14:49:58 +00:00
dependabot[bot]
e11ce47c51 chore(deps): bump fast-xml-parser from 4.2.6 to 4.2.7 (#9439)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 4.2.6 to 4.2.7.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v4.2.6...v4.2.7)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 14:49:51 +00:00
chris48s
d4faad1139 fix [github] service tests (#9425)
* bring GH downloads/release errors into line

* update GH lerna test example

* update GH package.json test example

* update GH pipenv test example

* update GH search test assertion
2023-08-07 14:37:03 +00:00
497 changed files with 11850 additions and 7786 deletions

View File

@@ -1,12 +0,0 @@
name: 'Auto Approve'
description: 'Automatically approve/close selected pull requests for shields.io'
branding:
icon: 'check-circle'
color: 'green'
inputs:
github-token:
description: 'The GITHUB_TOKEN secret'
required: true
runs:
using: 'node16'
main: 'index.js'

View File

@@ -1,68 +0,0 @@
'use strict'
function findChangelogStart(lines) {
for (let i = 0; i < lines.length; i++) {
const line = lines[i]
if (
line === '<summary>Changelog</summary>' &&
lines[i + 2] === '<blockquote>'
) {
return i + 3
}
}
return null
}
function findChangelogEnd(lines, start) {
for (let i = start; i < lines.length; i++) {
const line = lines[i]
if (line === '</blockquote>') {
return i
}
}
return null
}
function allChangelogLinesAreVersionBump(changelogLines) {
return (
changelogLines.length > 0 &&
changelogLines.length ===
changelogLines.filter(line =>
line.includes('Version bump only for package'),
).length
)
}
function isPointlessVersionBump(body) {
const pointlessBumpLinks = [
'https://github.com/typescript-eslint/typescript-eslint',
]
const lines = body.split(/\r?\n/)
if (!pointlessBumpLinks.some(link => lines[0].includes(link))) {
return false
}
const start = findChangelogStart(lines)
const end = findChangelogEnd(lines, start)
if (!start || !end) {
return false
}
const changelogLines = lines
.slice(start, end)
.filter(line => !line.startsWith('<h'))
.filter(line => !line.startsWith('<p>All notable changes'))
.filter(
line =>
!line.startsWith('See <a href="https://conventionalcommits.org">'),
)
.filter(line => !line.startsWith('<!--'))
.filter(
line =>
!line.startsWith(
'<p><a href="https://www.gatsbyjs.com/docs/reference/release-notes/',
),
)
return allChangelogLinesAreVersionBump(changelogLines)
}
module.exports = { isPointlessVersionBump }

View File

@@ -1,38 +0,0 @@
'use strict'
const core = require('@actions/core')
const github = require('@actions/github')
const { isPointlessVersionBump } = require('./helpers')
async function run() {
try {
const token = core.getInput('github-token', { required: true })
const { pull_request: pr } = github.context.payload
if (!pr) {
throw new Error('Event payload missing `pull_request`')
}
const client = github.getOctokit(token)
if (
['dependabot[bot]', 'dependabot-preview[bot]'].includes(pr.user.login)
) {
if (isPointlessVersionBump(pr.body)) {
core.debug(`Closing pull request #${pr.number}`)
await client.rest.pulls.update({
owner: github.context.repo.owner,
repo: github.context.repo.repo,
pull_number: pr.number,
state: 'closed',
})
core.debug('Done.')
}
}
} catch (error) {
core.setFailed(error.message)
}
}
run()

View File

@@ -1,431 +0,0 @@
{
"name": "close-bot",
"version": "0.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "close-bot",
"version": "0.0.0",
"license": "CC0",
"dependencies": {
"@actions/core": "^1.10.0",
"@actions/github": "^5.1.1"
}
},
"node_modules/@actions/core": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
"integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==",
"dependencies": {
"@actions/http-client": "^2.0.1",
"uuid": "^8.3.2"
}
},
"node_modules/@actions/github": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz",
"integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==",
"dependencies": {
"@actions/http-client": "^2.0.1",
"@octokit/core": "^3.6.0",
"@octokit/plugin-paginate-rest": "^2.17.0",
"@octokit/plugin-rest-endpoint-methods": "^5.13.0"
}
},
"node_modules/@actions/http-client": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
"integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
"dependencies": {
"tunnel": "^0.0.6"
}
},
"node_modules/@octokit/auth-token": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
"integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
"dependencies": {
"@octokit/types": "^6.0.3"
}
},
"node_modules/@octokit/core": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
"integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
"dependencies": {
"@octokit/auth-token": "^2.4.4",
"@octokit/graphql": "^4.5.8",
"@octokit/request": "^5.6.3",
"@octokit/request-error": "^2.0.5",
"@octokit/types": "^6.0.3",
"before-after-hook": "^2.2.0",
"universal-user-agent": "^6.0.0"
}
},
"node_modules/@octokit/endpoint": {
"version": "6.0.12",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
"integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
"dependencies": {
"@octokit/types": "^6.0.3",
"is-plain-object": "^5.0.0",
"universal-user-agent": "^6.0.0"
}
},
"node_modules/@octokit/graphql": {
"version": "4.8.0",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
"integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
"dependencies": {
"@octokit/request": "^5.6.0",
"@octokit/types": "^6.0.3",
"universal-user-agent": "^6.0.0"
}
},
"node_modules/@octokit/openapi-types": {
"version": "11.2.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz",
"integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA=="
},
"node_modules/@octokit/plugin-paginate-rest": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz",
"integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==",
"dependencies": {
"@octokit/types": "^6.34.0"
},
"peerDependencies": {
"@octokit/core": ">=2"
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods": {
"version": "5.13.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz",
"integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==",
"dependencies": {
"@octokit/types": "^6.34.0",
"deprecation": "^2.3.1"
},
"peerDependencies": {
"@octokit/core": ">=3"
}
},
"node_modules/@octokit/request": {
"version": "5.6.3",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
"integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
"dependencies": {
"@octokit/endpoint": "^6.0.1",
"@octokit/request-error": "^2.1.0",
"@octokit/types": "^6.16.1",
"is-plain-object": "^5.0.0",
"node-fetch": "^2.6.7",
"universal-user-agent": "^6.0.0"
}
},
"node_modules/@octokit/request-error": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
"integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
"dependencies": {
"@octokit/types": "^6.0.3",
"deprecation": "^2.0.0",
"once": "^1.4.0"
}
},
"node_modules/@octokit/types": {
"version": "6.34.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz",
"integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==",
"dependencies": {
"@octokit/openapi-types": "^11.2.0"
}
},
"node_modules/before-after-hook": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz",
"integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ=="
},
"node_modules/deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
},
"node_modules/is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dependencies": {
"wrappy": "1"
}
},
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
},
"node_modules/tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
"engines": {
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
}
},
"node_modules/universal-user-agent": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
},
"node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
},
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}
},
"dependencies": {
"@actions/core": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
"integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==",
"requires": {
"@actions/http-client": "^2.0.1",
"uuid": "^8.3.2"
}
},
"@actions/github": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz",
"integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==",
"requires": {
"@actions/http-client": "^2.0.1",
"@octokit/core": "^3.6.0",
"@octokit/plugin-paginate-rest": "^2.17.0",
"@octokit/plugin-rest-endpoint-methods": "^5.13.0"
}
},
"@actions/http-client": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
"integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
"requires": {
"tunnel": "^0.0.6"
}
},
"@octokit/auth-token": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
"integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
"requires": {
"@octokit/types": "^6.0.3"
}
},
"@octokit/core": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
"integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
"requires": {
"@octokit/auth-token": "^2.4.4",
"@octokit/graphql": "^4.5.8",
"@octokit/request": "^5.6.3",
"@octokit/request-error": "^2.0.5",
"@octokit/types": "^6.0.3",
"before-after-hook": "^2.2.0",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/endpoint": {
"version": "6.0.12",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
"integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
"requires": {
"@octokit/types": "^6.0.3",
"is-plain-object": "^5.0.0",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/graphql": {
"version": "4.8.0",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
"integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
"requires": {
"@octokit/request": "^5.6.0",
"@octokit/types": "^6.0.3",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/openapi-types": {
"version": "11.2.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz",
"integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA=="
},
"@octokit/plugin-paginate-rest": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz",
"integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==",
"requires": {
"@octokit/types": "^6.34.0"
}
},
"@octokit/plugin-rest-endpoint-methods": {
"version": "5.13.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz",
"integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==",
"requires": {
"@octokit/types": "^6.34.0",
"deprecation": "^2.3.1"
}
},
"@octokit/request": {
"version": "5.6.3",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
"integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
"requires": {
"@octokit/endpoint": "^6.0.1",
"@octokit/request-error": "^2.1.0",
"@octokit/types": "^6.16.1",
"is-plain-object": "^5.0.0",
"node-fetch": "^2.6.7",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/request-error": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
"integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
"requires": {
"@octokit/types": "^6.0.3",
"deprecation": "^2.0.0",
"once": "^1.4.0"
}
},
"@octokit/types": {
"version": "6.34.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz",
"integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==",
"requires": {
"@octokit/openapi-types": "^11.2.0"
}
},
"before-after-hook": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz",
"integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ=="
},
"deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
},
"is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
},
"node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"requires": {
"whatwg-url": "^5.0.0"
}
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
}
},
"tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
},
"tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
},
"universal-user-agent": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
},
"uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
},
"webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
},
"whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
"requires": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}
}
}

View File

@@ -1,16 +0,0 @@
{
"name": "close-bot",
"version": "0.0.0",
"description": "",
"main": "index.js",
"private": true,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "chris48s",
"license": "CC0",
"dependencies": {
"@actions/core": "^1.10.0",
"@actions/github": "^5.1.1"
}
}

View File

@@ -0,0 +1,12 @@
name: 'docusaurus-theme-openapi swizzled component changes warning'
description: 'Check for changes in docusaurus-theme-openapi components which are swizzled and prints out a warning'
branding:
icon: 'alert-triangle'
color: 'yellow'
inputs:
github-token:
description: 'The GITHUB_TOKEN secret'
required: true
runs:
using: 'node20'
main: 'index.js'

View File

@@ -0,0 +1,105 @@
'use strict'
/**
* Returns info about all files changed in a PR (max 3000 results)
*
* @param {object} client hydrated octokit ready to use for GitHub Actions
* @param {string} owner repo owner
* @param {string} repo repo name
* @param {number} pullNumber pull request number
* @returns {object[]} array of object that describe pr changed files - see https://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#list-pull-requests-files
*/
async function getAllFilesForPullRequest(client, owner, repo, pullNumber) {
const perPage = 100 // Max number of items per page
let page = 1 // Start with the first page
let allFiles = []
while (true) {
const response = await client.rest.pulls.listFiles({
owner,
repo,
pull_number: pullNumber,
per_page: perPage,
page,
})
if (response.data.length === 0) {
// Break the loop if no more results
break
}
allFiles = allFiles.concat(response.data)
page++ // Move to the next page
}
return allFiles
}
/**
* Get a list of files changed betwen two tags for a github repo
*
* @param {object} client hydrated octokit ready to use for GitHub Actions
* @param {string} owner repo owner
* @param {string} repo repo name
* @param {string} baseTag base tag
* @param {string} headTag head tag
* @returns {string[]} Array listing all changed files betwen the base tag and the head tag
*/
async function getChangedFilesBetweenTags(
client,
owner,
repo,
baseTag,
headTag,
) {
const response = await client.rest.repos.compareCommits({
owner,
repo,
base: baseTag,
head: headTag,
})
return response.data.files.map(file => file.filename)
}
function findKeyEndingWith(obj, ending) {
for (const key in obj) {
if (key.endsWith(ending)) {
return key
}
}
}
/**
* Get large (>1MB) JSON file from git repo on at ref as a json object
*
* @param {object} client Hydrated octokit ready to use for GitHub Actions
* @param {string} owner Repo owner
* @param {string} repo Repo name
* @param {string} path Path of the file in repo relative to root directory
* @param {string} ref Git refrence (commit, branch, tag)
* @returns {string[]} Array listing all changed files betwen the base tag and the head tag
*/
async function getLargeJsonAtRef(client, owner, repo, path, ref) {
const fileSha = (
await client.rest.repos.getContent({
owner,
repo,
path,
ref,
})
).data.sha
const fileBlob = (
await client.rest.git.getBlob({
owner,
repo,
file_sha: fileSha,
})
).data.content
return JSON.parse(Buffer.from(fileBlob, 'base64').toString())
}
module.exports = {
getAllFilesForPullRequest,
getChangedFilesBetweenTags,
findKeyEndingWith,
getLargeJsonAtRef,
}

View File

@@ -0,0 +1,148 @@
'use strict'
const core = require('@actions/core')
const github = require('@actions/github')
const {
getAllFilesForPullRequest,
getChangedFilesBetweenTags,
findKeyEndingWith,
getLargeJsonAtRef,
} = require('./helpers')
async function run() {
try {
const token = core.getInput('github-token', { required: true })
const { pull_request: pr } = github.context.payload
if (!pr) {
throw new Error('Event payload missing `pull_request`')
}
const client = github.getOctokit(token)
const packageName = 'docusaurus-theme-openapi'
const packageParentName = 'docusaurus-preset-openapi'
const overideComponents = ['Curl', 'Response']
const messageTemplate = `<table><thead><tr><th colspan="2">
⚠️ This PR contains changes to components of ${packageName} we've overridden
</th></tr>
<tr><th colspan="2">
We need to watch out for changes to the ${overideComponents.join(
', ',
)} components
</th></tr></thead>
`
if (
!['dependabot[bot]', 'dependabot-preview[bot]'].includes(pr.user.login)
) {
return
}
const files = await getAllFilesForPullRequest(
client,
github.context.repo.owner,
github.context.repo.repo,
pr.number,
)
const file = files.filter(f => f.filename === 'package-lock.json')[0]
if (file === undefined) {
return
}
const prCommitRefForFile = file.contents_url.split('ref=')[1]
const pkgLockNewJson = await getLargeJsonAtRef(
client,
github.context.repo.owner,
github.context.repo.repo,
file.filename,
prCommitRefForFile,
)
const pkgLockOldJson = await getLargeJsonAtRef(
client,
github.context.repo.owner,
github.context.repo.repo,
file.filename,
'master',
)
const oldVesionModuleKey = findKeyEndingWith(
pkgLockOldJson.packages,
`node_modules/${packageName}`,
)
const newVesionModuleKey = findKeyEndingWith(
pkgLockNewJson.packages,
`node_modules/${packageName}`,
)
let oldVersion = pkgLockOldJson.packages[oldVesionModuleKey].version
let newVersion = pkgLockNewJson.packages[newVesionModuleKey].version
const oldVesionModuleKeyParent = findKeyEndingWith(
pkgLockOldJson.packages,
`node_modules/${packageParentName}`,
)
const newVesionModuleKeyParent = findKeyEndingWith(
pkgLockNewJson.packages,
`node_modules/${packageParentName}`,
)
const oldVersionParent =
pkgLockOldJson.packages[oldVesionModuleKeyParent].dependencies[
packageName
].substring(1)
const newVersionParent =
pkgLockNewJson.packages[newVesionModuleKeyParent].dependencies[
packageName
].substring(1)
// if parent dependency is higher version then existing
// npm install will retrive the newer version from the parent dependency
if (oldVersionParent > oldVersion) {
oldVersion = oldVersionParent
}
if (newVersionParent > newVersion) {
newVersion = newVersionParent
}
core.info(`oldVersion=${oldVersion}`)
core.info(`newVersion=${newVersion}`)
if (newVersion !== oldVersion) {
const pkgChangedFiles = await getChangedFilesBetweenTags(
client,
'cloud-annotations',
'docusaurus-openapi',
`v${oldVersion}`,
`v${newVersion}`,
)
const changedComponents = overideComponents.filter(
componenet =>
pkgChangedFiles.filter(
path =>
path.includes('docusaurus-theme-openapi/src/theme') &&
path.includes(componenet),
).length > 0,
)
const versionReport = `<tbody><tr><td> Old version </td><td> ${oldVersion} </td></tr>
<tr><td> New version </td><td> ${newVersion} </td></tr>
`
const changedComponentsReport = `<tr><td> Overide components changed </td><td> ${changedComponents.join(
', ',
)} </td></tr></tbody></table>
`
const body = messageTemplate + versionReport + changedComponentsReport
await client.rest.issues.createComment({
owner: github.context.repo.owner,
repo: github.context.repo.repo,
issue_number: pr.number,
body,
})
core.info('Found changes and posted comment, done.')
return
}
core.info('No changes found, done.')
} catch (error) {
core.setFailed(error.message)
}
}
run()

View File

@@ -0,0 +1,237 @@
{
"name": "docusaurus-swizzled-warning",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "docusaurus-swizzled-warning",
"version": "0.0.0",
"license": "CC0",
"dependencies": {
"@actions/core": "^1.10.1",
"@actions/github": "^6.0.0"
}
},
"node_modules/@actions/core": {
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz",
"integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==",
"dependencies": {
"@actions/http-client": "^2.0.1",
"uuid": "^8.3.2"
}
},
"node_modules/@actions/github": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz",
"integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==",
"dependencies": {
"@actions/http-client": "^2.2.0",
"@octokit/core": "^5.0.1",
"@octokit/plugin-paginate-rest": "^9.0.0",
"@octokit/plugin-rest-endpoint-methods": "^10.0.0"
}
},
"node_modules/@actions/http-client": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.0.tgz",
"integrity": "sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==",
"dependencies": {
"tunnel": "^0.0.6",
"undici": "^5.25.4"
}
},
"node_modules/@fastify/busboy": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz",
"integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==",
"engines": {
"node": ">=14"
}
},
"node_modules/@octokit/auth-token": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
"integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/core": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.1.tgz",
"integrity": "sha512-lyeeeZyESFo+ffI801SaBKmCfsvarO+dgV8/0gD8u1d87clbEdWsP5yC+dSj3zLhb2eIf5SJrn6vDz9AheETHw==",
"dependencies": {
"@octokit/auth-token": "^4.0.0",
"@octokit/graphql": "^7.0.0",
"@octokit/request": "^8.0.2",
"@octokit/request-error": "^5.0.0",
"@octokit/types": "^12.0.0",
"before-after-hook": "^2.2.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/endpoint": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.1.tgz",
"integrity": "sha512-hRlOKAovtINHQPYHZlfyFwaM8OyetxeoC81lAkBy34uLb8exrZB50SQdeW3EROqiY9G9yxQTpp5OHTV54QD+vA==",
"dependencies": {
"@octokit/types": "^12.0.0",
"is-plain-object": "^5.0.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/graphql": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz",
"integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==",
"dependencies": {
"@octokit/request": "^8.0.1",
"@octokit/types": "^12.0.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/openapi-types": {
"version": "19.0.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.0.0.tgz",
"integrity": "sha512-PclQ6JGMTE9iUStpzMkwLCISFn/wDeRjkZFIKALpvJQNBGwDoYYi2fFvuHwssoQ1rXI5mfh6jgTgWuddeUzfWw=="
},
"node_modules/@octokit/plugin-paginate-rest": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.0.0.tgz",
"integrity": "sha512-oIJzCpttmBTlEhBmRvb+b9rlnGpmFgDtZ0bB6nq39qIod6A5DP+7RkVLMOixIgRCYSHDTeayWqmiJ2SZ6xgfdw==",
"dependencies": {
"@octokit/types": "^12.0.0"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"@octokit/core": ">=5"
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.0.1.tgz",
"integrity": "sha512-fgS6HPkPvJiz8CCliewLyym9qAx0RZ/LKh3sATaPfM41y/O2wQ4Z9MrdYeGPVh04wYmHFmWiGlKPC7jWVtZXQA==",
"dependencies": {
"@octokit/types": "^12.0.0"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"@octokit/core": ">=5"
}
},
"node_modules/@octokit/request": {
"version": "8.1.4",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.4.tgz",
"integrity": "sha512-M0aaFfpGPEKrg7XoA/gwgRvc9MSXHRO2Ioki1qrPDbl1e9YhjIwVoHE7HIKmv/m3idzldj//xBujcFNqGX6ENA==",
"dependencies": {
"@octokit/endpoint": "^9.0.0",
"@octokit/request-error": "^5.0.0",
"@octokit/types": "^12.0.0",
"is-plain-object": "^5.0.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/request-error": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz",
"integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==",
"dependencies": {
"@octokit/types": "^12.0.0",
"deprecation": "^2.0.0",
"once": "^1.4.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/types": {
"version": "12.0.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.0.0.tgz",
"integrity": "sha512-EzD434aHTFifGudYAygnFlS1Tl6KhbTynEWELQXIbTY8Msvb5nEqTZIm7sbPEt4mQYLZwu3zPKVdeIrw0g7ovg==",
"dependencies": {
"@octokit/openapi-types": "^19.0.0"
}
},
"node_modules/before-after-hook": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
"integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ=="
},
"node_modules/deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
},
"node_modules/is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dependencies": {
"wrappy": "1"
}
},
"node_modules/tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
"engines": {
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
}
},
"node_modules/undici": {
"version": "5.26.3",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.26.3.tgz",
"integrity": "sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==",
"dependencies": {
"@fastify/busboy": "^2.0.0"
},
"engines": {
"node": ">=14.0"
}
},
"node_modules/universal-user-agent": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
},
"node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
}
}
}

View File

@@ -0,0 +1,16 @@
{
"name": "docusaurus-swizzled-warning",
"version": "0.0.0",
"description": "",
"main": "index.js",
"private": true,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "jNullj",
"license": "CC0",
"dependencies": {
"@actions/core": "^1.10.1",
"@actions/github": "^6.0.0"
}
}

View File

@@ -1,4 +1,4 @@
FROM node:18-bullseye
FROM node:20-bullseye
RUN apt-get update
RUN apt-get install -y jq

View File

@@ -16,6 +16,10 @@ inputs:
description: 'The SERVICETESTS_OBS_PASS secret'
required: false
default: ''
pepy-key:
description: 'The SERVICETESTS_PEPY_KEY secret'
required: false
default: ''
sl-insight-user-uuid:
description: 'The SERVICETESTS_SL_INSIGHT_USER_UUID secret'
required: false
@@ -66,6 +70,7 @@ runs:
LIBRARIESIO_TOKENS: '${{ inputs.librariesio-tokens }}'
OBS_USER: '${{ inputs.obs-user }}'
OBS_PASS: '${{ inputs.obs-pass }}'
PEPY_KEY: '${{ inputs.pepy-key }}'
SL_INSIGHT_USER_UUID: '${{ inputs.sl-insight-user-uuid }}'
SL_INSIGHT_API_TOKEN: '${{ inputs.sl-insight-api-token }}'
TWITCH_CLIENT_ID: '${{ inputs.twitch-client-id }}'

View File

@@ -2,8 +2,12 @@ name: 'Set up project'
description: 'Set up project'
inputs:
node-version:
description: 'Version Spec of the version to use. Examples: 12.x, 10.15.1, >=10.15.0.'
description: 'Version Spec of the node version to use. Examples: 12.x, 10.15.1, >=10.15.0.'
required: true
npm-version:
description: 'Version Spec of the npm version to use. Examples: 9.x, 10.2.3, >=10.1.0.'
required: false
default: '^10'
cypress:
description: 'Install Cypress binary (boolean)'
type: boolean
@@ -19,8 +23,8 @@ runs:
with:
node-version: ${{ inputs.node-version }}
- name: Install NPM 9
run: npm install -g npm@^9.0.0
- name: Install NPM ${{ inputs.npm-version }}
run: npm install -g npm@${{ inputs.npm-version }}
shell: bash
- name: Install dependencies

View File

@@ -17,9 +17,6 @@ updates:
- dependency-name: 'decamelize'
- dependency-name: 'humanize-string'
# https://github.com/badges/shields/pull/7288#issuecomment-974699240
- dependency-name: '@types/node'
# badge-maker package dependencies
- package-ecosystem: npm
directory: '/badge-maker'
@@ -30,16 +27,6 @@ updates:
open-pull-requests-limit: 99
rebase-strategy: disabled
# close-bot package dependencies
- package-ecosystem: npm
directory: '/.github/actions/close-bot'
schedule:
interval: weekly
day: friday
time: '12:00'
open-pull-requests-limit: 99
rebase-strategy: disabled
# GH actions
- package-ecosystem: 'github-actions'
directory: '/'
@@ -47,3 +34,13 @@ updates:
interval: weekly
open-pull-requests-limit: 99
rebase-strategy: disabled
# docusaurus-swizzled-warning package dependencies
- package-ecosystem: npm
directory: '/.github/actions/docusaurus-swizzled-warning'
schedule:
interval: weekly
day: friday
time: '12:00'
open-pull-requests-limit: 99
rebase-strategy: disabled

16
.github/scripts/check-docusaurus-versions.sh vendored Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Docusaurus outputs some important errors as log messages
# but doesn't actually fail
# https://github.com/facebook/docusaurus/blob/v2.4.3/packages/docusaurus/src/server/siteMetadata.ts#L75-L92
# this script runs `docusaurus build`. If it outputs any [ERROR]s, we exit with 1
if ( npm run build 2>&1 | grep '\[ERROR\]' )
then
echo "You probably need to run: npm update @docusaurus/preset-classic"
exit 1
else
exit 0
fi

View File

@@ -18,12 +18,13 @@ git checkout "pr-$PR_NUMBER"
# If the app does not already exist, create it
if ! flyctl status --app "$app"; then
flyctl launch --no-deploy --copy-config --name "$app" --region "$region" --org "$org"
flyctl launch --no-deploy --copy-config --name "$app" --region "$region" --org "$org" --dockerfile ./Dockerfile
echo $SECRETS | tr " " "\n" | flyctl secrets import --app "$app"
fi
# Deploy
flyctl deploy --app "$app" --region "$region"
flyctl scale count 1 --app "$app" --yes
# Post a comment on the PR
app_url=$(flyctl status --app "$app" --json | jq -r .Hostname)

View File

@@ -10,10 +10,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
with:
version: v0.9.1
@@ -21,7 +21,7 @@ jobs:
run: echo "SHORT_SHA=${GITHUB_SHA::7}" >> $GITHUB_ENV
- name: Build
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
push: false

View File

@@ -0,0 +1,23 @@
name: Check Docusaurus Plugin Versions
on:
pull_request:
types: [opened, reopened, synchronize]
push:
branches-ignore:
- 'gh-pages'
- 'dependabot/**'
jobs:
check-docusaurus-versions:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 20
cypress: true
- run: .github/scripts/check-docusaurus-versions.sh

View File

@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
environment: 'Review Apps'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: superfly/flyctl-actions/setup-flyctl@master
- name: install jq

View File

@@ -24,7 +24,7 @@ jobs:
run: echo "::set-output name=date::$(date --rfc-3339=date)"
- name: Checkout branch "master"
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
ref: 'master'
@@ -35,18 +35,18 @@ jobs:
tag: server-${{ steps.date.outputs.date }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
with:
version: v0.9.1
- name: Login to DockerHub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push snapshot release to DockerHub
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
push: true
@@ -55,14 +55,14 @@ jobs:
version=server-${{ steps.date.outputs.date }}
- name: Login to GHCR
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push snapshot release to GHCR
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
push: true

View File

@@ -14,12 +14,12 @@ jobs:
if: github.actor != 'dependabot[bot]' && github.actor != 'repo-ranger[bot]'
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 16
node-version: 20
- name: Danger
run: npm run danger ci

View File

@@ -12,14 +12,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 16
node-version: 20
- name: Build
run: npm run build-docs

View File

@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
environment: 'Review Apps'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: superfly/flyctl-actions/setup-flyctl@master
@@ -35,6 +35,7 @@ jobs:
LIBRARIESIO_TOKENS=${{ secrets.SERVICETESTS_LIBRARIESIO_TOKENS }}
OBS_USER=${{ secrets.SERVICETESTS_OBS_USER }}
OBS_PASS=${{ secrets.SERVICETESTS_OBS_PASS }}
PEPY_KEY=${{ secrets.SERVICETESTS_PEPY_KEY }}
SL_INSIGHT_API_TOKEN=${{ secrets.SERVICETESTS_SL_INSIGHT_USER_UUID }}
SL_INSIGHT_USER_UUID=${{ secrets.SERVICETESTS_SL_INSIGHT_API_TOKEN }}
TWITCH_CLIENT_ID=${{ secrets.SERVICETESTS_TWITCH_CLIENT_ID }}

View File

@@ -1,22 +1,22 @@
name: Auto close
name: Docusaurus swizzled component changes warning
on:
pull_request_target:
pull_request:
types: [opened]
permissions:
pull-requests: write
jobs:
auto-close:
docusaurus-swizzled-warning:
runs-on: ubuntu-latest
if: github.actor == 'dependabot[bot]'
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install action dependencies
run: cd .github/actions/close-bot && npm ci
run: cd .github/actions/docusaurus-swizzled-warning && npm ci
- uses: ./.github/actions/close-bot
- uses: ./.github/actions/docusaurus-swizzled-warning
with:
github-token: '${{ secrets.GITHUB_TOKEN }}'

View File

@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Draft Release
uses: ./.github/actions/draft-release

View File

@@ -8,6 +8,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: 'Dependency Review'
uses: actions/dependency-review-action@v3

View File

@@ -12,15 +12,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
with:
version: v0.9.1
- name: Login to DockerHub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -29,7 +29,8 @@ jobs:
run: echo "SHORT_SHA=${GITHUB_SHA::7}" >> $GITHUB_ENV
- name: Build and push to DockerHub
uses: docker/build-push-action@v4
id: docker_build_push
uses: docker/build-push-action@v5
with:
context: .
push: true
@@ -37,15 +38,18 @@ jobs:
build-args: |
version=${{ env.SHORT_SHA }}
- name: Output Image Digest
run: echo ${{ steps.docker_build_push.outputs.digest }} >> $GITHUB_STEP_SUMMARY
- name: Login to GHCR
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push to GHCR
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
push: true

View File

@@ -13,9 +13,11 @@ jobs:
steps:
- name: Test badge test run conditions
id: testCondition
env:
ISSUE_BODY: '${{ github.event.issue.body }}'
run: |
product=$(echo "${{ github.event.issue.body }}" | grep -A2 "Are you experiencing an issue with.*" | tail -n 1)
link=$(echo "${{ github.event.issue.body }}" | grep -A2 "Link to the badge.*" | tail -n 1)
product=$(echo "$ISSUE_BODY" | grep -A2 "Are you experiencing an issue with.*" | tail -n 1)
link=$(echo "$ISSUE_BODY" | grep -A2 "Link to the badge.*" | tail -n 1)
if [[ "$product" == "shields.io" && "$link" == "https://img.shields.io"* ]]; then
echo "runNext=true" >> "$GITHUB_OUTPUT"
@@ -33,12 +35,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 16
node-version: 20
cypress: false
- name: Output debug info
@@ -47,7 +49,7 @@ jobs:
run: npm run badge $TEST_BADGE_LINK
- name: Add Comment to Issue
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
script: |
const issueNumber = context.issue.number;

View File

@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Cache Cypress binary
id: cache-cypress
@@ -26,7 +26,7 @@ jobs:
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 16
node-version: 20
cypress: true
- name: Run tests
@@ -36,14 +36,14 @@ jobs:
- name: Archive videos
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: videos
path: cypress/videos
- name: Archive screenshots
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: screenshots
path: cypress/screenshots

View File

@@ -1,4 +1,4 @@
name: Integration@node 18
name: Integration@node 21
on:
pull_request:
types: [opened, reopened, synchronize]
@@ -8,7 +8,7 @@ on:
- 'dependabot/**'
jobs:
test-integration-18:
test-integration-21:
runs-on: ubuntu-latest
env:
PAT_EXISTS: ${{ secrets.GH_PAT != '' }}
@@ -30,12 +30,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 18
node-version: 21
env:
NPM_CONFIG_ENGINE_STRICT: 'false'

View File

@@ -30,12 +30,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 16
node-version: 20
- name: Integration Tests (with PAT)
if: ${{ env.PAT_EXISTS == 'true' }}

View File

@@ -12,12 +12,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 16
node-version: 20
- name: ESLint
if: always()

View File

@@ -1,4 +1,4 @@
name: Main@node 18
name: Main@node 21
on:
pull_request:
types: [opened, reopened, synchronize]
@@ -8,16 +8,16 @@ on:
- 'dependabot/**'
jobs:
test-main-18:
test-main-21:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 18
node-version: 21
env:
NPM_CONFIG_ENGINE_STRICT: 'false'

View File

@@ -17,12 +17,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 16
node-version: 20
- name: Core tests
uses: ./.github/actions/core-tests

View File

@@ -21,10 +21,10 @@ jobs:
- node: '20'
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install Node JS ${{ inputs.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}

View File

@@ -14,19 +14,23 @@ jobs:
matrix:
include:
- node: '16'
engine-strict: 'true'
npm: '^9'
engine-strict: 'false'
- node: '18'
npm: '^9'
engine-strict: 'false'
- node: '20'
engine-strict: 'false'
npm: '^10'
engine-strict: 'true'
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: ${{ matrix.node }}
npm-version: ${{ matrix.npm }}
env:
NPM_CONFIG_ENGINE_STRICT: ${{ matrix.engine-strict }}

View File

@@ -1,4 +1,4 @@
name: Services@node 18
name: Services@node 21
on:
pull_request:
types: [opened, edited, reopened, synchronize]
@@ -7,17 +7,17 @@ on:
- 'gh-readonly-queue/**'
jobs:
test-services-18:
test-services-21:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 18
node-version: 21
env:
NPM_CONFIG_ENGINE_STRICT: 'false'
@@ -29,6 +29,7 @@ jobs:
librariesio-tokens: '${{ secrets.SERVICETESTS_LIBRARIESIO_TOKENS }}'
obs-user: '${{ secrets.SERVICETESTS_OBS_USER }}'
obs-pass: '${{ secrets.SERVICETESTS_OBS_PASS }}'
pepy-key: '${{ secrets.SERVICETESTS_PEPY_KEY }}'
sl-insight-user-uuid: '${{ secrets.SERVICETESTS_SL_INSIGHT_USER_UUID }}'
sl-insight-api-token: '${{ secrets.SERVICETESTS_SL_INSIGHT_API_TOKEN }}'
twitch-client-id: '${{ secrets.SERVICETESTS_TWITCH_CLIENT_ID }}'

View File

@@ -12,12 +12,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 16
node-version: 20
- name: Service tests (triggered from local branch)
if: github.event.pull_request.head.repo.full_name == github.repository
@@ -27,6 +27,7 @@ jobs:
librariesio-tokens: '${{ secrets.SERVICETESTS_LIBRARIESIO_TOKENS }}'
obs-user: '${{ secrets.SERVICETESTS_OBS_USER }}'
obs-pass: '${{ secrets.SERVICETESTS_OBS_PASS }}'
pepy-key: '${{ secrets.SERVICETESTS_PEPY_KEY }}'
sl-insight-user-uuid: '${{ secrets.SERVICETESTS_SL_INSIGHT_USER_UUID }}'
sl-insight-api-token: '${{ secrets.SERVICETESTS_SL_INSIGHT_API_TOKEN }}'
twitch-client-id: '${{ secrets.SERVICETESTS_TWITCH_CLIENT_ID }}'

View File

@@ -14,12 +14,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
node-version: 16
node-version: 20
- name: Check for new GitHub API version
run: node scripts/update-github-api.js

View File

@@ -4,6 +4,80 @@ Note: this changelog is for the shields.io server. The changelog for the badge-m
---
## server-2024-01-01
The most important changes in this release for users hosting their own instance are:
The shields docker image is now based on node 20:
- deploy on node 20 [#9799](https://github.com/badges/shields/issues/9799)
It is now possible to use [authentication for DockerHub](https://github.com/badges/shields/blob/master/doc/server-secrets.md#dockerhub) to allow higher API rate limit or access to private repos:
- call [docker] with auth [#9803](https://github.com/badges/shields/issues/9803)
### New Badges
- [Thunderstore] Add Thunderstore Badges [#9782](https://github.com/badges/shields/issues/9782)
- Add [Raycast] Badge [#9801](https://github.com/badges/shields/issues/9801)
- [GITEA] add new gitea service (release/languages) [#9781](https://github.com/badges/shields/issues/9781)
- Add [NpmStatDownloads] Badge [#9783](https://github.com/badges/shields/issues/9783)
### Frontend Changes
- improve documentation for [dynamicxml] service [#9798](https://github.com/badges/shields/issues/9798)
- add description to interval enums [#9854](https://github.com/badges/shields/issues/9854)
- convert 'style' param to enum [#9853](https://github.com/badges/shields/issues/9853)
- Ensure social category badges are rendered with social style and logo; affects [gitlab keybase lemmy modrinth thunderstore twitch] gist github reddit [#9859](https://github.com/badges/shields/issues/9859)
### Fixes
- [pub] Use official version endpoint for pub-service [#9802](https://github.com/badges/shields/issues/9802)
- cache weblate badges for longer [#9786](https://github.com/badges/shields/issues/9786)
- [Discourse] Update schema keys to use plural form (`topic_count` -> `topics_count`) [#9778](https://github.com/badges/shields/issues/9778)
- cache some badges for longer [#9785](https://github.com/badges/shields/issues/9785)
- increase page size for github release badge by semver [#9818](https://github.com/badges/shields/issues/9818)
- Dependency updates
## server-2023-12-04
- move from @renovate/pep440 to @renovatebot/pep440 [#9614](https://github.com/badges/shields/issues/9614)
- deprecate/fix [ansible] galaxy services [#9648](https://github.com/badges/shields/issues/9648)
- call [pepy] with auth [#9748](https://github.com/badges/shields/issues/9748)
- add meaningful descriptions including keywords [#9715](https://github.com/badges/shields/issues/9715)
- Dependency updates
## server-2023-11-01
- fix greasyfork 404 bug [#9632](https://github.com/badges/shields/issues/9632)
- Hacktoberfest 2023 support - resolves #9636 [#9637](https://github.com/badges/shields/issues/9637)
- switch to fixed OpenCollective images [#9615](https://github.com/badges/shields/issues/9615)
- Dependency updates
## server-2023-10-02
- add python package total downloads from [pepy] badge [#9564](https://github.com/badges/shields/issues/9564)
- deprecate [redmine] plugin rating badges [#9568](https://github.com/badges/shields/issues/9568)
- fix [bower] version badge [#9567](https://github.com/badges/shields/issues/9567)
- Add [PythonVersionFromToml] shield [#9516](https://github.com/badges/shields/issues/9516)
- Add [dub] score badge service [#9549](https://github.com/badges/shields/issues/9549)
- Dependency updates
## server-2023-09-04
- Fix [testspace] badges [#9525](https://github.com/badges/shields/issues/9525)
- fix rSt code example [#9528](https://github.com/badges/shields/issues/9528)
- Add dynamic TOML support via [DynamicToml] Service [#9517](https://github.com/badges/shields/issues/9517)
- cache [pypi] downloads for longer [#9522](https://github.com/badges/shields/issues/9522)
- [twitter] --> x [#9496](https://github.com/badges/shields/issues/9496)
- [bundlejs] add badge for the npm package size [#9055](https://github.com/badges/shields/issues/9055)
- Switch [OpenCollective] badges to use GraphQL and auth [#9387](https://github.com/badges/shields/issues/9387)
- [Pulsar] Add Pulsar Badges for Stargazers & Downloads [#8767](https://github.com/badges/shields/issues/8767)
- Add [CurseForge] badges [#9252](https://github.com/badges/shields/issues/9252)
- deploy on node 18 [#9385](https://github.com/badges/shields/issues/9385)
- allow calling [github] without auth [#9427](https://github.com/badges/shields/issues/9427)
- Dependency updates
## server-2023-08-01
- Convert `examples` arrays to `openApi` objects (part 1) [#9320](https://github.com/badges/shields/issues/9320)

View File

@@ -1,4 +1,4 @@
FROM node:16-alpine AS Builder
FROM node:20-alpine AS Builder
RUN mkdir -p /usr/src/app
RUN mkdir /usr/src/app/private
@@ -15,11 +15,11 @@ RUN NODE_ENV=development CYPRESS_INSTALL_BINARY=0 npm ci
COPY . /usr/src/app
RUN npm run build
RUN npm prune --production
RUN npm prune --omit=dev
RUN npm cache clean --force
# Use multi-stage build to reduce size
FROM node:16-alpine
FROM node:20-alpine
ARG version=dev
ENV DOCKER_SHIELDS_VERSION=$version

View File

@@ -22,9 +22,6 @@
<a href="https://discord.gg/HjJCwm5">
<img src="https://img.shields.io/discord/308323056592486420?logo=discord"
alt="chat on Discord"></a>
<a href="https://twitter.com/intent/follow?screen_name=shields_io">
<img src="https://img.shields.io/twitter/follow/shields_io?style=social&logo=twitter"
alt="follow on Twitter"></a>
</p>
This is home to [Shields.io][shields.io], a service for concise, consistent,
@@ -70,7 +67,7 @@ This repo hosts:
[Make your own badges!][custom badges]
(Quick example: `https://img.shields.io/badge/left-right-f39f37`)
[custom badges]: http://localhost:3000/badges/static-badge
[custom badges]: https://img.shields.io/badges/static-badge
### Quickstart
@@ -92,14 +89,17 @@ You can read a [tutorial on how to add a badge][tutorial].
[![GitHub issues by-label](https://img.shields.io/github/issues/badges/shields/good%20first%20issue)](https://github.com/badges/shields/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
If you intend on reporting or contributing a fix related to security vulnerabilities, please first refer to our [security policy][security].
[service-tests]: https://github.com/badges/shields/blob/master/doc/service-tests.md
[tutorial]: https://github.com/badges/shields/blob/master/doc/TUTORIAL.md
[contributing]: https://github.com/badges/shields/blob/master/CONTRIBUTING.md
[security]: https://github.com/badges/shields/blob/master/SECURITY.md
## Development
1. Install Node 16 or later. You can use the [package manager][] of your choice.
Tests need to pass in Node 16 and 17.
1. Install Node 20 or later. You can use the [package manager][] of your choice.
Tests need to pass in Node 20 and 21.
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.

View File

@@ -35,7 +35,7 @@ class XmlElement {
* Name of the XML tag
* @param {Array.<string|module:badge-maker/lib/xml~XmlElement>} [attrs.content=[]]
* Array of objects to render inside the tag. content may contain a mix of
* string and XmlElement objects. If content is `[]` or ommitted the
* string and XmlElement objects. If content is `[]` or omitted the
* element will be rendered as a self-closing element.
* @param {object} [attrs.attrs={}]
* Object representing the tag's attributes as name/value pairs

View File

@@ -77,7 +77,10 @@ private:
bitbucket_password: 'BITBUCKET_PASS'
bitbucket_server_username: 'BITBUCKET_SERVER_USER'
bitbucket_server_password: 'BITBUCKET_SERVER_PASS'
curseforge_api_key: 'CURSEFORGE_API_KEY'
discord_bot_token: 'DISCORD_BOT_TOKEN'
dockerhub_username: 'DOCKERHUB_USER'
dockerhub_pat: 'DOCKERHUB_PAT'
drone_token: 'DRONE_TOKEN'
gh_client_id: 'GH_CLIENT_ID'
gh_client_secret: 'GH_CLIENT_SECRET'
@@ -94,6 +97,8 @@ private:
obs_user: 'OBS_USER'
obs_pass: 'OBS_PASS'
redis_url: 'REDIS_URL'
opencollective_token: 'OPENCOLLECTIVE_TOKEN'
pepy_key: 'PEPY_KEY'
postgres_url: 'POSTGRES_URL'
sentry_dsn: 'SENTRY_DSN'
sl_insight_userUuid: 'SL_INSIGHT_USER_UUID'

View File

@@ -1,5 +1,6 @@
private:
# These are the keys which are set on the production servers.
curseforge_api_key: ...
discord_bot_token: ...
gh_client_id: ...
gh_client_secret: ...

View File

@@ -4,6 +4,7 @@ private:
# The possible values are documented in `doc/server-secrets.md`. Note that
# you can also set these values through environment variables, which may be
# preferable for self hosting.
curseforge_api_key: '...'
gh_token: '...'
gitlab_token: '...'
obs_user: '...'

View File

@@ -1,5 +1,13 @@
import { URL } from 'url'
import { InvalidParameter } from './errors.js'
import dayjs from 'dayjs'
import Joi from 'joi'
import checkErrorResponse from './check-error-response.js'
import { InvalidParameter, InvalidResponse } from './errors.js'
import { fetch } from './got.js'
import { parseJson } from './json.js'
import validate from './validate.js'
let jwtCache = Object.create(null)
class AuthHelper {
constructor(
@@ -87,7 +95,7 @@ class AuthHelper {
}
}
shouldAuthenticateRequest({ url, options = {} }) {
isAllowedOrigin(url) {
let parsed
try {
parsed = new URL(url)
@@ -97,7 +105,11 @@ class AuthHelper {
const { protocol, host } = parsed
const origin = `${protocol}//${host}`
const originViolation = !this._authorizedOrigins.includes(origin)
return this._authorizedOrigins.includes(origin)
}
shouldAuthenticateRequest({ url, options = {} }) {
const originViolation = !this.isAllowedOrigin(url)
const strictSslCheckViolation =
this._requireStrictSslToAuthenticate &&
@@ -153,6 +165,11 @@ class AuthHelper {
: undefined
}
_apiKeyHeader(apiKeyHeader) {
const { _pass: pass } = this
return this.isConfigured ? { [apiKeyHeader]: pass } : undefined
}
static _mergeHeaders(requestParams, headers) {
const {
options: { headers: existingHeaders, ...restOptions } = {},
@@ -170,6 +187,12 @@ class AuthHelper {
}
}
withApiKeyHeader(requestParams, header = 'x-api-key') {
return this._withAnyAuth(requestParams, requestParams =>
this.constructor._mergeHeaders(requestParams, this._apiKeyHeader(header)),
)
}
withBearerAuthHeader(
requestParams,
bearerKey = 'Bearer', // lgtm [js/hardcoded-credentials]
@@ -207,6 +230,103 @@ class AuthHelper {
}),
)
}
static _getJwtExpiry(token, max = dayjs().add(1, 'hours').unix()) {
// get the expiry timestamp for this JWT (capped at a max length)
const parts = token.split('.')
if (parts.length < 2) {
throw new InvalidResponse({
prettyMessage: 'invalid response data from auth endpoint',
})
}
const json = validate(
{
ErrorClass: InvalidResponse,
prettyErrorMessage: 'invalid response data from auth endpoint',
},
parseJson(Buffer.from(parts[1], 'base64').toString()),
Joi.object({ exp: Joi.number().required() }).required(),
)
return Math.min(json.exp, max)
}
static _isJwtValid(expiry) {
// we consider the token valid if the expiry
// datetime is later than (now + 1 minute)
return dayjs.unix(expiry).isAfter(dayjs().add(1, 'minutes'))
}
async _getJwt(loginEndpoint) {
const { _user: username, _pass: password } = this
// attempt to get JWT from cache
if (
jwtCache?.[loginEndpoint]?.[username]?.token &&
jwtCache?.[loginEndpoint]?.[username]?.expiry &&
this.constructor._isJwtValid(jwtCache[loginEndpoint][username].expiry)
) {
// cache hit
return jwtCache[loginEndpoint][username].token
}
// cache miss - request a new JWT
const originViolation = !this.isAllowedOrigin(loginEndpoint)
if (originViolation) {
throw new InvalidParameter({
prettyMessage: 'requested origin not authorized',
})
}
const { buffer } = await checkErrorResponse({})(
await fetch(loginEndpoint, {
method: 'POST',
form: { username, password },
}),
)
const json = validate(
{
ErrorClass: InvalidResponse,
prettyErrorMessage: 'invalid response data from auth endpoint',
},
parseJson(buffer),
Joi.object({ token: Joi.string().required() }).required(),
)
const token = json.token
const expiry = this.constructor._getJwtExpiry(token)
// store in the cache
if (!(loginEndpoint in jwtCache)) {
jwtCache[loginEndpoint] = {}
}
jwtCache[loginEndpoint][username] = { token, expiry }
return token
}
async _getJwtAuthHeader(loginEndpoint) {
if (!this.isConfigured) {
return undefined
}
const token = await this._getJwt(loginEndpoint)
return { Authorization: `Bearer ${token}` }
}
async withJwtAuth(requestParams, loginEndpoint) {
const authHeader = await this._getJwtAuthHeader(loginEndpoint)
return this._withAnyAuth(requestParams, requestParams =>
this.constructor._mergeHeaders(requestParams, authHeader),
)
}
}
export { AuthHelper }
function clearJwtCache() {
jwtCache = Object.create(null)
}
export { AuthHelper, clearJwtCache }

View File

@@ -1,7 +1,32 @@
import dayjs from 'dayjs'
import nock from 'nock'
import { expect } from 'chai'
import { test, given, forCases } from 'sazerac'
import { AuthHelper } from './auth-helper.js'
import { InvalidParameter } from './errors.js'
import { AuthHelper, clearJwtCache } from './auth-helper.js'
import { InvalidParameter, InvalidResponse } from './errors.js'
function base64UrlEncode(input) {
const base64 = btoa(JSON.stringify(input))
return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')
}
function getMockJwt(extras) {
// this function returns a mock JWT that contains enough
// for a unit test but ignores important aspects e.g: signing
const header = {
alg: 'HS256',
typ: 'JWT',
}
const payload = {
iat: Math.floor(Date.now() / 1000),
...extras,
}
const encodedHeader = base64UrlEncode(header)
const encodedPayload = base64UrlEncode(payload)
return `${encodedHeader}.${encodedPayload}`
}
describe('AuthHelper', function () {
describe('constructor checks', function () {
@@ -381,4 +406,153 @@ describe('AuthHelper', function () {
).to.throw(InvalidParameter)
})
})
context('JTW Auth', function () {
describe('_isJwtValid', function () {
test(AuthHelper._isJwtValid, () => {
given(dayjs().add(1, 'month').unix()).expect(true)
given(dayjs().add(2, 'minutes').unix()).expect(true)
given(dayjs().add(30, 'seconds').unix()).expect(false)
given(dayjs().unix()).expect(false)
given(dayjs().subtract(1, 'seconds').unix()).expect(false)
})
})
describe('_getJwtExpiry', function () {
it('extracts expiry from valid JWT', function () {
const nowPlus30Mins = dayjs().add(30, 'minutes').unix()
expect(
AuthHelper._getJwtExpiry(getMockJwt({ exp: nowPlus30Mins })),
).to.equal(nowPlus30Mins)
})
it('caps expiry at max', function () {
const nowPlus1Hour = dayjs().add(1, 'hours').unix()
const nowPlus2Hours = dayjs().add(2, 'hours').unix()
expect(
AuthHelper._getJwtExpiry(getMockJwt({ exp: nowPlus2Hours })),
).to.equal(nowPlus1Hour)
})
it('throws if JWT does not contain exp', function () {
expect(() => {
AuthHelper._getJwtExpiry(getMockJwt({}))
}).to.throw(InvalidResponse)
})
it('throws if JWT is invalid', function () {
expect(() => {
AuthHelper._getJwtExpiry('abc')
}).to.throw(InvalidResponse)
})
})
describe('withJwtAuth', function () {
const authHelper = new AuthHelper(
{
userKey: 'jwt_user',
passKey: 'jwt_pass',
authorizedOrigins: ['https://example.com'],
isRequired: false,
},
{ private: { jwt_user: 'fred', jwt_pass: 'abc123' } },
)
beforeEach(function () {
clearJwtCache()
})
it('should use cached response if valid', async function () {
// the expiry is far enough in the future that the token
// will still be valid on the second hit
const mockToken = getMockJwt({ exp: dayjs().add(1, 'hours').unix() })
// .times(1) ensures if we try to make a second call to this endpoint,
// we will throw `Nock: No match for request`
nock('https://example.com')
.post('/login')
.times(1)
.reply(200, { token: mockToken })
const params1 = await authHelper.withJwtAuth(
{ url: 'https://example.com/some-endpoint' },
'https://example.com/login',
)
expect(nock.isDone()).to.equal(true)
expect(params1).to.deep.equal({
options: {
headers: {
Authorization: `Bearer ${mockToken}`,
},
},
url: 'https://example.com/some-endpoint',
})
// second time round, we'll get the same response again
// but this time served from cache
const params2 = await authHelper.withJwtAuth(
{ url: 'https://example.com/some-endpoint' },
'https://example.com/login',
)
expect(params2).to.deep.equal({
options: {
headers: {
Authorization: `Bearer ${mockToken}`,
},
},
url: 'https://example.com/some-endpoint',
})
nock.cleanAll()
})
it('should not use cached response if expired', async function () {
// this time we define a token expiry is close enough
// that the token will not be valid on the second call
const mockToken1 = getMockJwt({
exp: dayjs().add(20, 'seconds').unix(),
})
nock('https://example.com')
.post('/login')
.times(1)
.reply(200, { token: mockToken1 })
const params1 = await authHelper.withJwtAuth(
{ url: 'https://example.com/some-endpoint' },
'https://example.com/login',
)
expect(nock.isDone()).to.equal(true)
expect(params1).to.deep.equal({
options: {
headers: {
Authorization: `Bearer ${mockToken1}`,
},
},
url: 'https://example.com/some-endpoint',
})
// second time round we make another network request
const mockToken2 = getMockJwt({
exp: dayjs().add(20, 'seconds').unix(),
})
nock('https://example.com')
.post('/login')
.times(1)
.reply(200, { token: mockToken2 })
const params2 = await authHelper.withJwtAuth(
{ url: 'https://example.com/some-endpoint' },
'https://example.com/login',
)
expect(nock.isDone()).to.equal(true)
expect(params2).to.deep.equal({
options: {
headers: {
Authorization: `Bearer ${mockToken2}`,
},
},
url: 'https://example.com/some-endpoint',
})
nock.cleanAll()
})
})
})
})

View File

@@ -20,7 +20,7 @@ class BaseGraphqlService extends BaseService {
/**
* Parse data from JSON endpoint
*
* @param {string} buffer JSON repsonse from upstream API
* @param {string} buffer JSON response from upstream API
* @returns {object} Parsed response
*/
_parseJson(buffer) {
@@ -50,8 +50,10 @@ class BaseGraphqlService extends BaseService {
* See {@link https://github.com/sindresorhus/got/blob/main/documentation/7-retry.md#errorcodes got error codes}
* for allowed keys
* and {@link module:core/base-service/errors~RuntimeErrorProps} for allowed values
* @param {number[]} [attrs.logErrors=[429]] An array of http error codes
* that will be logged (to sentry, if configured).
* @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
* further processing. 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
@@ -69,6 +71,7 @@ class BaseGraphqlService extends BaseService {
options = {},
httpErrorMessages = {},
systemErrors = {},
logErrors = [429],
transformJson = data => data,
transformErrors = defaultTransformErrors,
}) {
@@ -83,6 +86,7 @@ class BaseGraphqlService extends BaseService {
options: mergedOptions,
httpErrors: httpErrorMessages,
systemErrors,
logErrors,
})
const json = transformJson(this._parseJson(buffer))
if (json.errors) {

View File

@@ -14,7 +14,7 @@ class BaseJsonService extends BaseService {
/**
* Parse data from JSON endpoint
*
* @param {string} buffer JSON repsonse from upstream API
* @param {string} buffer JSON response from upstream API
* @returns {object} Parsed response
*/
_parseJson(buffer) {
@@ -40,6 +40,8 @@ class BaseJsonService extends BaseService {
* See {@link https://github.com/sindresorhus/got/blob/main/documentation/7-retry.md#errorcodes got error codes}
* for allowed keys
* and {@link module:core/base-service/errors~RuntimeErrorProps} for allowed values
* @param {number[]} [attrs.logErrors=[429]] An array of http error codes
* that will be logged (to sentry, if configured).
* @returns {object} Parsed response
* @see https://github.com/sindresorhus/got/blob/main/documentation/2-options.md
*/
@@ -49,6 +51,7 @@ class BaseJsonService extends BaseService {
options = {},
httpErrors = {},
systemErrors = {},
logErrors = [429],
}) {
const mergedOptions = {
...{ headers: { Accept: 'application/json' } },
@@ -59,6 +62,7 @@ class BaseJsonService extends BaseService {
options: mergedOptions,
httpErrors,
systemErrors,
logErrors,
})
const json = this._parseJson(buffer)
return this.constructor._validate(json, schema)

View File

@@ -63,6 +63,8 @@ class BaseSvgScrapingService extends BaseService {
* See {@link https://github.com/sindresorhus/got/blob/main/documentation/7-retry.md#errorcodes got error codes}
* for allowed keys
* and {@link module:core/base-service/errors~RuntimeErrorProps} for allowed values
* @param {number[]} [attrs.logErrors=[429]] An array of http error codes
* that will be logged (to sentry, if configured).
* @returns {object} Parsed response
* @see https://github.com/sindresorhus/got/blob/main/documentation/2-options.md
*/
@@ -73,6 +75,7 @@ class BaseSvgScrapingService extends BaseService {
options = {},
httpErrors = {},
systemErrors = {},
logErrors = [429],
}) {
const logTrace = (...args) => trace.logTrace('fetch', ...args)
const mergedOptions = {
@@ -84,6 +87,7 @@ class BaseSvgScrapingService extends BaseService {
options: mergedOptions,
httpErrors,
systemErrors,
logErrors,
})
logTrace(emojic.dart, 'Response SVG', buffer)
const data = {

View File

@@ -0,0 +1,86 @@
/**
* @module
*/
import emojic from 'emojic'
import { parse } from 'smol-toml'
import BaseService from './base.js'
import { InvalidResponse } from './errors.js'
import trace from './trace.js'
/**
* Services which query a TOML endpoint should extend BaseTomlService
*
* @abstract
*/
class BaseTomlService extends BaseService {
/**
* Request data from an upstream API serving TOML,
* parse it and validate against a schema
*
* @param {object} attrs Refer to individual attrs
* @param {Joi} attrs.schema Joi schema to validate the response against
* @param {string} attrs.url URL to request
* @param {object} [attrs.options={}] Options to pass to got. See
* [documentation](https://github.com/sindresorhus/got/blob/main/documentation/2-options.md)
* @param {object} [attrs.httpErrors={}] Key-value map of status codes
* 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 {object} [attrs.systemErrors={}] Key-value map of got network exception codes
* and an object of params to pass when we construct an Inaccessible exception object
* e.g: `{ ECONNRESET: { prettyMessage: 'connection reset' } }`.
* See {@link https://github.com/sindresorhus/got/blob/main/documentation/7-retry.md#errorcodes got error codes}
* for allowed keys
* and {@link module:core/base-service/errors~RuntimeErrorProps} for allowed values
* @param {number[]} [attrs.logErrors=[429]] An array of http error codes
* that will be logged (to sentry, if configured).
* @returns {object} Parsed response
* @see https://github.com/sindresorhus/got/blob/main/documentation/2-options.md
*/
async _requestToml({
schema,
url,
options = {},
httpErrors = {},
systemErrors = {},
logErrors = [429],
}) {
const logTrace = (...args) => trace.logTrace('fetch', ...args)
const mergedOptions = {
...{
headers: {
Accept:
// the official header should be application/toml - see https://toml.io/en/v1.0.0#mime-type
// but as this is not registered here https://www.iana.org/assignments/media-types/media-types.xhtml
// some apps use other mime-type like application/x-toml, text/plain etc....
'text/x-toml, text/toml, application/x-toml, application/toml, text/plain',
},
},
...options,
}
const { buffer } = await this._request({
url,
options: mergedOptions,
httpErrors,
systemErrors,
logErrors,
})
let parsed
try {
parsed = parse(buffer.toString())
} catch (err) {
logTrace(emojic.dart, 'Response TOML (unparseable)', buffer)
throw new InvalidResponse({
prettyMessage: 'unparseable toml response',
underlyingError: err,
})
}
logTrace(emojic.dart, 'Response TOML (before validation)', parsed, {
deep: true,
})
return this.constructor._validate(parsed, schema)
}
}
export default BaseTomlService

View File

@@ -0,0 +1,150 @@
import Joi from 'joi'
import { expect } from 'chai'
import sinon from 'sinon'
import BaseTomlService from './base-toml.js'
const dummySchema = Joi.object({
requiredString: Joi.string().required(),
}).required()
class DummyTomlService extends BaseTomlService {
static category = 'cat'
static route = { base: 'foo' }
async handle() {
const { requiredString } = await this._requestToml({
schema: dummySchema,
url: 'http://example.com/foo.toml',
})
return { message: requiredString }
}
}
const expectedToml = `
# example toml
requiredString = "some-string"
`
const invalidSchemaToml = `
# example toml - legal toml syntax but invalid schema
unexpectedKey = "some-string"
`
const invalidTomlSyntax = `
# example illegal toml syntax that can't be parsed
missing= "space"
colonsCantBeUsed: 42
missing "assignment"
`
describe('BaseTomlService', function () {
describe('Making requests', function () {
let requestFetcher
beforeEach(function () {
requestFetcher = sinon.stub().returns(
Promise.resolve({
buffer: expectedToml,
res: { statusCode: 200 },
}),
)
})
it('invokes _requestFetcher', async function () {
await DummyTomlService.invoke(
{ requestFetcher },
{ handleInternalErrors: false },
)
expect(requestFetcher).to.have.been.calledOnceWith(
'http://example.com/foo.toml',
{
headers: {
Accept:
'text/x-toml, text/toml, application/x-toml, application/toml, text/plain',
},
},
)
})
it('forwards options to _requestFetcher', async function () {
class WithOptions extends DummyTomlService {
async handle() {
const { requiredString } = await this._requestToml({
schema: dummySchema,
url: 'http://example.com/foo.toml',
options: { method: 'POST', searchParams: { queryParam: 123 } },
})
return { message: requiredString }
}
}
await WithOptions.invoke(
{ requestFetcher },
{ handleInternalErrors: false },
)
expect(requestFetcher).to.have.been.calledOnceWith(
'http://example.com/foo.toml',
{
headers: {
Accept:
'text/x-toml, text/toml, application/x-toml, application/toml, text/plain',
},
method: 'POST',
searchParams: { queryParam: 123 },
},
)
})
})
describe('Making badges', function () {
it('handles valid toml responses', async function () {
const requestFetcher = async () => ({
buffer: expectedToml,
res: { statusCode: 200 },
})
expect(
await DummyTomlService.invoke(
{ requestFetcher },
{ handleInternalErrors: false },
),
).to.deep.equal({
message: 'some-string',
})
})
it('handles toml responses which do not match the schema', async function () {
const requestFetcher = async () => ({
buffer: invalidSchemaToml,
res: { statusCode: 200 },
})
expect(
await DummyTomlService.invoke(
{ requestFetcher },
{ handleInternalErrors: false },
),
).to.deep.equal({
isError: true,
color: 'lightgray',
message: 'invalid response data',
})
})
it('handles unparseable toml responses', async function () {
const requestFetcher = async () => ({
buffer: invalidTomlSyntax,
res: { statusCode: 200 },
})
expect(
await DummyTomlService.invoke(
{ requestFetcher },
{ handleInternalErrors: false },
),
).to.deep.equal({
isError: true,
color: 'lightgray',
message: 'unparseable toml response',
})
})
})
})

View File

@@ -34,6 +34,8 @@ class BaseXmlService extends BaseService {
* See {@link https://github.com/sindresorhus/got/blob/main/documentation/7-retry.md#errorcodes got error codes}
* for allowed keys
* and {@link module:core/base-service/errors~RuntimeErrorProps} for allowed values
* @param {number[]} [attrs.logErrors=[429]] An array of http error codes
* that will be logged (to sentry, if configured).
* @param {object} [attrs.parserOptions={}] Options to pass to fast-xml-parser. See
* [documentation](https://github.com/NaturalIntelligence/fast-xml-parser#xml-to-json)
* @returns {object} Parsed response
@@ -46,6 +48,7 @@ class BaseXmlService extends BaseService {
options = {},
httpErrors = {},
systemErrors = {},
logErrors = [429],
parserOptions = {},
}) {
const logTrace = (...args) => trace.logTrace('fetch', ...args)
@@ -58,6 +61,7 @@ class BaseXmlService extends BaseService {
options: mergedOptions,
httpErrors,
systemErrors,
logErrors,
})
const validateResult = XMLValidator.validate(buffer)
if (validateResult !== true) {

View File

@@ -33,6 +33,8 @@ class BaseYamlService extends BaseService {
* See {@link https://github.com/sindresorhus/got/blob/main/documentation/7-retry.md#errorcodes got error codes}
* for allowed keys
* and {@link module:core/base-service/errors~RuntimeErrorProps} for allowed values
* @param {number[]} [attrs.logErrors=[429]] An array of http error codes
* that will be logged (to sentry, if configured).
* @param {object} [attrs.encoding='utf8'] Character encoding
* @returns {object} Parsed response
* @see https://github.com/sindresorhus/got/blob/main/documentation/2-options.md
@@ -43,6 +45,7 @@ class BaseYamlService extends BaseService {
options = {},
httpErrors = {},
systemErrors = {},
logErrors = [429],
encoding = 'utf8',
}) {
const logTrace = (...args) => trace.logTrace('fetch', ...args)
@@ -60,6 +63,7 @@ class BaseYamlService extends BaseService {
options: mergedOptions,
httpErrors,
systemErrors,
logErrors,
})
let parsed
try {

View File

@@ -21,6 +21,7 @@ import {
} from './errors.js'
import { validateExample, transformExample } from './examples.js'
import { fetch } from './got.js'
import { getEnum } from './openapi.js'
import {
makeFullUrl,
assertValidRoute,
@@ -102,6 +103,26 @@ class BaseService {
throw new Error(`Route not defined for ${this.name}`)
}
/**
* Extract an array of allowed values from this service's route pattern
* for a given route parameter
*
* @param {string} param The name of a param in this service's route pattern
* @returns {string[]} Array of allowed values for this param
*/
static getEnum(param) {
if (!('pattern' in this.route)) {
throw new Error('getEnum() requires route to have a .pattern property')
}
const enumeration = getEnum(this.route.pattern, param)
if (!Array.isArray(enumeration)) {
throw new Error(
`Could not extract enum for param ${param} from pattern ${this.route.pattern}`,
)
}
return enumeration
}
/**
* Configuration for the authentication helper that prepares credentials
* for upstream requests.
@@ -242,7 +263,13 @@ class BaseService {
this._metricHelper = metricHelper
}
async _request({ url, options = {}, httpErrors = {}, systemErrors = {} }) {
async _request({
url,
options = {},
httpErrors = {},
systemErrors = {},
logErrors = [429],
}) {
const logTrace = (...args) => trace.logTrace('fetch', ...args)
let logUrl = url
const logOptions = Object.assign({}, options)
@@ -269,7 +296,7 @@ class BaseService {
)
await this._meterResponse(res, buffer)
logTrace(emojic.dart, 'Response status code', res.statusCode)
return checkErrorResponse(httpErrors)({ buffer, res })
return checkErrorResponse(httpErrors, logErrors)({ buffer, res })
}
static enabledMetrics = []

View File

@@ -322,7 +322,7 @@ describe('BaseService', function () {
})
describe('ScoutCamp integration', function () {
// TODO Strangly, without the useless escape the regexes do not match in Node 12.
// TODO Strangely, without the useless escape the regexes do not match in Node 12.
// eslint-disable-next-line no-useless-escape
const expectedRouteRegex = /^\/foo(?:\/([^\/#\?]+?))(|\.svg|\.json)$/
@@ -539,6 +539,7 @@ describe('BaseService', function () {
).to.not.contain('service_response_bytes_bucket')
})
})
describe('auth', function () {
class AuthService extends DummyService {
static auth = {
@@ -592,4 +593,44 @@ describe('BaseService', function () {
})
})
})
describe('getEnum', function () {
class EnumService extends DummyService {
static route = {
base: 'foo',
pattern: ':namedParamA/:namedParamB(this|that)',
queryParamSchema,
}
}
it('returns an array of allowed values', async function () {
expect(EnumService.getEnum('namedParamB')).to.deep.equal(['this', 'that'])
})
it('throws if param name is invalid', async function () {
expect(() => EnumService.getEnum('notAValidParam')).to.throw(
'Could not extract enum for param notAValidParam from pattern :namedParamA/:namedParamB(this|that)',
)
})
it('throws if param name is not an enum', async function () {
expect(() => EnumService.getEnum('namedParamA')).to.throw(
'Could not extract enum for param namedParamA from pattern :namedParamA/:namedParamB(this|that)',
)
})
it('throws if route does not have a pattern', async function () {
class FormatService extends DummyService {
static route = {
base: 'foo',
format: '([^/]+?)',
queryParamSchema,
}
}
expect(() => FormatService.getEnum('notAValidParam')).to.throw(
'getEnum() requires route to have a .pattern property',
)
})
})
})

View File

@@ -1,3 +1,4 @@
import log from '../server/log.js'
import { NotFound, InvalidResponse, Inaccessible } from './errors.js'
const defaultErrorMessages = {
@@ -5,7 +6,7 @@ const defaultErrorMessages = {
429: 'rate limited by upstream service',
}
export default function checkErrorResponse(httpErrors = {}) {
export default function checkErrorResponse(httpErrors = {}, logErrors = [429]) {
return async function ({ buffer, res }) {
let error
httpErrors = { ...defaultErrorMessages, ...httpErrors }
@@ -25,6 +26,11 @@ export default function checkErrorResponse(httpErrors = {}) {
error = new InvalidResponse(props)
}
}
if (logErrors.includes(res.statusCode)) {
log.error(new Error(`${res.statusCode} calling ${res.requestUrl.origin}`))
}
if (error) {
error.response = res
error.buffer = buffer

View File

@@ -47,7 +47,7 @@ describe('async error handler', function () {
context('when status is 429', function () {
const buffer = Buffer.from('some stuff')
const res = { statusCode: 429 }
const res = { statusCode: 429, requestUrl: new URL('https://example.com/') }
it('throws InvalidResponse', async function () {
try {

View File

@@ -3,6 +3,7 @@ import BaseJsonService from './base-json.js'
import BaseGraphqlService from './base-graphql.js'
import BaseStaticService from './base-static.js'
import BaseSvgScrapingService from './base-svg-scraping.js'
import BaseTomlService from './base-toml.js'
import BaseXmlService from './base-xml.js'
import BaseYamlService from './base-yaml.js'
import deprecatedService from './deprecated-service.js'
@@ -23,6 +24,7 @@ export {
BaseGraphqlService,
BaseStaticService,
BaseSvgScrapingService,
BaseTomlService,
BaseXmlService,
BaseYamlService,
deprecatedService,

View File

@@ -31,7 +31,7 @@ function getCodeSamples(altText) {
{
lang: 'reStructuredText',
label: 'rSt',
source: `.. image:: $url\n: alt: ${altText}`,
source: `.. image:: $url\n :alt: ${altText}`,
},
{
lang: 'AsciiDoc',
@@ -241,10 +241,10 @@ function category2openapi(category, services) {
name: 'style',
in: 'query',
required: false,
description:
'One of: flat (default), flat-square, plastic, for-the-badge, social',
description: 'If not specified, the defautl style is "flat".',
schema: {
type: 'string',
enum: ['flat', 'flat-square', 'plastic', 'for-the-badge', 'social'],
},
example: 'flat',
},
@@ -363,7 +363,7 @@ function pathParam({
* { name: 'name2', example: 'example2' },
* )
* ```
* is equivilent to
* is equivalent to
* ```
* const params = [
* pathParam({ name: 'name1', example: 'example1' }),
@@ -409,11 +409,11 @@ function queryParam({
* { name: 'name2', example: 'example2' },
* )
* ```
* is equivilent to
* is equivalent to
* ```
* const params = [
* queryParam({ name: 'name1', example: 'example1' }),
* queryParams({ name: 'name2', example: 'example2' }),
* queryParam({ name: 'name2', example: 'example2' }),
* ]
* ```
*
@@ -466,4 +466,11 @@ function queryParams(...params) {
* @property {boolean} allowEmptyValue If true, allows the ability to pass an empty value to this parameter
*/
export { category2openapi, pathParam, pathParams, queryParam, queryParams }
export {
category2openapi,
getEnum,
pathParam,
pathParams,
queryParam,
queryParams,
}

View File

@@ -88,9 +88,11 @@ const expected = {
name: 'style',
in: 'query',
required: false,
description:
'One of: flat (default), flat-square, plastic, for-the-badge, social',
schema: { type: 'string' },
description: 'If not specified, the defautl style is "flat".',
schema: {
enum: ['flat', 'flat-square', 'plastic', 'for-the-badge', 'social'],
type: 'string',
},
example: 'flat',
},
logo: {
@@ -192,7 +194,7 @@ const expected = {
{
lang: 'reStructuredText',
label: 'rSt',
source: '.. image:: $url\n: alt: OpenApiService Summary',
source: '.. image:: $url\n :alt: OpenApiService Summary',
},
{
lang: 'AsciiDoc',
@@ -248,7 +250,7 @@ const expected = {
lang: 'reStructuredText',
label: 'rSt',
source:
'.. image:: $url\n: alt: OpenApiService Summary (with Tag)',
'.. image:: $url\n :alt: OpenApiService Summary (with Tag)',
},
{
lang: 'AsciiDoc',
@@ -301,7 +303,7 @@ const expected = {
{
lang: 'reStructuredText',
label: 'rSt',
source: '.. image:: $url\n: alt: LegacyService Title (with Tag)',
source: '.. image:: $url\n :alt: LegacyService Title (with Tag)',
},
{
lang: 'AsciiDoc',
@@ -347,7 +349,7 @@ const expected = {
{
lang: 'reStructuredText',
label: 'rSt',
source: '.. image:: $url\n: alt: LegacyService Title (with Tag)',
source: '.. image:: $url\n :alt: LegacyService Title (with Tag)',
},
{
lang: 'AsciiDoc',

View File

@@ -128,6 +128,7 @@ const publicConfigSchema = Joi.object({
},
restApiVersion: Joi.date().raw().required(),
},
gitea: defaultService,
gitlab: defaultService,
jira: defaultService,
jenkins: Joi.object({
@@ -162,11 +163,15 @@ const publicConfigSchema = Joi.object({
const privateConfigSchema = Joi.object({
azure_devops_token: Joi.string(),
curseforge_api_key: Joi.string(),
discord_bot_token: Joi.string(),
dockerhub_username: Joi.string(),
dockerhub_pat: Joi.string(),
drone_token: Joi.string(),
gh_client_id: Joi.string(),
gh_client_secret: Joi.string(),
gh_token: Joi.string(),
gitea_token: Joi.string(),
gitlab_token: Joi.string(),
jenkins_user: Joi.string(),
jenkins_pass: Joi.string(),
@@ -183,6 +188,8 @@ const privateConfigSchema = Joi.object({
obs_user: Joi.string(),
obs_pass: Joi.string(),
redis_url: Joi.string().uri({ scheme: ['redis', 'rediss'] }),
opencollective_token: Joi.string(),
pepy_key: Joi.string(),
postgres_url: Joi.string().uri({ scheme: 'postgresql' }),
sentry_dsn: Joi.string(),
sl_insight_userUuid: Joi.string(),

View File

@@ -25,7 +25,7 @@ and learn about the [GitHub workflow](http://try.github.io/).
#### Node, NPM
Node >=16 and NPM 9.x is required. If you don't already have them,
Node >=20 and NPM 9.x or 10.x is required. If you don't already have them,
install node and npm: https://nodejs.org/en/download/
### Setup a dev install
@@ -96,6 +96,8 @@ Other classes implement useful behavior on top of [BaseService].
implements methods for performing requests to an XML API and schema validation.
- [BaseYamlService](https://contributing.shields.io/module-core_base-service_base-yaml-BaseYamlService.html)
implements methods for performing requests to a YAML API and schema validation.
- [BaseTomlService](https://contributing.shields.io/module-core_base-service_base-toml-BaseTomlService.html)
implements methods for performing requests to a TOML API and schema validation.
- [BaseSvgScrapingService](https://contributing.shields.io/module-core_base-service_base-svg-scraping-BaseSvgScrapingService.html)
implements methods for retrieving information from existing third-party badges.
- [BaseGraphqlService](https://contributing.shields.io/module-core_base-service_base-graphql-BaseGraphqlService.html)
@@ -132,17 +134,17 @@ export default class Example extends BaseService {
Description of the code:
1. Our service badge class will extend `BaseService` so we need to require it. Variables are declared with `const` and `let` in preference to `var`.
1. Our service badge class will extend `BaseService` so we need to import it.
2. Our module must export a class which extends `BaseService`.
3. Returns the name of the category to sort this badge into (eg. "build"). Used to sort the examples on the main [shields.io](https://shields.io) website. [Here](https://github.com/badges/shields/blob/master/services/categories.js) is the list of the valid categories. See [section 4.4](#44-adding-an-example-to-the-front-page) for more details on examples.
4. `route()` declares the URL path at which the service operates. It also maps components of the URL path to handler parameters.
3. Returns the name of the category to sort this badge into (eg. "build"). Used to sort the examples on the main [shields.io](https://shields.io) website. [Here](https://github.com/badges/shields/blob/master/services/categories.js) is the list of the valid categories. See [section 4.4](#44-adding-documentation-to-the-frontend) for more details.
4. `route` declares the URL path at which the service operates. It also maps components of the URL path to handler parameters.
- `base` defines the first part of the URL that doesn't change, e.g. `/example/`.
- `pattern` defines the variable part of the route, everything that comes after `/example/`. It can include any
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.md)
5. 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:
5. 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
- `color`: the background color of the right side of the badge
@@ -221,11 +223,11 @@ Description of the code:
2. Our badge will query a JSON API so we will extend `BaseJsonService` instead of `BaseService`. This contains some helpers to reduce the need for boilerplate when calling a JSON API.
3. We perform input validation by defining a schema which we expect the JSON we receive to conform to. This is done using [Joi](https://github.com/hapijs/joi). Defining a schema means we can ensure the JSON we receive meets our expectations and throw an error if we receive unexpected input without having to explicitly code validation checks. The schema also acts as a filter on the JSON object. Any properties we're going to reference need to be validated, otherwise they will be filtered out. In this case our schema declares that we expect to receive an object which must have a property called 'version', which is a string. There is further documentation on [input validation](input-validation.md).
4. Our module exports a class which extends `BaseJsonService`
5. Returns the name of the category to sort this badge into (eg. "build"). Used to sort the examples on the main [shields.io](https://shields.io) website. [Here](https://github.com/badges/shields/blob/master/services/categories.js) is the list of the valid categories. See [section 4.4](#44-adding-an-example-to-the-front-page) for more details on examples.
5. Returns the name of the category to sort this badge into (eg. "build"). Used to sort the examples on the main [shields.io](https://shields.io) website. [Here](https://github.com/badges/shields/blob/master/services/categories.js) is the list of the valid categories. See [section 4.4](#44-adding-documentation-to-the-frontend) for more details.
6. As with our previous badge, we need to declare a route. This time we will capture a variable called `gem`.
7. We can use `defaultBadgeData()` to set a default `color`, `logo` and/or `label`. If `handle()` doesn't return any of these keys, we'll use the default. Instead of explicitly setting the label text when we return a badge object, we'll use `defaultBadgeData()` here to define it declaratively.
7. We can use `defaultBadgeData` to set a default `color`, `logo` and/or `label`. If `handle()` doesn't return any of these keys, we'll use the default. Instead of explicitly setting the label text when we return a badge object, we'll use `defaultBadgeData` here to define it declaratively.
8. We now jump to the bottom of the example code to the function all badges must implement: `async handle()`. This is the function the server will invoke to handle an incoming request. Because our URL pattern captures a variable called `gem`, our function signature is `async handle({ gem })`. We usually separate the process of generating a badge into 2 stages or concerns: fetch and render. The `fetch()` function is responsible for calling an API endpoint to get data. The `render()` function formats the data for display. In a case where there is a lot of calculation or intermediate steps, this pattern may be thought of as fetch, transform, render and it might be necessary to define some helper functions to assist with the 'transform' step.
9. Working our way upward, the `async fetch()` method is responsible for calling an API endpoint to get data. Extending `BaseJsonService` gives us the helper function `_requestJson()`. Note here that we pass the schema we defined in step 4 as an argument. `_requestJson()` will deal with validating the response against the schema and throwing an error if necessary.
9. Working our way upward, the `async fetch()` method is responsible for calling an API endpoint to get data. Extending `BaseJsonService` gives us the helper function `_requestJson()`. Note here that we pass the schema we defined in step 3 as an argument. `_requestJson()` will deal with validating the response against the schema and throwing an error if necessary.
- `_requestJson()` automatically adds an Accept header, checks the status code, parses the response as JSON, and returns the parsed response.
- `_requestJson()` uses [got](https://github.com/sindresorhus/got) to perform the HTTP request. Options can be passed to got, including method, query string, and headers. If headers are provided they will override the ones automatically set by `_requestJson()`. There is no need to specify json, as the JSON parsing is handled by `_requestJson()`. See the `got` docs for [supported options](https://github.com/sindresorhus/got/blob/main/documentation/2-options.md).
@@ -243,7 +245,7 @@ Description of the code:
})
```
10. Upward still, the `static render()` method is responsible for formatting the data for display. `render()` is a pure function so we can make it a `static` method. By convention we declare functions which don't reference `this` as `static`. We could explicitly return an object here, as we did in the previous example. In this case, we will hand the version string off to `renderVersionBadge()` which will format it consistently and set an appropriate color. Because `renderVersionBadge()` doesn't return a `label` key, the default label we defined in `defaultBadgeData()` will be used when we generate the badge.
10. Upward still, the `static render()` method is responsible for formatting the data for display. `render()` is a pure function so we can make it a `static` method. By convention we declare functions which don't reference `this` as `static`. We could explicitly return an object here, as we did in the previous example. In this case, we will hand the version string off to `renderVersionBadge()` which will format it consistently and set an appropriate color. Because `renderVersionBadge()` doesn't return a `label` key, the default label we defined in `defaultBadgeData` will be used when we generate the badge.
This code allows us to call this URL <https://img.shields.io/gem/v/formatador> to generate this badge: ![](https://img.shields.io/gem/v/formatador)
@@ -267,42 +269,88 @@ import { NotFound } from '../index.js'
throw new NotFound({ prettyMessage: 'package not found' })
```
### (4.4) Adding an Example to the Front Page
### (4.4) Adding Documentation to the Frontend
Once we have implemented our badge, we can add it to the index so that users can discover it. We will do this by adding an additional method `examples()` to our class.
To render the shields.io website, we produce an [OpenAPI 3 specification](https://swagger.io/specification/) which describes the available badge endpoints. Then we use that specification to render the frontend.
Once we have implemented our badge, we want to add it to the index so that users can discover it. We will do this by adding an additional object `openApi` to our class. This object contains an [OpenAPI Paths Object](https://swagger.io/specification/#paths-object) describing the endpoint or endpoints exposed by this service class.
```js
// (1)
import { pathParams } from '../index.js'
export default class GemVersion extends BaseJsonService {
// ...
// (1)
// (2)
static category = 'version'
// (2)
static examples = [
{
// (3)
title: 'Gem',
namedParams: { gem: 'formatador' },
staticPreview: this.render({ version: '2.1.0' }),
keywords: ['ruby'],
static openApi = {
// (3)
'/gem/v/{gem}': {
// (4)
get: {
// (5)
summary: 'Gem Version',
description:
'[Ruby Gems](https://rubygems.org/) is a registry for ruby libraries',
// (6)
parameters: pathParams({
name: 'gem',
description: 'Name of the Ruby Gem',
example: 'formatador',
}),
},
},
]
}
}
```
1. We defined category earlier in the tutorial. The `category()` property defines which heading in the index our example will appear under.
2. The examples property defines an array of examples. In this case the array will contain a single object, but in some cases it is helpful to provide multiple usage examples.
3. Our example object should contain the following properties:
- `title`: Descriptive text that will be shown next to the badge
- `namedParams`: Provide a valid example of params we can substitute into
the pattern. In this case we need a valid ruby gem, so we've picked [formatador](https://rubygems.org/gems/formatador).
- `staticPreview`: On the index page we want to show an example badge, but for performance reasons we want that example to be generated without making an API call. `staticPreview` should be populated by calling our `render()` method with some valid data.
- `keywords`: If we want to provide additional keywords other than the title and the category, we can add them here. This helps users to search for relevant badges.
1. There are four helper functions we can use to assemble [Open API Parameter objects](https://swagger.io/specification/#parameter-object). These are:
- `pathParam` - returns a single Parameter object describing a single path parameter
- `pathParams` - returns an array of path parameter objects
- `queryParam` - returns a single Parameter object describing a single query parameter
- `queryParams` - returns an array of query parameter objects
These four helper functions are documented in more detail at http://contributing.shields.io/module-core_base-service_openapi.html
2. We defined category earlier in the tutorial. The `category` property defines which heading in the index our example will appear under.
3. The keys of the `openApi` object are routes. In this case we only need to describe one route. In some cases, a service class can define more than one badge route. Open API doesn't have the concept of optional path parameters (more specifically, `in: 'path'` implies `required: true`) so if there are any optional path parameters in our route, our `openApi` object needs to describe two URLs: one without the optional parameter, and another with it.
4. The HTTP method. Shields only allows GET requests, so this is always `get`.
5. `summary` (required) is a short title or description of the badge. `description` is an optional longer description or additional documentation. We can use markdown or HTML syntax inside the `description` field.
6. `parameters` is an array of [Open API Parameter objects](https://swagger.io/specification/#parameter-object) describing any parameters we can pass to this route. This array should include all path parameters included in the key that this value object describes and all relevant query parameters. As a minimum, we need to supply `name` and `example`. The example must be a valid example of a value we can provide for this parameter. In this case we need a valid ruby gem, so we've picked [formatador](https://rubygems.org/gems/formatador). There are also optional keys we can pass. The code
```js
parameters: pathParams({
name: 'gem',
description: 'Name of the Ruby Gem',
example: 'formatador',
})
```
is equivalent to
```js
parameters: [
{
name: 'gem',
in: 'path',
required: true,
schema: { type: 'string' },
example: 'formatador',
description: 'Name of the Ruby Gem',
},
]
```
but we have used the helper function `pathParams` to imply some defaults and reduce the amount of code we need to write by hand.
Save, run `npm start`, and you can see it [locally](http://127.0.0.1:3000/).
If you update `examples`, you don't have to restart the server. Run `npm run defs` in another terminal window and the frontend will update.
If you update `openApi`, you don't have to restart the server. Run `npm run prestart` in another terminal window and the frontend will update.
Note: Some services define this information in an array property called `examples`. This is deprecated and we're in the process of converting them. New services should declare an `openApi` object.
### (4.5) Write Tests<!-- Change the link below when you change the heading -->

View File

@@ -24,6 +24,8 @@ When we receive input data from an upstream API, we perform input validation to:
- We don't need to validate characteristics we don't rely on. For example, if we're just going to render a version on a badge with the same exact value from the API response and do not need to sort or transform the value, then it doesn't matter what format the version number is in. We can use a very relaxed schema to validate in this case, e.g. `Joi.string().required()`
- http://mterczynski.pl/joi-schema-generator/ is a tool that can be used to reverse engineer a schema from an API response. This can be a great starting point to tweak from. If using this as a starting point, remember to remove fields we don't rely on to render a badge.
- If theory (docs) and practice (real-world API responses) conflict, real-world outputs take precedence over documented behaviour. e.g: if the docs say version is a semver but we learn that there are real-world packages where the version number is `0.3b` or `1.2.1.27` then we should accept those values in preference to enforcing the documented API behaviour.
- Shields is descriptive rather than prescriptive. We reflect the established norms of the communities we serve.

View File

@@ -4,13 +4,13 @@ This document describes how to host your own shields server either from source o
## Installing from Source
You will need Node 16 or later, which you can install using a
You will need Node 20 or later, which you can install using a
[package manager][].
On Ubuntu / Debian:
```sh
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -; sudo apt-get install -y nodejs
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -; sudo apt-get install -y nodejs
```
```sh

View File

@@ -97,15 +97,40 @@ 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.
### CurseForge
- `CURSEFORGE_API_KEY` (yml: `private.curseforge_api_key`)
A CurseForge API key is required to use the [CurseForge API][cf api]. To obtain
an API key, [signup to CurseForge Console][cf signup] with a Google account and
create an organization, then go to the [API keys page][cf api key] and copy the
generated API key.
[cf api]: https://docs.curseforge.com
[cf signup]: https://console.curseforge.com/#/signup
[cf api key]: https://console.curseforge.com/#/api-keys
### Discord
Using a token for Dicsord is optional but will allow higher API rates.
Using a token for Discord 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.
### DockerHub
Using authentication for DockerHub is optional but can be used to allow
higher API rates or access to private repos.
- `DOCKERHUB_USER` (yml: `private.dockerhub_username`)
- `DOCKERHUB_PAT` (yml: `private.dockerhub_pat`)
`DOCKERHUB_PAT` is a Personal Access Token. Generate a token in your
[account security settings](https://hub.docker.com/settings/security) with
"Read-Only" or "Public Repo Read-Only", depending on your needs.
### Drone
- `DRONE_ORIGINS` (yml: `public.services.drone.authorizedOrigins`)
@@ -154,6 +179,15 @@ These settings are used by shields.io for GitHub OAuth app authorization
but will not be necessary for most self-hosted installations. See
[production-hosting.md](./production-hosting.md).
### Gitea
- `GITEA_ORIGINS` (yml: `public.services.gitea.authorizedOrigins`)
- `GITEA_TOKEN` (yml: `private.gitea_token`)
A Gitea [Personal Access Token][gitea-pat] is required for accessing private content. If you need a Gitea token for your self-hosted Shields server then we recommend limiting the scopes to the minimal set necessary for the badges you are using.
[gitea-pat]: https://docs.gitea.com/development/api-usage#generating-and-listing-api-tokens
### GitLab
- `GITLAB_ORIGINS` (yml: `public.services.gitlab.authorizedOrigins`)
@@ -218,7 +252,7 @@ installation access to private npm packages
[npm token]: https://docs.npmjs.com/getting-started/working_with_tokens
## Open Build Service
### Open Build Service
- `OBS_USER` (yml: `private.obs_user`)
- `OBS_PASS` (yml: `private.obs_user`)
@@ -233,6 +267,22 @@ they can only be scoped to execute specific actions on a POST request. This
means however, that an actual account is required to read the build status
of a package.
### OpenCollective
- `OPENCOLLECTIVE_TOKEN` (yml: `opencollective_token`)
OpenCollective's GraphQL API only allows 10 reqs/minute for anonymous users.
An [API token](https://graphql-docs-v2.opencollective.com/access)
can be provided to access a higher rate limit of 100 reqs/minute.
### Pepy
- `PEPY_KEY` (yml: `pepy_key`)
The Pepy API requires authentication. To obtain a key,
Create an account, sign in and obtain generate a key on your
[account page](https://www.pepy.tech/user).
### SymfonyInsight (formerly Sensiolabs)
- `SL_INSIGHT_USER_UUID` (yml: `private.sl_insight_userUuid`)

View File

@@ -0,0 +1,14 @@
---
slug: simple-icons-10
title: Simple Icons 10
authors:
name: chris48s
title: Shields.io Core Team
url: https://github.com/chris48s
image_url: https://avatars.githubusercontent.com/u/6025893
tags: []
---
Logos on Shields.io are provided by SimpleIcons. We've recently upgraded to SimpleIcons 10. This release removes 45 icons. A full list of the removals can be found in the [release notes](https://github.com/simple-icons/simple-icons/releases/tag/10.0.0).
Please remember that we are just consumers of SimpleIcons. Decisions about changes and removals are made by the [SimpleIcons](https://github.com/simple-icons/simple-icons) project.

View File

@@ -92,10 +92,6 @@ const config = {
label: 'Discord',
href: 'https://discord.gg/HjJCwm5',
},
{
label: 'Twitter',
href: 'https://twitter.com/shields_io',
},
{
label: 'Awesome Badges',
href: 'https://github.com/badges/awesome-badges',

View File

@@ -23,7 +23,7 @@ Shields.io is possible thanks to the people and companies who donate money, serv
<p>
<object
data="https://opencollective.com/shields/sponsors.svg?avatarHeight=80&width=600"
data="https://opencollective.com/shields/tiers/sponsor.svg?avatarHeight=80&width=600"
class="opencollective-image"
></object>
</p>
@@ -34,7 +34,7 @@ Shields.io is possible thanks to the people and companies who donate money, serv
<p>
<object
data="https://opencollective.com/shields/backers.svg?width=600"
data="https://opencollective.com/shields/tiers/backer.svg?width=600"
class="opencollective-image">
</object>
</p>

3535
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -21,30 +21,30 @@
"url": "https://github.com/badges/shields"
},
"dependencies": {
"@renovate/pep440": "^1.0.0",
"@renovatebot/ruby-semver": "^2.1.11",
"@sentry/node": "^7.60.1",
"@renovatebot/pep440": "^3.0.17",
"@renovatebot/ruby-semver": "^3.0.22",
"@sentry/node": "^7.91.0",
"@shields_io/camp": "^18.1.2",
"@xmldom/xmldom": "0.8.10",
"badge-maker": "file:badge-maker",
"bytes": "^3.1.2",
"camelcase": "^7.0.1",
"camelcase": "^8.0.0",
"chalk": "^5.3.0",
"check-node-version": "^4.2.1",
"cloudflare-middleware": "^1.0.4",
"config": "^3.3.9",
"cross-env": "^7.0.3",
"dayjs": "^1.11.9",
"dayjs": "^1.11.10",
"decamelize": "^3.2.0",
"emojic": "^1.1.17",
"escape-string-regexp": "^4.0.0",
"fast-xml-parser": "^4.2.6",
"glob": "^10.3.3",
"fast-xml-parser": "^4.3.2",
"glob": "^10.3.10",
"global-agent": "^3.0.0",
"got": "^13.0.0",
"graphql": "16.7.1",
"got": "^14.0.0",
"graphql": "16.8.1",
"graphql-tag": "^2.12.6",
"joi": "17.9.2",
"joi": "17.11.0",
"joi-extension-semver": "5.0.0",
"js-yaml": "^4.1.0",
"jsonpath": "~1.1.1",
@@ -56,16 +56,17 @@
"node-pg-migrate": "^6.2.2",
"parse-link-header": "^2.0.0",
"path-to-regexp": "^6.2.1",
"pg": "^8.11.1",
"pg": "^8.11.3",
"pretty-bytes": "^6.1.1",
"priorityqueuejs": "^2.0.0",
"prom-client": "^14.2.0",
"prom-client": "^15.1.0",
"qs": "^6.11.2",
"query-string": "^8.1.0",
"semver": "~7.5.4",
"simple-icons": "9.7.0",
"simple-icons": "10.4.0",
"smol-toml": "1.1.3",
"webextension-store-meta": "^1.0.5",
"xpath": "~0.0.33"
"xpath": "~0.0.34"
},
"scripts": {
"coverage:test:core": "c8 npm run test:core",
@@ -96,7 +97,7 @@
"pretest": "cross-env BASE_URL=http://localhost:8080 run-s --silent defs",
"test": "run-s --silent --continue-on-error lint test:package test:core test:entrypoint check-types:package prettier:check",
"check-types:package": "tsd badge-maker",
"depcheck": "check-node-version --node \">= 16.0\"",
"depcheck": "check-node-version --node \">= 20.0\"",
"prebuild": "run-s --silent depcheck",
"defs": "node scripts/export-openapi-cli.js",
"build": "rimraf public && run-s defs docusaurus:build",
@@ -143,77 +144,77 @@
]
},
"devDependencies": {
"@docusaurus/core": "^2.0.0",
"@easyops-cn/docusaurus-search-local": "^0.35.0",
"@docusaurus/core": "^2.4.3",
"@easyops-cn/docusaurus-search-local": "^0.40.1",
"@mdx-js/react": "^1.6.21",
"@typescript-eslint/parser": "^6.2.0",
"@typescript-eslint/parser": "^6.16.0",
"c8": "^8.0.1",
"caller": "^1.1.0",
"chai": "^4.3.7",
"chai": "^4.3.10",
"chai-as-promised": "^7.1.1",
"chai-datetime": "^1.8.0",
"chai-string": "^1.4.0",
"child-process-promise": "^2.2.1",
"clsx": "^2.0.0",
"concurrently": "^8.2.0",
"cypress": "^12.17.2",
"concurrently": "^8.2.2",
"cypress": "^13.6.2",
"cypress-wait-for-stable-dom": "^0.1.0",
"danger": "^11.2.7",
"danger": "^11.3.1",
"deepmerge": "^4.3.1",
"docusaurus-preset-openapi": "0.6.4",
"eslint": "8.45.0",
"eslint-config-prettier": "^8.9.0",
"eslint": "8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-standard": "17.1.0",
"eslint-config-standard-jsx": "11.0.0",
"eslint-config-standard-react": "13.0.0",
"eslint-plugin-chai-friendly": "^0.7.2",
"eslint-plugin-cypress": "^2.13.3",
"eslint-plugin-cypress": "^2.15.1",
"eslint-plugin-icedfrisby": "^0.1.0",
"eslint-plugin-import": "^2.28.0",
"eslint-plugin-jsdoc": "^46.4.5",
"eslint-plugin-mocha": "^10.1.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsdoc": "^46.9.1",
"eslint-plugin-mocha": "^10.2.0",
"eslint-plugin-no-extension-in-require": "^0.2.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "6.1.1",
"eslint-plugin-react": "^7.33.0",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-sort-class-members": "^1.18.0",
"eslint-plugin-sort-class-members": "^1.19.0",
"form-data": "^4.0.0",
"icedfrisby": "4.0.0",
"icedfrisby-nock": "^2.1.0",
"is-svg": "^5.0.0",
"jsdoc": "^4.0.2",
"lint-staged": "^13.2.3",
"lint-staged": "^15.2.0",
"lodash.difference": "^4.5.0",
"minimist": "^1.2.8",
"mocha": "^10.2.0",
"mocha-env-reporter": "^4.0.0",
"mocha-junit-reporter": "^2.2.1",
"mocha-yaml-loader": "^1.0.3",
"nock": "13.3.2",
"node-mocks-http": "^1.12.2",
"nodemon": "^3.0.1",
"nock": "13.4.0",
"node-mocks-http": "^1.14.0",
"nodemon": "^3.0.2",
"npm-run-all": "^4.1.5",
"open-cli": "^7.2.0",
"open-cli": "^8.0.0",
"portfinder": "^1.0.32",
"prettier": "3.0.0",
"prism-react-renderer": "^2.0.6",
"prettier": "3.1.1",
"prism-react-renderer": "^2.3.1",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"read-all-stdin-sync": "^1.0.5",
"rimraf": "^5.0.1",
"rimraf": "^5.0.5",
"sazerac": "^2.0.0",
"simple-git-hooks": "^2.9.0",
"sinon": "^15.2.0",
"sinon": "^17.0.1",
"sinon-chai": "^3.7.0",
"snap-shot-it": "^7.9.10",
"start-server-and-test": "2.0.0",
"tsd": "^0.28.1",
"url": "^0.11.1"
"start-server-and-test": "2.0.3",
"tsd": "^0.30.1",
"url": "^0.11.3"
},
"engines": {
"node": "^16.13.0",
"npm": "^9.0.0"
"node": "^20.10.0",
"npm": "^9.0.0 || ^10.0.0"
},
"type": "module",
"collective": {

View File

@@ -2,7 +2,8 @@ import Joi from 'joi'
import { nonNegativeInteger } from '../validators.js'
import { BaseJsonService } from '../index.js'
const keywords = ['amo', 'firefox']
const description =
'[addons.mozilla.org](https://addons.mozilla.org) (AMO) publishes extensions for Mozilla Firefox'
const schema = Joi.object({
average_daily_users: nonNegativeInteger,
@@ -26,4 +27,4 @@ class BaseAmoService extends BaseJsonService {
}
}
export { BaseAmoService, keywords }
export { BaseAmoService, description }

View File

@@ -1,8 +1,9 @@
import { renderDownloadsBadge } from '../downloads.js'
import { redirector, pathParams } from '../index.js'
import { BaseAmoService } from './amo-base.js'
import { BaseAmoService, description as baseDescription } from './amo-base.js'
const description = `${baseDescription}
const description = `
Previously \`amo/d\` provided a &ldquo;total downloads&rdquo; badge. However,
[updates to the v3 API](https://github.com/badges/shields/issues/3079)
only give us weekly downloads. The route \`amo/d\` redirects to \`amo/dw\`.

View File

@@ -1,7 +1,7 @@
import { starRating } from '../text-formatters.js'
import { floorCount as floorCountColor } from '../color-formatters.js'
import { pathParams } from '../index.js'
import { BaseAmoService } from './amo-base.js'
import { BaseAmoService, description } from './amo-base.js'
export default class AmoRating extends BaseAmoService {
static category = 'rating'
@@ -11,12 +11,14 @@ export default class AmoRating extends BaseAmoService {
'/amo/rating/{addonId}': {
get: {
summary: 'Mozilla Add-on Rating',
description,
parameters: pathParams({ name: 'addonId', example: 'dustman' }),
},
},
'/amo/stars/{addonId}': {
get: {
summary: 'Mozilla Add-on Stars',
description,
parameters: pathParams({ name: 'addonId', example: 'dustman' }),
},
},

View File

@@ -1,6 +1,6 @@
import { renderDownloadsBadge } from '../downloads.js'
import { pathParams } from '../index.js'
import { BaseAmoService } from './amo-base.js'
import { BaseAmoService, description } from './amo-base.js'
export default class AmoUsers extends BaseAmoService {
static category = 'downloads'
@@ -10,6 +10,7 @@ export default class AmoUsers extends BaseAmoService {
'/amo/users/{addonId}': {
get: {
summary: 'Mozilla Add-on Users',
description,
parameters: pathParams({ name: 'addonId', example: 'dustman' }),
},
},

View File

@@ -1,6 +1,6 @@
import { renderVersionBadge } from '../version.js'
import { pathParams } from '../index.js'
import { BaseAmoService } from './amo-base.js'
import { BaseAmoService, description } from './amo-base.js'
export default class AmoVersion extends BaseAmoService {
static category = 'version'
@@ -10,6 +10,7 @@ export default class AmoVersion extends BaseAmoService {
'/amo/v/{addonId}': {
get: {
summary: 'Mozilla Add-on Version',
description,
parameters: pathParams({ name: 'addonId', example: 'dustman' }),
},
},

View File

@@ -1,45 +1,11 @@
import Joi from 'joi'
import { BaseJsonService, pathParams } from '../index.js'
import { deprecatedService } from '../index.js'
const ansibleCollectionSchema = Joi.object({
name: Joi.string().required(),
namespace: Joi.object({
name: Joi.string().required(),
}),
}).required()
class AnsibleGalaxyCollectionName extends BaseJsonService {
static category = 'other'
static route = { base: 'ansible/collection', pattern: ':collectionId' }
static openApi = {
'/ansible/collection/{collectionId}': {
get: {
summary: 'Ansible Collection',
parameters: pathParams({ name: 'collectionId', example: '278' }),
},
},
}
static defaultBadgeData = { label: 'collection' }
static render({ name }) {
return { message: name, color: 'blue' }
}
async fetch({ collectionId }) {
const url = `https://galaxy.ansible.com/api/v2/collections/${collectionId}/`
return this._requestJson({
url,
schema: ansibleCollectionSchema,
})
}
async handle({ collectionId }) {
const json = await this.fetch({ collectionId })
const name = `${json.namespace.name}.${json.name}`
return this.constructor.render({ name })
}
}
export { AnsibleGalaxyCollectionName }
export const AnsibleGalaxyCollectionName = deprecatedService({
category: 'other',
route: {
base: 'ansible/collection',
pattern: ':collectionId',
},
label: 'collection',
dateAdded: new Date('2023-10-10'),
})

View File

@@ -1,14 +1,10 @@
import { ServiceTester } from '../tester.js'
export const t = new ServiceTester({
id: 'AnsibleCollection',
title: 'AnsibleCollection',
id: 'AnsibleGalaxyCollectionName',
title: 'AnsibleGalaxyCollectionName',
pathPrefix: '/ansible/collection',
})
t.create('collection name (valid)')
t.create('collection name')
.get('/278.json')
.expectBadge({ label: 'collection', message: 'community.general' })
t.create('collection name (not found)')
.get('/000.json')
.expectBadge({ label: 'collection', message: 'not found' })
.expectBadge({ label: 'collection', message: 'no longer available' })

View File

@@ -1,52 +1,11 @@
import Joi from 'joi'
import { floorCount } from '../color-formatters.js'
import { BaseJsonService, InvalidResponse, pathParams } from '../index.js'
import { deprecatedService } from '../index.js'
const ansibleContentSchema = Joi.object({
quality_score: Joi.number().allow(null).required(),
}).required()
class AnsibleGalaxyContent extends BaseJsonService {
async fetch({ projectId }) {
const url = `https://galaxy.ansible.com/api/v1/content/${projectId}/`
return this._requestJson({
url,
schema: ansibleContentSchema,
})
}
}
export default class AnsibleGalaxyContentQualityScore extends AnsibleGalaxyContent {
static category = 'analysis'
static route = { base: 'ansible/quality', pattern: ':projectId' }
static openApi = {
'/ansible/quality/{projectId}': {
get: {
summary: 'Ansible Quality Score',
parameters: pathParams({ name: 'projectId', example: '432' }),
},
},
}
static defaultBadgeData = { label: 'quality' }
static render({ qualityScore }) {
return {
message: qualityScore,
color: floorCount(qualityScore, 2, 3, 4),
}
}
async handle({ projectId }) {
const { quality_score: qualityScore } = await this.fetch({ projectId })
if (qualityScore === null) {
throw new InvalidResponse({
prettyMessage: 'no score available',
})
}
return this.constructor.render({ qualityScore })
}
}
export const AnsibleGalaxyContentQualityScore = deprecatedService({
category: 'analysis',
route: {
base: 'ansible/quality',
pattern: ':projectId',
},
label: 'quality',
dateAdded: new Date('2023-10-10'),
})

View File

@@ -1,15 +1,10 @@
import { nonNegativeInteger } from '../validators.js'
import { createServiceTester } from '../tester.js'
export const t = await createServiceTester()
import { ServiceTester } from '../tester.js'
export const t = new ServiceTester({
id: 'AnsibleGalaxyContentQualityScore',
title: 'AnsibleGalaxyContentQualityScore',
pathPrefix: '/ansible/quality',
})
t.create('quality score (valid)')
t.create('quality score')
.get('/432.json')
.expectBadge({ label: 'quality', message: nonNegativeInteger })
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' })
.expectBadge({ label: 'quality', message: 'no longer available' })

View File

@@ -1,73 +1,83 @@
import Joi from 'joi'
import { renderDownloadsBadge } from '../downloads.js'
import { nonNegativeInteger } from '../validators.js'
import { BaseJsonService, pathParams } from '../index.js'
import {
BaseJsonService,
deprecatedService,
NotFound,
pathParams,
} from '../index.js'
const ansibleRoleSchema = Joi.object({
download_count: nonNegativeInteger,
name: Joi.string().required(),
summary_fields: Joi.object({
namespace: Joi.object({
name: Joi.string().required(),
}),
}),
results: Joi.array()
.items(
Joi.object({
download_count: nonNegativeInteger,
}),
)
.required(),
}).required()
class AnsibleGalaxyRole extends BaseJsonService {
async fetch({ roleId }) {
const url = `https://galaxy.ansible.com/api/v1/roles/${roleId}/`
return this._requestJson({
url,
schema: ansibleRoleSchema,
})
}
}
const AnsibleGalaxyRoleName = deprecatedService({
name: 'DeprecatedAnsibleGalaxyRoleName',
category: 'other',
route: {
base: 'ansible/role',
pattern: ':roleId',
},
label: 'role',
dateAdded: new Date('2023-10-10'),
})
class AnsibleGalaxyRoleDownloads extends AnsibleGalaxyRole {
const AnsibleGalaxyRoleLegacyDownloads = deprecatedService({
name: 'DeprecatedAnsibleGalaxyRoleDownloads',
category: 'downloads',
route: {
base: 'ansible/role/d',
pattern: ':roleId',
},
label: 'role downloads',
dateAdded: new Date('2023-10-10'),
})
class AnsibleGalaxyRoleDownloads extends BaseJsonService {
static category = 'downloads'
static route = { base: 'ansible/role/d', pattern: ':roleId' }
static route = { base: 'ansible/role/d', pattern: ':namespace/:name' }
static openApi = {
'/ansible/role/d/{roleId}': {
'/ansible/role/d/{namespace}/{name}': {
get: {
summary: 'Ansible Role',
parameters: pathParams({ name: 'roleId', example: '3078' }),
parameters: pathParams(
{ name: 'namespace', example: 'openwisp' },
{ name: 'name', example: 'openwisp2' },
),
},
},
}
static defaultBadgeData = { label: 'role downloads' }
async handle({ roleId }) {
const json = await this.fetch({ roleId })
return renderDownloadsBadge({ downloads: json.download_count })
async fetch({ namespace, name }) {
const url = 'https://galaxy.ansible.com/api/v1/roles/'
return this._requestJson({
url,
schema: ansibleRoleSchema,
options: { searchParams: { namespace, name, limit: 1 } },
})
}
async handle({ namespace, name }) {
const json = await this.fetch({ namespace, name })
if (json.results.length === 0) {
throw new NotFound({ prettyMessage: 'not found' })
}
return renderDownloadsBadge({ downloads: json.results[0].download_count })
}
}
class AnsibleGalaxyRoleName extends AnsibleGalaxyRole {
static category = 'other'
static route = { base: 'ansible/role', pattern: ':roleId' }
static openApi = {
'/ansible/role/{roleId}': {
get: {
summary: 'Ansible Galaxy Role Name',
parameters: pathParams({ name: 'roleId', example: '3078' }),
},
},
}
static defaultBadgeData = { label: 'role' }
static render({ name }) {
return { message: name, color: 'blue' }
}
async handle({ roleId }) {
const json = await this.fetch({ roleId })
const name = `${json.summary_fields.namespace.name}.${json.name}`
return this.constructor.render({ name })
}
export {
AnsibleGalaxyRoleDownloads,
AnsibleGalaxyRoleName,
AnsibleGalaxyRoleLegacyDownloads,
}
export { AnsibleGalaxyRoleDownloads, AnsibleGalaxyRoleName }

View File

@@ -1,23 +1,23 @@
import { isMetric } from '../test-validators.js'
import { ServiceTester } from '../tester.js'
export const t = new ServiceTester({
id: 'AnsibleRole',
title: 'AnsibleRole',
id: 'AnsibleGalaxyRole',
title: 'AnsibleGalaxyRole',
pathPrefix: '/ansible/role',
})
t.create('role name (valid)')
t.create('role name')
.get('/14542.json')
.expectBadge({ label: 'role', message: 'openwisp.openwisp2' })
.expectBadge({ label: 'role', message: 'no longer available' })
t.create('role name (not found)')
.get('/000.json')
.expectBadge({ label: 'role', message: 'not found' })
t.create('role downloads (deprecated)')
.get('/d/14542.json')
.expectBadge({ label: 'role downloads', message: 'no longer available' })
t.create('role downloads (valid)')
.get('/d/14542.json')
.get('/d/openwisp/openwisp2.json')
.expectBadge({ label: 'role downloads', message: isMetric })
t.create('role downloads (not found)')
.get('/d/does-not-exist.json')
.get('/d/does-not/exist.json')
.expectBadge({ label: 'role downloads', message: 'not found' })

View File

@@ -1,6 +1,6 @@
import Joi from 'joi'
import { renderVersionBadge } from '../version.js'
import { BaseJsonService } from '../index.js'
import { BaseJsonService, pathParams } from '../index.js'
const schema = Joi.object({
pkgver: Joi.string().required(),
@@ -13,17 +13,27 @@ export default class ArchLinux extends BaseJsonService {
pattern: ':repository/:architecture/:packageName',
}
static examples = [
{
title: 'Arch Linux package',
namedParams: {
architecture: 'x86_64',
repository: 'core',
packageName: 'pacman',
static openApi = {
'/archlinux/v/{repository}/{architecture}/{packageName}': {
get: {
summary: 'Arch Linux package',
parameters: pathParams(
{
name: 'repository',
example: 'core',
},
{
name: 'architecture',
example: 'x86_64',
},
{
name: 'packageName',
example: 'pacman',
},
),
},
staticPreview: renderVersionBadge({ version: '5.1.3' }),
},
]
}
static defaultBadgeData = { label: 'arch linux' }

View File

@@ -6,7 +6,12 @@ import {
import { renderLicenseBadge } from '../licenses.js'
import { addv, metric, formatDate } from '../text-formatters.js'
import { nonNegativeInteger } from '../validators.js'
import { BaseJsonService, NotFound, InvalidResponse } from '../index.js'
import {
BaseJsonService,
NotFound,
InvalidResponse,
pathParams,
} from '../index.js'
const aurSchema = Joi.object({
resultcount: nonNegativeInteger,
@@ -52,13 +57,18 @@ class AurLicense extends BaseAurService {
static category = 'license'
static route = { base: 'aur/license', pattern: ':packageName' }
static examples = [
{
title: 'AUR license',
namedParams: { packageName: 'android-studio' },
staticPreview: renderLicenseBadge({ license: 'Apache', color: 'blue' }),
static openApi = {
'/aur/license/{packageName}': {
get: {
summary: 'AUR License',
description: 'Arch linux User Repository License',
parameters: pathParams({
name: 'packageName',
example: 'android-studio',
}),
},
},
]
}
static defaultBadgeData = { label: 'license' }
@@ -83,13 +93,15 @@ class AurVotes extends BaseAurService {
static route = { base: 'aur/votes', pattern: ':packageName' }
static examples = [
{
title: 'AUR votes',
namedParams: { packageName: 'dropbox' },
staticPreview: this.render({ votes: '2280' }),
static openApi = {
'/aur/votes/{packageName}': {
get: {
summary: 'AUR Votes',
description: 'Arch linux User Repository Votes',
parameters: pathParams({ name: 'packageName', example: 'dropbox' }),
},
},
]
}
static defaultBadgeData = { label: 'votes' }
@@ -109,13 +121,19 @@ class AurVotes extends BaseAurService {
class AurVersion extends BaseAurService {
static category = 'version'
static route = { base: 'aur/version', pattern: ':packageName' }
static examples = [
{
title: 'AUR version',
namedParams: { packageName: 'visual-studio-code-bin' },
staticPreview: this.render({ version: '1.34.0-2', outOfDate: null }),
static openApi = {
'/aur/version/{packageName}': {
get: {
summary: 'AUR Version',
description: 'Arch linux User Repository Version',
parameters: pathParams({
name: 'packageName',
example: 'visual-studio-code-bin',
}),
},
},
]
}
static _cacheLength = 3600
@@ -140,13 +158,18 @@ class AurMaintainer extends BaseAurService {
static route = { base: 'aur/maintainer', pattern: ':packageName' }
static examples = [
{
title: 'AUR maintainer',
namedParams: { packageName: 'google-chrome' },
staticPreview: this.render({ maintainer: 'luzifer' }),
static openApi = {
'/aur/maintainer/{packageName}': {
get: {
summary: 'AUR Maintainer',
description: 'Arch linux User Repository Maintainer',
parameters: pathParams({
name: 'packageName',
example: 'google-chrome',
}),
},
},
]
}
static defaultBadgeData = { label: 'maintainer', color: 'blue' }
@@ -173,13 +196,18 @@ class AurLastModified extends BaseAurService {
pattern: ':packageName',
}
static examples = [
{
title: 'AUR last modified',
namedParams: { packageName: 'google-chrome' },
staticPreview: this.render({ date: new Date().getTime() }),
static openApi = {
'/aur/last-modified/{packageName}': {
get: {
summary: 'AUR Last Modified',
description: 'Arch linux User Repository Last Modified',
parameters: pathParams({
name: 'packageName',
example: 'google-chrome',
}),
},
},
]
}
static defaultBadgeData = { label: 'last modified' }

View File

@@ -75,7 +75,7 @@ t.create('license (package not found)')
t.create('maintainer (valid)')
.get('/maintainer/google-chrome.json')
.expectBadge({ label: 'maintainer', message: 'luzifer' })
.expectBadge({ label: 'maintainer', message: 'gromit' })
t.create('maintainer (not found)')
.get('/maintainer/not-a-package.json')

View File

@@ -1,14 +1,21 @@
import Joi from 'joi'
import { renderBuildStatusBadge } from '../build-status.js'
import { BaseSvgScrapingService, NotFound } from '../index.js'
import { keywords, fetch } from './azure-devops-helpers.js'
import {
BaseSvgScrapingService,
NotFound,
queryParam,
pathParam,
} from '../index.js'
import { fetch } from './azure-devops-helpers.js'
const queryParamSchema = Joi.object({
stage: Joi.string(),
job: Joi.string(),
})
const documentation = `
const description = `
[Azure Devops](https://dev.azure.com/) (formerly VSO, VSTS) is Microsoft Azure's CI/CD platform.
A badge requires three pieces of information:
\`ORGANIZATION\`, \`PROJECT_ID\` and \`DEFINITION_ID\`.
@@ -37,62 +44,68 @@ export default class AzureDevOpsBuild extends BaseSvgScrapingService {
queryParamSchema,
}
static examples = [
{
title: 'Azure DevOps builds',
pattern: ':organization/:projectId/:definitionId',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '2',
static openApi = {
'/azure-devops/build/{organization}/{projectId}/{definitionId}': {
get: {
summary: 'Azure DevOps builds',
description,
parameters: [
pathParam({
name: 'organization',
example: 'totodem',
}),
pathParam({
name: 'projectId',
example: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
}),
pathParam({
name: 'definitionId',
example: '2',
}),
queryParam({
name: 'stage',
example: 'Successful Stage',
}),
queryParam({
name: 'job',
example: 'Successful Job',
}),
],
},
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',
'/azure-devops/build/{organization}/{projectId}/{definitionId}/{branch}': {
get: {
summary: 'Azure DevOps builds (branch)',
description,
parameters: [
pathParam({
name: 'organization',
example: 'totodem',
}),
pathParam({
name: 'projectId',
example: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
}),
pathParam({
name: 'definitionId',
example: '2',
}),
pathParam({
name: 'branch',
example: 'master',
}),
queryParam({
name: 'stage',
example: 'Successful Stage',
}),
queryParam({
name: 'job',
example: 'Successful Job',
}),
],
},
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
},
{
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,
},
{
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

@@ -1,9 +1,11 @@
import Joi from 'joi'
import { pathParams } from '../index.js'
import { coveragePercentage as coveragePercentageColor } from '../color-formatters.js'
import AzureDevOpsBase from './azure-devops-base.js'
import { keywords } from './azure-devops-helpers.js'
const documentation = `
const description = `
[Azure Devops](https://dev.azure.com/) (formerly VSO, VSTS) is Microsoft Azure's CI/CD platform.
To obtain your own badge, you need to get 3 pieces of information:
\`ORGANIZATION\`, \`PROJECT_ID\` and \`DEFINITION_ID\`.
@@ -47,33 +49,52 @@ export default class AzureDevOpsCoverage extends AzureDevOpsBase {
pattern: ':organization/:project/:definitionId/:branch*',
}
static examples = [
{
title: 'Azure DevOps coverage',
pattern: ':organization/:project/:definitionId',
namedParams: {
organization: 'swellaby',
project: 'opensource',
definitionId: '25',
static openApi = {
'/azure-devops/coverage/{organization}/{project}/{definitionId}': {
get: {
summary: 'Azure DevOps coverage',
description,
parameters: pathParams(
{
name: 'organization',
example: 'swellaby',
},
{
name: 'project',
example: 'opensource',
},
{
name: 'definitionId',
example: '25',
},
),
},
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',
'/azure-devops/coverage/{organization}/{project}/{definitionId}/{branch}': {
get: {
summary: 'Azure DevOps coverage (branch)',
description,
parameters: pathParams(
{
name: 'organization',
example: 'swellaby',
},
{
name: 'project',
example: 'opensource',
},
{
name: 'definitionId',
example: '25',
},
{
name: 'branch',
example: 'master',
},
),
},
staticPreview: this.render({ coverage: 100 }),
keywords,
documentation,
},
]
}
static defaultBadgeData = { label: 'coverage' }

View File

@@ -1,8 +1,6 @@
import Joi from 'joi'
import { isBuildStatus } from '../build-status.js'
const keywords = ['vso', 'vsts', 'azure-devops']
const schema = Joi.object({
message: Joi.alternatives()
.try(
@@ -26,4 +24,4 @@ async function fetch(serviceInstance, { url, searchParams = {}, httpErrors }) {
return { status }
}
export { keywords, fetch }
export { fetch }

View File

@@ -1,8 +1,8 @@
import { renderBuildStatusBadge } from '../build-status.js'
import { BaseSvgScrapingService } from '../index.js'
import { keywords, fetch } from './azure-devops-helpers.js'
import { BaseSvgScrapingService, pathParams } from '../index.js'
import { fetch } from './azure-devops-helpers.js'
const documentation = `
const description = `
To obtain your own badge, you need to get 4 pieces of information:
\`ORGANIZATION\`, \`PROJECT_ID\`, \`DEFINITION_ID\` and \`ENVIRONMENT_ID\`.
@@ -25,20 +25,33 @@ export default class AzureDevOpsRelease extends BaseSvgScrapingService {
pattern: ':organization/:projectId/:definitionId/:environmentId',
}
static examples = [
{
title: 'Azure DevOps releases',
namedParams: {
organization: 'totodem',
projectId: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
definitionId: '1',
environmentId: '1',
static openApi = {
'/azure-devops/release/{organization}/{projectId}/{definitionId}/{environmentId}':
{
get: {
summary: 'Azure DevOps releases',
description,
parameters: pathParams(
{
name: 'organization',
example: 'totodem',
},
{
name: 'projectId',
example: '8cf3ec0e-d0c2-4fcd-8206-ad204f254a96',
},
{
name: 'definitionId',
example: '1',
},
{
name: 'environmentId',
example: '1',
},
),
},
},
staticPreview: renderBuildStatusBadge({ status: 'succeeded' }),
keywords,
documentation,
},
]
}
static defaultBadgeData = { label: 'deployment' }

View File

@@ -1,28 +1,18 @@
import Joi from 'joi'
import { pathParam } from '../index.js'
import {
testResultOpenApiQueryParams,
testResultQueryParamSchema,
renderTestResultBadge,
documentation as commonDocumentation,
} from '../test-results.js'
import AzureDevOpsBase from './azure-devops-base.js'
const commonAttrs = {
keywords: ['vso', 'vsts', 'azure-devops'],
namedParams: {
organization: 'azuredevops-powershell',
project: 'azuredevops-powershell',
definitionId: '1',
branch: 'master',
},
queryParams: {
passed_label: 'passed',
failed_label: 'failed',
skipped_label: 'skipped',
compact_message: null,
},
documentation: `
const description = `
[Azure Devops](https://dev.azure.com/) (formerly VSO, VSTS) is Microsoft Azure's CI/CD platform.
To obtain your own badge, you need to get 3 pieces of information:
\`ORGANIZATION\`, \`PROJECT_ID\`, \`DEFINITION_ID\`.
\`ORGANIZATION\`, \`PROJECT\`, \`DEFINITION_ID\`.
First, you need to select your build definition and look at the url:
@@ -37,8 +27,7 @@ Optionally, you can specify a named branch:
\`https://img.shields.io/azure-devops/tests/ORGANIZATION/PROJECT/DEFINITION_ID/NAMED_BRANCH.svg\`.
${commonDocumentation}
`,
}
`
const buildTestResultSummarySchema = Joi.object({
aggregatedResultsAnalysis: Joi.object({
@@ -65,48 +54,54 @@ export default class AzureDevOpsTests extends AzureDevOpsBase {
queryParamSchema: testResultQueryParamSchema,
}
static examples = [
{
title: 'Azure DevOps tests',
staticPreview: this.render({
passed: 20,
failed: 1,
skipped: 1,
total: 22,
}),
...commonAttrs,
},
{
title: 'Azure DevOps tests (compact)',
staticPreview: this.render({
passed: 20,
failed: 1,
skipped: 1,
total: 22,
isCompact: true,
}),
...commonAttrs,
},
{
title: 'Azure DevOps tests with custom labels',
queryParams: {
passed_label: 'good',
failed_label: 'bad',
skipped_label: 'n/a',
compact_message: null,
static openApi = {
'/azure-devops/tests/{organization}/{project}/{definitionId}': {
get: {
summary: 'Azure DevOps tests',
description,
parameters: [
pathParam({
name: 'organization',
example: 'azuredevops-powershell',
}),
pathParam({
name: 'project',
example: 'azuredevops-powershell',
}),
pathParam({
name: 'definitionId',
example: '1',
}),
...testResultOpenApiQueryParams,
],
},
staticPreview: this.render({
passed: 20,
failed: 1,
skipped: 1,
total: 22,
passedLabel: 'good',
failedLabel: 'bad',
skippedLabel: 'n/a',
}),
...commonAttrs,
},
]
'/azure-devops/tests/{organization}/{project}/{definitionId}/{branch}': {
get: {
summary: 'Azure DevOps tests (branch)',
description,
parameters: [
pathParam({
name: 'organization',
example: 'azuredevops-powershell',
}),
pathParam({
name: 'project',
example: 'azuredevops-powershell',
}),
pathParam({
name: 'definitionId',
example: '1',
}),
pathParam({
name: 'branch',
example: 'master',
}),
...testResultOpenApiQueryParams,
],
},
},
}
static defaultBadgeData = { label: 'tests' }

View File

@@ -2,7 +2,7 @@ import Joi from 'joi'
import { metric } from '../text-formatters.js'
import { nonNegativeInteger } from '../validators.js'
import { downloadCount } from '../color-formatters.js'
import { BaseJsonService } from '../index.js'
import { BaseJsonService, pathParams } from '../index.js'
const collectionSchema = Joi.object({
payload: Joi.object({
@@ -17,14 +17,23 @@ export default class BitComponents extends BaseJsonService {
pattern: ':owner/:collection',
}
static examples = [
{
title: 'bit',
namedParams: { owner: 'ramda', collection: 'ramda' },
staticPreview: this.render({ count: 330 }),
keywords: ['components'],
static openApi = {
'/bit/collection/total-components/{owner}/{collection}': {
get: {
summary: 'Bit Components',
parameters: pathParams(
{
name: 'owner',
example: 'ramda',
},
{
name: 'collection',
example: 'ramda',
},
),
},
},
]
}
static defaultBadgeData = { label: 'components' }

View File

@@ -1,6 +1,6 @@
import Joi from 'joi'
import { renderBuildStatusBadge } from '../build-status.js'
import { BaseJsonService, redirector } from '../index.js'
import { BaseJsonService, redirector, pathParams } from '../index.js'
const bitbucketPipelinesSchema = Joi.object({
values: Joi.array()
@@ -30,17 +30,27 @@ class BitbucketPipelines extends BaseJsonService {
pattern: ':user/:repo/:branch+',
}
static examples = [
{
title: 'Bitbucket Pipelines',
namedParams: {
user: 'atlassian',
repo: 'adf-builder-javascript',
branch: 'task/SECO-2168',
static openApi = {
'/bitbucket/pipelines/{user}/{repo}/{branch}': {
get: {
summary: 'Bitbucket Pipelines',
parameters: pathParams(
{
name: 'user',
example: 'atlassian',
},
{
name: 'repo',
example: 'adf-builder-javascript',
},
{
name: 'branch',
example: 'task/SECO-2168',
},
),
},
staticPreview: this.render({ status: 'SUCCESSFUL' }),
},
]
}
static defaultBadgeData = { label: 'build' }

View File

@@ -1,6 +1,6 @@
import Joi from 'joi'
import { metric } from '../text-formatters.js'
import { BaseJsonService } from '../index.js'
import { BaseJsonService, pathParams } from '../index.js'
const schema = Joi.object({ activity_total: Joi.number().required() })
@@ -8,13 +8,17 @@ export default class Bountysource extends BaseJsonService {
static category = 'funding'
static route = { base: 'bountysource/team', pattern: ':team/activity' }
static examples = [
{
title: 'Bountysource',
namedParams: { team: 'mozilla-core' },
staticPreview: this.render({ total: 53000 }),
static openApi = {
'/bountysource/team/{team}/activity': {
get: {
summary: 'Bountysource',
parameters: pathParams({
name: 'team',
example: 'mozilla-core',
}),
},
},
]
}
static defaultBadgeData = { label: 'bounties' }

View File

@@ -1,3 +1,4 @@
import { pathParams } from '../index.js'
import { renderLicenseBadge } from '../licenses.js'
import BaseBowerService from './bower-base.js'
@@ -5,13 +6,17 @@ export default class BowerLicense extends BaseBowerService {
static category = 'license'
static route = { base: 'bower/l', pattern: ':packageName' }
static examples = [
{
title: 'Bower',
namedParams: { packageName: 'bootstrap' },
staticPreview: renderLicenseBadge({ licenses: ['MIT'] }),
static openApi = {
'/bower/l/{packageName}': {
get: {
summary: 'Bower License',
parameters: pathParams({
name: 'packageName',
example: 'bootstrap',
}),
},
},
]
}
static defaultBadgeData = { label: 'license' }

View File

@@ -1,15 +1,10 @@
import Joi from 'joi'
import { renderVersionBadge } from '../version.js'
import { InvalidResponse } from '../index.js'
import BaseBowerService from './bower-base.js'
const queryParamSchema = Joi.object({
include_prereleases: Joi.equal(''),
}).required()
export default class BowerVersion extends BaseBowerService {
static category = 'version'
static route = { base: 'bower/v', pattern: ':packageName', queryParamSchema }
static route = { base: 'bower/v', pattern: ':packageName' }
static examples = [
{
@@ -17,20 +12,12 @@ export default class BowerVersion extends BaseBowerService {
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 defaultBadgeData = { label: 'bower' }
static transform(data, includePrereleases) {
const version = includePrereleases
? data.latest_release_number
: data.latest_stable_release_number
static transform(data) {
const version = data.latest_release_number
if (!version) {
throw new InvalidResponse({ prettyMessage: 'no releases' })
@@ -39,10 +26,9 @@ export default class BowerVersion extends BaseBowerService {
return version
}
async handle({ packageName }, queryParams) {
async handle({ packageName }) {
const data = await this.fetch({ packageName })
const includePrereleases = queryParams.include_prereleases !== undefined
const version = this.constructor.transform(data, includePrereleases)
const version = this.constructor.transform(data)
return renderVersionBadge({ version })
}

View File

@@ -8,34 +8,14 @@ import BowerVersion from './bower-version.service.js'
describe('BowerVersion', function () {
test(BowerVersion.transform, () => {
given(
{
latest_release_number: '2.0.0-beta',
latest_stable_release_number: '1.8.3',
},
false,
).expect('1.8.3')
given(
{
latest_release_number: '2.0.0-beta',
latest_stable_release_number: '1.8.3',
},
true,
).expect('2.0.0-beta')
given({
latest_release_number: '2.0.0-beta',
latest_stable_release_number: '1.8.3',
}).expect('2.0.0-beta')
})
it('throws `no releases` InvalidResponse if no stable version', function () {
expect(() =>
BowerVersion.transform({ latest_release_number: 'panda' }, false),
)
.to.throw(InvalidResponse)
.with.property('prettyMessage', 'no releases')
})
it('throws `no releases` InvalidResponse if no prereleases', function () {
expect(() =>
BowerVersion.transform({ latest_stable_release_number: 'penguin' }, true),
)
expect(() => BowerVersion.transform({}))
.to.throw(InvalidResponse)
.with.property('prettyMessage', 'no releases')
})

View File

@@ -9,7 +9,7 @@ export const t = new ServiceTester({
pathPrefix: '/bower',
})
t.create('version').timeout(10000).get('/v/angular.json').expectBadge({
t.create('version').timeout(10000).get('/v/backbone.json').expectBadge({
label: 'bower',
message: isVPlusDottedVersionAtLeastOne,
})

View File

@@ -1,6 +1,6 @@
import Joi from 'joi'
import { metric } from '../text-formatters.js'
import { BaseJsonService } from '../index.js'
import { BaseJsonService, pathParams } from '../index.js'
const schema = Joi.array()
.items(Joi.array().items(Joi.number().required(), Joi.number().required()))
@@ -10,15 +10,17 @@ export default class BStatsPlayers extends BaseJsonService {
static category = 'other'
static route = { base: 'bstats/players', pattern: ':pluginid' }
static examples = [
{
title: 'bStats Players',
namedParams: {
pluginid: '1',
static openApi = {
'/bstats/players/{pluginid}': {
get: {
summary: 'bStats Players',
parameters: pathParams({
name: 'pluginid',
example: '1',
}),
},
staticPreview: this.render({ players: 74299 }),
},
]
}
static defaultBadgeData = { label: 'players', color: 'blue' }

View File

@@ -1,6 +1,6 @@
import Joi from 'joi'
import { metric } from '../text-formatters.js'
import { BaseJsonService } from '../index.js'
import { BaseJsonService, pathParams } from '../index.js'
const schema = Joi.array()
.items(Joi.array().items(Joi.number().required(), Joi.number().required()))
@@ -10,15 +10,17 @@ export default class BStatsServers extends BaseJsonService {
static category = 'other'
static route = { base: 'bstats/servers', pattern: ':pluginid' }
static examples = [
{
title: 'bStats Servers',
namedParams: {
pluginid: '1',
static openApi = {
'/bstats/servers/{pluginid}': {
get: {
summary: 'bStats Servers',
parameters: pathParams({
name: 'pluginid',
example: '1',
}),
},
staticPreview: this.render({ servers: 57479 }),
},
]
}
static defaultBadgeData = { label: 'servers', color: 'blue' }

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