Compare commits

..

95 Commits

Author SHA1 Message Date
dependabot[bot]
9ac31b619a chore(deps-dev): bump sinon from 19.0.4 to 20.0.0 (#10980)
Bumps [sinon](https://github.com/sinonjs/sinon) from 19.0.4 to 20.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/v19.0.4...v20.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>
2025-03-28 18:20:11 +00:00
dependabot[bot]
8dcf813bbc chore(deps): bump simple-icons from 14.11.0 to 14.11.1 (#10976)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 14.11.0 to 14.11.1.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/14.11.0...14.11.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>
2025-03-28 18:16:56 +00:00
dependabot[bot]
1d332848f6 chore(deps-dev): bump eslint-plugin-prettier from 5.2.3 to 5.2.5 (#10978)
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.2.3 to 5.2.5.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.2.3...v5.2.5)

---
updated-dependencies:
- dependency-name: eslint-plugin-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>
2025-03-28 18:06:46 +00:00
dependabot[bot]
39184c3be4 chore(deps-dev): bump eslint-plugin-jsdoc from 50.6.8 to 50.6.9 (#10972)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.6.8 to 50.6.9.
- [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/v50.6.8...v50.6.9)

---
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>
2025-03-28 18:06:23 +00:00
dependabot[bot]
a1d9867e68 chore(deps-dev): bump @typescript-eslint/parser from 8.27.0 to 8.28.0 (#10973)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.27.0 to 8.28.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/v8.28.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>
2025-03-28 18:06:05 +00:00
dependabot[bot]
fdd2b94afb chore(deps): bump @sentry/node from 9.8.0 to 9.10.0 (#10974)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 9.8.0 to 9.10.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/9.8.0...9.10.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>
2025-03-28 18:05:31 +00:00
dependabot[bot]
9979d142f2 chore(deps-dev): bump eslint from 9.22.0 to 9.23.0 (#10975)
Bumps [eslint](https://github.com/eslint/eslint) from 9.22.0 to 9.23.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/v9.22.0...v9.23.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>
2025-03-28 18:05:14 +00:00
dependabot[bot]
d027188727 chore(deps-dev): bump cypress from 14.2.0 to 14.2.1 (#10979)
Bumps [cypress](https://github.com/cypress-io/cypress) from 14.2.0 to 14.2.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/v14.2.0...v14.2.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>
2025-03-28 18:04:40 +00:00
Djordy Koert
b7fd897103 fix(#10970): codecov branch badge (#10971) 2025-03-26 21:17:17 +00:00
Moritz Zwerger
1fcc0f7aa5 docker: cleanup some building (#10957)
* docker: cleanup some building

Somehow `npm prune --omit=dev` does not properly remove unneeded dependencies, this is workarounded by deleting the `node_modules` folder and the running install again.

It also removes some unneeded large files in the docker container.

* docker building: improve caching, don't download node_modules twice
2025-03-25 21:38:35 +00:00
dependabot[bot]
d3875f10ff chore(deps-dev): bump sinon from 19.0.2 to 19.0.4 (#10965)
Bumps [sinon](https://github.com/sinonjs/sinon) from 19.0.2 to 19.0.4.
- [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/v19.0.2...v19.0.4)

---
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>
2025-03-21 17:09:43 +00:00
dependabot[bot]
1a3f14591b chore(deps): bump simple-icons from 14.10.0 to 14.11.0 (#10966)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 14.10.0 to 14.11.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/14.10.0...14.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>
2025-03-21 17:07:01 +00:00
dependabot[bot]
7a068167eb chore(deps): bump @sentry/node from 9.5.0 to 9.8.0 (#10961)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 9.5.0 to 9.8.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/9.5.0...9.8.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>
2025-03-21 16:58:26 +00:00
dependabot[bot]
1765c2d02d chore(deps): bump pg from 8.14.0 to 8.14.1 (#10967)
Bumps [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) from 8.14.0 to 8.14.1.
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.14.1/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>
2025-03-21 16:58:11 +00:00
dependabot[bot]
cdf0e273b1 chore(deps-dev): bump eslint-plugin-jsdoc from 50.6.6 to 50.6.8 (#10962)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.6.6 to 50.6.8.
- [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/v50.6.6...v50.6.8)

---
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>
2025-03-21 16:57:56 +00:00
dependabot[bot]
301b96e067 chore(deps-dev): bump @typescript-eslint/parser from 8.26.1 to 8.27.0 (#10964)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.26.1 to 8.27.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/v8.27.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>
2025-03-21 16:57:40 +00:00
dependabot[bot]
a9b715ffaf chore(deps-dev): bump simple-git-hooks from 2.11.1 to 2.12.1 (#10963)
Bumps [simple-git-hooks](https://github.com/toplenboren/simple-git-hooks) from 2.11.1 to 2.12.1.
- [Release notes](https://github.com/toplenboren/simple-git-hooks/releases)
- [Changelog](https://github.com/toplenboren/simple-git-hooks/blob/master/CHANGELOG.md)
- [Commits](https://github.com/toplenboren/simple-git-hooks/compare/2.11.1...2.12.1)

---
updated-dependencies:
- dependency-name: simple-git-hooks
  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>
2025-03-21 16:57:06 +00:00
Moritz Zwerger
eb14f9b088 graceful shutdown (#10958)
* graceful shutdown

The main entrypoint now handles the SIGTERM signal and stops the server.

* Don't call process.exit on shutdown

That is not graceful in nodejs, see https://kostasbariotis.com/why-you-should-not-use-process-exit/
2025-03-16 22:11:09 +00:00
jNullj
834e4e1f96 Update [SourceForge] commit count badge to support repository parameter (#10954)
* [sourceforge] update commit count service to support repo param

follow-up to #10935
sourceforge commit count also requires the new repo param for some projects.

* [sourceforge] add redirector for legacy commit count URLs

* fix missing openapi path
2025-03-16 20:27:43 +00:00
jNullj
b23a8ec307 ignore package.json files in linting (#10956) 2025-03-16 15:16:02 +00:00
dependabot[bot]
5fdb3f585f chore(deps): bump simple-icons from 14.9.0 to 14.10.0 (#10947)
* chore(deps): bump simple-icons from 14.9.0 to 14.10.0

Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 14.9.0 to 14.10.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/14.9.0...14.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>

* change test example for logo that is not re-coloured

---------

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>
2025-03-14 19:53:33 +00:00
dependabot[bot]
2b41dc5dcf chore(deps-dev): bump lint-staged from 15.4.3 to 15.5.0 (#10942)
Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 15.4.3 to 15.5.0.
- [Release notes](https://github.com/lint-staged/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lint-staged/lint-staged/compare/v15.4.3...v15.5.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>
2025-03-14 19:41:36 +00:00
dependabot[bot]
c0326a1862 chore(deps-dev): bump @easyops-cn/docusaurus-search-local (#10944)
Bumps [@easyops-cn/docusaurus-search-local](https://github.com/easyops-cn/docusaurus-search-local/tree/HEAD/packages/docusaurus-search-local) from 0.48.5 to 0.49.1.
- [Release notes](https://github.com/easyops-cn/docusaurus-search-local/releases)
- [Commits](https://github.com/easyops-cn/docusaurus-search-local/commits/v0.49.1/packages/docusaurus-search-local)

---
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>
2025-03-14 19:34:42 +00:00
dependabot[bot]
a9d5434ac6 chore(deps-dev): bump @typescript-eslint/parser from 8.26.0 to 8.26.1 (#10946)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.26.0 to 8.26.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/v8.26.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>
2025-03-14 19:28:45 +00:00
dependabot[bot]
1378777b7b chore(deps-dev): bump eslint-plugin-cypress from 4.1.0 to 4.2.0 (#10945)
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v4.1.0...v4.2.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>
2025-03-14 19:28:15 +00:00
dependabot[bot]
959682b0e3 chore(deps-dev): bump cypress from 14.1.0 to 14.2.0 (#10948)
Bumps [cypress](https://github.com/cypress-io/cypress) from 14.1.0 to 14.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/v14.1.0...v14.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>
2025-03-14 19:27:16 +00:00
dependabot[bot]
8409f85e37 chore(deps-dev): bump portfinder from 1.0.33 to 1.0.35 (#10949)
Bumps [portfinder](https://github.com/http-party/node-portfinder) from 1.0.33 to 1.0.35.
- [Release notes](https://github.com/http-party/node-portfinder/releases)
- [Commits](https://github.com/http-party/node-portfinder/compare/v1.0.33...v1.0.35)

---
updated-dependencies:
- dependency-name: portfinder
  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>
2025-03-14 19:26:54 +00:00
dependabot[bot]
cf0307552c chore(deps): bump pg from 8.13.3 to 8.14.0 (#10950)
Bumps [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) from 8.13.3 to 8.14.0.
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.14.0/packages/pg)

---
updated-dependencies:
- dependency-name: pg
  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>
2025-03-14 19:25:48 +00:00
dependabot[bot]
701df37900 chore(deps-dev): bump eslint-plugin-jsdoc from 50.6.3 to 50.6.6 (#10951)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.6.3 to 50.6.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/v50.6.3...v50.6.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>
2025-03-14 19:25:30 +00:00
dependabot[bot]
0b37ae8be8 chore(deps-dev): bump start-server-and-test from 2.0.10 to 2.0.11 (#10953)
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 2.0.10 to 2.0.11.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v2.0.10...v2.0.11)

---
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>
2025-03-14 19:24:35 +00:00
dependabot[bot]
669a690c8b chore(deps-dev): bump eslint from 9.21.0 to 9.22.0 (#10952)
Bumps [eslint](https://github.com/eslint/eslint) from 9.21.0 to 9.22.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/v9.21.0...v9.22.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>
2025-03-14 19:24:15 +00:00
chris48s
9b738fc300 add node 22 to engines declaration (#10940) 2025-03-14 19:23:47 +00:00
dependabot[bot]
1f92791440 chore(deps): bump fast-xml-parser from 5.0.8 to 5.0.9 (#10943)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.0.8 to 5.0.9.
- [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/v5.0.8...v5.0.9)

---
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>
2025-03-14 16:01:46 +00:00
Ari Kalfus
abf0a2970b feat: add new badges for new [ansible] collection APIs (#10938)
* feat: add ansible collection v2 badge for latest version

* feat: add ansible collection downloads count badge

* set default galaxy version label and fixed ansible tests

* apply PR requested changes

* slim down schemas to minimal required elements
2025-03-13 18:00:29 +00:00
Ari Kalfus
9b91a60c75 build: creates a devcontainer configuration for contributors (#10937)
* set up a devcontainer configuration

* also install postgresql for that part of the CONTRIBUTING guidance

* set up a devcontainer configuration

* also install postgresql for that part of the CONTRIBUTING guidance

* forgot to revert node 22 to node 20

* slim down devcontainer file
2025-03-12 17:54:34 +00:00
dependabot[bot]
4eb5d9a7ac chore(deps): bump @babel/runtime-corejs3 from 7.26.0 to 7.26.10 (#10941)
Bumps [@babel/runtime-corejs3](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime-corejs3) from 7.26.0 to 7.26.10.
- [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.26.10/packages/babel-runtime-corejs3)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-11 21:06:59 +00:00
dependabot[bot]
a5d50446ed chore(deps): bump prismjs from 1.29.0 to 1.30.0 (#10939)
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.29.0 to 1.30.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.29.0...v1.30.0)

---
updated-dependencies:
- dependency-name: prismjs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-11 20:42:01 +00:00
jNullj
231a48fa87 [sourceforge] add repo param to last commit service (#10935)
* [sourceforge] add repo param to last commit service

some sourceforge projects have multiple repositories, so we need to
specify the repository to use for the last commit service.

* [sourceforge] add redirect for old project param only URLs
2025-03-09 16:23:39 +00:00
dependabot[bot]
dc43239bcb chore(deps-dev): bump axios from 1.7.9 to 1.8.2 (#10936)
Bumps [axios](https://github.com/axios/axios) from 1.7.9 to 1.8.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.9...v1.8.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-08 21:04:26 +00:00
jNullj
313cced050 nodemon watch yml conf files and ignore .github (#10924)
this makes nodemon restart on every configuration change

ignored .github folder as it is not needed for nodemon to watch and has yml files

Fixes #10923
2025-03-08 18:20:29 +00:00
chris48s
309b0fe33f update security policy: clarify we don't pay bounties (#10934) 2025-03-08 18:19:50 +00:00
dependabot[bot]
7d7ec20ae0 chore(deps): bump simple-icons from 14.8.0 to 14.9.0 (#10933)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 14.8.0 to 14.9.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/14.8.0...14.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>
2025-03-07 15:26:51 +00:00
dependabot[bot]
0e552b63c6 chore(deps): bump @xmldom/xmldom from 0.9.7 to 0.9.8 (#10928)
Bumps [@xmldom/xmldom](https://github.com/xmldom/xmldom) from 0.9.7 to 0.9.8.
- [Release notes](https://github.com/xmldom/xmldom/releases)
- [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/xmldom/xmldom/compare/0.9.7...0.9.8)

---
updated-dependencies:
- dependency-name: "@xmldom/xmldom"
  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>
2025-03-07 15:26:00 +00:00
dependabot[bot]
affdb4c0bb chore(deps-dev): bump prettier from 3.5.2 to 3.5.3 (#10927)
Bumps [prettier](https://github.com/prettier/prettier) from 3.5.2 to 3.5.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.5.2...3.5.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>
2025-03-07 15:15:21 +00:00
dependabot[bot]
8c62644314 chore(deps-dev): bump @typescript-eslint/parser from 8.25.0 to 8.26.0 (#10930)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.25.0 to 8.26.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/v8.26.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>
2025-03-07 15:15:05 +00:00
dependabot[bot]
811069280f chore(deps): bump @sentry/node from 9.2.0 to 9.5.0 (#10929)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 9.2.0 to 9.5.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/9.2.0...9.5.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>
2025-03-07 15:14:52 +00:00
dependabot[bot]
ee587919a8 chore(deps-dev): bump eslint-config-prettier from 10.0.2 to 10.1.1 (#10932)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 10.0.2 to 10.1.1.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v10.0.2...v10.1.1)

---
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>
2025-03-07 15:14:37 +00:00
dependabot[bot]
4af92d7ae6 chore(deps-dev): bump eslint-plugin-react-hooks from 5.1.0 to 5.2.0 (#10931)
Bumps [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks)

---
updated-dependencies:
- dependency-name: eslint-plugin-react-hooks
  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>
2025-03-07 15:14:19 +00:00
chris48s
5fb5a30188 tweak default cache lengths by category (#10919) 2025-03-06 17:30:49 +00:00
Jordi Boggiano
be9cdc2276 [Packagist] Update default domain for repo metadata (#10920)
* Update default packagist domain for repo metadata

* prettier

---------

Co-authored-by: chris48s <git@chris-shaw.dev>
2025-03-05 07:32:22 +00:00
chris48s
8a98824e5e use SVG2 hrefs (#10918)
* use SVG2 hrefs

* add note to badge-maker changelog
2025-03-03 17:58:48 +00:00
jNullj
42e78083ab remove logoWidth param (#10878)
* remove `logoWidth` param
Fixes #10285

* remove `logoWidth` param
Fixes #10285

* fix: add `logoWidth` parameter to BaseService test
2025-03-02 11:16:02 +00:00
github-actions[bot]
779f8ae61c Changelog for Release server-2025-03-02 (#10917)
* Update Changelog

* Update CHANGELOG.md

---------

Co-authored-by: release[bot] <actions@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2025-03-02 10:26:38 +00:00
github-actions[bot]
9d4a8f87ce Changelog for Release server-2025-03-01 (#10915)
* Update Changelog

* Update CHANGELOG.md

---------

Co-authored-by: release[bot] <actions@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2025-03-01 17:33:35 +00:00
dependabot[bot]
4346e37421 chore(deps-dev): bump portfinder from 1.0.32 to 1.0.33 (#10913)
Bumps [portfinder](https://github.com/http-party/node-portfinder) from 1.0.32 to 1.0.33.
- [Release notes](https://github.com/http-party/node-portfinder/releases)
- [Commits](https://github.com/http-party/node-portfinder/compare/v1.0.32...v1.0.33)

---
updated-dependencies:
- dependency-name: portfinder
  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>
2025-02-28 19:29:06 +00:00
dependabot[bot]
0ca8c95874 chore(deps-dev): bump eslint from 9.20.1 to 9.21.0 (#10907)
Bumps [eslint](https://github.com/eslint/eslint) from 9.20.1 to 9.21.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/v9.20.1...v9.21.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>
2025-02-28 19:28:41 +00:00
dependabot[bot]
5aa0fdb821 chore(deps): bump simple-icons from 14.7.0 to 14.8.0 (#10914)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 14.7.0 to 14.8.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/14.7.0...14.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>
2025-02-28 19:24:44 +00:00
dependabot[bot]
49636311ba chore(deps-dev): bump @typescript-eslint/parser from 8.24.1 to 8.25.0 (#10911)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.24.1 to 8.25.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/v8.25.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>
2025-02-28 19:15:19 +00:00
dependabot[bot]
d0af75f721 chore(deps-dev): bump cypress from 14.0.3 to 14.1.0 (#10912)
Bumps [cypress](https://github.com/cypress-io/cypress) from 14.0.3 to 14.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/v14.0.3...v14.1.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>
2025-02-28 19:14:58 +00:00
dependabot[bot]
1d3af05758 chore(deps-dev): bump eslint-config-prettier from 10.0.1 to 10.0.2 (#10910)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 10.0.1 to 10.0.2.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v10.0.1...v10.0.2)

---
updated-dependencies:
- dependency-name: eslint-config-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>
2025-02-28 19:14:10 +00:00
dependabot[bot]
ac1cfd9fc9 chore(deps): bump @sentry/node from 8.54.0 to 9.2.0 (#10906)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 8.54.0 to 9.2.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/8.54.0...9.2.0)

---
updated-dependencies:
- dependency-name: "@sentry/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>
2025-02-28 19:13:54 +00:00
dependabot[bot]
1f87e181ce chore(deps-dev): bump prettier from 3.5.1 to 3.5.2 (#10909)
Bumps [prettier](https://github.com/prettier/prettier) from 3.5.1 to 3.5.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.5.1...3.5.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>
2025-02-28 19:13:37 +00:00
dependabot[bot]
5ba86df981 chore(deps): bump fast-xml-parser from 4.5.3 to 5.0.8 (#10908)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 4.5.3 to 5.0.8.
- [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/commits/v5.0.8)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  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>
2025-02-28 19:13:20 +00:00
dependabot[bot]
7734784de3 chore(deps): bump @octokit/request (#10895)
Bumps [@octokit/request](https://github.com/octokit/request.js) from 8.1.4 to 8.4.1.
- [Release notes](https://github.com/octokit/request.js/releases)
- [Commits](https://github.com/octokit/request.js/compare/v8.1.4...v8.4.1)

---
updated-dependencies:
- dependency-name: "@octokit/request"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-22 15:30:11 +00:00
dependabot[bot]
7254e4a840 chore(deps): bump @octokit/plugin-paginate-rest (#10896)
Bumps [@octokit/plugin-paginate-rest](https://github.com/octokit/plugin-paginate-rest.js) from 9.0.0 to 9.2.2.
- [Release notes](https://github.com/octokit/plugin-paginate-rest.js/releases)
- [Commits](https://github.com/octokit/plugin-paginate-rest.js/compare/v9.0.0...v9.2.2)

---
updated-dependencies:
- dependency-name: "@octokit/plugin-paginate-rest"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-22 15:17:37 +00:00
dependabot[bot]
c86c9cd484 chore(deps-dev): bump @typescript-eslint/parser from 8.24.0 to 8.24.1 (#10902)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.24.0 to 8.24.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/v8.24.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>
2025-02-22 14:42:26 +00:00
dependabot[bot]
62ae049fa8 chore(deps-dev): bump chai from 5.1.2 to 5.2.0 (#10901)
Bumps [chai](https://github.com/chaijs/chai) from 5.1.2 to 5.2.0.
- [Release notes](https://github.com/chaijs/chai/releases)
- [Changelog](https://github.com/chaijs/chai/blob/main/History.md)
- [Commits](https://github.com/chaijs/chai/compare/v5.1.2...v5.2.0)

---
updated-dependencies:
- dependency-name: chai
  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>
2025-02-22 12:47:04 +00:00
dependabot[bot]
b3ac7e115b chore(deps-dev): bump globals from 15.15.0 to 16.0.0 (#10897)
Bumps [globals](https://github.com/sindresorhus/globals) from 15.15.0 to 16.0.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v15.15.0...v16.0.0)

---
updated-dependencies:
- dependency-name: globals
  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>
2025-02-22 12:01:29 +00:00
dependabot[bot]
be20741e9a chore(deps-dev): bump form-data from 4.0.1 to 4.0.2 (#10898)
Bumps [form-data](https://github.com/form-data/form-data) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Commits](https://github.com/form-data/form-data/compare/v4.0.1...v4.0.2)

---
updated-dependencies:
- dependency-name: form-data
  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>
2025-02-22 11:39:01 +00:00
dependabot[bot]
b739d57ee7 chore(deps): bump @renovatebot/pep440 from 4.0.1 to 4.1.0 (#10899)
Bumps [@renovatebot/pep440](https://github.com/renovatebot/pep440) from 4.0.1 to 4.1.0.
- [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/4.0.1...4.1.0)

---
updated-dependencies:
- dependency-name: "@renovatebot/pep440"
  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>
2025-02-22 11:18:46 +00:00
dependabot[bot]
92d1d7dc21 chore(deps): bump fast-xml-parser from 4.5.1 to 4.5.3 (#10900)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 4.5.1 to 4.5.3.
- [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/commits)

---
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>
2025-02-22 11:00:03 +00:00
dependabot[bot]
1610226eb4 chore(deps): bump simple-icons from 14.6.0 to 14.7.0 (#10903)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 14.6.0 to 14.7.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/14.6.0...14.7.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>
2025-02-22 10:41:36 +00:00
dependabot[bot]
0457d078f8 chore(deps): bump @octokit/request-error (#10892)
Bumps [@octokit/request-error](https://github.com/octokit/request-error.js) from 5.0.1 to 5.1.1.
- [Release notes](https://github.com/octokit/request-error.js/releases)
- [Commits](https://github.com/octokit/request-error.js/compare/v5.0.1...v5.1.1)

---
updated-dependencies:
- dependency-name: "@octokit/request-error"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-17 09:08:27 +00:00
dependabot[bot]
838f284d04 chore(deps): bump got from 14.4.5 to 14.4.6 (#10880)
Bumps [got](https://github.com/sindresorhus/got) from 14.4.5 to 14.4.6.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v14.4.5...v14.4.6)

---
updated-dependencies:
- dependency-name: got
  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>
2025-02-14 18:37:21 +00:00
dependabot[bot]
7a5da5781c chore(deps-dev): bump prettier from 3.4.2 to 3.5.1 (#10887)
Bumps [prettier](https://github.com/prettier/prettier) from 3.4.2 to 3.5.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.4.2...3.5.1)

---
updated-dependencies:
- dependency-name: 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>
2025-02-14 18:36:10 +00:00
dependabot[bot]
3ca22147c0 chore(deps): bump emojic from 1.1.17 to 1.1.18 (#10884)
Bumps [emojic](https://github.com/IonicaBizau/emojic) from 1.1.17 to 1.1.18.
- [Release notes](https://github.com/IonicaBizau/emojic/releases)
- [Commits](https://github.com/IonicaBizau/emojic/compare/1.1.17...1.1.18)

---
updated-dependencies:
- dependency-name: emojic
  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>
2025-02-14 18:35:36 +00:00
dependabot[bot]
2e9812d0aa chore(deps-dev): bump globals from 15.14.0 to 15.15.0 (#10882)
Bumps [globals](https://github.com/sindresorhus/globals) from 15.14.0 to 15.15.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v15.14.0...v15.15.0)

---
updated-dependencies:
- dependency-name: globals
  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>
2025-02-14 18:34:32 +00:00
dependabot[bot]
b1d765665b chore(deps): bump jsonpath-plus from 10.2.0 to 10.3.0 (#10883)
Bumps [jsonpath-plus](https://github.com/s3u/JSONPath) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/s3u/JSONPath/releases)
- [Changelog](https://github.com/JSONPath-Plus/JSONPath/blob/main/CHANGES.md)
- [Commits](https://github.com/s3u/JSONPath/compare/v10.2.0...v10.3.0)

---
updated-dependencies:
- dependency-name: jsonpath-plus
  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>
2025-02-14 18:33:13 +00:00
dependabot[bot]
e3d6e38a26 chore(deps-dev): bump @typescript-eslint/parser from 8.23.0 to 8.24.0 (#10886)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.23.0 to 8.24.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/v8.24.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>
2025-02-14 18:32:54 +00:00
dependabot[bot]
1d5c9a109e chore(deps): bump simple-icons from 14.5.0 to 14.6.0 (#10891)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 14.5.0 to 14.6.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/14.5.0...14.6.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>
2025-02-14 18:32:20 +00:00
dependabot[bot]
d2b2c31962 chore(deps): bump node-pg-migrate from 7.9.0 to 7.9.1 (#10885)
Bumps [node-pg-migrate](https://github.com/salsita/node-pg-migrate) from 7.9.0 to 7.9.1.
- [Release notes](https://github.com/salsita/node-pg-migrate/releases)
- [Changelog](https://github.com/salsita/node-pg-migrate/blob/main/CHANGELOG.md)
- [Commits](https://github.com/salsita/node-pg-migrate/compare/v7.9.0...v7.9.1)

---
updated-dependencies:
- dependency-name: node-pg-migrate
  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>
2025-02-14 18:22:31 +00:00
dependabot[bot]
e7488b4329 chore(deps): bump pg from 8.13.1 to 8.13.3 (#10879)
Bumps [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) from 8.13.1 to 8.13.3.
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.13.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>
2025-02-14 18:22:14 +00:00
dependabot[bot]
903c62ab9f chore(deps-dev): bump danger from 12.3.3 to 12.3.4 (#10888)
Bumps [danger](https://github.com/danger/danger-js) from 12.3.3 to 12.3.4.
- [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/12.3.3...12.3.4)

---
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>
2025-02-14 18:21:17 +00:00
dependabot[bot]
5518521b73 chore(deps-dev): bump cypress from 14.0.2 to 14.0.3 (#10889)
Bumps [cypress](https://github.com/cypress-io/cypress) from 14.0.2 to 14.0.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/v14.0.2...v14.0.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>
2025-02-14 18:20:56 +00:00
dependabot[bot]
692de451e3 chore(deps-dev): bump eslint from 9.19.0 to 9.20.1 (#10890)
Bumps [eslint](https://github.com/eslint/eslint) from 9.19.0 to 9.20.1.
- [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/v9.19.0...v9.20.1)

---
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>
2025-02-14 18:20:40 +00:00
chris48s
1809d1ebbc link to upptime (#10876)
* link to upptime

* different words in menu
2025-02-08 19:09:53 +00:00
chris48s
9bc673f40b time out long running requests more aggressively (#10833) 2025-02-08 17:51:51 +00:00
chris48s
6b78b69fa5 remove docker pull command from homepage (#10867) 2025-02-08 17:51:10 +00:00
dependabot[bot]
4a38cfbdc7 chore(deps): bump simple-icons from 14.4.0 to 14.5.0 (#10873)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 14.4.0 to 14.5.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/14.4.0...14.5.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>
2025-02-07 19:36:30 +00:00
dependabot[bot]
d88ff2ad2a chore(deps-dev): bump @easyops-cn/docusaurus-search-local (#10875)
Bumps [@easyops-cn/docusaurus-search-local](https://github.com/easyops-cn/docusaurus-search-local/tree/HEAD/packages/docusaurus-search-local) from 0.48.4 to 0.48.5.
- [Release notes](https://github.com/easyops-cn/docusaurus-search-local/releases)
- [Commits](https://github.com/easyops-cn/docusaurus-search-local/commits/v0.48.5/packages/docusaurus-search-local)

---
updated-dependencies:
- dependency-name: "@easyops-cn/docusaurus-search-local"
  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>
2025-02-07 19:30:50 +00:00
dependabot[bot]
083caa1c83 chore(deps): bump semver from 7.7.0 to 7.7.1 (#10871)
Bumps [semver](https://github.com/npm/node-semver) from 7.7.0 to 7.7.1.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.7.0...v7.7.1)

---
updated-dependencies:
- dependency-name: 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>
2025-02-07 19:22:19 +00:00
dependabot[bot]
b39afc1466 chore(deps): bump @sentry/node from 8.53.0 to 8.54.0 (#10874)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 8.53.0 to 8.54.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/8.53.0...8.54.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>
2025-02-07 19:20:50 +00:00
dependabot[bot]
0987242032 chore(deps-dev): bump cypress from 14.0.1 to 14.0.2 (#10870)
Bumps [cypress](https://github.com/cypress-io/cypress) from 14.0.1 to 14.0.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/v14.0.1...v14.0.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>
2025-02-07 19:20:29 +00:00
dependabot[bot]
1d4da9e1f8 chore(deps-dev): bump neostandard from 0.12.0 to 0.12.1 (#10872)
Bumps [neostandard](https://github.com/neostandard/neostandard) from 0.12.0 to 0.12.1.
- [Release notes](https://github.com/neostandard/neostandard/releases)
- [Changelog](https://github.com/neostandard/neostandard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/neostandard/neostandard/compare/v0.12.0...v0.12.1)

---
updated-dependencies:
- dependency-name: neostandard
  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>
2025-02-07 19:20:13 +00:00
dependabot[bot]
3ad5900136 chore(deps-dev): bump @typescript-eslint/parser from 8.22.0 to 8.23.0 (#10869)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.22.0 to 8.23.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/v8.23.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>
2025-02-07 19:19:48 +00:00
41 changed files with 1166 additions and 934 deletions

View File

@@ -0,0 +1,14 @@
{
"name": "Node.js",
// "Officially" maintained node devcontainer image from Microsoft
// https://github.com/devcontainers/templates/tree/main/src/javascript-node
"image": "mcr.microsoft.com/devcontainers/javascript-node:1-20-bookworm",
// Features to add to the dev container. More info: https://containers.dev/features.
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {}
},
// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "npm ci"
}

View File

@@ -2,8 +2,12 @@ node_modules/
shields.env
.git/
.gitignore
.github
.vscode/
fly.toml
*.md
doc/
# Improve layer cacheability.
Dockerfile

View File

@@ -89,18 +89,33 @@
}
},
"node_modules/@octokit/endpoint": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.1.tgz",
"integrity": "sha512-hRlOKAovtINHQPYHZlfyFwaM8OyetxeoC81lAkBy34uLb8exrZB50SQdeW3EROqiY9G9yxQTpp5OHTV54QD+vA==",
"version": "9.0.6",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz",
"integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==",
"license": "MIT",
"dependencies": {
"@octokit/types": "^12.0.0",
"is-plain-object": "^5.0.0",
"@octokit/types": "^13.1.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/endpoint/node_modules/@octokit/openapi-types": {
"version": "23.0.1",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz",
"integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==",
"license": "MIT"
},
"node_modules/@octokit/endpoint/node_modules/@octokit/types": {
"version": "13.8.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz",
"integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==",
"license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^23.0.1"
}
},
"node_modules/@octokit/graphql": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz",
@@ -115,22 +130,24 @@
}
},
"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=="
"version": "20.0.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz",
"integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==",
"license": "MIT"
},
"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==",
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz",
"integrity": "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==",
"license": "MIT",
"dependencies": {
"@octokit/types": "^12.0.0"
"@octokit/types": "^12.6.0"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"@octokit/core": ">=5"
"@octokit/core": "5"
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods": {
@@ -148,14 +165,14 @@
}
},
"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==",
"version": "8.4.1",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz",
"integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==",
"license": "MIT",
"dependencies": {
"@octokit/endpoint": "^9.0.0",
"@octokit/request-error": "^5.0.0",
"@octokit/types": "^12.0.0",
"is-plain-object": "^5.0.0",
"@octokit/endpoint": "^9.0.6",
"@octokit/request-error": "^5.1.1",
"@octokit/types": "^13.1.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
@@ -163,11 +180,12 @@
}
},
"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==",
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz",
"integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==",
"license": "MIT",
"dependencies": {
"@octokit/types": "^12.0.0",
"@octokit/types": "^13.1.0",
"deprecation": "^2.0.0",
"once": "^1.4.0"
},
@@ -175,12 +193,43 @@
"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==",
"node_modules/@octokit/request-error/node_modules/@octokit/openapi-types": {
"version": "23.0.1",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz",
"integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==",
"license": "MIT"
},
"node_modules/@octokit/request-error/node_modules/@octokit/types": {
"version": "13.8.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz",
"integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==",
"license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^19.0.0"
"@octokit/openapi-types": "^23.0.1"
}
},
"node_modules/@octokit/request/node_modules/@octokit/openapi-types": {
"version": "23.0.1",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz",
"integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==",
"license": "MIT"
},
"node_modules/@octokit/request/node_modules/@octokit/types": {
"version": "13.8.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz",
"integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==",
"license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^23.0.1"
}
},
"node_modules/@octokit/types": {
"version": "12.6.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
"integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
"license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^20.0.0"
}
},
"node_modules/before-after-hook": {
@@ -193,14 +242,6 @@
"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",

View File

@@ -4,6 +4,11 @@ Note: this changelog is for the shields.io server. The changelog for the badge-m
---
## server-2025-03-02
- time out long running requests more aggressively [#10833](https://github.com/badges/shields/issues/10833)
- Dependency updates
## server-2025-02-02
- Mark Stubs-only packages with [PypiTypes] badge [#10864](https://github.com/badges/shields/issues/10864)

View File

@@ -1,5 +1,7 @@
FROM node:20-alpine AS builder
RUN npm install -g "npm@^10"
RUN mkdir -p /usr/src/app
RUN mkdir /usr/src/app/private
WORKDIR /usr/src/app
@@ -8,14 +10,16 @@ COPY package.json package-lock.json /usr/src/app/
# Without the badge-maker package.json and CLI script in place, `npm ci` will fail.
COPY badge-maker /usr/src/app/badge-maker/
RUN npm install -g "npm@^10"
# We need dev deps to build the front end. We don't need Cypress, though.
RUN NODE_ENV=development CYPRESS_INSTALL_BINARY=0 npm ci
COPY . /usr/src/app
RUN npm run build
RUN npm prune --omit=dev
RUN npm cache clean --force
RUN npm run build \
&& npm prune --omit=dev --force \
&& rm -rf node_modules/.cache \
&& rm -rf frontend package-lock.json
# Use multi-stage build to reduce size
FROM node:20-alpine

View File

@@ -96,6 +96,8 @@ If you intend on reporting or contributing a fix related to security vulnerabili
## Development
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/badges/shields?quickstart=1)
1. Install Node 20 or later. You can use the [package manager][] of your choice.
Tests need to pass in Node 20 and 22.
2. Clone this repository.

View File

@@ -23,3 +23,7 @@ Report security bugs in third-party modules to the person or team maintaining th
We aim to patch confirmed vulnerabilities within 90 days or less, disclosing the details of those vulnerabilities when a patch is published. We ask that you refrain from sharing your report with others while we work on our patch.
We may want to coordinate an advisory with you to be published simultaneously with the patch, but you are also welcome to self-disclose after 90 days if you prefer. We will never publish information about you or our communications with you without your permission.
## Bounties
Everyone who works on shields is an unpaid volunteer. That includes the core team, contributors and people who report security vulnerabilities. This means we are unable to offer bug or security bounties.

View File

@@ -1,7 +1,6 @@
exports['The badge generator SVG should match snapshot 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="20"
role="img"
@@ -61,7 +60,6 @@ exports['The badge generator SVG should match snapshot 1'] = `
exports['The badge generator "flat" template badge generation should match snapshots: message/label, no logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="20"
role="img"
@@ -121,7 +119,6 @@ exports['The badge generator "flat" template badge generation should match snaps
exports['The badge generator "flat" template badge generation should match snapshots: message/label, with logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="107"
height="20"
role="img"
@@ -152,7 +149,7 @@ exports['The badge generator "flat" template badge generation should match snaps
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
aria-hidden="true"
@@ -190,7 +187,6 @@ exports['The badge generator "flat" template badge generation should match snaps
exports['The badge generator "flat" template badge generation should match snapshots: message only, no logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="45"
height="20"
role="img"
@@ -236,7 +232,6 @@ exports['The badge generator "flat" template badge generation should match snaps
exports['The badge generator "flat" template badge generation should match snapshots: message only, with logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="63"
height="20"
role="img"
@@ -265,7 +260,7 @@ exports['The badge generator "flat" template badge generation should match snaps
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
aria-hidden="true"
@@ -289,7 +284,6 @@ exports['The badge generator "flat" template badge generation should match snaps
exports['The badge generator "flat" template badge generation should match snapshots: message only, with logo and labelColor 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="69"
height="20"
role="img"
@@ -318,7 +312,7 @@ exports['The badge generator "flat" template badge generation should match snaps
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
aria-hidden="true"
@@ -340,12 +334,7 @@ exports['The badge generator "flat" template badge generation should match snaps
`
exports['The badge generator "flat" template badge generation should match snapshots: message/label, with links 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="20"
>
<svg xmlns="http://www.w3.org/2000/svg" width="90" height="20">
<linearGradient id="s" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1" />
<stop offset="1" stop-opacity=".1" />
@@ -363,7 +352,7 @@ exports['The badge generator "flat" template badge generation should match snaps
text-rendering="geometricPrecision"
font-size="110"
>
<a target="_blank" xlink:href="https://shields.io/">
<a target="_blank" href="https://shields.io/">
<rect width="45" x="0" height="20" fill="rgba(0,0,0,0)" />
<text
aria-hidden="true"
@@ -380,7 +369,7 @@ exports['The badge generator "flat" template badge generation should match snaps
cactus
</text>
</a>
<a target="_blank" xlink:href="https://www.google.co.uk/">
<a target="_blank" href="https://www.google.co.uk/">
<rect width="45" x="45" height="20" fill="rgba(0,0,0,0)" />
<text
aria-hidden="true"
@@ -405,7 +394,6 @@ exports['The badge generator "flat" template badge generation should match snaps
exports['The badge generator "flat" template badge generation should match snapshots: black text when the label color is light 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="20"
role="img"
@@ -465,7 +453,6 @@ exports['The badge generator "flat" template badge generation should match snaps
exports['The badge generator "flat" template badge generation should match snapshots: black text when the message color is light 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="20"
role="img"
@@ -525,7 +512,6 @@ exports['The badge generator "flat" template badge generation should match snaps
exports['The badge generator "flat-square" template badge generation should match snapshots: message/label, no logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="20"
role="img"
@@ -557,7 +543,6 @@ exports['The badge generator "flat-square" template badge generation should matc
exports['The badge generator "flat-square" template badge generation should match snapshots: message/label, with logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="107"
height="20"
role="img"
@@ -580,7 +565,7 @@ exports['The badge generator "flat-square" template badge generation should matc
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text x="405" y="140" transform="scale(.1)" fill="#fff" textLength="350">
cactus
@@ -596,7 +581,6 @@ exports['The badge generator "flat-square" template badge generation should matc
exports['The badge generator "flat-square" template badge generation should match snapshots: message only, no logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="45"
height="20"
role="img"
@@ -625,7 +609,6 @@ exports['The badge generator "flat-square" template badge generation should matc
exports['The badge generator "flat-square" template badge generation should match snapshots: message only, with logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="63"
height="20"
role="img"
@@ -648,7 +631,7 @@ exports['The badge generator "flat-square" template badge generation should matc
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text x="405" y="140" transform="scale(.1)" fill="#fff" textLength="350">
grown
@@ -661,7 +644,6 @@ exports['The badge generator "flat-square" template badge generation should matc
exports['The badge generator "flat-square" template badge generation should match snapshots: message only, with logo and labelColor 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="69"
height="20"
role="img"
@@ -684,7 +666,7 @@ exports['The badge generator "flat-square" template badge generation should matc
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text x="455" y="140" transform="scale(.1)" fill="#fff" textLength="350">
grown
@@ -695,12 +677,7 @@ exports['The badge generator "flat-square" template badge generation should matc
`
exports['The badge generator "flat-square" template badge generation should match snapshots: message/label, with links 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="20"
>
<svg xmlns="http://www.w3.org/2000/svg" width="90" height="20">
<g shape-rendering="crispEdges">
<rect width="45" height="20" fill="#0f0" />
<rect x="45" width="45" height="20" fill="#b3e" />
@@ -712,13 +689,13 @@ exports['The badge generator "flat-square" template badge generation should matc
text-rendering="geometricPrecision"
font-size="110"
>
<a target="_blank" xlink:href="https://shields.io/">
<a target="_blank" href="https://shields.io/">
<rect width="45" x="0" height="20" fill="rgba(0,0,0,0)" />
<text x="235" y="140" transform="scale(.1)" fill="#fff" textLength="350">
cactus
</text>
</a>
<a target="_blank" xlink:href="https://www.google.co.uk/">
<a target="_blank" href="https://www.google.co.uk/">
<rect width="45" x="45" height="20" fill="rgba(0,0,0,0)" />
<text x="665" y="140" transform="scale(.1)" fill="#fff" textLength="350">
grown
@@ -732,7 +709,6 @@ exports['The badge generator "flat-square" template badge generation should matc
exports['The badge generator "flat-square" template badge generation should match snapshots: black text when the label color is light 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="20"
role="img"
@@ -764,7 +740,6 @@ exports['The badge generator "flat-square" template badge generation should matc
exports['The badge generator "flat-square" template badge generation should match snapshots: black text when the message color is light 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="20"
role="img"
@@ -796,7 +771,6 @@ exports['The badge generator "flat-square" template badge generation should matc
exports['The badge generator "plastic" template badge generation should match snapshots: message/label, no logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="18"
role="img"
@@ -858,7 +832,6 @@ exports['The badge generator "plastic" template badge generation should match sn
exports['The badge generator "plastic" template badge generation should match snapshots: message/label, with logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="107"
height="18"
role="img"
@@ -891,7 +864,7 @@ exports['The badge generator "plastic" template badge generation should match sn
y="2"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
aria-hidden="true"
@@ -929,7 +902,6 @@ exports['The badge generator "plastic" template badge generation should match sn
exports['The badge generator "plastic" template badge generation should match snapshots: message only, no logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="45"
height="18"
role="img"
@@ -977,7 +949,6 @@ exports['The badge generator "plastic" template badge generation should match sn
exports['The badge generator "plastic" template badge generation should match snapshots: message only, with logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="63"
height="18"
role="img"
@@ -1008,7 +979,7 @@ exports['The badge generator "plastic" template badge generation should match sn
y="2"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
aria-hidden="true"
@@ -1032,7 +1003,6 @@ exports['The badge generator "plastic" template badge generation should match sn
exports['The badge generator "plastic" template badge generation should match snapshots: message only, with logo and labelColor 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="69"
height="18"
role="img"
@@ -1063,7 +1033,7 @@ exports['The badge generator "plastic" template badge generation should match sn
y="2"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
aria-hidden="true"
@@ -1085,12 +1055,7 @@ exports['The badge generator "plastic" template badge generation should match sn
`
exports['The badge generator "plastic" template badge generation should match snapshots: message/label, with links 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="18"
>
<svg xmlns="http://www.w3.org/2000/svg" width="90" height="18">
<linearGradient id="s" x2="0" y2="100%">
<stop offset="0" stop-color="#fff" stop-opacity=".7" />
<stop offset=".1" stop-color="#aaa" stop-opacity=".1" />
@@ -1110,7 +1075,7 @@ exports['The badge generator "plastic" template badge generation should match sn
text-rendering="geometricPrecision"
font-size="110"
>
<a target="_blank" xlink:href="https://shields.io/">
<a target="_blank" href="https://shields.io/">
<rect width="45" x="0" height="18" fill="rgba(0,0,0,0)" />
<text
aria-hidden="true"
@@ -1127,7 +1092,7 @@ exports['The badge generator "plastic" template badge generation should match sn
cactus
</text>
</a>
<a target="_blank" xlink:href="https://www.google.co.uk/">
<a target="_blank" href="https://www.google.co.uk/">
<rect width="45" x="45" height="18" fill="rgba(0,0,0,0)" />
<text
aria-hidden="true"
@@ -1152,7 +1117,6 @@ exports['The badge generator "plastic" template badge generation should match sn
exports['The badge generator "plastic" template badge generation should match snapshots: black text when the label color is light 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="18"
role="img"
@@ -1214,7 +1178,6 @@ exports['The badge generator "plastic" template badge generation should match sn
exports['The badge generator "plastic" template badge generation should match snapshots: black text when the message color is light 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="90"
height="18"
role="img"
@@ -1276,7 +1239,6 @@ exports['The badge generator "plastic" template badge generation should match sn
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message/label, no logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="146.75"
height="28"
role="img"
@@ -1315,7 +1277,6 @@ exports['The badge generator "for-the-badge" template badge generation should ma
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message/label, with logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="163.75"
height="28"
role="img"
@@ -1338,7 +1299,7 @@ exports['The badge generator "for-the-badge" template badge generation should ma
y="7"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text transform="scale(.1)" x="532.5" y="175" textLength="485" fill="#fff">
CACTUS
@@ -1361,7 +1322,6 @@ exports['The badge generator "for-the-badge" template badge generation should ma
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message only, no logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="74.25"
height="28"
role="img"
@@ -1396,7 +1356,6 @@ exports['The badge generator "for-the-badge" template badge generation should ma
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message only, with logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="94.25"
height="28"
role="img"
@@ -1418,7 +1377,7 @@ exports['The badge generator "for-the-badge" template badge generation should ma
y="7"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
transform="scale(.1)"
@@ -1438,7 +1397,6 @@ exports['The badge generator "for-the-badge" template badge generation should ma
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message only, with logo and labelColor 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="106.25"
height="28"
role="img"
@@ -1461,7 +1419,7 @@ exports['The badge generator "for-the-badge" template badge generation should ma
y="7"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
transform="scale(.1)"
@@ -1479,12 +1437,7 @@ exports['The badge generator "for-the-badge" template badge generation should ma
`
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message/label, with links 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="146.75"
height="28"
>
<svg xmlns="http://www.w3.org/2000/svg" width="146.75" height="28">
<g shape-rendering="crispEdges">
<rect width="72.5" height="28" fill="#0f0" />
<rect x="72.5" width="74.25" height="28" fill="#b3e" />
@@ -1496,7 +1449,7 @@ exports['The badge generator "for-the-badge" template badge generation should ma
text-rendering="geometricPrecision"
font-size="100"
>
<a target="_blank" xlink:href="https://shields.io/">
<a target="_blank" href="https://shields.io/">
<rect width="72.5" height="28" fill="rgba(0,0,0,0)" />
<text
transform="scale(.1)"
@@ -1508,7 +1461,7 @@ exports['The badge generator "for-the-badge" template badge generation should ma
CACTUS
</text>
</a>
<a target="_blank" xlink:href="https://www.google.co.uk/">
<a target="_blank" href="https://www.google.co.uk/">
<rect width="74.25" height="28" x="72.5" fill="rgba(0,0,0,0)" />
<text
transform="scale(.1)"
@@ -1529,7 +1482,6 @@ exports['The badge generator "for-the-badge" template badge generation should ma
exports['The badge generator "for-the-badge" template badge generation should match snapshots: black text when the label color is light 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="146.75"
height="28"
role="img"
@@ -1568,7 +1520,6 @@ exports['The badge generator "for-the-badge" template badge generation should ma
exports['The badge generator "for-the-badge" template badge generation should match snapshots: black text when the message color is light 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="146.75"
height="28"
role="img"
@@ -1607,7 +1558,6 @@ exports['The badge generator "for-the-badge" template badge generation should ma
exports['The badge generator "social" template badge generation should match snapshots: message/label, no logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="95"
height="20"
role="img"
@@ -1697,7 +1647,6 @@ exports['The badge generator "social" template badge generation should match sna
exports['The badge generator "social" template badge generation should match snapshots: message/label, with logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="112"
height="20"
role="img"
@@ -1740,7 +1689,7 @@ exports['The badge generator "social" template badge generation should match sna
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<g
aria-hidden="true"
@@ -1794,7 +1743,6 @@ exports['The badge generator "social" template badge generation should match sna
exports['The badge generator "social" template badge generation should match snapshots: message only, no logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="59"
height="20"
role="img"
@@ -1882,7 +1830,6 @@ exports['The badge generator "social" template badge generation should match sna
exports['The badge generator "social" template badge generation should match snapshots: message only, with logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="73"
height="20"
role="img"
@@ -1925,7 +1872,7 @@ exports['The badge generator "social" template badge generation should match sna
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<g
aria-hidden="true"
@@ -1977,7 +1924,6 @@ exports['The badge generator "social" template badge generation should match sna
exports['The badge generator "social" template badge generation should match snapshots: message only, with logo and labelColor 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="73"
height="20"
role="img"
@@ -2020,7 +1966,7 @@ exports['The badge generator "social" template badge generation should match sna
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<g
aria-hidden="true"
@@ -2070,12 +2016,7 @@ exports['The badge generator "social" template badge generation should match sna
`
exports['The badge generator "social" template badge generation should match snapshots: message/label, with links 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="95"
height="20"
>
<svg xmlns="http://www.w3.org/2000/svg" width="95" height="20">
<style>
a:hover #llink {
fill: url(#b);
@@ -2117,7 +2058,7 @@ exports['The badge generator "social" template badge generation should match sna
font-size="110px"
line-height="14px"
>
<a target="_blank" xlink:href="https://shields.io/">
<a target="_blank" href="https://shields.io/">
<text
aria-hidden="true"
x="235"
@@ -2140,7 +2081,7 @@ exports['The badge generator "social" template badge generation should match sna
rx="2"
/>
</a>
<a target="_blank" xlink:href="https://www.google.co.uk/">
<a target="_blank" href="https://www.google.co.uk/">
<rect width="42" x="53" height="20" fill="rgba(0,0,0,0)" />
<text
aria-hidden="true"
@@ -2164,7 +2105,6 @@ exports['The badge generator "social" template badge generation should match sna
exports['The badge generator "flat" template badge generation should match snapshots: message with custom suffix 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="107"
height="20"
role="img"
@@ -2195,7 +2135,7 @@ exports['The badge generator "flat" template badge generation should match snaps
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
aria-hidden="true"
@@ -2233,7 +2173,6 @@ exports['The badge generator "flat" template badge generation should match snaps
exports['The badge generator "flat-square" template badge generation should match snapshots: message with custom suffix 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="107"
height="20"
role="img"
@@ -2256,7 +2195,7 @@ exports['The badge generator "flat-square" template badge generation should matc
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text x="405" y="140" transform="scale(.1)" fill="#fff" textLength="350">
cactus
@@ -2272,7 +2211,6 @@ exports['The badge generator "flat-square" template badge generation should matc
exports['The badge generator "plastic" template badge generation should match snapshots: message with custom suffix 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="107"
height="18"
role="img"
@@ -2305,7 +2243,7 @@ exports['The badge generator "plastic" template badge generation should match sn
y="2"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
aria-hidden="true"
@@ -2343,7 +2281,6 @@ exports['The badge generator "plastic" template badge generation should match sn
exports['The badge generator "for-the-badge" template badge generation should match snapshots: message with custom suffix 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="163.75"
height="28"
role="img"
@@ -2366,7 +2303,7 @@ exports['The badge generator "for-the-badge" template badge generation should ma
y="7"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text transform="scale(.1)" x="532.5" y="175" textLength="485" fill="#fff">
CACTUS
@@ -2389,7 +2326,6 @@ exports['The badge generator "for-the-badge" template badge generation should ma
exports['The badge generator "social" template badge generation should match snapshots: message with custom suffix 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="112"
height="20"
role="img"
@@ -2432,7 +2368,7 @@ exports['The badge generator "social" template badge generation should match sna
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<g
aria-hidden="true"
@@ -2486,7 +2422,6 @@ exports['The badge generator "social" template badge generation should match sna
exports['The badge generator badges with logos should always produce the same badge default badge with logo 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="113"
height="20"
role="img"
@@ -2517,7 +2452,7 @@ exports['The badge generator badges with logos should always produce the same ba
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
aria-hidden="true"
@@ -2555,7 +2490,6 @@ exports['The badge generator badges with logos should always produce the same ba
exports['The badge generator badges with logo-only should always produce the same badge flat badge, logo-only 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="25"
height="20"
role="img"
@@ -2584,7 +2518,7 @@ exports['The badge generator badges with logo-only should always produce the sam
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
</g>
</svg>
@@ -2594,7 +2528,6 @@ exports['The badge generator badges with logo-only should always produce the sam
exports['The badge generator badges with logo-only should always produce the same badge flat-square badge, logo-only 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="25"
height="20"
role="img"
@@ -2617,7 +2550,7 @@ exports['The badge generator badges with logo-only should always produce the sam
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
</g>
</svg>
@@ -2627,7 +2560,6 @@ exports['The badge generator badges with logo-only should always produce the sam
exports['The badge generator badges with logo-only should always produce the same badge social badge, logo-only 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="26"
height="20"
role="img"
@@ -2667,7 +2599,7 @@ exports['The badge generator badges with logo-only should always produce the sam
y="3"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<g
aria-hidden="true"
@@ -2706,7 +2638,6 @@ exports['The badge generator badges with logo-only should always produce the sam
exports['The badge generator badges with logo-only should always produce the same badge plastic badge, logo-only 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="25"
height="18"
role="img"
@@ -2737,7 +2668,7 @@ exports['The badge generator badges with logo-only should always produce the sam
y="2"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
</g>
</svg>
@@ -2747,7 +2678,6 @@ exports['The badge generator badges with logo-only should always produce the sam
exports['The badge generator badges with logo-only should always produce the same badge for-the-badge badge, logo-only 1'] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="35"
height="28"
role="img"
@@ -2769,7 +2699,7 @@ exports['The badge generator badges with logo-only should always produce the sam
y="7"
width="14"
height="14"
xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
href="data:image/svg+xml;base64,PHN2ZyB4bWxu"
/>
<text
transform="scale(.1)"

View File

@@ -1,5 +1,9 @@
# Changelog
## Unreleased
- Switching to using `href`s instead of the old `xlink:href` syntax
## 4.1.0
### Features

View File

@@ -62,7 +62,7 @@ function getLogoElement({ logo, horizPadding, badgeHeight, logoWidth }) {
y: 0.5 * (badgeHeight - logoHeight),
width: logoWidth,
height: logoHeight,
'xlink:href': logo,
href: logo,
},
})
}
@@ -83,13 +83,12 @@ function renderBadge(
? new XmlElement({
name: 'a',
content,
attrs: { target: '_blank', 'xlink:href': leftLink },
attrs: { target: '_blank', href: leftLink },
})
: new ElementList({ content })
const svgAttrs = {
xmlns: 'http://www.w3.org/2000/svg',
'xmlns:xlink': 'http://www.w3.org/1999/xlink',
width,
height,
}
@@ -244,7 +243,7 @@ class Badge {
return new XmlElement({
name: 'a',
content: [rect, shadow, text],
attrs: { target: '_blank', 'xlink:href': link },
attrs: { target: '_blank', href: link },
})
}
@@ -605,7 +604,7 @@ function social({
? new XmlElement({
name: 'a',
content: [shadow, text, rect],
attrs: { target: '_blank', 'xlink:href': leftLink },
attrs: { target: '_blank', href: leftLink },
})
: new ElementList({ content: [rect, shadow, text] })
}
@@ -655,7 +654,7 @@ function social({
? new XmlElement({
name: 'a',
content: [rect, shadow, text],
attrs: { target: '_blank', 'xlink:href': rightLink },
attrs: { target: '_blank', href: rightLink },
})
: new ElementList({ content: [shadow, text] })
}
@@ -869,7 +868,7 @@ function forTheBadge({
content: [rect, text],
attrs: {
target: '_blank',
'xlink:href': leftLink,
href: leftLink,
},
})
} else {
@@ -908,7 +907,7 @@ function forTheBadge({
content: [rect, text],
attrs: {
target: '_blank',
'xlink:href': rightLink,
href: rightLink,
},
})
} else {

View File

@@ -22,4 +22,4 @@ public:
rasterUrl: 'https://raster.shields.io'
userAgentBase: 'Shields.io'
requireCloudflare: true
requestTimeoutSeconds: 20
requestTimeoutSeconds: 8

View File

@@ -47,10 +47,6 @@ const optionalStringWhenNamedLogoPresent = Joi.alternatives().conditional(
},
)
const optionalNumberWhenAnyLogoPresent = Joi.alternatives()
.conditional('namedLogo', { is: Joi.string().required(), then: Joi.number() })
.conditional('logoSvg', { is: Joi.string().required(), then: Joi.number() })
const serviceDataSchema = Joi.object({
isError: Joi.boolean(),
label: Joi.string().allow(''),
@@ -66,7 +62,6 @@ const serviceDataSchema = Joi.object({
logoSvg: Joi.string(),
logoColor: optionalStringWhenNamedLogoPresent,
logoSize: optionalStringWhenNamedLogoPresent,
logoWidth: optionalNumberWhenAnyLogoPresent,
cacheSeconds: Joi.number().integer().min(0),
style: Joi.string(),
})
@@ -155,12 +150,18 @@ class BaseService {
static get _cacheLength() {
const cacheLengths = {
build: 30,
license: 3600,
version: 300,
debug: 60,
downloads: 900,
rating: 900,
social: 900,
'platform-support': 300,
size: 300,
version: 300,
chat: 1800,
downloads: 1800,
rating: 1800,
social: 1800,
license: 14400,
}
return cacheLengths[this.category]
}

View File

@@ -20,7 +20,7 @@ import toArray from './to-array.js'
// 1. When `?logo=` contains a simple-icons logo or contains a base64-encoded
// SVG, that logo is used. When a `&logoColor=` is specified, that color is
// used (except for the base64-encoded logos). Otherwise the default color
// is used. The appearance of the logo can be customized using `logoWidth`,
// is used.
// When `?logo=` is specified, any logo-related parameters specified
// dynamically by the service, or by default in the service, are ignored.
// 2. The second precedence is the dynamic logo returned by a service. This is
@@ -52,11 +52,7 @@ export default function coalesceBadge(
colorB: legacyOverrideColor,
colorA: legacyOverrideLabelColor,
} = overrides
let {
logoWidth: overrideLogoWidth,
color: overrideColor,
labelColor: overrideLabelColor,
} = overrides
let { color: overrideColor, labelColor: overrideLabelColor } = overrides
// Only use the legacy properties if the new ones are not provided
if (typeof overrideColor === 'undefined') {
@@ -73,7 +69,6 @@ export default function coalesceBadge(
if (typeof overrideLabelColor === 'number') {
overrideLabelColor = `${overrideLabelColor}`
}
overrideLogoWidth = +overrideLogoWidth || undefined
const {
isError,
@@ -85,7 +80,6 @@ export default function coalesceBadge(
namedLogo: serviceNamedLogo,
logoColor: serviceLogoColor,
logoSize: serviceLogoSize,
logoWidth: serviceLogoWidth,
link: serviceLink,
cacheSeconds: serviceCacheSeconds,
style: serviceStyle,
@@ -131,7 +125,6 @@ export default function coalesceBadge(
// If the logo has been overridden it does not make sense to inherit the
// original width or position.
logoSize = overrideLogoSize
logoWidth = overrideLogoWidth
} else {
if (serviceLogoSvg) {
logoSvgBase64 = svg2base64(serviceLogoSvg)
@@ -143,12 +136,11 @@ export default function coalesceBadge(
namedLogoColor = coalesce(overrideLogoColor, serviceLogoColor)
}
logoSize = coalesce(overrideLogoSize, serviceLogoSize)
logoWidth = coalesce(overrideLogoWidth, serviceLogoWidth)
}
if (namedLogo) {
const iconSize = getIconSize(String(namedLogo).toLowerCase())
if (!logoWidth && iconSize && logoSize === 'auto') {
if (iconSize && logoSize === 'auto') {
logoWidth = (iconSize.width / iconSize.height) * DEFAULT_LOGO_HEIGHT
}

View File

@@ -185,7 +185,6 @@ describe('coalesceBadge', function () {
{
namedLogo: 'appveyor',
logoColor: 'red',
logoWidth: 100,
},
{},
).logo,
@@ -246,20 +245,6 @@ describe('coalesceBadge', function () {
})
})
describe('Logo width', function () {
it('overrides the logoWidth', function () {
expect(coalesceBadge({ logoWidth: 20 }, {}, {})).to.include({
logoWidth: 20,
})
})
it('applies the logo width', function () {
expect(
coalesceBadge({}, { namedLogo: 'npm', logoWidth: 275 }, {}),
).to.include({ logoWidth: 275 })
})
})
describe('Links', function () {
it('overrides the links', function () {
expect(

View File

@@ -12,7 +12,6 @@ const globalQueryParams = new Set([
'logo',
'logoColor',
'logoSize',
'logoWidth',
'link',
'colorA',
'colorB',

View File

@@ -119,7 +119,7 @@ describe('The server', function () {
)
expect(statusCode).to.equal(200)
expect(headers['content-type']).to.equal('image/svg+xml;charset=utf-8')
expect(headers['content-length']).to.equal('1130')
expect(headers['content-length']).to.equal('1087')
})
it('correctly calculates the content-length header for multi-byte unicode characters', async function () {

View File

@@ -224,6 +224,7 @@ const config = [
'badge-maker/node_modules/',
'!.github/',
'frontend/.docusaurus/**',
'**/package.json',
],
},

View File

@@ -115,7 +115,11 @@ const config = {
title: 'Stats',
items: [
{
label: 'Service Status',
label: 'Service Status (Upptime)',
href: 'https://badges.github.io/uptime-monitoring/',
},
{
label: 'Service Status (NodePing)',
href: 'https://nodeping.com/reports/status/YBISBQB254',
},
{

View File

@@ -59,8 +59,6 @@ const FeatureList = [
>
docker image
</a>
<br />
<code>docker pull shieldsio/shields</code>
</>
),
},

View File

@@ -83,20 +83,20 @@ describe('Logo helpers', function () {
})
it('preserves color if medium logo on dark background', function () {
const logo = prepareNamedLogo({ name: 'android' })
const logo = prepareNamedLogo({ name: 'mastodon' })
const decodedLogo = Buffer.from(
logo.replace('data:image/svg+xml;base64,', ''),
'base64',
).toString('ascii')
expect(decodedLogo).to.contain('fill="#34A853"')
expect(decodedLogo).to.contain('fill="#6364FF"')
})
it('preserves color if medium logo on light background', function () {
const logo = prepareNamedLogo({ name: 'android', style: 'social' })
const logo = prepareNamedLogo({ name: 'mastodon', style: 'social' })
const decodedLogo = Buffer.from(
logo.replace('data:image/svg+xml;base64,', ''),
'base64',
).toString('ascii')
expect(decodedLogo).to.contain('fill="#34A853"')
expect(decodedLogo).to.contain('fill="#6364FF"')
})
})

1346
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -21,11 +21,11 @@
"url": "https://github.com/badges/shields"
},
"dependencies": {
"@renovatebot/pep440": "^4.0.1",
"@renovatebot/pep440": "^4.1.0",
"@renovatebot/ruby-semver": "^4.0.0",
"@sentry/node": "^8.53.0",
"@sentry/node": "^9.10.0",
"@shields_io/camp": "^18.1.2",
"@xmldom/xmldom": "0.9.7",
"@xmldom/xmldom": "0.9.8",
"badge-maker": "file:badge-maker",
"byte-size": "^9.0.1",
"bytes": "^3.1.2",
@@ -37,33 +37,33 @@
"cross-env": "^7.0.3",
"dayjs": "^1.11.13",
"decamelize": "^3.2.0",
"emojic": "^1.1.17",
"emojic": "^1.1.18",
"escape-string-regexp": "^4.0.0",
"fast-xml-parser": "^4.5.1",
"fast-xml-parser": "^5.0.9",
"glob": "^11.0.1",
"global-agent": "^3.0.0",
"got": "^14.4.5",
"got": "^14.4.6",
"graphql": "16.10.0",
"graphql-tag": "^2.12.6",
"joi": "17.13.3",
"joi-extension-semver": "5.0.0",
"js-yaml": "^4.1.0",
"jsonpath-plus": "^10.2.0",
"jsonpath-plus": "^10.3.0",
"lodash.countby": "^4.6.0",
"lodash.groupby": "^4.6.0",
"lodash.times": "^4.3.2",
"matcher": "^5.0.0",
"node-env-flag": "^0.1.0",
"node-pg-migrate": "^7.9.0",
"node-pg-migrate": "^7.9.1",
"parse-link-header": "^2.0.0",
"path-to-regexp": "^6.3.0",
"pg": "^8.13.1",
"pg": "^8.14.1",
"priorityqueuejs": "^2.0.0",
"prom-client": "^15.1.3",
"qs": "^6.14.0",
"query-string": "^9.1.1",
"semver": "~7.7.0",
"simple-icons": "14.4.0",
"semver": "~7.7.1",
"simple-icons": "14.11.1",
"smol-toml": "1.3.1",
"svg-path-bbox": "^2.1.0",
"svgpath": "^2.6.0",
@@ -134,7 +134,7 @@
},
"nodemonConfig": {
"verbose": true,
"ext": "js",
"ext": "js,yml",
"ignore": [
"package.json",
"**/*.spec.js",
@@ -142,77 +142,78 @@
"**/*.integration.js",
"frontend/",
"build/",
"cypress/"
"cypress/",
".github/"
]
},
"devDependencies": {
"@docusaurus/core": "^3.7.0",
"@docusaurus/preset-classic": "^3.7.0",
"@easyops-cn/docusaurus-search-local": "^0.48.4",
"@easyops-cn/docusaurus-search-local": "^0.49.1",
"@mdx-js/react": "^3.1.0",
"@typescript-eslint/parser": "^8.22.0",
"@typescript-eslint/parser": "^8.28.0",
"c8": "^10.1.3",
"caller": "^1.1.0",
"chai": "5.1.2",
"chai": "5.2.0",
"chai-as-promised": "^8.0.1",
"chai-datetime": "^1.8.1",
"child-process-promise": "^2.2.1",
"clsx": "^2.1.1",
"concurrently": "^9.1.2",
"cypress": "^14.0.1",
"cypress": "^14.2.1",
"cypress-wait-for-stable-dom": "^0.1.0",
"danger": "^12.3.3",
"danger": "^12.3.4",
"deepmerge": "^4.3.1",
"docusaurus-preset-openapi": "0.7.6",
"eslint": "9.19.0",
"eslint-config-prettier": "^10.0.1",
"eslint": "9.23.0",
"eslint-config-prettier": "^10.1.1",
"eslint-plugin-chai-friendly": "1.0.1",
"eslint-plugin-cypress": "4.1.0",
"eslint-plugin-cypress": "4.2.0",
"eslint-plugin-icedfrisby": "0.2.0",
"eslint-plugin-import": "2.31.0",
"eslint-plugin-jsdoc": "50.6.3",
"eslint-plugin-jsdoc": "50.6.9",
"eslint-plugin-mocha": "10.5.0",
"eslint-plugin-prettier": "5.2.3",
"eslint-plugin-prettier": "5.2.5",
"eslint-plugin-promise": "7.2.1",
"eslint-plugin-react-hooks": "5.1.0",
"eslint-plugin-react-hooks": "5.2.0",
"eslint-plugin-sort-class-members": "1.21.0",
"form-data": "^4.0.1",
"globals": "15.14.0",
"form-data": "^4.0.2",
"globals": "16.0.0",
"icedfrisby": "4.0.0",
"icedfrisby-nock": "^2.1.0",
"is-svg": "^5.1.0",
"jsdoc": "^4.0.4",
"lint-staged": "^15.4.3",
"lint-staged": "^15.5.0",
"lodash.difference": "^4.5.0",
"minimist": "^1.2.8",
"mocha": "^11.1.0",
"mocha-env-reporter": "^4.0.0",
"mocha-junit-reporter": "^2.2.1",
"mocha-yaml-loader": "^1.0.3",
"neostandard": "0.12.0",
"neostandard": "0.12.1",
"nock": "13.5.6",
"node-mocks-http": "^1.16.2",
"nodemon": "^3.1.9",
"npm-run-all": "^4.1.5",
"open-cli": "^8.0.0",
"portfinder": "^1.0.32",
"prettier": "3.4.2",
"portfinder": "^1.0.35",
"prettier": "3.5.3",
"prism-react-renderer": "^2.4.1",
"react": "^18.3.0",
"react-dom": "^18.3.1",
"read-all-stdin-sync": "^1.0.5",
"rimraf": "^6.0.1",
"sazerac": "^2.0.0",
"simple-git-hooks": "^2.11.1",
"sinon": "^19.0.2",
"simple-git-hooks": "^2.12.1",
"sinon": "^20.0.0",
"sinon-chai": "4.0.0",
"snap-shot-it": "^7.9.10",
"start-server-and-test": "2.0.10",
"start-server-and-test": "2.0.11",
"tsd": "^0.31.2",
"url": "^0.11.4"
},
"engines": {
"node": "^20.10.0",
"node": "^20 || ^22",
"npm": "^9 || ^10 || ^11"
},
"type": "module",

View File

@@ -62,4 +62,9 @@ if (fs.existsSync(legacySecretsPath)) {
}
export const server = new Server(config)
process.on('SIGTERM', async () => {
console.log('SIGTERM received, shutting down...')
await server.stop()
})
await server.start()

View File

@@ -0,0 +1,46 @@
import Joi from 'joi'
import { renderDownloadsBadge } from '../downloads.js'
import { BaseJsonService, pathParams } from '../index.js'
const ansibleCollectionSchema = Joi.object({
// Ansible docs don't mention this but it appears in the API responses
download_count: Joi.number().required(),
}).required()
export default class AnsibleGalaxyCollectionDownloads extends BaseJsonService {
static category = 'downloads'
static route = { base: 'ansible/collection/d', pattern: ':namespace/:name' }
static openApi = {
'/ansible/collection/d/{namespace}/{name}': {
get: {
summary: 'Ansible Collection Downloads',
parameters: pathParams(
{ name: 'namespace', example: 'community' },
{ name: 'name', example: 'general' },
),
},
},
}
static defaultBadgeData = { label: 'collection downloads' }
static render({ downloads }) {
return renderDownloadsBadge({ downloads })
}
async fetch({ namespace, name }) {
return this._requestJson({
schema: ansibleCollectionSchema,
url: `https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/index/${namespace}/${name}/`,
})
}
async handle({ namespace, name }) {
const { download_count: downloads } = await this.fetch({
namespace,
name,
})
return this.constructor.render({ downloads })
}
}

View File

@@ -0,0 +1,16 @@
import { ServiceTester } from '../tester.js'
import { isMetric } from '../test-validators.js'
export const t = new ServiceTester({
id: 'AnsibleGalaxyCollectionDownloads',
title: 'AnsibleGalaxyCollectionDownloads',
pathPrefix: '/ansible/collection/d',
})
t.create('collection downloads (valid)')
.get('/community/general.json')
.expectBadge({ label: 'collection downloads', message: isMetric })
t.create('collection downloads (not found)')
.get('/not/real.json')
.expectBadge({ label: 'collection downloads', message: 'not found' })

View File

@@ -0,0 +1,47 @@
import Joi from 'joi'
import { renderVersionBadge } from '../version.js'
import { BaseJsonService, pathParams } from '../index.js'
const ansibleCollectionSchema = Joi.object({
highest_version: Joi.object({
version: Joi.string().required(),
}).required(),
}).required()
export default class AnsibleGalaxyCollectionVersion extends BaseJsonService {
static category = 'version'
static route = { base: 'ansible/collection/v', pattern: ':namespace/:name' }
static openApi = {
'/ansible/collection/v/{namespace}/{name}': {
get: {
summary: 'Ansible Collection Version',
parameters: pathParams(
{ name: 'namespace', example: 'community' },
{ name: 'name', example: 'general' },
),
},
},
}
static defaultBadgeData = { label: 'galaxy' }
static render({ version }) {
return renderVersionBadge({ version })
}
async fetch({ namespace, name }) {
return this._requestJson({
schema: ansibleCollectionSchema,
url: `https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/index/${namespace}/${name}/`,
})
}
async handle({ namespace, name }) {
const { highest_version: highestVersion } = await this.fetch({
namespace,
name,
})
return this.constructor.render({ version: highestVersion.version })
}
}

View File

@@ -0,0 +1,16 @@
import { ServiceTester } from '../tester.js'
import { isSemver } from '../test-validators.js'
export const t = new ServiceTester({
id: 'AnsibleGalaxyCollectionVersion',
title: 'AnsibleGalaxyCollectionVersion',
pathPrefix: '/ansible/collection/v',
})
t.create('collection version (valid)')
.get('/community/general.json')
.expectBadge({ label: 'galaxy', message: isSemver })
t.create('collection version (not found)')
.get('/not/real.json')
.expectBadge({ label: 'galaxy', message: 'not found' })

View File

@@ -1,4 +1,5 @@
import { ServiceTester } from '../tester.js'
export const t = new ServiceTester({
id: 'AnsibleGalaxyCollectionName',
title: 'AnsibleGalaxyCollectionName',

View File

@@ -145,7 +145,7 @@ export default class Codecov extends BaseSvgScrapingService {
async fetch({ vcsName, user, repo, branch, token, flag }) {
const url = `https://codecov.io/${vcsName}/${user}/${repo}${
branch ? `/branches/${branch}` : ''
branch ? `/branch/${branch}` : ''
}/graph/badge.svg`
return this._requestSvg({
schema,

View File

@@ -36,7 +36,6 @@ const endpointSchema = Joi.object({
logoSvg: Joi.string(),
logoColor: optionalStringWhenNamedLogoPresent,
logoSize: optionalStringWhenNamedLogoPresent,
logoWidth: optionalNumberWhenAnyLogoPresent,
style: Joi.string(),
cacheSeconds: Joi.number().integer().min(0),
/*
@@ -45,6 +44,7 @@ const endpointSchema = Joi.object({
passing it should not throw an error
*/
logoPosition: optionalNumberWhenAnyLogoPresent,
logoWidth: optionalNumberWhenAnyLogoPresent,
})
// `namedLogo` or `logoSvg`; not both.
.oxor('namedLogo', 'logoSvg')

View File

@@ -101,13 +101,6 @@ The endpoint badge takes a single required query param: <code>url</code>, which
Supported for simple-icons logos only.
</td>
</tr>
<tr>
<td><code>logoWidth</code></td>
<td>
Default: none. Same meaning as the query string. Can be overridden by
the query string.
</td>
</tr>
<tr>
<td><code>style</code></td>
<td>
@@ -156,7 +149,6 @@ export default class Endpoint extends BaseJsonService {
logoSvg,
logoColor,
logoSize,
logoWidth,
style,
cacheSeconds,
}) {
@@ -170,7 +162,6 @@ export default class Endpoint extends BaseJsonService {
logoSvg,
logoColor,
logoSize,
logoWidth,
style,
// don't allow the user to set cacheSeconds any shorter than this._cacheLength
cacheSeconds: Math.max(

View File

@@ -118,6 +118,8 @@ t.create('custom svg logo')
expect(body).to.include(getSimpleIcon({ name: 'npm' }))
})
// The logoWidth param was removed, but passing it should not
// throw a validation error. It should just do nothing.
t.create('logoWidth')
.get('.json?url=https://example.com/badge')
.intercept(nock =>
@@ -132,7 +134,6 @@ t.create('logoWidth')
.expectBadge({
label: 'hey',
message: 'yo',
logoWidth: 30,
})
// The logoPosition param was removed, but passing it should not

View File

@@ -32,7 +32,7 @@ class BasePackagistService extends BaseJsonService {
* @param {string} attrs.server URL for the packagist registry server (Optional)
* @returns {object} Parsed response
*/
async fetch({ user, repo, schema, server = 'https://packagist.org' }) {
async fetch({ user, repo, schema, server = 'https://repo.packagist.org' }) {
const url = `${server}/p2/${user.toLowerCase()}/${repo.toLowerCase()}.json`
return this._requestJson({
@@ -56,7 +56,12 @@ class BasePackagistService extends BaseJsonService {
* @param {string} attrs.server URL for the packagist registry server (Optional)
* @returns {object} Parsed response
*/
async fetchDev({ user, repo, schema, server = 'https://packagist.org' }) {
async fetchDev({
user,
repo,
schema,
server = 'https://repo.packagist.org',
}) {
const url = `${server}/p2/${user.toLowerCase()}/${repo.toLowerCase()}~dev.json`
return this._requestJson({

View File

@@ -0,0 +1,15 @@
import { redirector } from '../index.js'
export default redirector({
// SourceForge commit count service used to only have project name as a parameter
// and the repository name was always `git`.
// The service was later updated to have the repository name as a parameter.
// This redirector is used to keep the old URLs working.
category: 'activity',
route: {
base: 'sourceforge/commit-count',
pattern: ':project',
},
transformPath: ({ project }) => `/sourceforge/commit-count/${project}/git`,
dateAdded: new Date('2025-03-15'),
})

View File

@@ -0,0 +1,6 @@
import { createServiceTester } from '../tester.js'
export const t = await createServiceTester()
t.create('commit count (redirect)')
.get('/guitarix.json')
.expectRedirect('/sourceforge/commit-count/guitarix/git.json')

View File

@@ -11,17 +11,25 @@ export default class SourceforgeCommitCount extends BaseJsonService {
static route = {
base: 'sourceforge/commit-count',
pattern: ':project',
pattern: ':project/:repo',
}
static openApi = {
'/sourceforge/commit-count/{project}': {
'/sourceforge/commit-count/{project}/{repo}': {
get: {
summary: 'SourceForge Commit Count',
parameters: pathParams({
name: 'project',
example: 'guitarix',
}),
parameters: pathParams(
{
name: 'project',
example: 'guitarix',
},
{
name: 'repo',
example: 'git',
description:
'The repository name, usually `git` but might be different.',
},
),
},
},
}
@@ -35,18 +43,18 @@ export default class SourceforgeCommitCount extends BaseJsonService {
}
}
async fetch({ project }) {
async fetch({ project, repo }) {
return this._requestJson({
url: `https://sourceforge.net/rest/p/${project}/git`,
url: `https://sourceforge.net/rest/p/${project}/${repo}`,
schema,
httpErrors: {
404: 'project not found',
404: 'project or repo not found',
},
})
}
async handle({ project }) {
const body = await this.fetch({ project })
async handle({ project, repo }) {
const body = await this.fetch({ project, repo })
return this.constructor.render({
commitCount: body.commit_count,
})

View File

@@ -3,9 +3,17 @@ import { createServiceTester } from '../tester.js'
export const t = await createServiceTester()
t.create('commit count')
.get('/guitarix.json')
.get('/guitarix/git.json')
.expectBadge({ label: 'commit count', message: isMetric })
t.create('commit count (non default repo)')
.get('/opencamera/code.json')
.expectBadge({ label: 'commit count', message: isMetric })
t.create('commit count (project not found)')
.get('/that-doesnt-exist.json')
.expectBadge({ label: 'commit count', message: 'project not found' })
.get('/that-doesnt-exist/git.json')
.expectBadge({ label: 'commit count', message: 'project or repo not found' })
t.create('commit count (repo not found)')
.get('/guitarix/invalid-repo.json')
.expectBadge({ label: 'commit count', message: 'project or repo not found' })

View File

@@ -0,0 +1,15 @@
import { redirector } from '../index.js'
export default redirector({
// SourceForge last commit service used to only have project name as a parameter
// and the repository name was always `git`.
// The service was later updated to have the repository name as a parameter.
// This redirector is used to keep the old URLs working.
category: 'activity',
route: {
base: 'sourceforge/last-commit',
pattern: ':project',
},
transformPath: ({ project }) => `/sourceforge/last-commit/${project}/git`,
dateAdded: new Date('2025-03-08'),
})

View File

@@ -0,0 +1,6 @@
import { createServiceTester } from '../tester.js'
export const t = await createServiceTester()
t.create('last commit (redirect)')
.get('/guitarix.json')
.expectRedirect('/sourceforge/last-commit/guitarix/git.json')

View File

@@ -17,35 +17,43 @@ export default class SourceforgeLastCommit extends BaseJsonService {
static route = {
base: 'sourceforge/last-commit',
pattern: ':project',
pattern: ':project/:repo',
}
static openApi = {
'/sourceforge/last-commit/{project}': {
'/sourceforge/last-commit/{project}/{repo}': {
get: {
summary: 'SourceForge Last Commit',
parameters: pathParams({
name: 'project',
example: 'guitarix',
}),
parameters: pathParams(
{
name: 'project',
example: 'guitarix',
},
{
name: 'repo',
example: 'git',
description:
'The repository name, usually `git` but might be different.',
},
),
},
},
}
static defaultBadgeData = { label: 'last commit' }
async fetch({ project }) {
async fetch({ project, repo }) {
return this._requestJson({
url: `https://sourceforge.net/rest/p/${project}/git/commits`,
url: `https://sourceforge.net/rest/p/${project}/${repo}/commits`,
schema,
httpErrors: {
404: 'project not found',
404: 'project or repo not found',
},
})
}
async handle({ project }) {
const body = await this.fetch({ project })
async handle({ project, repo }) {
const body = await this.fetch({ project, repo })
return renderDateBadge(body.commits[0].committed_date)
}
}

View File

@@ -3,9 +3,17 @@ import { createServiceTester } from '../tester.js'
export const t = await createServiceTester()
t.create('last commit')
.get('/guitarix.json')
.get('/guitarix/git.json')
.expectBadge({ label: 'last commit', message: isFormattedDate })
t.create('last commit (non default repo)')
.get('/opencamera/code.json')
.expectBadge({ label: 'last commit', message: isFormattedDate })
t.create('last commit (project not found)')
.get('/that-doesnt-exist.json')
.expectBadge({ label: 'last commit', message: 'project not found' })
.get('/that-doesnt-exist/fake.json')
.expectBadge({ label: 'last commit', message: 'project or repo not found' })
t.create('last commit (repo not found)')
.get('/guitarix/fake-repo.json')
.expectBadge({ label: 'last commit', message: 'project or repo not found' })